Anthropic 为 Claude Code v2.1.287 推出 Mods:用 TypeScript 函数改写工具调用与界面
Claude Code v2.1.287: Skills Instruct. Mods Decide.
Anthropic 于 2026 年 10 月 1 日发布 Claude Code Mods,需 Claude Code v2.1.287 或更高版本,官方称其为可改变 Claude Code 工作方式的小型 TypeScript 函数,随插件分发,在 CLI 和桌面端可用。
原文梳理了 Mods 与 Skills、MCP 的分工和可挂载的事件点,并提醒 Mods 无沙箱、可读取文件与密钥的风险。
你让 Claude Code 清理一个目录。它想运行一条删除命令,于是弹出一个对话框:允许还是拒绝。对话框从不告诉你这条命令会删掉哪些文件。你在不知道自己在同意什么的情况下按下了“是”。这不是你这边技能不足的问题——权限系统只决定是否要询问,而不决定之后会发生什么。2026 年 10 月 1 日,Anthropic 发布了 Mods,现在这个位置是你的了。
本文中的事实来自官方公告和文档(核查于 2026-10-02/03)。我并未亲自运行每一步;Mods 需要 Claude Code v2.1.287 或更高版本,如果你的界面有所不同,请以你的版本为准。
先动手:两个聊天会话
跳过架构。打开一个 Claude Code 会话并输入:
Make me a mod that shows the current git branch above the prompt box.
Claude 会写一个插件目录——一个 manifest、一个 hooks.json 和一个 register.js——当第一个文件落地时你批准热重载,而在那一轮结束时,分支名就显示在你的提示符上方。这就是会话一。
会话二:把显示改成工具调用计数器。一行代码,保存,在该轮结束时生效。无需安装 Node.js,无需打包器——Claude Code 直接加载你的 .js 和 .ts。
用大白话说说刚才发生了什么:你写了一个函数,告诉 Claude Code“每当你要做某件事时,先经过我。”
三层结构,终于理清了
Skill 是说明书。为模型写的指令。但说明书拦不住一只手——它说了该做什么,而模型仍可能不照做。
MCP 是控制器。外部设备:数据库、API、浏览器。更多可玩的游戏,同样的游戏规则。
Mods 改写游戏本身。游戏还是那个游戏,但界面、数值和行为都可以改变。官方说法是:“改变 Claude Code 工作方式的小型 TypeScript 函数”,随插件一起发布,在 CLI 和桌面端均可工作。
一句话:Skills 告诉它怎么做。Mods 替它做决定。
mod 可以挂钩的地方
- tool.call —— 允许、改写参数或拒绝(拒绝原因会被 Claude 作为工具结果读取),甚至绕过原工具并返回你自己的结果。
- prompts —— 在用户输入发送前改写它;替换或丢弃单个系统提示词部分。
- turn.step —— 在每次模型请求前触发,并可以更改 model 字段。该能力已有文档记载;一个生产级的“按任务路由”mod 目前官方尚不存在,所以今天不要基于它来构建。
- ui.render —— 窗格、提示符上方的横条,甚至重绘工具行和加载指示器。
处理程序构成一条中间件链:on(event, matcher, handler),参数为 ($, e, next)。调用 next(e) 来观察,调用 next({...e}) 来改写(事件被深度冻结),或者不调用 next 直接返回,自己应答该事件——一次拒绝会短路掉下游的一切。
证据:Claude Code 用 mod 改造自己
anthropics/claude-code 仓库在 mods/ 下内置了四个 mod:diff(/diff 命令)、agents-md(AGENTS.md 支持)、telemetry 和 sec-default(组织策略守卫)。你日常使用的功能,就是用你即将使用的同一套机制写成的。
安装任何东西之前先读这个
官方说明:“Mods 运行时对你的机器拥有的访问权限与 Claude Code 本身相同。它们不受沙箱限制。”已加载的 mod 可以读取你的文件、从环境变量中读取 API 密钥、查看每一条提示词、代表你批准工具调用,并消耗你的配额。只从你信任的来源安装;Claude 为你编写的 mod 很方便,但一旦获批,它就会以你的身份运行。文档展示了如何在加载 mod 之前列出它注册的事件。
暂时跳过这些
- 模型路由类 mod:能力已有文档说明,但尚无官方参考实现。
- 从零编写命令审计 mod:命令解析会泄露边缘情况;先从修改官方的 blast-radius 示例开始。
- 把 mod 当作备份:拦截器不是备份。
回到那个对话框:安装了 blast-radius 后,在你按下 Yes 之前,你就能看到某条命令会触及哪些路径——而按下它的仍然是你。Anthropic 说得最好:“我们希望 Claude Code 感觉像是你自己的。”
来源
来源:Google AI:DEV 作者专属(RSS) · dev.to