Claude Code 推出 mods,可用 TypeScript 函数改写提示词、替换内置功能
Customize Claude Code with mods
Anthropic 为 Claude Code 推出 mods,一种小型 TypeScript 函数,可挂接到 Claude Code 的事件流,改写提示词、拦截或重试工具调用、审批权限请求并添加新 UI,随插件安装和分享。
原文给出 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 提出的问题。它可以添加按钮和输入框,其他 mod 可以在你按下它们时做出响应。目前,一个 mod 可以针对终端、桌面应用,或两者。
当多个 mod 挂接同一个事件时,它们按加载顺序运行。最先加载的 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