mods 改变什么
2026年10月1日的 Anthropic 产品文章把 mods 介绍为小型 TypeScript 函数,用来改变 Claude Code 在 CLI 和桌面应用中的工作方式。文章说,开发者希望不必等 Anthropic 发布功能,就能获得更多控制。hooks 已经提供了其中一部分控制。Anthropic 说,hooks 不能改写事件、绘制新界面或替换功能,而 mods 可以。文章说,设计在发布前就放到 GitHub 上征求反馈,但没有给出那次讨论的链接。一个 mod 可以改写提示、增加界面、替换内置功能,或增加新行为。它随插件发布,也就是 Claude Code 本来用来安装和分享扩展的那个包。ClaudeDevs 在同一天发文说,你可以写几行 TypeScript,或让 Claude 来做这个 mod,然后在 CLI 或桌面应用里用 /plugin 安装。那篇帖子结束在“A few examples:”这一行。ClaudeDevs 的后续帖说,团队用 mods 做了 /diff 和 AGENTS.md 支持,并且正在把预先做好的示例 mod 加到 Claude Code Playground 仓库。
产品文章说,Claude Code 每做一件事都会发出一个事件。例子包括工具调用、权限请求,以及绘制屏幕的一部分。mod 可以在事件之前、之后、代替它,或包住它,让代码在前后都运行。一个函数就能在提示到达模型之前改写它,拦住、改写或重试一次工具调用,批准或拒绝权限请求,或在 Claude 读取工具输出之前涂掉其中的秘密。入门指南里的事件还包括已提交的提示、回合的开始和结束、会话的开始和结束、斜杠命令,以及界面每一块被绘制时的 ui.render。在这份指南里,hooks 像中间件一样串成一条链。hook 可以调用 next 并读取返回值来观察,可以带着改过的事件调用 next 来改写,也可以不调用 next 直接作答,例如返回 deny。mod 可以面向终端、桌面应用,或两者。多个 mod 挂上同一事件时,按加载顺序运行。最先加载的那个先看到事件,并在其他 mod 跑完之后看到结果。不同作者的 mod 就是这样叠在一起的。
入门指南关于沙箱的说法是:模块在自己的沙箱里运行,没有 DOM,也没有 Node,所以沙箱之外的一切都经过 $ 宿主 API。产品文章里 mods 没有被沙箱隔离这句话,指的是通过这个 API,mod 拥有与 Claude Code 相同的机器访问权限。只从你信任的来源安装。指南说,模块是 JavaScript 或 TypeScript,并在整个会话期间保持加载。settings hook 针对每个事件运行一条 shell 命令,经 stdin 和 stdout 传递 JSON。mod 只加载一次,可以保留状态,可以绘制会更新的界面,也可以回调 Claude Code。
谁能用,以及受什么控制
入门指南要求 Claude Code 2.1.287 或更高版本。mods 默认开启,API 可能在版本之间变化。每次加载都会把该构建的类型声明写进 .claude-plugin/types/,指南把这里称为你这个版本的依据。Claude Code changelog 用一行记录了这项添加:“Added Claude Mods: plugins may now modify deeper behavior.” 2.1.287 这一最低版本来自入门指南。产品文章、指南和 changelog 都没有写出 mods 的价格。产品文章点名了 CLI 和桌面应用。
插件市场的允许与阻止控制仍然有效。Team 或 Enterprise 的所有者在管理控制台里设置。在 Claude API 和第三方 API 方案上,管理员把 managed settings 推送到用户的机器。在 Team 和 Enterprise 方案上,以及任何带有 managed settings 的机器上,名为 sec-default(“security default”)的内置 mod 最先加载。它阻止用户安装的 mod 做出有风险的动作,例如覆盖权限拒绝规则。产品文章说,你可以查看源码,了解它限制了什么,而文章把那份清单留在源码里。管理员可以让自己的 mod 先加载,同时也被告知要把 sec-default 留在列表中。内置的 /diff 现在作为 mod 发布,你可以在 /plugin 里关掉它,或换成自己的版本。指南说,AGENTS.md 支持和 /diff 窗格都是 mod,源码和测试在公开的 anthropics/claude-code 仓库的 mods/ 下。Anthropic 计划随时间把更多内置功能迁到 mods。产品文章里的团队例子包括一个 CI/CD 状态窗格、命令触碰生产配置之前的确认,以及一个最先加载的 mod 写下的审计日志。那个生产确认是草图。指南里的 Blast Radius 才是写好的命令检查,在那里文本匹配是安全网,权限规则才是硬拦截。
如何试一个
产品文章说,mods 今天已经可用。可以从 Claude 目录安装包含 mods 的插件,或在 CLI 里运行 /plugin。让 Claude 创建一个 mod,它可以写好 TypeScript、装上,并在会话里热重载。指南说,这条捷径只在当前会话加载,文件夹稍后会被清掉。想留下它,就把文件夹复制出去,再当作插件安装。指南还说,在你运行安装命令之前什么都不会装上;并且你应该先读发布者的仓库,因为 mod 是发布者写的代码,带着 Claude Code 的访问权限。
在会话里,指南的顺序是 /plugin marketplace add、/plugin install 和 /reload-plugins。在 shell 里,指南记录了 claude plugin marketplace add、claude plugin install、claude plugin validate 和 claude plugin test。用 claude --version 确认构建版本。指南的第一个完整例子 Token Weather 大约 80 行。它在会话开始后以及 main-loop 回合之后调用 $.session.usage(),读取与状态行相同的数字,并在提示上方画一行预报。指南说,除非你要求 token 计数的明细,这次调用是免费的。指南还说要把读数放在 $.state 里,因为热重载会让模块变量从头开始。演示画面依次显示这条带子位于 200k 窗口的 18%、67% 和 81%。
指南接着介绍两个更大的 mod。Blast Radius 会拦住它归类为 rm -rf、git reset --hard、git clean、force push 或数据库迁移的 Bash 调用,然后给出 Proceed 和 Cancel。在指南的图示里,它拦住 rm -rf build,并列出 9 个文件(1.1 MB)。指南把这称为读取命令文本的安全网,因此命令替换、别名,以及会调用 rm 的脚本都能绕过它。真正提供硬拦截的是权限规则。指南说,一个 hook 每次分发有 10 秒属于自己的时间,在 $ 调用里等待的时间不算在内。Blast Radius 用这条规则,在短的 sleep 调用上等待,直到用户做出选择。Replay Theater 在 main-loop 回合中记录 Edit 和 Write,在 Write 落地之前用 $.fs.read 读取旧文件,并且不拦截、不改动这次编辑。随后一条提示提供 r 或 /replay,用来逐步查看这一回合的 diff。指南的图示是跨 3 个文件的 5 次编辑重命名。
| 已用上下文 | 预报 |
|---|---|
| 低于 25% | Clear |
| 25–49% | Cloudy |
| 50–74% | Showers |
| 75–89% | Storm |
| 90% 及以上 | Compact soon |
两个官方页面没有写死的地方
分享有两种说法。产品文章说,把 mod 打包进插件,提交到 Claude 目录。入门指南说,一旦 Claude 目录开始接受包含 mods 的插件,就可以在 claude.ai/directory/manage 提交。两个来源都没有写这次切换的日期。ClaudeDevs 说,示例 mod 正在被加到 Claude Code Playground 仓库。产品文章和入门指南都没有点名那个仓库。
来源
相关来源
资料与编写依据
本文依据的是 2026年10月1日发布的 ClaudeDevs 公告和关于示例 mod 的后续帖、同日的 Anthropic 产品文章 Customize Claude Code with mods、claude.dev 指南 Getting started with Claude Code mods,以及截至 2026年10月1日的 Claude Code changelog。工具调用、权限请求和屏幕绘制的例子来自产品文章。$.session.usage() 调用和 hook 的 10 秒预算来自入门指南。changelog 里关于 Claude Mods 的那一行没有写出版本。指南把 2.1.287 写为最低版本。单独的 mods API 参考和 Claude Code Playground 仓库不在本文范围内。产品文章、指南和 changelog 都没有列出 mods 的价格。