模型: openai/gpt-5.4
生成日期: 2026-04-01
书名: Claude Code VS OpenCode:架构、设计与未来
章节: 第4章 — 工具系统设计
Token用量: 约 13,500 input + 2,300 output
4.2 共有工具清单
尽管 OpenCode、Claude Code 与 OMO 的定位不同,但三者已经收敛出一套相当稳定的 common tool surface。它们都围绕六类能力展开:文件操作、搜索、执行、网络、组合、交互。这个共性非常重要,因为它说明 2026 年的 coding agent 已经出现了一套事实上的“最小充分工具集”。
第一类是 文件操作。OpenCode 提供 read、write、edit、multiedit;Claude Code 对应 FileReadTool、FileWriteTool、FileEditTool、NotebookEditTool;OMO 一方面沿用宿主能力,另一方面补充 hashline-edit 之类更精细的编辑工具。其核心目标一致:让模型能以受控方式读取局部内容、修改目标片段、写入新文件。这里的关键不是“能写文件”,而是“能在最小上下文成本下写对文件”。
第二类是 搜索。OpenCode 有 grep、glob、codesearch;Claude Code 有 GrepTool、GlobTool、LSPTool、ToolSearchTool;OMO 则扩展出 ast_grep_search、ast_grep_replace、会话搜索与 session search。grep/glob 解决的是文本与路径层面的定位,codesearch 和 AST-Grep 则进一步进入 syntax-aware 或 repository-aware 搜索。所谓 AST(Abstract Syntax Tree,抽象语法树),可以简单理解为“把源码从字符序列提升为语法结构树”,因此 AST 搜索比普通字符串搜索更接近“程序结构理解”。
第三类是 执行。OpenCode 的代表是 bash 与 batch;Claude Code 有 BashTool、PowerShellTool、REPLTool;OMO 除常规执行外,还引入 interactive-bash,借助 PTY/Tmux 管理长生命周期交互命令。PTY(Pseudo-Terminal,伪终端)可理解为“给程序模拟一个真实终端会话”,因此它适用于 vim、htop、交互式 REPL 这类一次命令无法完成的场景。
第四类是 网络。OpenCode 提供 webfetch 与 websearch;Claude Code 对应 WebFetchTool、WebSearchTool、浏览器或 MCP 网络能力;OMO 则在此基础上增加 google_search、websearch_web_search_exa 等封装。这里的 common pattern 是:一个工具负责定向抓取 URL,另一个工具负责开放式搜索,再由模型决定何时直接读网页、何时先搜再抓。
第五类是 组合。OpenCode 用 task、skill、todo、plan_enter/exit 形成基本编排;Claude Code 用 AgentTool、任务工具族、TodoWriteTool、skill 体系形成更产品化的 orchestration layer;OMO 则把这一层推到极致,加入 call_omo_agent、background task、session manager、skill-MCP、slash command 等工具。它说明多智能体系统真正强大的地方,往往不是单个工具,而是工具之间能不能彼此调用、彼此分工。
第六类是 交互。OpenCode 有 question,Claude Code 有 AskUserQuestionTool 与消息类工具,OMO 也保留提问、通知、状态汇报相关能力。其意义在于,Agent 不是全自动脚本,而是需要在不确定性高时把控制权还给用户。
下面给出一个简化映射表:
| 能力类别 | OpenCode | Claude Code | OMO |
|---|---|---|---|
| 文件读取 | read | FileReadTool | read / 封装读取 |
| 文件写入 | write | FileWriteTool | write / 守卫增强 |
| 文件编辑 | edit / multiedit | FileEditTool / NotebookEditTool | hashline-edit + 宿主编辑 |
| 路径搜索 | glob | GlobTool | glob |
| 文本搜索 | grep | GrepTool | grep |
| 代码/结构搜索 | codesearch / lsp | LSPTool / ToolSearchTool | ast_grep_search / LSP工具 |
| 命令执行 | bash / batch | BashTool / PowerShellTool / REPLTool | bash / interactive-bash |
| 网页抓取 | webfetch | WebFetchTool | webfetch / 网络扩展 |
| 网络搜索 | websearch | WebSearchTool | google_search / Exa 封装 |
| 子任务/子代理 | task | AgentTool / Task tools | call_omo_agent / background task |
| 技能 | skill | SkillTool / skill discovery | skill / skill_mcp |
| 用户提问 | question | AskUserQuestionTool | question / 相关交互工具 |
从这张表可以看出,三者并不是“工具完全不同”,而是共享一套核心骨架,再在搜索深度、编排能力、交互复杂度上分化。OpenCode 给出了干净的最小集,Claude Code 给出了工业级高覆盖实现,OMO 则在这个共同骨架之上发展出更激进的 orchestration superstructure。这一共享清单,本身就是当代 Agent 设计共识的缩影。