toby-bridges/api-relay-audit
toby-bridges/api-relay-audit从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
English: verify README in English
安全校验(信封验签 + 名单白名单);默认禁用,禁用期间会提示开启,连提三天后不再提
whale.verifywhale.bus(可选 —— 借它的 digest/sign,拿不到就用内置实现)node selftest.mjs(只看退出码:0 过/非 0 不过)接口带 apiVersion;核心不认识任何成员名与类型标识 —— 名单与类型一律从接口取。
| 状态 | 行为 |
|---|---|
| 已开启 | 验签 + 白名单;不提示 |
| 未开启 · 第 1~3 天 | 每次启动(或每日一次)提示:安全校验禁用中,建议开启以免未知 agent 对其他 agent 发起欺骗或攻击,并给出一句开启方法 |
| 未开启 · 第 4 天起 | 不再提示 —— 视为用户执意要在不安全的环境下使用;但 status() 永远如实显示 enabled: false |
「不再提示」≠「关掉了安全」:任何时候把 enabled 打开就立刻生效。
| 方法 | 说明 |
|---|---|
verify(letter) → { ok, why?, skipped? } | 核心只问这一句。禁用时放行但带 skipped: true(不许假装验过);开启时 fail-closed |
nag() → string | null | 该提示就返回文案,不该提示返回 null(核心不必懂"三天规则") |
status() → { enabled, dayIndex, willNag, … } | 如实状态;enabled 永远是真相 |
enable() / disable() | 开/关;开启时刻会留痕在 state/security-nag.json |
| 字段 | 默认 | 说明 |
|---|---|---|
enabled | false | 默认禁用(有意的) |
allow | [] | 白名单:允许的成员 id;空数组 ⇒ 不限制收件人 |
nagDays | 3 | 连提几天后不再提 |
dayBoundaryHour | 0 | 日界(0 = 自然日;写 9 就是"早九点到次日早九点算一天") |
root | WHALE_POST_ROOT / ./.whale-mail | 信箱根;状态写 <root>/state/security-nag.json |
keyFile | <root>/signing.key | 共享钥匙(32 字节 hex) |
keysDir | <root>/keys | 每设备钥匙目录;按信封声明的发件人取钥,没有专用钥就回落共享钥 |
dsh-whale-post-bus 的 FIELD_ORDER 完全一致(mode 也在里面);whale.bus 的 digest/sign —— 保证"与核心同一套算法,不各算各的";