在使用Anthropic的命令行编码代理Claude Code时,开发者可能会遇到一个普遍问题:AI代理推荐的软件包版本存在幻觉。例如,它可能会建议安装[email protected],而最新版本实际上不同,甚至推荐一个在注册表中根本不存在的版本。这种AI幻觉不仅限于代码,也影响到其对软件包版本的理解,带来了不小的供应链风险,可能导致依赖过时、缺失安全补丁,甚至安装失败。
为解决这一痛点,一位开发者构建了名为“Version Sentinel”的Claude Code插件。该插件利用了Claude Code的钩子(hook)系统,能够硬性阻止任何未经验证的依赖项版本更改,直到用户确认该版本真实且为最新。
工作原理
- PreToolUse 钩子: 拦截对清单文件(如
package.json,requirements.txt,pyproject.toml,Cargo.toml,*.csproj)的编辑以及安装命令(如npm install,pip install,cargo add,dotnet add)。 - 如果尚未进行最新版本检查,该操作将被阻止(退出代码2)。
- 用户需要通过
WebSearch来验证最新版本,然后使用/vs-record命令进行记录。 - Claude随后重试该操作,此时已验证的版本将允许通过。
- PostToolUse 钩子: 自动记录成功的安装,确保已验证的软件包保持不被阻止的状态。
支持生态系统
Version Sentinel目前支持以下主要开发生态系统:
| 生态系统 | 清单文件 | 注册表 |
|---|---|---|
| npm | package.json | registry.npmjs.org |
| pip | requirements*.txt, pyproject.toml | pypi.org |
| Cargo | Cargo.toml | crates.io |
| .NET | *.csproj | api.nuget.org |
额外功能:/check-versions
除了阻止功能,Version Sentinel还提供了一个/check-versions命令。它可以审计项目中所有的依赖项,对照上游注册表报告版本偏差。此功能不会阻止操作,而是显示哪些依赖项已过时以及哪些是故意锁定的特定版本,帮助开发者更好地管理项目依赖。
安装方式
用户可以通过以下命令轻松安装Version Sentinel插件:
claude plugin add KSEGIT/Version-Sentinel该插件的源代码可在GitHub (KSEGIT/Version-Sentinel) 上找到,并遵循MIT许可证。它要求运行环境具备bash, jq, curl, python3。