Claude Code 上线 Mods:几行 TypeScript,把 AI 编程助手改成你的形状
核心看点 Claude Code 迎来 Mods 机制:用几行 TypeScript/JavaS…
文章目录
核心看点
- Claude Code 迎来 Mods 机制:用几行 TypeScript/JavaScript 就能改写它的行为、界面与命令,2.1.287 及以上版本默认开启。
- 不只是观察,还能”改写”:Mods 能拦截工具调用、修改提示词、替换内置功能,甚至画出自己的终端界面。
- 官方带头示范:Claude Code 的 /diff 面板、AGENTS.md 支持等本身就是用 mod 写的,源码已开源。
- 风险提示:mod 与 Claude Code 共享同等机器权限、没有沙箱隔离,官方强调只安装可信来源。
Claude Code 多了一个”可编程层”
过去我们定制 Claude Code,无非是改设置、加权限规则、写斜杠命令、挂技能和状态栏——这些都是在既有框架里”配置”。Mods 则更进一步:它是一个跑在会话内部的 JavaScript/TypeScript 模块,能直接参与 Claude Code 的运行时,看到每一个事件,并决定它往哪走。
用官方的话说就是:“Hooks 负责观察,Mods 负责改写。”
它是怎么工作的
一个 mod 本质上是一个 Claude Code 插件,行为写在 JS/TS 模块里:文件夹里有 .claude-plugin/plugin.json 清单,hooks/hooks.json 指向模块,模块导出 register(on, options),再用 on(event, matcher, hook) 挂载钩子。
这些钩子像中间件一样串成链:你的代码先跑,调用 next(e) 把事件交给下一个插件,最后回到 Claude Code 自己的逻辑。一个钩子可以做三件事——观察(记录每次文件修改)、改写(把命令换成更安全的版本)、拦截(直接拒绝某次工具调用)。
它能覆盖的事件包括工具调用、提示词提交、每轮对话的开始与结束、会话生命周期、斜杠命令,甚至 ui.render(界面绘制的每一块)。模块跑在自己的沙箱里,没有 DOM、也没有 Node,外部能力都通过 API 对象访问。
为什么它不只是”又一个插件”
最直观的区别是:普通设置钩子每来一个事件就启动一次 shell 进程、用 stdin/stdout 传 JSON;而 mod 在会话里只加载一次就常驻,可以保存状态、实时刷新界面,还能反过来调用 Claude Code——打开一个面板、跑一个进程、注册命令或工具。
官方给出的三个示例很能说明问题:Token Weather 在输入框上方画一条”上下文天气预报”,用晴、多云、雨、风暴提示窗口还剩多少;Blast Radius 在 rm -rf 这类危险命令执行前先展示影响范围;Replay Theater 则把变更回放做成可浏览的视图。三个示例的完整代码都放在公开仓库 anthropics/claude-code-playground 里。
更值得注意的是,Claude Code 自己的一些功能就是用 mods 实现的,比如 /diff 面板和 AGENTS.md 支持——它们的源码就在 anthropics/claude-code 的 mods/ 目录下。官方功能和社区扩展用同一套接口,这基本坐实了 Claude Code 正在从”编码助手”走向”内核 + 可插拔模块”的可编程平台。
上手门槛比想象中低
你不需要先啃 API 文档。在终端里启动 claude,直接把想要的 mod 描述给它即可——比如”帮我在提示栏上方做一个上下文窗口的实时预报”。允许它开启热重载后,mod 会在当前回合结束时出现;之后每次改动都会原地重载,可以边聊边改。每次加载时,Claude Code 还会把类型声明写进插件目录的 .claude-plugin/types/,供编辑器补全和类型检查使用。
需要留个心眼
方便的另一面是权限。Mods 与 Claude Code 共享同等的机器权限,且没有沙箱隔离——装上来源不明的 mod,等同于让陌生代码在你的电脑上运行。对 Team / Enterprise 计划,管理员可以优先加载安全策略 mod,并限制可安装的市场来源。普通用户的原则很简单:只从可信来源安装。
总结
Mods 补上了 Claude Code 一直缺的那块拼图——一个足够底层、又能被开发者自由改写的扩展层。它把”定制”从改配置推进到改行为,也让官方功能和第三方扩展站在了同一条起跑线上。对个人开发者,它是把工具调成顺手形状的捷径;对团队,它是安全策略与内部流程的落点。唯一要记住的是:能力越大,来源越要挑。
本文地址:https://www.163264.com/16489