目录

OpenCode 源码剖析

本系列文章旨在通过阅读 OpenCode 源码,理解一个开源 AI 编程助手的设计思路与架构,并与 Claude Code 进行横向对比。

系列目录

序号文章状态
01导读已完成
02架构概览 — Turborepo Monorepo 与核心模块已完成
03工具系统 — Effect 框架与工具注册已完成
04命令系统 — Slash 命令与动态加载已完成
05会话与上下文 — 消息流、压缩与记忆已完成
06多智能体协作 — Task 工具与子 Agent 派生已完成
07配置系统 — 多层配置合并与路径解析已完成
08IDE 集成 — Zed、VS Code 与 ACP 协议已完成
09MCP 实现 — 协议支持与工具翻译已完成
10权限与安全 — Ruleset 驱动的细粒度控制已完成

为什么要研究 OpenCode 源码

OpenCode 是由 SST 团队开发的开源 AI 编程助手(由 AWS/Anthropic 前员工创建),是当前最接近 Claude Code 设计的开源竞品。研究其源码可以帮助我们:

  • 理解基于 Effect 函数式框架构建 AI 应用的方法
  • 学习 Turborepo Monorepo 在 AI 工具中的架构实践
  • 掌握 MCP (Model Context Protocol) 的完整实现
  • 了解 Zed 编辑器深度集成的技术方案
  • 与 Claude Code 进行架构层面的横向对比

与 Claude Code 的核心差异速览

维度Claude CodeOpenCode
架构单仓库Turborepo Monorepo (30+ packages)
函数式框架AsyncLocalStorageEffect (完整函数式 DI)
多 AgentPrompt-driven CoordinatorSession-based Task 工具
IDE 集成VS Code / JetBrains 扩展Zed 深度集成 + VS Code SDK
工具定义TypeScript 对象Effect Service + Zod Schema
存储文件系统转录本 + SQLiteSQLite + Drizzle ORM
权限模型PermissionMode 枚举Ruleset 数组 + Pattern 匹配
MCP工具级集成独立 packages/mcp/ 完整协议

学习路线

建议按照以下方式阅读:

  1. 先全局后局部 — 先了解整体架构,再深入具体模块
  2. 结合源码 — 每篇文章都会给出对应的源码位置
  3. 对比思考 — 与 Claude Code 对应模块对比,理解不同设计选择背后的原因
  4. 动手实践 — 尝试修改和扩展,加深理解

前置知识

阅读本系列文章前,建议具备以下基础知识:

  • TypeScript 基础
  • 了解 AI SDK / LLM API 的基本使用
  • 对 AI Agent 有初步了解
  • 有一定的函数式编程概念会更好(但不强制)
  • 对 Turborepo / Monorepo 有基本了解

源码位置

本系列分析的 OpenCode 源码位于:/mnt/e/code/cc/opencode

主要包:

  • packages/opencode/ — 核心 Agent 引擎
  • packages/app/ — 前端 / Web UI
  • packages/sdk/ — SDK 层
  • packages/extensions/ — Zed 扩展
  • packages/mcp/ — MCP 服务器

持续更新中…