1. OpenCode 概述——Code Agent 开发者视角

June 20, 2026 · View on GitHub

阅读对象:正在开发 Qwen Code / Gemini CLI 等 CLI Code Agent 的工程师

核心问题:OpenCode 做对了什么?哪些设计值得借鉴?哪些是其独有路线不适合复制?

一、为什么要研究 OpenCode

OpenCode 是当前开源 Code Agent 中架构最激进的项目——25 个包的 monorepo、TUI + Web + Desktop 三客户端、38 种 LSP + 26 种 Formatter、100+ Provider 动态加载。它选择了一条与 Claude Code/Qwen Code 完全不同的路线:不是"做好一个终端 Agent",而是"构建一个多客户端 AI 编程平台"。

对于 Qwen Code 开发者,OpenCode 的价值在于:

  1. 21 种 Hook 类型——比 Claude Code 的 Hook 更细粒度(工具定义修改、系统提示变换、会话压缩拦截)
  2. 38 种 LSP 集成——展示了如何在 Agent 中深度集成语言服务器
  3. models.dev 动态 Provider——100+ Provider 零代码接入的统一接口
  4. SQLite 持久化——Drizzle ORM + WAL 模式,比 JSONL 文件更适合复杂查询

二、能力矩阵速查

能力领域OpenCodeQwen Code差距参考价值
多客户端TUI + Web + DesktopTUI + WebUI + VSCode共享后端架构
Provider 数量100+(models.dev 动态)10+(手动配置)动态 Provider 发现
LSP 集成38 种语言实验性(--experimental-lsp)LSP 诊断自动注入
Formatter26 种PostToolUse 自动格式化
Hook 系统21 种类型(npm 插件)20 事件(command/JS)工具定义修改 Hook
会话存储SQLite (Drizzle ORM)JSONL 文件结构化查询
主题37 种~25 种
权限系统token 命令解析 + Doom LoopAST 只读检测Doom Loop 保护
上下文压缩auto-compact + hook单一 70% 压缩压缩 Hook 拦截
会话管理Fork + Restore + Share + Review基础历史Session Fork/Restore

三、项目信息

  • 原作者:Kujtim Hoxha(2025-03 起,Go + Bubble Tea TUI 单人项目)
  • 现任 maintainerAnomaly Innovations / SST 团队(2025-04-30 接手,anoma.ly / sst.dev),Dax Raad 主导(1,845 commits)
  • 许可证:MIT
  • 仓库github.com/anomalyco/opencode
  • GitHub 仓库创建:2025-04-30
  • Stars:149,294(2026-04-25 实测,gh API)
  • Forks:17,128
  • 总 commits:11,750
  • 当前版本v1.17.8(2026-06,dev 分支源码)

完整演进历史(个人 → 公司接手 → 双重重写 Go→TS + Bubble Tea→OpenTUI)见 00-history.md

四、核心功能

基础能力

  • 多客户端:TUI(终端)、Web 控制台(SolidJS)、桌面应用(Electron)
  • 多代理:7 个内置代理(build、plan、general、explore 等),支持自定义
  • 16 种内置工具:Read、Write、Edit、Bash、Grep、Glob、WebFetch、WebSearch、Skill、Task、Todo、apply_patch、LSP、Question 等
  • 100+ LLM 提供商:通过 models.dev + Vercel AI SDK 动态加载
  • MCP 支持:StreamableHTTP / SSE / Stdio 三种传输 + OAuth
  • 38 种 LSP 服务器:覆盖 TypeScript、Python、Go、Rust、Java、C/C++、Ruby 等主流和小众语言
  • 26 种 Formatter:Prettier、Biome、gofmt、rustfmt、ruff 等
  • SQLite 持久化:Drizzle ORM,WAL 模式

独特功能

  • 21 种 Hook 类型:dispose、event、config、tool(工具注册)、auth、provider(Provider 发现)、chat.message、chat.params、chat.headers、permission.ask、command.execute.before、tool.execute.before/after、shell.env、tool.definition(修改描述/参数)、experimental.chat.messages.transform/system.transform、experimental.provider.small_model、experimental.session.compacting、experimental.compaction.autocontinue、experimental.text.complete
  • Doom Loop 保护:连续 3 步重复循环触发 doom_loop 权限询问
  • Session Fork & Restore:从任意消息点分叉会话或回退
  • Session Share:同步到云端生成公开链接
  • Git-backed Session Review:基于 git 快照的 diff 可视化

五、可借鉴 vs 不适合复制

可借鉴的设计模式

模式核心价值Qwen Code 适用性
models.dev 动态 Provider零代码接入新 Provider高——Qwen Code 当前手动配置 Provider
38 种 LSP 集成编译器级代码理解高——诊断自动注入到 /review 和编辑流程
21 种 Hook 类型细粒度扩展性中——tool.definition 修改工具描述是独特创新
SQLite 持久化复杂会话查询中——比 JSONL 适合大规模会话管理
Session Fork/Restore会话分叉和回退中——类似 Claude Code 的 /rewind
Doom Loop 保护防止 Agent 陷入权限拒绝循环高——简单有效,~30 行代码
26 种 Formatter编辑后自动格式化中——可通过 PostToolUse Hook 实现

不适合复制的设计

设计为什么不适合
25 包 monorepo架构复杂度过高,Qwen Code 作为 Gemini CLI fork 不适合重构为 monorepo
Electron 桌面维护成本高,Qwen Code 专注 CLI + VSCode
Bun 运行时Qwen Code 基于 Node.js,切换运行时风险大
Effect 框架学习曲线陡峭,与现有 Qwen Code 代码风格差异大

六、付费计划

计划价格包含内容
免费 / 开源$0自带 API Key 使用任意 provider
OpenCode Zen按量付费编码优化模型,月度限额
OpenCode Go$5 首月 → $10/月GLM-5、Kimi K2.5、MiniMax M2.5/M2.7

七、资源链接