Chapter 07

Agent:接口、注册表、作用域与生命周期

目标不是背 API,而是建立能从顶层设计一路推导到源码细节的心智模型。读完本章,你应该能解释“为什么这样设计”,而不仅是“代码在哪里”。

1. Agent 不是 Loop

dsh-agent 更像活跃 Agent 的接口、注册表和作用域边界。真正如何执行 turn/step 的具体逻辑在 dsh-agent-loop。这种拆分让“谁是 agent”与“怎么驱动 agent”分开。

2. AgentRegistry 的三个任务

  1. 维护 sessionId → live Agent 的进程内索引。
  2. 委托 AgentFactory 创建/恢复具体 agent。
  3. 把 agent 与 scoped Context 绑定,让该 agent 下面挂载的插件只影响自己。

3. Publication 是事务

创建 agent 不是一开始就放进全局 registry。更安全的顺序是:准备私有 session → 创建 scoped context/agent → 执行 setup → 验证 → 同时发布 session 与 agent → 发创建事件 → 启动 driver。任何一步失败都回滚。

4. Scope 为什么是 DSH 的“灵魂”之一

一个进程里可以同时运行 agent A(有 bash)与 agent B(只有 read 工具)。如果 tool registry 是简单全局 map,这会非常痛苦;scoped registration 让同名 service/section/filter 在 agent 层遮蔽全局默认。

源码定位:Agent core · packages/core/agent/src/index.ts
打开官方源码/文档
源码定位:Agent Loop README · packages/core/agent-loop/README.zh.md
打开官方源码/文档