Skip to content

版本说明

这一页说明三件事:

  1. 这本书基于哪一份源码来写
  2. 这本书希望解决什么问题
  3. 阅读时哪些地方应当视为“当前实现状态”,而不是长期承诺

源码基线

本书基于当前仓库中的 OpenCode 源码整理,阅读入口统一指向官方仓库:

  • GitHub 仓库:anomalyco/opencode
  • 文中源码链接分支:dev
  • 电子书站点位置:docs/book/

这意味着本书首先是一份“基于当前实现的源码带读”,而不是脱离仓库现实的 Agent 理论教材。

写作范围

这本书重点解释的是:

  • OpenCode 当前仓库怎样组织 Agent 运行时
  • 多模型、工具、会话、MCP、UI、持久化等能力怎样落到真实代码
  • 一个面向开发工作流的 Agent 产品,为什么会长成今天这套工程结构

这本书刻意不把重心放在:

  • 泛泛介绍 LLM、Prompt、RAG 等通用概念
  • 脱离当前仓库去设计“更理想”的未来架构
  • 把尚未在代码里落地的能力写成既成事实

阅读边界

阅读本书时,建议默认采用下面这个判断原则:

  • 文中明确指向文件和代码路径的内容,优先视为“当前已实现”。
  • 文中写明“实验性”“当前状态”“更适合理解为”的内容,优先视为“基于现状的工程判断”。
  • 如果仓库未来发生重构,章节里的结构理解方法通常仍然有价值,但具体文件路径和实现细节可能变化。

为什么统一指向 dev

本书中的源码链接统一指向 dev 分支,不指向 main,原因很简单:

  • 当前仓库默认开发分支是 dev
  • 这样更接近真实迭代状态
  • 也能减少读者点开链接后发现“代码对不上”的情况

如何理解“当前实现状态”

在 Agent 项目里,有些能力天然变化很快,例如:

  • provider 支持范围
  • MCP 集成方式
  • LSP 能力完整度
  • 云端产品边界

因此本书更强调:

  • 先理解当前代码怎样工作
  • 再提炼背后的设计原则
  • 最后再判断哪些东西适合迁移到自己的项目

这比一开始追求“写一份永远不过时的文档”更现实。

适合谁

这本书最适合下面三类读者:

  • 想系统理解 Agent 工程实现的初学者
  • 想从真实仓库学习大型 TypeScript 项目拆分方式的工程师
  • 想基于 OpenCode 继续做扩展、实验或贡献的开发者

推荐使用方式

如果你准备把这本书当作源码带读材料,我建议这样使用:

  1. 先看 阅读地图,选一条路线。
  2. 每一篇先抓“入口文件 + 主链路 + 最容易误解的点”。
  3. 遇到和代码不一致的地方,以当前仓库源码为准。

最后说明

本书的目标不是替你记住每一个文件,而是帮你建立一种更可靠的阅读方法:

  • 先定边界
  • 再抓主链路
  • 再回到实现细节

如果你能把这套方法迁移到自己的 Agent 项目里,这本书就已经达成目的。