测试版功能。 审计功能以测试版形式发布,我们正在收集早期反馈。
在下一个稳定版本发布之前,检测器目录和报告格式可能会发生变化。
如有任何问题,请提交 issue。
failproofai 时直接访问 http://localhost:8020/audit。
cd <cwd> 前缀、sleep 轮询循环、重复读取刚编辑的文件等。
对于每条转录记录,所有工具调用事件都会通过 39 个内置策略以及 8 个仅审计检测器进行回放,这些检测器可捕获运行时策略尚未覆盖的模式。计数按策略/检测器在所有会话中聚合。
您将获得什么
/audit 页面由六个部分组成:
- Identity——根据所有已审计转录记录中的加权信号,将您的代理归类为 8 种原型之一(
optimist、cowboy、explorer、goldfish、paranoid architect、precision builder、hammer、ghost)。 - Strengths——从扫描中得出的真实数据(干净调用百分比、“0 次凭证泄露”等),以相关 sanitize 策略实际触发为前提。
- Score——0 到 100 分,分为 S/A/B/C/D/F 等级,以及启用所有推荐策略后的预计提升分数。
- Findings——每条策略的卡片,包含发生的情况、成本、捕获的证据,以及启用相应内置策略的精确命令
failproofai policy add <slug>。 - Prescribed policies——聚合安装列表,提供一键执行的
failproofai policies --install命令。 - Re-audit reminder——“更好地回来。“通过 api-server 设置 7 天邮件提醒(需要登录;参见
failproofai auth)。
仅审计检测器
这些检测器用于检测尚未在实时中执行的”低效行为”模式。它们仅在审计期间运行,永远不会阻止实时工具调用。| 检测器 | 计数内容 |
|---|---|
redundant-cd-cwd | 以 cd <cwd> && … 开头的 Bash 命令,尽管命令已在 cwd 中运行。 |
prefer-edit-over-read-cat | 对单个源文件执行 cat/head/tail/less/more——应使用 Read 工具。 |
prefer-edit-over-sed-awk | 使用 sed -i / awk … > file 进行原地编辑——应使用 Edit 工具。 |
prefer-write-over-heredoc | 使用 Heredoc / 多行 echo > file 写入文件——应使用 Write 工具。 |
sleep-polling-loop | 长时间 sleep N(≥ 30 秒)或 while …; sleep …; done 轮询循环。 |
find-from-root | find /、find /home、find /usr 等——应将范围限制在 cwd 内。 |
git-commit-no-verify | git commit … --no-verify / -n,跳过钩子。 |
reread-after-edit | 在同一会话中对刚刚执行过 Edit/Write 的文件执行 Read。 |
缓存
- 每条转录记录缓存位于
~/.failproofai/cache/audit/<sha1>.json,以(mtime, size, engineVersion, detectorVersion)为键——当转录记录或策略/检测器代码发生变化时自动失效。每个条目还存储一个cachedAt时间戳作为 TTL 元数据(不属于缓存键的一部分);读取时超过 7 天的条目将被拒绝,以防止长期存在的结果超出检测器意图的演变范围。 - 整体结果缓存位于
~/.failproofai/audit-dashboard.json(模式 0600)。使仪表盘在导航时能够立即渲染,无需重新运行。同样,读取时超过 7 天 TTL 的结果将被拒绝——此时/audit将回退到空状态并提示进行新的运行。点击报告底部附近的[ re-audit now ]进行刷新——重新审计会发送noCache: true,因此它会绕过每条转录记录的缓存并重新扫描所有转录记录,而不是返回缓存结果;运行过程通过顶部固定条带流式传输进度,成功后原位替换结果(无需重新加载页面;重新审计失败时保留之前的报告)。
注意事项
- 无数据修改。 审计以只读模式回放。
warn-repeated-tool-calls被跳过,否则其每个会话的附属文件将被修改。 - 工作流策略跳过。
require-*-before-stop策略仅在Stop事件时触发,并通过execSync检查实时 git 状态——它们对于”2025 年会发生什么”没有有意义的解释,因此不会出现在审计计数中。 - 自定义策略跳过。 用户提供的自定义钩子不会被回放(它们可能在原始会话之后已发生变化)。

