Skip to content

Claude Mods:用 Function Hooks 扩展界面

Claude Mods 是面向 Claude Code 的一类扩展:工程原语叫 function hooks(TypeScript 中间件)。一个 mod = 一个用 function hooks 写的插件——可以拦工具调用、动界面、注册工具、自带状态,而不只是在 shell 里跑一段脚本。

社区在 9 月中旬前后开始热议;Boris Cherny 一带的工程叙事也指向这层能力。本文只写开发者需要知道的边界:它是什么、和旧 hooks 差在哪、现在稳不稳、信任怎么判。

Function hooks ≠ hooks.json 里的 shell 钩子

你已经熟悉的 hooks.json / 命令钩子,多半是「某事件触发后跑 shell」。Function hooks 是另一层:在引擎行为外包一层,风格接近 Express 中间件:

ts
on(event, matcher, ($, e, next) => {
  // 可拦截、改写,再 next()
})

能力大致包括:

  • 拦截或改写工具调用(请求进模型 / 工具前后动手脚)
  • 触达 UI(旁路面板、状态条一类)
  • 注册额外工具
  • 在 mod 内持有状态

中间件拿到的 $ 是受控能力面:方便做管理审计、allowlist,而不是把整台机器裸交给任意脚本。细节以你本机版本的文档为准;下面只强调心智模型。

传统 hooks 适合「提交前跑 lint」「Stop 时记一笔日志」。Function hooks 适合「我想改 Claude Code 自己怎么表现」。两者可以并存,别混成同一个配置文件概念。

状态:落地中 / 早期预览

这是正在落地的能力,很多环境仍是早期访问或预览:

  • 近期构建里,运行时可能藏在旗标后(社区写到约 2.1.260 一带出现过 CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1
  • 不要默认每个用户一打开就有 Mods;先查自己的版本与官方说明
  • API、事件名、$ 表面都可能变——演示能跑 ≠ 生产可依赖

升级后再试:

text
claude update

若文档或 release note 要求环境变量,再按说明打开;没有入口就别硬翻二进制。

社区演示:说明可能性,不是安装清单

已经出现的 demo 方向(举例,不背书具体仓库):

  • 在 Claude Code 旁边塞一个可玩的 Tetris:Stop 时暂停,UserPromptSubmit 时继续——证明 UI 与生命周期钩得上
  • CI 状态面板:把流水线红绿挂在会话旁
  • 聚焦类工具:收窄当前任务相关视图

这些用来理解「mod 能做什么」。不要随便装来路不明的 mod:它们能看见工具流量,权限面接近「进了引擎房间」。安装与评测心态对齐 插件指南plugin eval:只装信任源;能跑通不等于值得开给生产仓库。

和 Skills、MCP、普通插件怎么分

机制主要干什么
Skills可复用工作流 / 清单,用到才加载
MCP接外部工具与数据源
普通插件打包 commands / skills / hooks 等跨仓复用
Mods进程内 UI / 行为插件(function hooks)

Skills 管「怎么做事」;MCP 管「外面有什么工具」;Mods 管「Claude Code 自己长什么样、中间层怎么拦」。更细的 Skills / MCP / Hooks 对照见 这篇。写 skill 模式仍看 Skills 指南

信任原则(写进日常习惯)

  1. Mods 能看见工具调用与相关上下文——当不可信代码处理
  2. 只从你信任的来源安装;团队仓库用 allowlist / 审计流程卡住 $ 能力
  3. 演示仓库先在干净环境试,再接到真实密钥与生产路径
  4. 评测行为变化可用 plugin eval 那套思路:有 / 无 mod 对照,而不是只看「界面炫不炫」

实操小结

  1. 把 Mods 理解成 function hooks 插件,不是换皮的 hooks.json
  2. 先确认版本与文档;旗标预览期别假设人人默认开启
  3. 用社区 demo 理解能力边界,不把随机 mod 装进主力环境
  4. Skills / MCP / Mods 分工:流程、外部工具、进程内行为
  5. 信任优先:能看工具流量 = 高权限扩展

Mods 值钱的地方是让「界面与引擎行为」也可插件化;在预览期,克制比追新更重要。

Claude-cn.org,专注于 Claude Code 中文教程