OpenCode 源码解析

TypeScript 单体仓库:Session V2、工具系统、Provider 抽象

  1. 第 1 讲:整体架构与 Monorepo 设计 🔹 多界面支持:CLI、TUI、Desktop、Web Dashboard
  2. 第 2 讲:CLI 入口与命令路由 OpenCode 的 CLI 入口是 packages/opencode/src/index.ts(142 行),使用 yargs 构建命令行框架。整个文件结构清晰:导入命令 → 配置 yargs → 注册命令 → 解析
  3. 第 3 讲:Session 会话核心 OpenCode 的 Session 设计遵循"Schema → Core → Application"的三层分离:
  4. 第 4 讲:Server 网络层与路由 OpenCode 的网络层分为两个包:Protocol 定义 API 契约,Server 实现路由与处理逻辑。这种分离让 API 规范可以被 CLI、TUI、Desktop 等客户端独立引用。
  5. 第 5 讲:Plugin 插件系统——扩展架构与生命周期 前四讲我们覆盖了 OpenCode 从 CLI 入口到 Server 网络层的核心路径。这一讲进入Plugin 插件系统——OpenCode 如何通过插件机制扩展功能,支持 11 个内置认证插件和外部 npm 插件的动态
  6. 第 6 讲:Tool 工具注册与执行——LLM 的"手"与"眼" 前五讲我们覆盖了 OpenCode 的整体架构、CLI 入口、Session 核心、Server 网络层和 Plugin 插件系统。这一讲进入Tool 工具注册与执行系统——这是 LLM 与外部世界交互的核心通道,也是
  7. 第 7 讲:Provider 模型抽象层——统一 20+ AI 模型的"翻译官" 前六讲我们覆盖了 OpenCode 的整体架构、CLI 入口、Session 核心、Server 网络层、Plugin 插件系统和 Tool 工具注册。这一讲进入Provider 模型抽象层——这是 OpenCode 连
  8. 第 8 讲:ACP 子代理协议 ACP(Agent Client Protocol)是 OpenCode 实现的一个标准化代理客户端协议,让外部编辑器、IDE 和其他客户端能以统一的方式与 OpenCode 的 AI 能力交互。它基于 @agentcl
  9. 第 9 讲:LSP 语言服务器集成 前八讲我们覆盖了 OpenCode 从 CLI 入口到 ACP 协议的核心路径。这一讲进入LSP 语言服务器集成——OpenCode 如何构建多语言、多服务器、自动发现的 LSP 集成层,让 AI 拥有 IDE 级别的代
  10. 第 10 讲:MCP 外部工具协议——连接无限扩展能力 前九讲覆盖了 OpenCode 从 CLI 到 LSP 的内部能力。这一讲进入MCP(Model Context Protocol)——Anthropic 提出的标准化协议,让 OpenCode 能连接任意外部工具和服务
  11. 第 11 讲:Config 配置系统——多源合并与动态加载 前十讲覆盖了 OpenCode 从 CLI 到 MCP 的核心能力。这一讲进入Config 配置系统——OpenCode 如何从 8 个不同来源加载、合并配置,支持远程配置、环境变量、OAuth 认证和 MDM 管理。配
  12. 第 12 讲:Control Plane 与 Gateway——多工作区编排核心 前十一讲覆盖了 OpenCode 从 CLI 到配置系统的核心能力。这一讲进入Control Plane(控制平面)——OpenCode 实现多工作区编排、远程会话迁移和事件同步的核心基础设施。Control Plane
  13. 第 13 讲:TUI 终端界面——Solid.js 驱动的交互式终端 前十二讲覆盖了 OpenCode 从 CLI 到 Control Plane 的核心能力。这一讲进入TUI(Terminal User Interface)——OpenCode 的交互式终端界面,基于 Solid.js
  14. 第 14 讲:Database 与存储层——SQLite + Drizzle 持久化架构 前十三讲覆盖了 OpenCode 从 CLI 到 TUI 的核心能力。这一讲进入Database 与存储层——OpenCode 基于 SQLite + Drizzle ORM 构建的持久化架构。数据库模块横跨 packa
  15. 第 15 讲:Env 与运行时标志——环境变量、Flag 系统与运行时配置 前十四讲覆盖了 OpenCode 从 CLI 到 Database 的完整架构。这一讲进入Env 与运行时标志——OpenCode 通过环境变量、Flag 系统、InstanceState 和运行时服务构建的动态配置体系
  16. 第 16 讲:Effect 运行时系统——Fiber、Runner、Layer 与服务编排 前十五讲覆盖了 OpenCode 从 CLI 到数据库的核心能力。这一讲深入Effect 运行时系统——OpenCode 基于 Effect TS 构建的并发引擎。它管理 Fiber 生命周期、服务依赖编排、实例状态隔离
  17. 第 17 讲:Event 事件总线与 GlobalBus——从 PubSub 到 SSE 的完整链路 前十六讲覆盖了 OpenCode 从 CLI 到 Effect 运行时的核心能力。这一讲深入Event 事件系统——OpenCode 的"神经系统",负责在 Server、TUI、Web App、ACP 子代理和桌面客户
  18. 第 18 讲:Session 处理器——Prompt 编排、Compaction 与工具执行循环 前十七讲覆盖了 OpenCode 从 CLI 到事件总线的核心能力。这一讲深入Session 会话模块——OpenCode 的 AI 大脑,负责 Prompt 编排、LLM 流式调用、工具执行循环和上下文压缩。Sessi
  19. 第 19 讲:Agent 核心系统——多 Agent 编排、Runner 循环与权限治理 前十八讲覆盖了 OpenCode 从 CLI 到 Session 处理器的完整链路。这一讲深入 Agent 核心系统——OpenCode 的真正"大脑"。V2 架构不再使用单一 Agent 处理所有任务,而是设计了 多
  20. 第 20 讲:总结与实战指南——从源码到生产部署的完整路径 这是 OpenCode 源码解析 系列的第 20 讲(最终讲)。前 19 讲我们逐层拆解了 CLI、Session、Agent、Tool、Provider、ACP、LSP、MCP、配置系统、Control Plane、T