KSEGIT/Version-Sentinel
GitHub: KSEGIT/Version-Sentinel
Version-Sentinel 是一款Claude Code插件,通过强制依赖版本检查来防止AI编码中的供应链安全和幻觉版本问题。
Stars: 3 | Forks: 0
version-sentinel
Claude Code 插件,能够硬性阻止依赖项的添加、升级和降级,除非记录了最新的、附有源引用的版本检查。
**关键词:** Claude Code, Anthropic, AI 编码护栏, LLM 供应链安全, 依赖管理, 幻觉包版本, npm, PyPI, Cargo, NuGet, PreToolUse 钩子。 ## 为什么 LLM 辅助编码会静默地输出模型在其训练数据中记住的任何版本。对于那些发布频繁或存在已知受损版本的包来说,这是不可接受的。`version-sentinel` 强制插入一个“检查注册表”的步骤——同时不阻止你出于特定目的而固定使用旧版本。 ## 它能防止什么 - **幻觉版本** — LLM 选择了一个从未存在或从未发布过的版本。 - **过时的默认版本** — 模型使用了两年前的固定版本,因为其训练数据停留在那个时间点。 - **安装受损发布版本** — 如果没有进行新的注册表查询,就无法防止安装被撤回/恶意的版本。 - **静默降级** — Claude 通过将包回退到存在漏洞的旧版本来“修复” CI 错误。 - **供应链漂移** — 没有选择特定版本原因的审计记录。 ## 它如何进行对比 | 工具 | 范围 | 执行方式 | |------|-------|----------| | `version-sentinel` | Claude Code **PreToolUse 钩子** — 在编辑落地之前阻止工具调用 | 硬性失败,退出码 2 | | 通用的依赖审计工具 | 对 `package.json` / `requirements.txt` 进行事后扫描 | 建议性 | | Dependabot / Renovate | 针对远程注册表的定时 PR 机器人 | 异步 PR | 与事后审计器不同,`version-sentinel` 运行在 **代理循环内部** — 代理无法意外合并一个糟糕的版本,因为在记录被引用之前,写入操作本身会被拒绝。 ## 支持的生态系统 (v0.1) | 文件 | 生态系统 | 注册表 | |------|-----------|----------| | `package.json` | npm/pnpm/yarn/bun | registry.npmjs.org | | `requirements*.txt`, `constraints*.txt` | pip | pypi.org | | `pyproject.toml` | PEP 621 + Poetry + uv | pypi.org | | `Cargo.toml` | Rust | crates.io | | `*.csproj`, `*.fsproj`, `*.vbproj` | .NET | api.nuget.org | 涵盖 `Edit`, `Write`, `MultiEdit` 命令,以及 `Bash` 安装命令(`npm install`, `pip install`, `poetry add`, `uv add`, `cargo add`, `dotnet add package`)。 ## 安装 ``` /plugin marketplace add https://github.com/KSEGIT/Version-Sentinel.git /plugin install version-sentinel@version-sentinel-marketplace ``` ## 前置条件 - `PATH` 环境变量中需包含 `bash`, `jq`, `curl`, `python3` (3.11+,用于 `tomllib`) - Windows 系统:Git Bash 自带 `bash`/`jq`/`curl`;Python 3.13 需要单独安装。 ## 工作原理 1. Claude 尝试添加/升级一个依赖(例如 `Edit package.json`, `npm install X@Y`, ...) 2. PreToolUse 钩子触发,以 stderr 输出并退出,退出码为 2: `BLOCKED: version-sentinel. Package: lodash (npm). Version: 4.17.21. No fresh version check on record.` 3. Claude 运行 `WebSearch "lodash latest version site:npmjs.com"` 4. Claude 调用 `/vs-record npm lodash 4.17.21 https://www.npmjs.com/package/lodash` 5. Claude 重试 — 钩子找到新记录,放行调用。 ## 命令 - `/vs-record标签:AI编程, Cargo支持, Claude Code插件, npm支持, NuGet支持, pip支持, Poetry支持, uv支持, 依赖管理, 依赖阻止, 安全防护, 审计追踪, 幻觉版本防护, 应用安全, 强制版本检查, 暗色界面, 源引用验证, 版本检查, 编码守卫, 软件开发, 逆向工具