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 次编辑重命名。

入门指南中的 Token Weather 区间
已用上下文预报
低于 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 仓库。产品文章和入门指南都没有点名那个仓库。

来源

Claude Developers · @ClaudeDevs

相关来源

资料与编写依据

本文依据的是 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 的价格。