两种截然不同的 AI 编程代理架构哲学:一个追求极致安全与精密控制,一个追求极致开放与灵活适配。14 个维度的深度对比。
Claude Code 的设计原则是"最小脚手架、最大操作线束"——模型只负责推理,98.4% 的代码都是确定性基础设施。OpenCode 的原则是"开放、灵活、可组合"——用标准协议(HTTP、SSE、MCP、LSP)连接各个组件,允许用户替换任何一层。
| 维度 | Claude Code | OpenCode |
|---|---|---|
| 架构模式 | TypeScript 单进程 低延迟 紧耦合 |
Go TUI + Bun 后端 C/S 分离 高灵活 HTTP开销 |
| 运行时 | Bun(单一) | Go (TUI) + Bun (Server) 双运行时 |
| Agent 模式 | 单一 ReAct while-true 循环 9 步管线 |
Plan / Build 双模式 用户可随时 Tab 切换 |
| 模型支持 | 仅 Claude Opus / Sonnet / Haiku | 75+ 提供商 含 Ollama 本地模型 AI SDK 统一抽象 |
| 内置工具 | 54+ 工具 并发安全分类执行 |
11+ 工具 + MCP 无限扩展 |
| LSP 集成 | 无深度集成 依赖 Bash 跑测试 |
深度集成 JSON-RPC 编辑后自动获取诊断 编写→编译→修复闭环 |
| 安全防护 | 7 层纵深防御 7 种权限模式 ML 分类器 Shell 沙箱 |
3 级权限 (allow/deny/ask) Glob 模式细粒度控制 Git 快照回滚 |
| 权限模式 | plan → default → acceptEdits → auto → dontAsk → bypass + bubble(子代理) |
Plan 模式 (只读) Build 模式 (全权限) + per-tool 配置 |
| 上下文压缩 | 5 层管线:Budget Reduction → Snip → Micro Compact → Context Collapse → Auto Compact |
90% 阈值自动摘要 单一压缩策略 |
| 记忆系统 | CLAUDE.md 四级层级 Managed → User → Project → Local LLM 扫描头部检索 |
AGENTS.md + CLAUDE.md 会话摘要持久化 |
| 会话持久化 | JSONL Append-Only 支持 resume/fork/rewind |
SQLite 数据库 结构化查询 |
| 子代理 | 内置固定类型 bubble 权限冒泡 Sidechain 日志隔离 |
YAML frontmatter 完全可配 自定义模型/温度/工具/权限 hidden 隐藏代理 |
| 扩展机制 | Hooks (27事件) + Skills + Plugins + MCP 四级渐进式扩展 |
MCP + 插件 Hook 自定义 Agent 定义 |
| 开源 | 闭源(泄露非官方) | MIT 完全开源 可 fork / 修改 / 商用 |
| 性能 | 基线(单进程低延迟) | 慢约 45~78% (HTTP 往返 + 双进程开销) |
单一 queryLoop() AsyncGenerator,遵循 ReAct 模式。
9 步管线:Settings → State → Context → 5阶段压缩 → Model → Tool → Permission → Execute → Stop
工具分并发安全/独占两类,StreamingToolExecutor 并发执行只读工具。
停止条件:无工具调用、最大轮次、上下文溢出、Hook 干预、显式中止。
AI SDK streamText 驱动,Plan / Build 双模式。
流程:用户输入 → 上下文组装 → streamText → Tool Call? → 权限检查 → 执行(+LSP反馈) → stopWhen?
模式切换注入合成 system-reminder,模型感知权限范围变化。
停止条件:通过 stopWhen 参数配置,支持步数限制和自定义触发器。
这是两个项目最深层的理念分歧。
核心策略:在操作执行前反复检查,宁可多问一次用户也不放过一次危险操作。
机制:7 层独立安全层(工具预过滤 → deny-first → 权限模式 → ML分类器 → Shell沙箱 → 会话恢复无继承 → Hook拦截),任一层可独立阻止。
代价:交互繁琐,频繁弹出确认对话框("审批疲劳")。
适合:企业环境、高安全要求场景。
核心策略:允许大部分操作执行,通过 Git 快照确保任何操作都可回滚。
机制:每步 git write-tree 创建快照 → Agent 执行 → 出错时 git read-tree + checkout-index 恢复。用户可 /undo / /redo。
代价:如果 Git 不在项目中使用或快照不完整,可能无法完美恢复。
适合:个人开发、快速迭代场景。
根据你的具体场景选择最合适的工具:
Claude Code 和 OpenCode 代表了 AI 编程代理的两种工程哲学。Claude Code 是一个"为单一模型深度优化的精密堡垒"—— 安全层层叠叠、上下文管理精密到极致、工具丰富开箱即用,但你必须留在 Anthropic 的花园里。 OpenCode 是一个"为多模型灵活适配的开放工坊"——LSP 集成让 Agent 具备编译器之眼、模型自由让你按需调配、 MIT 开源让你拥有完全控制权,但安全防护更粗放、上下文管理更粗粒度。
选择的关键不在于哪个"更先进",而在于你的核心诉求是安全与精致还是自由与灵活。