博客 · 2026-11-06

装之前我们读了 891 个公开的 Claude Code mod:它们能做什么

Claude Code mod 以你的权限运行,不在沙箱里。我们对 891 个公开 mod 跑了 claude plugin validate:39% 会启动程序,36% 看得到每一次工具调用,11% 联网,1% 会替你批准工具调用。

概述

装一个 Claude Code mod 之前,先对它的文件夹跑一条命令,读两行输出:

claude plugin validate ./some-mod

calls: 这一行说明 mod 能碰到什么:文件、程序、网络、你的环境变量。hooks: 这一行说明它能看到什么:每一次工具调用、每一条提示词、存下来的对话。这条命令只读代码,不运行它,所以拿来检查一个还信不过的 mod 也是安全的。

原因很简单。mod 是 10 月 1 日随 Claude Code 2.1.287 上线的,它不在沙箱里。mod 以你的权限运行;就算你开了沙箱,mod 启动的进程也在沙箱外面跑。官方文档写得很直白,建议只从信得过的作者和市场安装 mod。

那么,大家发布出来的 mod 实际要了哪些能力?我们从 GitHub 上克隆了 891 个,逐个读了 claude plugin validate 的报告。大多数 mod 能碰到的范围,比一个状态栏需要的大得多。

推荐

下面是我们现在装 mod 之前会做的三项检查:

  1. 读 calls: 这一行。 留意 $.http.fetch(联网)、$.process.run 或 $.process.spawn(启动程序)、$.fs.write(写文件)、$.env.get(读环境变量,API 密钥常放在这里)、$.prompt.submit(以你的名义发提示词)和 $.model.complete(花你的套餐额度或 API 密钥)。这些调用和 mod 自称的功能对得上,就没问题。一个统计 token 的 mod 却要联网,就值得多看一眼。
  2. 读 hooks: 这一行。 tool.call 后面没有花括号里的过滤条件,说明 mod 看得到、也改得了每一次工具调用。prompt.submit 说明它看得到你发的每一条提示词。session.append 说明它能在对话写入记录之前改写其中的行。tool.check 说明它能在你被问到之前,先回答权限问题。
  3. 如果挂了 tool.check,找到它返回 allow 的地方。 那段代码就是替你批准工具调用的地方。看看它放行的是什么:只有它自己的工具、只读调用,还是更宽的范围。

怎么测的

  1. 找仓库。 在 GitHub 代码搜索里找 mod 的文件结构(hooks/hooks.json 的 modules 列表指向一个代码文件),再加上按 Claude Code mods 搜仓库,共 1,781 个仓库。
  2. 过滤。 不是分叉、没有归档、10 月 7 日以后有推送、至少 5 星,剩 311 个,其中 303 个克隆成功。
  3. 认定 mod。 hooks.json 指向的文件导出了 register,就算一个 mod,这是 mods 参考文档里的定义。这样找到 915 个;内容完全相同的文件只算一次,留星最多的那份,剩 902 个。
  4. 验证。 对每个 mod 跑 claude plugin validate --json(Claude Code 2.1.314)。运行时把主目录换成一个空文件夹,我们自己的设置、钩子和插件都不会跟着加载。整个过程没有安装任何东西,也没有运行任何 mod 的代码。
  5. 计数。 去掉 Anthropic 的 4 个示例 mod,以及验证器读不懂代码的 7 个(Claude Code 同样不会加载它们),剩下283 个仓库里的 891 个社区 mod。最少见、也最敏感的几类(替你批准工具调用、凭据文件),我们还人工读了代码。

测试结果

一个 mod 可以同时属于好几行。

mod 能做什么数量占比
挂 tool.call:看得到、也改得了工具调用49155%
读环境变量或设置38944%
启动程序34639%
读文件32536%
挂 tool.call 且不设过滤:每一次工具调用都经过它32436%
挂 prompt.submit:看得到你发的提示词22525%
写文件20923%
以你的名义发提示词11813%
用你的套餐或密钥调模型10712%
联网9811%
读文件或环境变量,同时联网769%
挂 tool.check:能回答权限问题485%
挂 session.append:能改写存下来的对话404%
读名字像密钥的环境变量(KEY、TOKEN、SECRET)344%
读文件,代码里写着凭据路径(.env、~/.ssh、~/.aws/credentials)172%
设置环境变量,影响 Claude 之后运行的命令172%
tool.check 里返回 allow:替你批准工具调用111%
以上都没有:只画界面、计数、存自己的状态15618%

大家猜猜看,891 个 mod 里,只在屏幕上画东西、记自己笔记的有多少?156 个,不到五分之一。

举几个例子,都不点名:

  • 联网。 有个 mod 让你在手机上接着聊:它跟着每一轮对话,通过网络和自己的中转服务通信,再把你在手机上打的字作为你的提示词发出去。这就是它的全部功能;放在一个自称只做小事的 mod 身上,$.http.fetch 加 $.prompt.submit 的组合就值得留意。
  • 凭据路径。 我们读过的命中全是 mod 在读自己的令牌。有个给 Telegram 机器人加表情回应的 mod,从自己文件夹里的 .env 读机器人令牌,只放在内存里。同样的 $.fs.read,也读得了你能读的任何文件。
  • 每一次工具调用。 有个远程控制 mod 挂了每一次工具调用、每一条提示词和每一行对话记录,因为它要从别处操作这个会话。
  • 替你批准。 返回 allow 的 11 个我们全读了,每个都带条件:
    • 5 个只放行自己的工具,或自家插件发起的调用。
    • 2 个只放行只读调用,比如读技能文件夹里的文件。
    • 1 个只放行一条固定的查找命令。
    • 1 个在会话持有某个文件的锁时放行对它的编辑。
    • 1 个交给外部命令判断会话是否持有对应资源。
    • 1 个让模型给风险打分,低于阈值就放行,这是 11 个里放得最宽的。
    • 没有一个会放行任意的 shell 命令。

和公开目录对照

mods.aidojo.si 上的 awesome-claude-code-mods 目录每天扫描 GitHub,11 月 1 日那份收了 8,532 个 mod。它同样用 claude plugin validate,再给每个 mod 定一个影响面等级,从只画界面到能联网。

两份样本有三处不同:

  • 范围。 我们只收 5 星以上、近 30 天有推送的仓库,这 891 个是生态里用的人多、更新勤的那部分。
  • 计法。 我们按调用和事件分别计数,替你批准的代码逐个人工读;目录给每个 mod 一个等级。
  • 时间。 我们在 11 月 6 日克隆。

重合的部分,两边结论一致:

  • 我们的 mod 里有 521 个在目录里,这 521 个的联网判断和目录数据全部一致。
  • 目录全量的比例和我们接近:联网 9%(我们 11%),启动程序 38%(39%),写文件 18%(23%),发提示词 11%(13%)。
  • 我们 283 个仓库里有 161 个不在那份目录里,它们都建于目录生成之前。

该忽略什么

星数。能碰到的范围最大的 mod,常常正是有用的那些:远程控制、数据库改动审批面板、读你任务队列的看板。范围告诉你该读哪里,功能说明告诉你这个范围合不合理。

也别以为通过验证就等于安全。验证检查的是 Claude Code 能不能读懂 mod 要做的调用,这些调用该不该做,还得你自己判断。

局限

  • 只看静态结果。 列出来的调用,可能藏在你不点某个按钮就不会运行的分支里。反过来,Claude Code 会拒绝加载它读不懂调用的 mod,所以能加载的 mod 没法把调用藏起来。
  • 统计的是能力,不是意图。 我们没有判断哪个 mod 滥用了它要的能力,只人工读了少见的几类。
  • 一次快照。 样本是 2026 年 11 月 6 日、5 星以上的活跃仓库里的 mod。mod 几乎每周都有新事件和新调用,这些数字会变。

自己复现

上面的统计在 mods-review-2026-11.json 里,仓库名和 mod 名都去掉了。想自己检查一个 mod,把它克隆下来,对文件夹跑 claude plugin validate。官方文档的 Review what a mod can do 一节列出了该看哪些调用。

在找能装的东西?我们的 skills 目录收录了 5,101 个 Claude Code skill,每个社区 skill 收录前都经过审核。

来源

  1. Claude Code 文档:Mods 概览 · official
  2. Claude Code 文档:为组织管理 mod(Review what a mod can do) · official
  3. Claude Code 更新日志,2.1.287 · official
  4. awesome-claude-code-mods 目录(mods.aidojo.si) · blog