Diff 守护
审计代码更改 安全问题 财务报告和审定财务报表 意外行为改变 使用您的
拥有 Anthropic API 密钥。 DiffGuard读出一个""字",发给Claude审查,然后
打印结构化的发现——或者在无出错时干净地退出. 修建于
终端:在任何一台机器上工作 git 和节点,直入CI
承诺前钩.
安装
npm install -g @figo5/diffguard
设置
diffguard config
diffguard config 通过选择供应商(Anthropic, OpenAI, OpenRouter,
Groq, Ollama, 或自定义的 OpenAI 兼容基础 URL, 选择一个模型并存储您的
平台密钥链中的API密钥. 后来,平地 diffguard 只是工作,没有inv vars
需要帮助。 非交互设置也可用:
diffguard config --provider=ollama --model=gemma4:e2b
diffguard config --show # print the effective config (never the key)
diffguard config --reset # clear the saved config
说明: diffguard config --key=... 将密钥放入可见的命令行
以及任何能列出机器上进程的人 喜欢
交互式向导( e)diffguard config)或(或) diffguard key set,从 a 读取密钥
隐藏快取或 stdin 代替 .
您仍然可以使用 Env vars 来配置所有的东西 —— 见配置表 . Env vars 总是覆盖已保存的配置文件 .
使用量
diffguard # audit the working-tree diff
diffguard --staged # audit the staged diff (pre-commit)
diffguard --json # machine-readable output
diffguard config # one-time setup: provider, model, and key
编码代理
DiffGuard作为编码代理内部的点播审计工具:
- Pi ——安装扩展到
~/.pi/agent/extensions/pi.ts(或.pi/extensions/pi.ts) (中文(简体) ). - MCP 有能力的剂 (Claude Code, Codex, Cursor, Windsurf, Copilot, Cline)——运行该程序
diffguard-mcpstdio服务器并加入为MCP服务器.
特工打电话来 diffguard_audit 带有工具的工具 scope 参数 :
| 范围 | 审计 |
|---|---|
working (默认) | 未承诺的变动 |
staged | 基特指数(承诺前) |
file:<path> | 一个文件 |
repo | 整个仓库(仅安全) |
该工具返回文本报告加上结构化结果。 API 密钥从
代理人本人的证书(Pi), ANTHROPIC_API_KEY键链
(单位:千美元)diffguard key set) (中文(简体) ). 密钥从未进入代理上下文 .
代理层读取与 CLI 相同的已保存的配置文件, 所以提供者和模型化您
配置为 diffguard config 也适用于 Pi 和 MCP 。 (当地供应商,如Ollama)
在代理环境中仍然需要一个密钥——设置 ANTHROPIC_API_KEY 至任何数值。 )
退出代码
| 代码 | 含义 |
|---|---|
| 0 个 | 清洁——无结果 |
| 1个 | 调查结果 |
| 2个 | 出错( 丢失密钥, 不是 git repo, 审计失败) |
用作承诺前门:
# .git/hooks/pre-commit, or via a pre-commit framework
diffguard --staged || exit 1
示例
$ diffguard
[security] high src/auth.ts:42
Credentials compared with == instead of a constant-time comparison.
Fix: use crypto.timingSafeEqual.
2 findings (1 security, 1 behavior)
配置
| 新闻 var | 默认 | 含义 |
|---|---|---|
ANTHROPIC_API_KEY | (未设定) | API密钥. 先检查;倒回平台键链. Ollama等本地供应商不需要. |
DIFFGUARD_MODEL | claude-sonnet-5 | 审计所用的模式 |
DIFFGUARD_SEVERITY_THRESHOLD | medium | 人类产出中的最低严重程度critical编号 :high编号 :medium编号 :low编号 :info(中文(简体) ) |
DIFFGUARD_SECURITY_ENABLED | true | 对安全问题的审计 |
DIFFGUARD_BEHAVIOR_ENABLED | true | 对行为变化的审计 |
DIFFGUARD_MAX_DIFF_TOKENS | 8000 | 截取前最大 diff 大小( 审计变为部分) |
DIFFGUARD_PROVIDER | anthropic | 提供者 : anthropic 或者说 openai (开放AI兼容) |
DIFFGUARD_BASE_URL | (未设定) | OpenAI 兼容供应商的基础 URL(例如). http://localhost:11434/v1(中文(简体) ) |
~/.config/diffguard/config.json | (未设定) | 保存的设置 diffguard config (提供者、模型、基址、, needsKeyEnv vars 覆盖它。 设定 XDG_CONFIG_HOME 以搬迁. |
优先发言: env var > config 文件 > 默认。API 密钥从未存储在配置中
文件 —— 它生活在平台键链中(diffguard key set 编号 : diffguard config)或为:
ANTHROPIC_API_KEY (原始内容存档于2018-10-21). Env var. CLI先检查env var,再检查键链.
如何运作
- DiffGuard收集了git diff和一些轻量级回放上下文.
- 它迅速指示克洛德 以JSON的严格身份回归调查结论
答复(删除
Ctrl-C) (中文(简体) ). - 答复经过解析和验证——错误的调查结果被删除和计算, 从来没有默默接受.
- 调查结果作为分组报告打印,或作为原始JSON
--json。 。 。 .
如果diff为空,DiffGuard在0出站时不拨打API. 如果diff也一样
很大,它被切换到 DIFFGUARD_MAX_DIFF_TOKENS 并且审计部分标明.
隐私
- 您的审计被发送到 Anthropic 生成结果 。 不要审计密码 送去第三方API很不舒服.
- DiffGuard不打其他网络电话,也不收集遥测数据.
路线图
- 承诺前钩子安装器( E)
diffguard install) (中文(简体) ). --path过滤,--fail-on <severity>。 。 。 .- 与安全/行为结果一起进行检验和许可证遵守情况检查.
许可证
麻省理工学院——见 自由主义。 。 。 .