Anthropic 为 Claude Code 推出 mods 自定义功能
Customize Claude Code with mods
Anthropic 为 Claude Code 推出 mods,即改变 Claude Code 行为的 TypeScript 函数,可重写提示词、添加界面、替换内置功能或新增功能,随插件安装分享,支持 CLI 和桌面端。
官方给出 mods 的事件钩子机制与权限边界,可据此判断 Claude Code 的可定制程度与安全取舍。
今天我们推出 mods,这是一些小型的 TypeScript 函数,可以改变 Claude Code 的工作方式。一个 mod 可以重写提示词、添加新的 UI、替换内置功能,或添加全新的功能。你可以自己编写 mod,也可以让 Claude Code 帮你写一个。Mods 随插件一起分发,因此你可以像安装和分享任何插件一样安装和分享它们。它们可在 Claude Code CLI 和桌面应用中运行。
Mods 运行时对机器的访问权限与 Claude Code 本身相同。它们不在沙箱中运行,你只应从你信任的来源安装 mods,就像你在电脑上安装任何代码一样。
要了解 mods 能做什么,请阅读我们的首个 mod 构建指南。
我们为什么构建 mods
开发者们希望在不等待我们发布功能的情况下,对 Claude Code 的工作方式拥有更多控制权。Hooks 帮助用户获得了一部分这样的控制权,但 hooks 无法重写事件、绘制新 UI 或替换功能。Mods 可以。
我们希望 Claude Code 感觉像是你自己的,这样你就可以按照自己的工作方式来塑造它。我们在发布前在 GitHub 上分享了 mods 的设计,以征求开发者的反馈。感谢所有提出意见的人。
Mods 如何工作
每当 Claude Code 做某件事时,它都会发出一个事件。例如调用工具、请求权限,以及绘制屏幕的一部分。一个 mod 就是一个挂接到这些事件之一的函数。一个 mod 可以在事件之前、之后或代替事件运行。它还可以包裹事件,在事件前后都运行代码。借助一个函数,一个 mod 可以:
- 在提示词到达模型之前重写它。
- 阻止、重写或重试工具调用。
- 批准或拒绝权限请求。
- 在 Claude 读取工具输出之前,从中删除敏感信息。
一个 mod 还可以改变你所看到的内容。它可以编辑或替换 Claude Code 绘制的界面的一部分,比如工具结果或 Claude 提出的问题。它可以添加按钮和输入框,其他 mods 可以在你按下它们时做出响应。目前,一个 mod 可以针对终端、桌面应用,或两者。
当多个 mods 挂接同一个事件时,它们按加载顺序运行。最先加载的 mod 最先看到事件,最后看到结果。这让你可以叠加来自不同作者的 mods。
你还可以使用 Claude Code 来修改 Claude Code。让 Claude 创建一个 mod,它可以编写 TypeScript、安装它,并在你的会话中热重载它。
用你自己的功能替换内置功能
Claude Code 的一些内置功能现在以 mods 的形式发布。例如,内置的 /diff 功能现在是一个 mod,因此你可以关闭它(在 /plugin 中)或用你自己的版本替换它。我们计划逐步将更多内置功能迁移到 mods,这样你就可以把 Claude Code 精简到一个小核心,只添加你想要的功能。
面向团队和企业的 mods
Mods 随插件一起分发,因此你现有的插件控制措施同样适用。管理员可以允许或阻止插件市场。在 Team 和 Enterprise 计划中,所有者可在管理控制台中设置此项。在 Claude API 和第三方 API 计划中,管理员将托管设置推送到用户的机器上。
在 Team 和 Enterprise 计划中,以及在任何具有托管设置的机器上,一个名为 sec-default(“security default”)的内置 mod 会首先加载。它会阻止用户安装的 mods 执行有风险的操作,例如覆盖你的权限拒绝规则。你可以查看源代码以了解它限制了什么。管理员可以改为首先加载自己的 mods。如果你这样做,请将 sec-default 添加到你的列表中,以保留其限制。
团队还可以使用 mods 构建自己的控制措施和功能。例如:
- CI/CD 状态:mod 可以在对话旁边的窗格中显示你的流水线状态,并在构建通过或失败时更新。
- 生产防护措施:mod 可以要求在任何命令触及生产配置之前进行确认。
- 审计日志:最先加载的 mod 可以记录其他所有 mod 发出的每一次调用。
快速上手
mod 现已在 Claude Code CLI 和桌面应用中提供。可从 Claude 目录安装包含 mod 的插件,或在 CLI 中运行 /plugin。要分享 mod,请将其打包为插件并提交到目录。
来源:Claude Blog · claude.com