2026/10/3 11:46:35

pi agent源码学习之面向对象视角下的几个核心对象

pi agent源码学习之面向对象视角下的几个核心对象 完整的面向对象模型应分为:运行宿主、会话门面、执行器、模型运行时、持久化、扩展和事件流。1.AgentSessionRuntime:运行宿主定义:packages/coding-agent/src/core/agent-session-runtime.ts关系:AgentSessionRuntime └─ AgentSession职责:管理当前工作目录和 Agent 会话;创建、替换、恢复AgentSession;在 cwd 或配置变化时重建运行时服务;为 interactive、print、RPC 等模式提供统一会话宿主。它不执行具体模型轮次,而是管理AgentSession的生命周期。2.AgentSessionServices:服务集合定义:packages/coding-agent/src/core/agent-session-services.ts它是一个服务组合对象,通常包含:cwd agentDir ModelRuntime SettingsManager ResourceLoader职责:创建 ModelRuntime - 创建 SettingsManager - 加载 ResourceLoader - 注册扩展 Provider - 刷新模型状态 - 提供给 AgentSession它解决的是“一个会话需要哪些基础服务”的装配问题。3.AgentSession:Coding Agent 会话门面定义:packages/coding-agent/src/core/agent-session.ts:331这是 coding-agent 的核心业务对象,组合了:AgentSession ├─ Agent ├─ SessionManager ├─ ModelRuntime ├─ ExtensionRunner ├─ 工具集合 └─ 压缩、重试、队列等逻辑职责:接收用户 prompt;控制 Agent 执行;将 Agent 事件转换为 session 事件;将消息和模型变更持久化;管理模型和 thinking level;执行上下文压缩;管理 steering、follow-up 和 deferred action;协调工具、扩展和会话生命周期。它是 coding-agent 对外暴露的会话控制门面。重要区别:Agent = 通用 Agent 执行器 AgentSession = coding-agent 的完整会话业务层4.Agent:通用 Agent 执行对象定义:packages/agent/src/agent.ts:188Agent负责通用的 Agent 状态和执行: