学习精选 · AI 工具
Claude 与 Skill

读了 2,688 个公开 Claude Code 插件:装之前先看这三个文件

DEV Community2026-11-06约 5 分钟读完AI 整理查看原文

作者团队静态扫描了 1,961 个活跃公开仓库里的 2,688 个 Claude Code 插件,发现约三成插件会在你敲第一个字之前就自动执行代码:SessionStart 钩子、本地 MCP 进程、后台 monitor、bin/ 目录。文章给出了装插件前的具体检查步骤,以及 npx/uvx 不锁版本带来的风险数据。

今天就能做

  • 装任何 Claude Code 插件前,先克隆仓库跑 claude --plugin-dir <目录> plugin details <插件名>,把钩子和 MCP server 列出来再决定。
  • 在 .mcp.json 里看到 npx 或 uvx 启动、包名后没有版本号的,要么自己补上版本,要么别装。
  • 关掉不受控 marketplace 的自动更新,或只选把插件钉在固定 commit 上的市场。

插件在你输入前会自己跑什么

  • 插件有四类组件会自行启动:SessionStart/Setup 钩子(shell 命令,纯文本输出会进入 Claude 上下文)、用 command 声明的 MCP server(在你机器上起进程)、monitor(整个会话后台运行并把输出送给 Claude)、bin/ 目录(被加进 Claude 执行命令的 PATH)。
  • 这些都在沙箱之外运行,而且安装插件就等于启用它。官方文档原话是插件可以以你的用户权限执行任意代码。
  • 扫描结果:30.4% 的仓库至少有一个插件会在会话启动时跑东西;16.0% 带 SessionStart/Setup shell 钩子,其中 6.0% 的脚本会写文件,1.5% 会联网。
  • 其他比例:22.2% 有任意 shell 钩子,8.1% 有 UserPromptSubmit 钩子(能看到你每条提示),11.8% 有 PreToolUse 钩子,26.3% 声明 MCP server,9.5% 带 bin/ 目录。

装之前要打开的三个地方

  • hooks/hooks.json:先看 SessionStart 和 Setup,再顺着命令去读它调用的脚本文件,因为多数钩子跑的是插件目录里的脚本,光看命令行不够。
  • ​.mcp.json:带 command 的 server 就是本机进程。如果写的是 npx 某包或 uvx 某包却没写版本号,包管理器会在启动时自己解析版本,上游发新版就能不经你复核直接跑到你机器上。锁版本写法是包名后加 @1.4.2(npx)或 ==1.4.2(uvx)。
  • bin/:这个目录会进 PATH,等于给 Claude 多了一批可执行命令。
  • 先列清单再装:克隆仓库后运行 claude --plugin-dir <插件目录> plugin details <插件名>,它只读文件、不启动会话,会打印钩子及其事件、MCP 与 LSP server、skills 和 agents。

版本不锁有多普遍

  • 用 npx 或 bunx 启动的 MCP server 里,只有约三分之一写了版本号:171 个中有 112 个(65%)没写,用的是 @latest、裸包名或 GitHub 引用;149 个(87%)带 -y,跳过 npm 的安装确认。
  • 945 个 MCP server 里最常见的是远程 URL(445 个)、插件内本地脚本(176 个)、npx(164 个)。
  • 2.4% 的仓库会把名字像密钥的环境变量传给 MCP server。
  • 自动更新也要管:marketplace 开了自动更新,你审过的文件可能在磁盘上被换掉。不受控的 marketplace 建议关掉,或优先选把每个插件钉在某个 commit 上的市场。

几个值得注意的实例

  • 多数 SessionStart 钩子用 node、bash 或 python3 跑插件目录里的脚本,文件名常见 session-start、resume-hint、context-inject。
  • 29 个联网的会话启动脚本里,26 个是去 GitHub 或 npm 查更新,有几个连本机 localhost 上的自家服务;约十个提到 telemetry 或 analytics,作者没查它们具体发什么。
  • 有一个规则检查钩子会拿你的 ANTHROPIC_API_KEY 调 Anthropic 接口,把一段对话发过去做判断,会消耗你的额度。
  • 提到 ~/.ssh 或 .env 的钩子大多是防护类,列出这些路径是为了拦截。作者说被规则标出的插件读下来没有看起来恶意的。

别被组件数量误导

  • 组件多不等于危险:二十个钩子的插件可能是细致的防护;一个 SessionStart 脚本加一个不锁版本的 npx server 才最该细读。
  • 判断标准是两件事:什么会自己启动,它会去拉什么。
  • 局限:样本约覆盖 53% 的 manifest,只来自 5 星以上、近期有推送的活跃仓库,且截至 2026 年 11 月 6 日;只做静态阅读,没运行钩子,所以不知道它们实际往上下文里加了什么、联网脚本发了什么。不锁版本是风险,不等于已经造成损害。

原文:What a Claude Code plugin runs before you type: we read 2,688 public plugins

来源:DEV Community · 2026-11-06

查看原文

本文由 AI 阅读原文后整理,未经人工逐字核对,内容以原文为准。

登录后可以点赞、查看和发表评论