Skip to content

从零构建 AI Coding AgentOpenCode 源码剖析与实战

面向中文开发者的 Agent 工程学习站,覆盖源码带读、可运行实践与工程专题

这本书解决什么问题

  • 理论篇:回答"OpenCode 这类 AI Coding Agent 是怎么实现的",重点是看懂真实源码的主链路与工程边界。
  • 实践篇:回答"如果你自己来做,最小可运行版本该怎么搭起来",重点是把核心模式落到可执行 TypeScript 示例。
  • 中级篇:回答"当你碰到稳定性、协作、成本、安全这些工程问题时,应该按什么专题继续深化"。

建议理论与实践穿插学习:看完理论篇第 1-4 章后,先跑通实践篇 P1-P4,建立感性认知后再深入后续章节。

你会得到什么

  • 一张真实 AI Coding Agent 的系统总图,而不是零散功能点列表。
  • 一套按"入口文件 -> 主链路 -> 关键边界"阅读大型源码仓库的方法。
  • 对模型抽象、工具系统、会话系统、MCP、多端 UI 和扩展体系的工程直觉。
  • 一组能迁移到自己项目里的设计原则,而不只是对 OpenCode 的局部记忆。

适合人群

  • 想要深入理解 AI Coding Agent 架构的开发者
  • 希望学习大型 TypeScript 项目工程实践的工程师
  • 对 AI 辅助开发工具感兴趣的技术爱好者
  • 想要为 OpenCode 贡献代码的开源贡献者

双轨学习体系

理论篇:源码剖析

16 章深入解读 OpenCode 架构

  • Agent 核心机制与执行循环
  • 工具系统与权限管理
  • 多模型支持与 MCP 协议
  • TUI/Web/Desktop 多端架构
  • 生产化部署与质量保证
开始阅读 →

实践篇:23 个项目

23 个可运行示例 · 7 个阶段

  • 从最小 Agent 到生产部署
  • OpenAI SDK + TypeScript
  • 每章可独立运行验证
  • 完整 Code Review Agent 项目
  • 记忆系统、RAG、多 Agent 编排
立即动手 →

核心学习路径

阶段 1

建立全局认知

4 章

先看懂一次任务怎样跑完,再进入 Agent、工具和会话的内部结构。

这一阶段要看懂
把 CLI 入口、会话装配、工具循环和多端外壳放到同一张图里。
看完后你应该能解释
看完后你应该能解释:为什么 OpenCode 不是单体 CLI,而是一套围绕运行时主链路组织的工程系统。
阶段 2

进入运行时主链路

4 章

理解模型、协议、HTTP 与存储怎样把这条主链路做成可运行产品。

这一阶段要看懂
把 provider、MCP、HTTP server 和持久化放回同一条请求路径里。
看完后你应该能解释
看完后你应该能解释:一次请求怎样跨过模型抽象、服务边界和数据层,而不是停留在“调用了某个 API”。
阶段 3

理解交互与扩展

4 章

把 TUI、多端界面、代码智能和扩展体系重新挂回同一后端语义。

这一阶段要看懂
理解用户是怎样通过终端、桌面、Web 和扩展生态与同一套运行时协作的。
看完后你应该能解释
看完后你应该能解释:为什么“界面层”不是装饰,而是 Agent 可用性、协作性和扩展性的真实边界。
阶段 4

完成工程化闭环

3 章

最后再看部署、测试和长期演进,把“能跑”变成“能维护”。

这一阶段要看懂
把基础设施、质量保证和最佳实践看成工程收口,而不是附录。
看完后你应该能解释
看完后你应该能解释:一个 AI Coding Agent 项目怎样从功能演示走到可发布、可验证、可持续迭代。
阶段 5

扩展:oh-my-openagent 插件系统

8 章

以真实插件项目为案例,理解多 Agent 编排、Hook 分层架构和工具扩展的工程实现。

这一阶段要看懂
把插件接口、Agent 工厂、Hook 三层和工具注册放到同一张图里,理解它们如何协作。
看完后你应该能解释
看完后你应该能解释:oh-my-openagent 如何通过 OpenCode 插件接口实现多模型编排,并能独立添加新的 Agent、工具或 Hook。

先记住这条主链路

Runtime lifecycle

全书统一运行时主链路

后续 15 篇其实都在拆这条链路的不同片段。先把总图记住,再进入各章细节。

  1. Prompt 输入

    prompt

    用户提出任务,系统先把输入整理成可消费的消息。

    入口通常从 CLI、TUI 或 HTTP 请求开始,先决定本轮任务到底要解决什么。

  2. Agent / Session

    session

    会话装配 Agent、权限、系统提示词和当前上下文。

    这里决定角色、模式、消息历史和是否需要继续恢复已有状态。

  3. Tool dispatch

    tools

    模型拿到可用工具后,进入工具调用与结果回写循环。

    工具不是附属物,而是运行时主链路里最容易扩张成本和风险的边界。

  4. Provider / Model

    provider

    Provider 抽象把具体模型接进统一的流式执行接口。

    这里处理模型解析、认证、参数绑定和多提供商差异。

  5. File / Terminal / LSP

    side-effects

    真正改变系统状态的地方发生在文件、终端和代码智能能力上。

    这是工程边界,不是文案边界;一旦进入这里,就需要权限和恢复机制兜底。

  6. Result / UI feedback

    feedback

    结果被写回消息流,再反馈到 CLI、TUI、Web 或桌面界面。

    这一步决定用户看到的是最终答案、流式事件,还是下一轮可恢复的状态。

技术栈

运行时 & 语言
Bun
RuntimeJS 运行时与包管理
TypeScript
Language静态类型语言
Rust
Language系统级性能语言
前端 & 桌面
SolidJS
UI Framework高性能响应式框架
Tauri
DesktopRust 驱动的桌面应用
数据 & 基础设施
Drizzle ORM
DatabaseTypeScript ORM
SQLite
Database嵌入式关系数据库
SST
Infra云基础设施框架
Cloudflare
Platform边缘计算平台

辅助阅读入口

  • 阅读地图:先选路线,再决定按哪条主链路进入全书。
  • 版本说明:确认本书基于哪份源码、写到什么边界。
  • 术语表:统一理解 AgentSubagentPrimary Agent运行时工作台 等高频概念。
  • 封版清单:查看当前版本完成度、已知非阻塞项和发布前检查项。
  • 阅读中级篇:进入第 25-32 章,深化 RAG、多智能体、成本与安全等工程专题。
  • 查看源码基线:本书基于此 commit 进行解析。

阅读边界:本书默认以 commit 锚定的源码基线为准,重点解释已经落在仓库里的结构、主链路和工程约束;只有在明确说明"追踪最新实现"时,才额外回到 dev 分支对照差异。若文档与代码不一致,以当前仓库给出的源码快照与入口文件为准。