Chapter 14

Web / Headless / CLI:同一 Harness 的不同外壳

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

1. Web、Headless 不是两个 Harness

它们是同一套基础能力上的不同 profile/bundle。Web 增加浏览器服务、客户端 projection/renderer;Headless 增加一次性 runner,不需要服务器。核心 loop/session/tools/llm 仍是同一抽象。

2. UI 应该消费 Session/Agent,而不是偷偷成为状态源

UI 通过 live agent registry 发命令,通过 session event/projection 渲染。这样刷新浏览器、换客户端并不会改变 agent 的真实状态。

3. 一个可替换外壳应只做三件事

  1. 把人的输入送入 Agent inbox。
  2. 订阅 Session/Agent 生命周期与 projection。
  3. 把权限请求、工具卡片、流式 chunk 映射为交互。

4. 对你复刻项目的建议

先做 headless,再做 Web。UI 很容易制造“已经做了很多”的错觉,但真正决定兼容性的,是 event log、loop、tool pipeline 和 scope。

源码定位:Architecture profiles · docs/architecture.zh.md
打开官方源码/文档
源码定位:App boot profiles · packages/boot/app-boot/README.zh.md
打开官方源码/文档