/diff 已被拆成可替换的 mod,官方还要迁更多内置功能;代价是 mod 与本体同权限、没有沙箱。
在此之前,想让 Claude Code 按自己的习惯工作,手段大致是三层:CLAUDE.md 写规则、settings 里配权限、hooks 在特定时机跑一段 shell 脚本。hooks 已经能做不少事,但它本质上是「旁路」——外部脚本看得到事件、能返回放行或拒绝,却碰不到界面,也替换不了任何内置能力。
mods 把这条边界往里推了一大截。按官方博客的描述,一个 mod 就是订阅 Claude Code 事件的 TypeScript 函数,能做的事情包括:
同一个 mod 可以只作用于终端、只作用于桌面版,也可以两边都生效。官方还特意提到,写 mod 这件事本身也可以交给 Claude 去做。
比功能清单更说明方向的,是内置的 /diff 已经改由 mod 实现:用户可以像对待任何第三方扩展那样把它关掉或换掉。官方表示后续还会把更多内置功能迁成 mod。
这意味着 Claude Code 正在把自己拆成「内核 + 一堆可插拔模块」,官方功能和社区扩展站在同一套接口上。TG 频道补充的一个细节很有意思:发布当天,DeepSeek Harness 团队负责人崔添翼在 X 上转发并祝贺,指出这和 DeepSeek Harness「一切皆插件」的设计思路相近。两家在编程代理的外壳形态上走到一起,并不意外——当底层模型能力越来越接近,谁的外壳更容易被用户改造,谁就更可能留住重度用户。
分发渠道沿用现有插件体系:在 CLI 里运行 /plugin 或从 Claude 目录安装,想分享则把 mod 打进插件提交到目录。据第三方整理,mods 随 Claude Code 2.1.287 一同上线。
mod 能批准权限、能改工具调用、能读到工具输出,而它运行时拥有和 Claude Code 完全相同的本机访问权,官方没有为它准备沙箱,只提醒「只安装可信来源」。换句话说,一个恶意 mod 可以悄悄放行本该弹窗确认的命令,也可以在「脱敏」的名义下把数据转发出去,用户在界面上未必看得出异样。
Anthropic 的折中办法是在 Team 和 Enterprise 版上预装一个名为 sec-default 的安全 mod,让它最先加载,防止其他 mod 对权限规则做不安全的修改。个人版没有这层兜底,信任判断完全落在用户自己身上。
插件生态过去几年在浏览器扩展、VS Code 扩展上反复演过同一出戏:开放度带来繁荣,也带来投毒包和被收购后变质的老扩展。编程代理的权限比浏览器扩展高得多,它本来就被授权执行 shell、改代码库、读环境变量。mods 打开的口子越大,目录审核和签名机制就越需要跟上。
官方文档里举的团队场景很说明问题:在界面上显示 CI 流水线状态、改生产环境前强制二次确认、把所有 mod 交互写进审计日志。这些需求以往要靠包一层脚本甚至自研代理来实现,现在可以直接长在 Claude Code 里。
对个人开发者,最实用的大概是两类:一是脱敏,把 .env、令牌这类东西在进入上下文前就挡掉;二是把自己常用的工作流固化成按钮或命令。至于启动、登录、网络这些更基础的稳定性问题,mods 解决不了,那仍是 Claude Code 稳定使用指南里那些配置该管的事。真正悬而未决的是:当越来越多内置功能变成可替换的 mod,出了问题时,用户还能不能分清是 Claude Code 的锅,还是自己装的哪个 mod 的锅。