Claude Code Mods 上线,但自定义 UI 拥有完整机器访问权限
Anthropic 于 10 月 1 日发布 Claude Code mods,将此前相对固定的编程智能体变成了可编程平台,可深入控制其行为。开发者现在可以使用 TypeScript 重写提示词、拦截工具调用、修改界面元素,或替换内置功能。
此次发布的重要性不止于一次常规插件更新。Claude Code mods 可以在编程智能体生成事件之前、之后、环绕事件执行,或直接替代事件。Anthropic 实际上正允许外部开发者在产品的事件流内部修改产品本身。
这种灵活性直接形成了控制权与信任之间的张力。一个实用的 mod 可以在模型读取秘密信息前将其脱敏;一个恶意或设计不当的 mod,同样可以访问 Claude Code 自身可用的机器资源。
比较的焦点已不再局限于哪款编程智能体写代码更好。OpenAI 和 Google 也提供扩展、技能、钩子和连接工具。Anthropic 则通过让智能体的行为和界面具有不同寻常的可替换性来施加竞争压力。
Claude Code Mods 将事件变为扩展点
核心变化在于,开发者现在可以介入 Claude Code 的执行路径内部,而不只是添加指令或外部命令。
Anthropic 将 mod 描述为一个用于改变 Claude Code 运行方式的小型 TypeScript 函数。其发布公告称,mods 同时适用于命令行界面和桌面应用。
Claude Code 在执行操作时会发出事件。这些操作包括提交提示词、调用工具、请求权限,以及渲染部分界面。一个 mod 会针对其中一个或多个事件注册函数。
该函数可在事件之前、之后或替代事件执行。它还可以包裹事件,也就是说,它会在原始操作的前后两侧执行工作。
这种安排类似 Web 应用中的中间件。每一层都会接收事件,并可对其进行检查、转换、阻止或转发。加载顺序决定多个 mods 如何交互。
最先加载的 mod 会最先看到事件。在内部层完成工作后,它最后接收最终结果。这种嵌套模型允许多个独立开发的 mods 参与同一工作流。
实际影响远不止更改颜色或添加快捷方式。据 Anthropic 介绍,mod 可以在模型接收提示词前将其重写,也可以阻止、更改或重试工具调用。
Mods 可以批准或拒绝权限请求。它们可以在 Claude 读取工具输出前对其进行过滤,包括移除凭据或其他敏感值。它们还可以在不改变底层模型的情况下,替换向用户显示的内容。
界面层同样可被介入。Mods 可以修改工具结果、替换问题、添加按钮、接收输入,或创建独立面板。其他 mods 可以在用户与这些控件互动时作出响应。
这使 Claude Code 自定义 UI 不只是装饰性功能。团队可以在对话旁显示构建状态、请求结构化审批,或展示已变更文件的实时视图。
同一个 mod 可以面向终端、桌面应用或两者同时生效。因此,开发者无需为每种界面编写完全独立的扩展,尽管行为仍可能因界面而异。
Anthropic 还将该功能接入 Claude Code 现有的插件系统。Mods 被打包在插件内,而非通过独立的安装机制分发。
用户可以浏览兼容插件,或通过 CLI 中的 /plugin 安装它们。这为 Anthropic 提供了成熟的发现、共享和管理控制路径。
开发者也不一定需要手动编写代码。Anthropic 表示,Claude Code 可以根据请求创建 mod、安装它,并在活动会话期间对其进行热重载。
这一流程降低了实验门槛。用户可以描述所需的安全措施或界面元素,检查生成的 TypeScript,并在无需重启产品的情况下进行测试。
不过,生成代码并不能免除审查需求。它只是将瓶颈从产出扩展转移到判断扩展是否安全运行。
为什么 Claude Code TypeScript Mods 超越了传统钩子
Claude Code TypeScript mods 缩小了观察智能体活动与直接改变活动本身之间的差距。
Claude Code 在此次发布前已支持钩子。传统钩子会在选定的生命周期节点运行命令,通常通过标准输入和输出与宿主交换结构化数据。
该模型适用于通知、格式化、验证和简单的策略检查。但当扩展需要持久状态、交互控件或访问已渲染界面时,它就会变得受限。
Anthropic 表示,传统钩子无法重写每个事件、绘制新的界面组件,或替换现有功能。Mods 通过针对智能体内部事件系统运行类型化函数来增加这些能力。
这一差异很重要,因为外部命令通常位于产品工作流的旁边。函数钩子则可以直接嵌入该工作流,并改变接下来发生的事情。
例如,传统钩子可能在接收危险命令的详细信息后拒绝执行。mod 则可以检查事件、修改命令、请求再次确认,或提供替代响应。
mod 还可以在会话期间保留状态。这支持随智能体工作而更新的控件,例如部署指示器,或与工具活动关联的检查清单。
TypeScript 接口为开发者提供声明式的事件和能力类型。Claude Code 可以通过 /plugin-types 生成这些声明,让编辑器和编译器在运行前识别不受支持的调用。
Anthropic 的mods 文档将函数钩子描述为底层机制。“Mods”是围绕这些钩子构建的插件产品名称。
这是一个重要边界。mod 不是新模型、提示词模板或独立应用。它是在 Claude Code 现有会话中参与运行的可执行扩展代码。
Anthropic 在完整发布前已公开讨论过该机制。一项于 9 月 3 日发起的设计讨论征求开发者对 TypeScript 函数钩子的反馈。
该提案强调可组合性。函数采用延续模式,这意味着每个 mod 都可调用下一层,并在控制权返回时对响应采取操作。
Anthropic 在 9 月 9 日的更新中确认了 Claude Mods 这一名称。该公司还提供了早期内置示例,并通过实验性环境标志启用了测试。
10 月 1 日的发布紧随这次公开预览之后。这一过程表明,Anthropic 希望在将其作为成熟产品能力推出前,先获得对扩展契约的反馈。
此次发布还改变了 Claude Code 核心与可选功能之间的关系。Anthropic 已将用于显示未提交变更的 /diff 移入内置 mod。
用户可以禁用该实现,或将其替换为其他实现。Anthropic 表示,计划逐步将更多现有功能迁移到 mods。
这一方向指向一个由可替换组件包围的更小核心。它也建立了一个公开参考库,展示 Anthropic 自身如何使用该接口。
该代码库目前公开了四个内置 mods 的源代码。其内置源码记录了 sec-default、diff、telemetry 和 agents-md。
这些示例很有价值,因为它们展示的不只是一个承诺中的 API。它们展示了 Anthropic 如何组织完整插件、注册事件、定义类型和测试行为。
该代码库仍将函数钩子标记为早期访问功能,并警告 API 可能在版本之间未经通知而变更。因此,开发者应将当前集成视为对版本敏感。
这一限制决定了团队不应过快让关键工作流依赖 mods。内部状态面板易于修改,而生产授权层则需要更严格的变更管理。
可扩展性的竞争正在进入智能体内部
Anthropic 竞争的不只是哪个模型能生成最强的代码补全,而是谁能控制编程环境。
编程智能体正日益支持可复用指令、外部工具、生命周期钩子和可安装的软件包。这些系统让开发者能够使通用智能体适应特定代码库或组织。
Google 的 Gemini CLI extensions 可以打包提示词、MCP servers、自定义命令、主题、钩子、子智能体和技能。其官方扩展系统强调用户可以安装和共享的软件包。
OpenAI 的 Codex 插件模型结合了技能、MCP servers、可选界面资源和生命周期钩子。已发布的插件架构支持在 ChatGPT 和 Codex 界面之间共享的软件包。
Claude Code mods 与这些系统有所重叠,但 Anthropic 的重点是事件替换和原生渲染。mod 可以改变智能体自身的操作路径,而不只是提供另一种工具或指令集。
这在多个方面形成竞争压力。
首先,开发者可能会期待编程智能体将其界面作为可编程表面开放。当另一款产品允许自定义面板、按钮和渲染结果时,固定的对话记录会变得不那么有吸引力。
其次,团队可能会期待智能体策略具备可执行性和上下文感知能力。静态设置可以定义一般规则,但 mod 可以评估当前事件并作出更具体的决定。
第三,开发者可能会期待内置功能变得可替换。Anthropic 将 /diff 实现为 mod 的决定表明,同一扩展契约可以同时服务第一方和第三方代码。
这并不意味着每个扩展系统都能直接互换。OpenAI、Google 和 Anthropic 暴露的事件、打包规则、信任机制和用户体验各不相同。
它们的底层优先事项也不同。有些系统以可移植指令为核心,另一些则强调与外部服务的连接、命令钩子或嵌入式应用。
Claude Code TypeScript mods 更强调修改正在运行的智能体本身。当工作流需要拦截活动,而不是等待模型选择另一种工具时,这一点很有价值。
设想一个禁止直接修改生产配置的团队。mod 可以检查拟执行的命令,并要求在执行前进行专门确认。
另一个 mod 可以监控 CI 事件,并在对话旁维护状态面板。开发者无需切换窗口,也无需让模型提供更新后的摘要。
还有一个 mod 可以在命令输出进入模型上下文前,从中移除秘密信息。当诊断命令暴露令牌、连接字符串或客户标识符时,这一点尤其相关。
这些场景结合了行为、策略和界面变更。否则,它们将需要混合使用 shell 钩子、包装脚本、仪表板和代码库指令。
因此,最强的竞争优势或许在于整合。单个插件即可分发一套连贯的工作流,同时包含事件逻辑及其 Claude Code 自定义 UI。
然而,产品灵活性并不保证可移植性。基于 Claude Code 事件和界面组件编写的 mod,仍将依赖 Anthropic 的运行时环境。
这为工具开发者带来了战略取舍。深度原生集成可以提供更好的体验,而可移植的 MCP server 或命令行工具则能覆盖更多 agent。
更广泛市场最可能的反应并非完全照搬功能。竞争对手可以转而改善 hook 覆盖范围、交互界面、包分发和安全控制。
Anthropic 的发布仍然抬高了行业基准。开发者如今可以追问:为什么另一款编程 agent 提供了工具,却没有开放自己的渲染管线、权限请求或内置功能?
完整机器访问权限让信任成为真正的约束
最关键的细节,也是最令人不安的一点是:mods 并未与运行 Claude Code 的机器隔离。
Anthropic 表示,mods 拥有与 Claude Code 本身相同的机器访问权限。该公司建议用户只从自己信任的来源安装 mods。
这一警告改变了团队应如何评估该功能。Claude Code mod 是可执行代码,而非被动的提示词或外观主题。
mod 可以参与工具调用和权限决策。它还可以改变用户所看到的内容,包括结果和提问的呈现方式。
这种组合带来了多种风险。
恶意 mod 可能试图读取本地文件、联系远程服务,或影响命令执行。粗心的 mod 则可能在并非刻意攻击用户的情况下泄露信息。
具有欺骗性的界面修改可能隐藏相关输出,或将不安全操作呈现为常规操作。存在缺陷的权限处理程序可能会批准本应需要审查的操作。
组合使用的 mods 又增加了一层不确定性。多个函数可能会观察或转换同一事件,而它们的加载顺序决定了最终行为。
这使得孤立测试并不充分。团队还必须测试各种组合,特别是在多个插件修改提示词、工具、权限或界面输出时。
Anthropic 部分通过插件治理来处理企业控制。管理员可以允许或阻止插件市场,利用已有控制机制,而不是另建独立的 mod 政策渠道。
受管环境还会优先加载一个名为 sec-default 的内置 mod。Anthropic 表示,它可阻止用户安装的 mods 覆盖受管提示词、设置、工具策略和拒绝规则。
优先加载至关重要,因为最外层函数会先于更低层接收事件,并会在这些层返回后再次接收它。这一位置使管理策略能够包裹已安装的扩展。
Anthropic 允许管理员在前面加入自己的 mods。该公司建议管理员在这样做时保留 sec-default,以维持所提供的限制。
这是一个周全的设计,但它并不会让任意第三方代码变成可信代码。sec-default 保护的是选定的受管控制,而不是隔离每一种可能的副作用。
采购和安全审查应明确这一差异。管理优先级降低了一类策略绕过风险,但并不能消除供应链风险。
插件分发同样带来了熟悉的身份问题。精美的列表页面、热门仓库或知名名称,并不能证明每一个版本都包含安全代码。
团队需要来源可追溯性、固定版本、源码审查和可重复测试。他们应当了解谁在维护某个 mod,以及更新如何到达开发者机器。
生成的 mods 同样需要严格审查。Claude Code 可以快速创建一个,但生成的 TypeScript 可能包含逻辑错误、不完整的检查或非预期访问权限。
安全 mod 尤其值得仔细审查,因为用户可能会给予它更高的信任。遗漏一条输出路径的密钥脱敏层,可能制造虚假的保护感。
早期访问 API 还带来了运营风险。破坏性变更可能在 Claude Code 更新后禁用某个策略 mod,或改变事件行为。
对于低风险的个人定制,这种不稳定性或许可以接受。但对于审计日志、生产环境防护措施或合规控制,团队需要在每次发布前进行验证。
开发者还应将界面信任与执行信任区分开来。更改 Claude Code 自定义 UI 的 mod 可以影响用户对已发生事情的判断,即便底层命令日志并不一致。
因此,独立记录十分重要。生产系统应在 mod 自身的显示和存储之外保留权威日志。
关键的不确定性不在于 mods 能否产出有用扩展。Anthropic 已经展示了具体示例,并发布了可运行的内置实现。
不确定的是,在大规模安装成为常态之前,周边生态是否能形成强有力的审查实践。便利性往往比细致检查扩张得更快。
替换内置功能改变了工作流的归属
将第一方功能迁入 mods,使 Claude Code 从一款可配置产品变成一款部分可替换的产品。
/diff 示例很容易被低估。差异查看听起来像是一项狭窄的界面功能,但它的实现确立了一个更大的先例。
Anthropic 可以通过与扩展开发者相同的机制交付功能。用户随后可以禁用内置版本、研究其源码,或替换为另一种实现。
这种安排缩小了第一方与第三方功能之间的差距。它为开发者提供了反映运行时实际行为的示例,而非抽象教程。
它也让团队可以进行带有明确偏好的替换。一家组织可能要求按服务对 diffs 分组。另一家可能隐藏生成文件,或附加仓库特定的审查检查。
自定义实现可以在选定变更旁添加批准按钮。它可以将已更改文件关联到测试状态,或突出显示受更严格策略约束的路径。
其价值不只是定制化。工作流可以保留在编程会话中,减少审查期间在工具之间切换的需要。
如果 Anthropic 遵循其既定计划,同样的模式可能扩展到其他 Claude Code 功能。更多内置功能将成为围绕更小型引擎构建的可选层。
这为独立开发者创造了机会。维护良好的 mod 可以服务专业受众,而无需等待 Anthropic 将该功能列为优先事项。
它也为企业提供了另一个编码内部工作流的位置。公司可以分发同时包含生产力功能和策略执行能力的插件。
但可替换性也会带来碎片化。两名使用 Claude Code 的开发者可能看到不同界面、收到不同权限提示,并运行不同的事件转换。
支持团队在问题发生时需要知道加载了哪些 mods。缺少这一上下文的 bug 报告可能会难以复现。
加载顺序成为环境的一部分。一个单独运行时行为正确的 mod,在被另一个扩展包裹时可能产生不同输出。
这类似于浏览器扩展、编辑器插件和构建系统中间件的复杂性。可扩展性带来杠杆,但也扩大了可能的运行时状态数量。
因此,Anthropic 的测试支持十分重要。该仓库展示了基于同一事件接口构建的测试,并提供了用于验证插件行为的命令。
类型检查可以发现不匹配的声明。单元测试可以验证 mod 如何响应预期事件。但当不可信代码获得广泛能力时,两者都无法保证安全。
组织需要采用分层方法。静态审查、自动化测试、版本控制、分阶段发布和运行时日志分别应对不同的故障模式。
市场模式最终可能还需要更强的信号。经验证的发布者身份、声明的能力、可复现构建和可见的更新历史,都将帮助用户评估风险。
Anthropic 并未通过此次公告证明此类控制措施能够解决问题。此次发布提供了管理构件,而非完整的保障体系。
对于开发者而言,眼前的决定是所需行为是否真的需要 mod。有些需求仍更适合通过仓库说明、skill、外部工具或传统 hook 来满足。
当工作流必须转换事件、保留实时状态、替换渲染,或直接响应界面交互时,mod 才是合理选择。
若仅用于简单文字指引,使用 mod 会增加不必要的可执行代码。更深的集成应对应对更深控制的真实需求。
Claude Code Mods 发布后值得关注的事项
下一阶段将由生态质量、企业控制,以及 mods 能否在 Claude Code 各次发布中保持可靠的证据所决定。
第一个信号是采用 mods 的可信插件范围。小型视觉实验能证明渲染可用,但生产使用需要由明确责任方维护的集成。
关注那些能连接开发工作流、又不隐藏自身行为的 mods。CI 状态、代码审查、测试协调和生产确认都是有力候选场景。
关键证据将是重复使用、透明源码和持续维护。庞大的目录只能衡量供给,无法衡量信任或价值。
第二个信号是 Anthropic 如何处理安全边界。当前架构为受管环境提供了 sec-default,但 mods 仍在缺少通用沙箱的情况下运行。
未来的文档和版本可能增加能力声明、更清晰的权限提示、更强的隔离或更完善的市场审查。这类变化将强化组织广泛采用的理由。
严重的安全事件则会将趋势推向反方向。它将表明,安装便利性超过了拥有本地机器访问权限的代码所需的控制能力。
第三个信号是 API 稳定性。Anthropic 目前将函数 hook 接口标记为早期访问,并警告版本发布可能带来变更。
开发者应关注事件契约变化的频率,以及 Anthropic 如何沟通迁移。稳定的类型、兼容性指导和可预测的弃用周期,将支持持久的集成。
频繁的破坏将使 mods 局限于实验和可选便利功能。团队不会把强制性控制建立在一个未经充分通知便会变化的接口之上。
竞争对手的回应可作为辅助背景。Google 和 OpenAI 已提供扩展包、hooks、skills、连接工具和界面集成。
问题在于,它们是否会开放更多编程 agent 的内部事件和渲染流程。如果会,可编程 agent 界面可能成为一个标准类别,而不只是 Anthropic 的差异化特征。
Claude Code mods 已经改变了产品边界。开发者现在可以使用 TypeScript 函数修改提示词、工具、权限、渲染和部分内置功能。
尚未解决的是,这种自由能否在不形成用户无法合理审查的扩展供应链的情况下实现规模化。
目前,请将每个 mod 都视为本地软件,审查其源码,与其他已安装插件一起测试,并固定团队所使用的版本。然后在安装前提出一个更难的问题:这个工作流是否需要访问 agent 的执行路径,还是更窄范围的扩展也能实现相同结果?



