---
title: "Claude Mods：配置、Function Hooks 与安全指南"
canonical: https://wavect.io/zh/blog/claude-mods-function-hooks/
language: zh
description: "Claude Mods 是什么？基于官方文档与源码，比较 Function Hooks、Skills 和 MCP，说明实验性启用方式、内置示例、权限边界，以及团队试点需要的验收测试。"
image: "https://wavect.io/img/blog/headers/header_claude-mods-function-hooks.png"
---

[**返回**](/zh/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/zh/team/kevin-riedl/)

[Kevin Riedl](/zh/team/kevin-riedl/) https://linkedin.com/in/wsdt

13 分钟 阅读 · 2026年9月16日 最近审核 2026年9月16日

[**下一篇**](/zh/blog/claude-code-design-system-files/)

# Claude Mods：配置、Function Hooks 与安全指南

要点速览

Claude Mods 是通过 Function Hooks 扩展运行时事件和受支持界面的 Claude Code 插件。截至 2026 年 9 月 16 日，Anthropic 已公开实验性访问方式，但 API 仍处于抢先体验阶段，可能继续变化。Mods 补充而不是替代 Skills、MCP 和传统 hooks。建议先做受控试点，记录类型与版本，并验证权限、数据处理、故障路径和回滚。本文基于文档与源码审阅，不是实际性能测试，也不证明功能已达到生产就绪状态。

**Claude Mods 是通过 function hooks 扩展 Claude Code 运行行为的插件，而不只是为智能体补充指令或外部工具。**它们可以参与引擎事件处理和界面渲染。对团队来说，真正重要的不是演示有多精彩，而是扩展能否解决反复出现的问题，同时不让权限管理、调试和升级变得更复杂。

**资料核查日期：2026 年 9 月 16 日。**本文基于文档与源码审阅，不是实际运行环境中的性能测试。我们会区分已公开的 API、实验性访问方式与正式普遍可用状态。文中的上线建议是工程判断，并非 Anthropic 的产品保证。

## Claude Mods 现在可以使用了吗？

