Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

26.1 Claude Code 的扩展面:今天能做什么

模型: claude-opus-4-6 (anthropic/claude-opus-4-6) 生成日期: 2026-04-01 书名: Claude Code VS OpenCode:架构、设计与未来 章节: 第26章 — 设计“Oh-My-Claude-Code“ Token 消耗: ~6,200 输入 + ~1,100 输出


在讨论如何为 Claude Code 构建一个多智能体编排层之前,必须先清点它今天实际暴露了哪些扩展接口。一个系统的可扩展性不取决于它有多少功能,而取决于它把哪些功能的控制权交给了外部开发者。

26.1.1 五个核心扩展面

钩子系统(Hooks)

Claude Code 提供了 5 个生命周期钩子点:

钩子触发时机典型用途
PreToolUse工具调用前安全拦截、参数校验
PostToolUse工具调用后结果审计、日志采集
Notification通知触发时外部告警集成
Stop智能体停止时清理工作、状态持久化
SubagentStop子智能体停止时子任务结果汇总

这些钩子通过 .claude/settings.json 配置,以 shell 命令形式执行。它们的设计哲学明确偏向可观测性与安全防护——你可以看到发生了什么,可以在危险操作前拦截,但你不能改变对话本身的内容流。

衍生解释:生命周期钩子(Lifecycle Hook)——这个概念源自框架设计,指的是在系统运行的关键节点(如初始化、执行前、执行后、销毁)预留的回调插槽。开发者可以在不修改框架源代码的情况下,在这些节点注入自定义逻辑。React 的 useEffect、Vue 的 onMounted、Kubernetes 的 preStop 都是同一思想的体现。

自定义智能体(Custom Agents)

通过 .claude/agents/ 目录,用户可以用 Markdown 文件定义专门化的智能体。每个 .md 文件就是一个智能体的系统提示词,可以在对话中通过 /agent 命令调用,或被 AgentTool 以子智能体方式派遣。

这是 Claude Code 扩展面中最灵活的部分——因为系统提示词几乎可以编码任意行为逻辑。Oh-My-OpenCode 的“Sisyphus 提示“方法,本质上就是把完整的编排规则写进系统提示词。

MCP 服务器

通过 .claude/mcp.json 配置外部 MCP 服务器,为智能体动态增加工具。MCP(Model Context Protocol,模型上下文协议)是 Anthropic 主导的开放标准,充当 LLM 与外部服务之间的“USB-C 接口“。

MCP 是三个系统共有的扩展机制,但对 Claude Code 而言尤其关键——因为它是唯一一种不需要修改 Claude Code 源码就能新增工具的方式。OpenCode 和 Oh-My-OpenCode 可以通过插件系统的 tool 钩子直接注册原生工具,Claude Code 目前没有等价能力。

插件系统(Plugins)

Claude Code 的插件目录 .claude/plugins/ 支持注册自定义命令、工具和技能。但需要注意,这里的“插件“与 OpenCode 的插件系统在架构深度上有本质区别。OpenCode 的插件拥有 8 个生命周期钩子点的完整控制权,能够拦截消息流、变换上下文、注入配置。Claude Code 的插件更接近“预打包的命令集合“——它扩展了交互界面,但没有深入对话引擎的内部。

记忆系统(CLAUDE.md)

CLAUDE.md 文件及其层级结构(全局 ~/.claude/CLAUDE.md、项目根目录 CLAUDE.md、子目录 CLAUDE.md)构成了 Claude Code 的持久化记忆。智能体在每次会话开始时自动加载这些文件,将其内容注入系统提示词的上下文中。

26.1.2 暴露了什么 vs 锁定了什么

理解 Claude Code 的扩展边界,关键在于区分“暴露“与“锁定“:

已暴露(可外部控制):

  • 工具调用的前后拦截(通过钩子)
  • 新工具的注入(通过 MCP)
  • 智能体行为的定制(通过自定义智能体提示词)
  • 持久化上下文(通过 CLAUDE.md)
  • 会话停止时的清理逻辑(通过 Stop 钩子)

已锁定(无法从外部控制):

  • 用户消息到达 LLM 之前的拦截与变换
  • 对话历史的动态修改或注入
  • 模型选择(不同智能体不能使用不同模型)
  • 工具注册的编程式 API(必须通过 MCP 协议)
  • 上下文压缩策略的定制
  • 子智能体的并发调度与会话延续

这个暴露/锁定的划分揭示了一个清晰的设计意图:Claude Code 把安全性和可观测性放在了扩展优先级的最高位,而把对话引擎的控制权牢牢握在自己手中。这种取舍在商业产品中完全合理——它保证了用户体验的一致性和安全底线。但对于想要构建深度编排层的开发者来说,这意味着很多在 OpenCode 上轻而易举的事情,在 Claude Code 上需要绕行甚至根本做不到。

26.1.3 小结

Claude Code 今天的扩展面足以支撑相当丰富的定制场景:你可以定义专门化智能体、接入外部工具、在关键节点插入安全检查、维护跨会话的项目记忆。但如果你的目标是像 Oh-My-OpenCode 那样构建一个完整的多智能体编排层——包括消息变换、上下文注入、工具执行拦截、智能体级模型路由——那么当前的扩展面还不够。

下一节,我们将精确对比这些差距。