官方已经公开实验性访问方式，但本次核查的资料不足以证明已有稳定的正式普遍可用版本。在 [Claude Mods 官方公告](https://github.com/anthropics/claude-code/issues/91870) 的 9 月 9 日更新中，Anthropic 确定了产品名称，提供内置示例，并公开了用于测试的 `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude`。同一更新仍以“数周”为更广泛发布的时间尺度。最初的提案发布于 2026 年 9 月 3 日。

[官方 Mods 源码目录](https://github.com/anthropics/claude-code/blob/main/mods/README.md) 明确标注这是抢先体验接口，并提醒 API 可能在版本之间发生变化，且不另行通知。目录中的示例是内置功能的源码，不是该仓库插件市场里的安装条目。我们的建议是先做受控试点，不要把 Mods 当作已经承诺长期稳定支持的依赖。

此外，还有一个独立的社区仓库叫作 [0xDarkMatter/claude-mods](https://github.com/0xDarkMatter/claude-mods) 。它与 Anthropic 的原生 function-hook 功能不是同一个项目，不能混用两者的安装说明。本文所说的“Claude Mods”专指 Anthropic 的功能。

## Claude Mods 与 Skills、MCP、插件和传统 hooks 有什么区别？

这些机制解决的是不同问题。Anthropic 的 [Skills 文档](https://code.claude.com/docs/en/skills) 介绍可复用的指令与工作流程； [MCP 文档](https://code.claude.com/docs/en/mcp) 介绍外部工具和数据的连接方式。 [现有 hooks 参考文档](https://code.claude.com/docs/en/hooks) 已经支持在适用的执行前事件中作出决策，因此，阻止某个动作并不是 Mods 首次引入的能力。 [插件文档](https://code.claude.com/docs/en/plugins) 则说明如何打包和分发不同类型的扩展。

| 机制 | 主要职责 | 适合优先采用的场景 |
| --- | --- | --- |
| Skills 与项目指令 | 提供任务知识和可复用流程 | 智能体需要团队规范、检查清单或设计上下文 |
| MCP | 开放外部工具、资源和集成能力 | 智能体需要通过受支持的方式连接另一个系统 |
| 传统 hooks | 在受支持的生命周期事件中执行配置好的逻辑 | 现有事件已经能够触发所需检查或审批规则 |
| Claude Mods | 围绕运行时事件和受支持界面组合 function hooks | 需要更深入的事件组合或自定义界面行为 |
| 插件 | 打包和分发扩展 | 需要可复用的安装单元，其中也可以包含 Mod |

**Mod 是一种插件，并不是插件系统的替代品。**我们的选择原则是：从能够满足验收标准、能力范围最小的机制开始。例如，为了保持品牌界面一致性，先建立 [Claude Code 设计系统上下文](/zh/blog/claude-code-design-system-files/) ，通常比编写运行时扩展更合适。连接外部服务时，也应先考虑 MCP，再判断 Mod 是否补上了该集成确实缺少的能力。

## Function hooks 如何工作：事件、引擎接口与 next

已公开源码描述了模块入口 `register(on, options)`，其处理函数接收 `($, e, next)`。可以把 `e` 理解为事件，`$` 理解为该处理函数可用的引擎接口，而 `next` 表示继续进入后续处理链。它更接近中间件，不是把系统提示词写得更长。

本次审阅的 [公开 TypeScript 类型声明](https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts) 标注由 Claude Code `2.1.273` 生成。声明描述的 hook 环境没有 Node.js，也没有浏览器 DOM；受支持的能力通过引擎接口调用。界面元素来自对应的显示环境，而不是任意操作某个网页。升级后应通过 `/plugin-types` 重新生成声明，不要默认旧类型仍与新版本兼容。

执行顺序很重要。外层处理函数可以先处理事件，再委托后续逻辑，最后检查返回结果。因此，即使每个处理函数单独看起来都合理，组合后仍可能相互影响。对于实际实现，我们会明确检查：哪一层负责拒绝操作，重试是否重复产生副作用，以及是否按预期调用了继续执行函数。TypeScript 编译通过，并不能证明这些交互逻辑正确。

没有直接的 Node.js API，也不等于已经证明安全。如果某个 Mod 能通过引擎调用高权限工具，仍然需要清晰的信任边界。权限、网络限制、数据处理方式与管理员配置，应分别审查，而不能用“运行环境受限”概括全部风险。

## 三个公开的内置 Mods 分别展示了什么？

### sec-default：保护组织集中管理的配置

[sec-default 源码说明](https://github.com/anthropics/claude-code/blob/main/mods/sec-default/README.md) 描述了一个位于外层的管理控制层。它使部分受管理的设置、提示词内容、传统 hooks 和工具策略不受用户自行安装的插件修改。它本身不会额外添加业务策略。许多其他事件仍会原样继续传递，所以它不是覆盖所有工具调用的通用防火墙。

它在处理链中的位置也是保护机制的一部分。当组织提供自己的 `prependPlugins` 列表时，文档规定的默认安排会发生变化，管理员需要明确考虑是否及如何包含 `sec-default@builtin`。本地加载一个目录，不等于部署了组织级管理控制。我们的结论是审查完整的管理配置，而不是仅凭插件名称判断安全性。

### diff：真正的界面扩展示例

[diff Mod](https://github.com/anthropics/claude-code/blob/main/mods/diff/README.md) 在对话记录旁展示尚未提交的变更和文件差异片段，并在编辑文件或执行命令后更新面板。这是一个具体的界面用例，不是“插件让基础模型更聪明”的证据。源码还考虑了当前目录不是 Git 仓库，以及 `/diff` 命令已经被注册等情况。开发类似面板时，这些边界情况同样值得测试。

### telemetry：公开源码不代表可以公开安装

[telemetry Mod 自己的 README](https://github.com/anthropics/claude-code/blob/main/mods/telemetry/README.md) 给出的限制，比快速浏览目录时容易形成的印象更严格。它说明该 Mod 运行于已启用分析功能的内部构建，不适合通过 `--plugin-dir` 单独安装。它的分析能力不是供公众使用的通用日志服务。因此，应将它视为架构示例，而不是推荐安装到客户环境中的组件。

## 如何在不假定 API 稳定的前提下试用 Claude Mods？

使用可随时丢弃的测试项目、合成数据和经过批准的 Claude Code 安装，不要带入生产凭据。以下命令来自公开资料，并不表示我们已在真实 Claude 会话中执行验证。是否支持，取决于已安装的构建版本与组织控制要求。

```
claude --version
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude
```

记录版本，然后在兼容的会话中运行 `/plugin-types`。将生成的类型声明与试点测试证据一起保存。如果命令或功能不可用，应暂停并向管理员确认受支持的访问方式，不要为了运行示例而关闭组织管理的保护措施。

审阅源码时，请使用官方仓库中已经检查过的版本。从该仓库根目录，可以按照以下方式调用文档中的 `diff` 示例与测试工具。实验性启用变量分别作用于每一个进程：

```
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude --plugin-dir ./mods/diff
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude plugin test ./mods/diff
```

内置的 `/diff` 命令可能影响究竟由哪个实现处理该操作。因此，成功加载目录并不足以证明指定的处理函数确实运行。应通过测试，或不包含敏感数据的明确诊断证据，确认当前生效的实现。

公开 Mod 使用普通插件目录结构，包含清单文件和 hook 模块：

```
my-reviewed-mod/
├── .claude-plugin/plugin.json
├── hooks/
│   ├── hooks.json
│   └── register.ts
└── tests/
```

官方 [diff 的 hooks.json 文件](https://github.com/anthropics/claude-code/blob/main/mods/diff/hooks/hooks.json) 通过下列字段引用模块。这只是加载配置片段，不是完整可运行的插件，也不是安全控制：

```
{
  "modules": ["./register.ts"]
}
```

根据生成的声明编写入口，补充测试，并在加载前审查完整源码。不要使用凭空设想的“通用 Mod 安装器”命令。分发扩展时，应遵循受支持的插件机制与组织审批流程，而不是直接运行从搜索结果中找到的任意安装脚本。

## Claude Mods 可能在哪些场景产生实际价值？

以下是我们提出的试点设计，不是已经完成的 Wavect 部署案例，也不是承诺存在的内置功能。每个方案都从可观察的结果出发，而不是笼统地追求“增加更多 AI”。

**集中展示交付证据的审查面板。**在同一位置展示当前变更、测试状态和待解决的审查问题，先采用只读方式。只有当每项状态都能追溯到准确的代码版本与测试运行，并能明确拒绝过期证据时，才接受试点结果。缺少这种关联的绿色状态标记，即使视觉上很好看，也可能不如原始终端输出可靠。

**受控处理工具输出中的敏感数据。**团队可以考虑在数据进入模型前进行转换。我们的验收要求是：用合成测试标记，追踪原始响应、转换结果、模型输入、可见对话记录和日志。屏幕上隐藏某个值，不等于该值已从模型上下文中移除；这两种处理也都不能单独证明存储副本已被删除。

**符合组织流程的检查机制。**Mod 可以考虑作为现有控制的补充，提供上下文检查或解释。但真实的部署授权、仓库保护规则和凭据权限范围，不应只依赖一个用户可以自行移除的便利层。首先确认传统 hook 或现有 CI 流程是否已经能用更少的自定义代码满足需求。

## 团队应该测试哪些安全边界？

Anthropic 的 [Claude Code 安全指南](https://code.claude.com/docs/en/security) 与 [沙箱文档](https://code.claude.com/docs/en/sandboxing) 描述了单个插件之外的控制措施，应独立评估。受限的 hook 环境、看起来安全的界面，以及经过批准的市场条目，回答的是不同问题。不能让其中任何一项悄然替代其他审查。

| 风险 | 测试方法 | 需要的证据 |
| --- | --- | --- |
| 版本或 API 变化 | CLI 或 Mod 版本变化后重新运行测试 | 准确版本、重新生成的类型，以及已审查的行为差异 |
| 处理链组合不安全 | 跨已批准的层组合允许、拒绝和转换事件 | 符合预期的顺序与最终决定，且没有意外重复的副作用 |
| 保护缺失或故障 | 测试处理函数错误、超时、Mod 被禁用和重新加载 | 保护不可用时，独立控制仍能阻止受保护操作 |
| 敏感数据泄漏 | 追踪合成测试标记经过的所有目标位置 | 在已测试范围内，模型输入、导出日志和保留产物不含禁止出现的值 |
| 仅依赖交互界面 | 运行受支持的交互与非交互路径 | 无人值守流程不会等待一个不可用的界面 |
| 运行行为退化 | 禁用 Mod 并恢复已批准的基线配置 | 明确的回滚流程、负责人，以及通过的基线检查 |

这些是需要实施并验证的验收要求，不是对当前所有故障行为的断言。尤其不能从一次正常成功运行推断出“错误时一定安全阻止”。应专门测试拒绝与不可用路径，并使用无法访问生产环境的凭据。

审查软件供应链时，将源码审查与 [官方插件市场文档](https://code.claude.com/docs/en/plugin-marketplaces) 结合起来。记录发布者、已审阅版本、依赖、所需能力、更新路径和撤销授权步骤。测试真正计划部署的完整组合，包括管理层和其他插件，而不是只对各组件单独做出批准决定。

## Claude Mods 能降低 token 成本或提高生产力吗？

本次审阅没有测得任何节省比例。Anthropic 的 [成本文档](https://code.claude.com/docs/en/costs) 解释了 Claude Code 的使用成本，但 Mod 本身不等于价格折扣。我们会将新增工具调用、上下文、重试、开发和维护工作，与减少的人工步骤一并计入评估。

一个有用的试点指标是**每项已验收任务的总成本**：可归属的模型与工具费用，加上开发和审查时间的成本，再除以达到相同验收标准的任务数量。这是我们的评估方法，不是 Anthropic 的计费公式。比较基线与启用 Mod 的方案时，应使用相同任务集、模型配置和质量标准，同时报告失败与退化情况，而不只是最快的成功演示。

如果减少了交互时间，却增加了返工，整体收益可能为负。反过来，对于频繁而昂贵的审查步骤，即使改善幅度不大，也可能足以支持一个范围有限的 Mod。请在开发前确定目标收益和可以接受的维护负担。

## 团队现在应该采用 Claude Mods 吗？

**当团队确有具体的运行时或界面限制，并具备受控测试数据、负责人和回滚方式时，可以进行试点。**如果 Skills、MCP、传统 hook 或 CI 已经满足需求，或者该扩展将成为保护生产系统的唯一屏障，就应该等待。我们的建议是让一个小规模、可逆的实验用证据证明自己值得保留。

在 Wavect，我们通过 [面向工程团队的 AI 落地服务](/zh/services/ai-enablement/) 处理这类问题：识别工作流程，定义验收测试，并把结果与交付质量联系起来。 [Twinsoft AI 案例](/zh/case-studies/twinsoft-ai/) 可作为我们其他 AI 交付工作的独立证据，并不是 Claude Mods 实施案例。 [产品上线前的软件 QA 检查清单](/zh/software-development-guide/software-qa-checklist-before-launch/) 则可以帮助评估智能体对产品所做的其他改动。

关于公司背景，我们的 [2026 年 9 月排名记录](/zh/blog/wavect-number-one-software-agency-austria-september-2026/) 按具体类别、来源和日期，记录了 Wavect 在 Clutch、The Manifest 与 GoodFirms 的奥地利分类榜单中的 #1 位置。目录排名不保证项目结果，也不能证明我们已部署这项新功能。要讨论具体试点，可以 [先带来一个工作流程及其验收标准](/zh/contact/) 。

## 关于 Claude Mods 的常见问题

### Claude Mods 是什么？

Claude Mods 是利用 function hooks 参与运行时事件和受支持界面行为的 Claude Code 插件。它们扩展的是模型周围的应用功能，不是新模型，也不取代插件系统。

### 如何启用 Claude Mods？

官方公告提供了用于实验测试的 CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude。应先检查安装版本和组织策略，再在兼容会话中使用 /plugin-types 生成匹配的类型声明。这并不证明所有安装环境都已稳定支持该功能。

### Mods 与传统 Claude Code hooks 有什么区别？

传统 hooks 已经能够在受支持的生命周期事件中运行配置好的逻辑，并在适用动作执行前作出决定。Mods 通过函数组合进一步参与引擎事件与受支持界面。如果传统 hook 已经满足需求，应优先采用更简单的方案。

### Claude Mods 会替代 Skills 或 MCP 吗？

不会。Skills 提供可复用的指令与流程，MCP 连接外部工具和数据。Mod 解决的是另一类需求，例如更深入的运行时组合或界面行为。一个插件可以同时打包多种扩展类型。

### Claude Mods 可以安全地用于生产环境吗？

抢先体验标签不是生产安全保证。应审查源码、能力与管理配置，并测试真实的插件组合。关键授权不能只依赖一个可被移除或可能不可用的 Mod，还需要故障路径测试和已经验证的回滚方式。

### Claude Mods 会让 Claude Code 更便宜吗？

不会自动降低成本。额外工具调用、上下文、重试和维护都可能增加总成本。应在相同基线和质量标准下比较每项已验收任务的成本。本文不声称测得节省比例或生产力倍数。

智能体工程

## 继续浏览此集群

编程智能体、MCP、上下文系统、评估与可靠自动化控制。

[从核心文章开始**AI 智能体的图工程：知识图谱什么时候值得做？**](/zh/blog/graph-engineering-ai-agents/)

- [Voicebox：本地声音克隆、语音输入与 MCP 配置](/zh/blog/voicebox-local-voice-cloning-mcp/)
- [Valyu 的 0.6B 多智能体路由器：研究结果、指标边界与落地判断](/zh/blog/valyu-slm-multi-agent-router/)
- [OpenAI Agents API 评测：迁移、成本与数据控制](/zh/blog/openai-agents-api-managed-harness-review/)
- [Spotify shunt 评测：安装、Token 节省与限制](/zh/blog/spotify-shunt-claude-code-token-routing/)
- [OpenBot 评测：自托管 AI 同事的成本与权限](/zh/blog/openbot-self-hosted-ai-coworkers-review/)

[**返回**](/zh/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/zh/team/kevin-riedl/)

[Kevin Riedl](/zh/team/kevin-riedl/) https://linkedin.com/in/wsdt

13 分钟 阅读 · 2026年9月16日 最近审核 2026年9月16日

[**下一篇**](/zh/blog/claude-code-design-system-files/)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/zh/blog/claude-mods-function-hooks/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-09-16",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-09-16",
      "url": "https://wavect.io/zh/blog/claude-mods-function-hooks/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "Claude Mods 是通过 Function Hooks 扩展运行时事件和受支持界面的 Claude Code 插件。截至 2026 年 9 月 16 日，Anthropic 已公开实验性访问方式，但 API 仍处于抢先体验阶段，可能继续变化。Mods 补充而不是替代 Skills、MCP 和传统 hooks。建议先做受控试点，记录类型与版本，并验证权限、数据处理、故障路径和回滚。本文基于文档与源码审阅，不是实际性能测试，也不证明功能已达到生产就绪状态。",
  "articleBody": " 博客概览/AI 与智能体/智能体工程 Claude Mods：配置、Function Hooks 与安全指南 要点速览 Claude Mods 是通过 Function Hooks 扩展运行时事件和受支持界面的 Claude Code 插件。截至 2026 年 9 月 16 日，Anthropic 已公开实验性访问方式，但 API 仍处于抢先体验阶段，可能继续变化。Mods 补充而不是替代 Skills、MCP 和传统 hooks。建议先做受控试点，记录类型与版本，并验证权限、数据处理、故障路径和回滚。本文基于文档与源码审阅，不是实际性能测试，也不证明功能已达到生产就绪状态。 Claude Mods 是通过 function hooks 扩展 Claude Code 运行行为的插件，而不只是为智能体补充指令或外部工具。它们可以参与引擎事件处理和界面渲染。对团队来说，真正重要的不是演示有多精彩，而是扩展能否解决反复出现的问题，同时不让权限管理、调试和升级变得更复杂。 资料核查日期：2026 年 9 月 16 日。本文基于文档与源码审阅，不是实际运行环境中的性能测试。我们会区分已公开的 API、实验性访问方式与正式普遍可用状态。文中的上线建议是工程判断，并非 Anthropic 的产品保证。 Claude Mods 现在可以使用了吗？ 官方已经公开实验性访问方式，但本次核查的资料不足以证明已有稳定的正式普遍可用版本。在 Claude Mods 官方公告的 9 月 9 日更新中，Anthropic 确定了产品名称，提供内置示例，并公开了用于测试的 CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude。同一更新仍以“数周”为更广泛发布的时间尺度。最初的提案发布于 2026 年 9 月 3 日。 官方 Mods 源码目录明确标注这是抢先体验接口，并提醒 API 可能在版本之间发生变化，且不另行通知。目录中的示例是内置功能的源码，不是该仓库插件市场里的安装条目。我们的建议是先做受控试点，不要把 Mods 当作已经承诺长期稳定支持的依赖。 此外，还有一个独立的社区仓库叫作 0xDarkMatter/claude-mods。它与 Anthropic 的原生 function-hook 功能不是同一个项目，不能混用两者的安装说明。本文所说的“Claude Mods”专指 Anthropic 的功能。 Claude Mods 与 Skills、MCP、插件和传统 hooks 有什么区别？ 这些机制解决的是不同问题。Anthropic 的 Skills 文档介绍可复用的指令与工作流程；MCP 文档介绍外部工具和数据的连接方式。现有 hooks 参考文档已经支持在适用的执行前事件中作出决策，因此，阻止某个动作并不是 Mods 首次引入的能力。插件文档则说明如何打包和分发不同类型的扩展。 选择能够满足需求、同时干预范围最小的扩展方式 机制主要职责适合优先采用的场景 Skills 与项目指令提供任务知识和可复用流程智能体需要团队规范、检查清单或设计上下文 MCP开放外部工具、资源和集成能力智能体需要通过受支持的方式连接另一个系统 传统 hooks在受支持的生命周期事件中执行配置好的逻辑现有事件已经能够触发所需检查或审批规则 Claude Mods围绕运行时事件和受支持界面组合 function hooks需要更深入的事件组合或自定义界面行为 插件打包和分发扩展需要可复用的安装单元，其中也可以包含 Mod Mod 是一种插件，并不是插件系统的替代品。我们的选择原则是：从能够满足验收标准、能力范围最小的机制开始。例如，为了保持品牌界面一致性，先建立 Claude Code 设计系统上下文，通常比编写运行时扩展更合适。连接外部服务时，也应先考虑 MCP，再判断 Mod 是否补上了该集成确实缺少的能力。 Function hooks 如何工作：事件、引擎接口与 next 已公开源码描述了模块入口 register(on, options)，其处理函数接收 ($, e, next)。可以把 e 理解为事件，$ 理解为该处理函数可用的引擎接口，而 next 表示继续进入后续处理链。它更接近中间件，不是把系统提示词写得更长。 本次审阅的公开 TypeScript 类型声明标注由 Claude Code 2.1.273 生成。声明描述的 hook 环境没有 Node.js，也没有浏览器 DOM；受支持的能力通过引擎接口调用。界面元素来自对应的显示环境，而不是任意操作某个网页。升级后应通过 /plugin-types 重新生成声明，不要默认旧类型仍与新版本兼容。 执行顺序很重要。外层处理函数可以先处理事件，再委托后续逻辑，最后检查返回结果。因此，即使每个处理函数单独看起来都合理，组合后仍可能相互影响。对于实际实现，我们会明确检查：哪一层负责拒绝操作，重试是否重复产生副作用，以及是否按预期调用了继续执行函数。TypeScript 编译通过，并不能证明这些交互逻辑正确。 没有直接的 Node.js API，也不等于已经证明安全。如果某个 Mod 能通过引擎调用高权限工具，仍然需要清晰的信任边界。权限、网络限制、数据处理方式与管理员配置，应分别审查，而不能用“运行环境受限”概括全部风险。 三个公开的内置 Mods 分别展示了什么？ sec-default：保护组织集中管理的配置 sec-default 源码说明描述了一个位于外层的管理控制层。它使部分受管理的设置、提示词内容、传统 hooks 和工具策略不受用户自行安装的插件修改。它本身不会额外添加业务策略。许多其他事件仍会原样继续传递，所以它不是覆盖所有工具调用的通用防火墙。 它在处理链中的位置也是保护机制的一部分。当组织提供自己的 prependPlugins 列表时，文档规定的默认安排会发生变化，管理员需要明确考虑是否及如何包含 sec-default@builtin。本地加载一个目录，不等于部署了组织级管理控制。我们的结论是审查完整的管理配置，而不是仅凭插件名称判断安全性。 diff：真正的界面扩展示例 diff Mod在对话记录旁展示尚未提交的变更和文件差异片段，并在编辑文件或执行命令后更新面板。这是一个具体的界面用例，不是“插件让基础模型更聪明”的证据。源码还考虑了当前目录不是 Git 仓库，以及 /diff 命令已经被注册等情况。开发类似面板时，这些边界情况同样值得测试。 telemetry：公开源码不代表可以公开安装 telemetry Mod 自己的 README给出的限制，比快速浏览目录时容易形成的印象更严格。它说明该 Mod 运行于已启用分析功能的内部构建，不适合通过 --plugin-dir 单独安装。它的分析能力不是供公众使用的通用日志服务。因此，应将它视为架构示例，而不是推荐安装到客户环境中的组件。 如何在不假定 API 稳定的前提下试用 Claude Mods？ 使用可随时丢弃的测试项目、合成数据和经过批准的 Claude Code 安装，不要带入生产凭据。以下命令来自公开资料，并不表示我们已在真实 Claude 会话中执行验证。是否支持，取决于已安装的构建版本与组织控制要求。 claude --version CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude 记录版本，然后在兼容的会话中运行 /plugin-types。将生成的类型声明与试点测试证据一起保存。如果命令或功能不可用，应暂停并向管理员确认受支持的访问方式，不要为了运行示例而关闭组织管理的保护措施。 审阅源码时，请使用官方仓库中已经检查过的版本。从该仓库根目录，可以按照以下方式调用文档中的 diff 示例与测试工具。实验性启用变量分别作用于每一个进程： CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude --plugin-dir ./mods/diff CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude plugin test ./mods/diff 内置的 /diff 命令可能影响究竟由哪个实现处理该操作。因此，成功加载目录并不足以证明指定的处理函数确实运行。应通过测试，或不包含敏感数据的明确诊断证据，确认当前生效的实现。 公开 Mod 使用普通插件目录结构，包含清单文件和 hook 模块： my-reviewed-mod/ ├── .claude-plugin/plugin.json ├── hooks/ │ ├── hooks.json │ └── register.ts └── tests/ 官方 diff 的 hooks.json 文件通过下列字段引用模块。这只是加载配置片段，不是完整可运行的插件，也不是安全控制： { \"modules\": [\"./register.ts\"] } 根据生成的声明编写入口，补充测试，并在加载前审查完整源码。不要使用凭空设想的“通用 Mod 安装器”命令。分发扩展时，应遵循受支持的插件机制与组织审批流程，而不是直接运行从搜索结果中找到的任意安装脚本。 Claude Mods 可能在哪些场景产生实际价值？ 以下是我们提出的试点设计，不是已经完成的 Wavect 部署案例，也不是承诺存在的内置功能。每个方案都从可观察的结果出发，而不是笼统地追求“增加更多 AI”。 集中展示交付证据的审查面板。在同一位置展示当前变更、测试状态和待解决的审查问题，先采用只读方式。只有当每项状态都能追溯到准确的代码版本与测试运行，并能明确拒绝过期证据时，才接受试点结果。缺少这种关联的绿色状态标记，即使视觉上很好看，也可能不如原始终端输出可靠。 受控处理工具输出中的敏感数据。团队可以考虑在数据进入模型前进行转换。我们的验收要求是：用合成测试标记，追踪原始响应、转换结果、模型输入、可见对话记录和日志。屏幕上隐藏某个值，不等于该值已从模型上下文中移除；这两种处理也都不能单独证明存储副本已被删除。 符合组织流程的检查机制。Mod 可以考虑作为现有控制的补充，提供上下文检查或解释。但真实的部署授权、仓库保护规则和凭据权限范围，不应只依赖一个用户可以自行移除的便利层。首先确认传统 hook 或现有 CI 流程是否已经能用更少的自定义代码满足需求。 团队应该测试哪些安全边界？ Anthropic 的 Claude Code 安全指南与 沙箱文档描述了单个插件之外的控制措施，应独立评估。受限的 hook 环境、看起来安全的界面，以及经过批准的市场条目，回答的是不同问题。不能让其中任何一项悄然替代其他审查。 Wavect 为 Claude Mods 试点提出的验收检查 风险测试方法需要的证据 版本或 API 变化CLI 或 Mod 版本变化后重新运行测试准确版本、重新生成的类型，以及已审查的行为差异 处理链组合不安全跨已批准的层组合允许、拒绝和转换事件符合预期的顺序与最终决定，且没有意外重复的副作用 保护缺失或故障测试处理函数错误、超时、Mod 被禁用和重新加载保护不可用时，独立控制仍能阻止受保护操作 敏感数据泄漏追踪合成测试标记经过的所有目标位置在已测试范围内，模型输入、导出日志和保留产物不含禁止出现的值 仅依赖交互界面运行受支持的交互与非交互路径无人值守流程不会等待一个不可用的界面 运行行为退化禁用 Mod 并恢复已批准的基线配置明确的回滚流程、负责人，以及通过的基线检查 这些是需要实施并验证的验收要求，不是对当前所有故障行为的断言。尤其不能从一次正常成功运行推断出“错误时一定安全阻止”。应专门测试拒绝与不可用路径，并使用无法访问生产环境的凭据。 审查软件供应链时，将源码审查与官方插件市场文档结合起来。记录发布者、已审阅版本、依赖、所需能力、更新路径和撤销授权步骤。测试真正计划部署的完整组合，包括管理层和其他插件，而不是只对各组件单独做出批准决定。 Claude Mods 能降低",
  "articleSection": "软件工程",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "citation": [
    {
      "@type": "WebPage",
      "name": "Claude Mods 官方公告",
      "url": "https://github.com/anthropics/claude-code/issues/91870"
    },
    {
      "@type": "WebPage",
      "name": "官方 Mods 源码目录",
      "url": "https://github.com/anthropics/claude-code/blob/main/mods/README.md"
    },
    {
      "@type": "WebPage",
      "name": "0xDarkMatter/claude-mods",
      "url": "https://github.com/0xDarkMatter/claude-mods"
    },
    {
      "@type": "WebPage",
      "name": "Skills 文档",
      "url": "https://code.claude.com/docs/en/skills"
    },
    {
      "@type": "WebPage",
      "name": "MCP 文档",
      "url": "https://code.claude.com/docs/en/mcp"
    },
    {
      "@type": "WebPage",
      "name": "现有 hooks 参考文档",
      "url": "https://code.claude.com/docs/en/hooks"
    },
    {
      "@type": "WebPage",
      "name": "插件文档",
      "url": "https://code.claude.com/docs/en/plugins"
    },
    {
      "@type": "WebPage",
      "name": "公开 TypeScript 类型声明",
      "url": "https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts"
    },
    {
      "@type": "WebPage",
      "name": "sec-default 源码说明",
      "url": "https://github.com/anthropics/claude-code/blob/main/mods/sec-default/README.md"
    },
    {
      "@type": "WebPage",
      "name": "diff Mod",
      "url": "https://github.com/anthropics/claude-code/blob/main/mods/diff/README.md"
    },
    {
      "@type": "WebPage",
      "name": "telemetry Mod 自己的 README",
      "url": "https://github.com/anthropics/claude-code/blob/main/mods/telemetry/README.md"
    },
    {
      "@type": "WebPage",
      "name": "diff 的 hooks.json 文件",
      "url": "https://github.com/anthropics/claude-code/blob/main/mods/diff/hooks/hooks.json"
    },
    {
      "@type": "WebPage",
      "name": "Claude Code 安全指南",
      "url": "https://code.claude.com/docs/en/security"
    },
    {
      "@type": "WebPage",
      "name": "沙箱文档",
      "url": "https://code.claude.com/docs/en/sandboxing"
    },
    {
      "@type": "WebPage",
      "name": "官方插件市场文档",
      "url": "https://code.claude.com/docs/en/plugin-marketplaces"
    },
    {
      "@type": "WebPage",
      "name": "成本文档",
      "url": "https://code.claude.com/docs/en/costs"
    }
  ],
  "dateModified": "2026-09-16",
  "datePublished": "2026-09-16",
  "description": "Claude Mods 是通过 Function Hooks 扩展运行时事件和受支持界面的 Claude Code 插件。截至 2026 年 9 月 16 日，Anthropic 已公开实验性访问方式，但 API 仍处于抢先体验阶段，可能继续变化。Mods 补充而不是替代 Skills、MCP 和传统 hooks。建议先做受控试点，记录类型与版本，并验证权限、数据处理、故障路径和回滚。本文基于文档与源码审阅，不是实际性能测试，也不证明功能已达到生产就绪状态。",
  "headline": "Claude Mods：配置、Function Hooks 与安全指南",
  "image": "https://wavect.io/img/blog/headers/header_claude-mods-function-hooks.svg",
  "inLanguage": "zh",
  "keywords": "Claude Code, AI 智能体, 软件工程",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/zh/blog/claude-mods-function-hooks/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/zh/blog/claude-mods-function-hooks/",
  "wordCount": 472
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/",
      "name": "首页",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/overview/",
      "name": "博客概览",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/topics/ai-agents/",
      "name": "AI 与智能体",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/clusters/agent-engineering/",
      "name": "智能体工程",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/claude-mods-function-hooks/",
      "name": "Claude Mods：配置、Function Hooks 与安全指南",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Claude Mods 是利用 function hooks 参与运行时事件和受支持界面行为的 Claude Code 插件。它们扩展的是模型周围的应用功能，不是新模型，也不取代插件系统。"
      },
      "name": "Claude Mods 是什么？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "官方公告提供了用于实验测试的 CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude。应先检查安装版本和组织策略，再在兼容会话中使用 /plugin-types 生成匹配的类型声明。这并不证明所有安装环境都已稳定支持该功能。"
      },
      "name": "如何启用 Claude Mods？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "传统 hooks 已经能够在受支持的生命周期事件中运行配置好的逻辑，并在适用动作执行前作出决定。Mods 通过函数组合进一步参与引擎事件与受支持界面。如果传统 hook 已经满足需求，应优先采用更简单的方案。"
      },
      "name": "Mods 与传统 Claude Code hooks 有什么区别？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不会。Skills 提供可复用的指令与流程，MCP 连接外部工具和数据。Mod 解决的是另一类需求，例如更深入的运行时组合或界面行为。一个插件可以同时打包多种扩展类型。"
      },
      "name": "Claude Mods 会替代 Skills 或 MCP 吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "抢先体验标签不是生产安全保证。应审查源码、能力与管理配置，并测试真实的插件组合。关键授权不能只依赖一个可被移除或可能不可用的 Mod，还需要故障路径测试和已经验证的回滚方式。"
      },
      "name": "Claude Mods 可以安全地用于生产环境吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不会自动降低成本。额外工具调用、上下文、重试和维护都可能增加总成本。应在相同基线和质量标准下比较每项已验收任务的成本。本文不声称测得节省比例或生产力倍数。"
      },
      "name": "Claude Mods 会让 Claude Code 更便宜吗？"
    }
  ]
}
```
