2026年10月6日 1 分钟阅读

AI Agent 说完成了,真的完成了吗?Rashomon 用独立记录拆穿“成功”假象

tinyash 0 条评论

AI 编码 Agent 最让人不安的时刻,不是它报错,而是它自信地说“已经完成,所有测试都通过”,你却没有第二份证据。Agent 的总结来自它自己的上下文;如果某个子 Agent 失败、测试命令返回非零,或者工具调用被改写,最终摘要未必会完整反映这些事实。

Rashomon 是一个 Apache-2.0 开源项目,针对 Claude Code(当前 README 标注为 alpha v1.1.0)保存一份独立的执行记录,再把这份记录和 Agent 自己的总结放在一起比较。它不是沙箱,也不会阻止命令,更像是给 Agent 装了一台“黑匣子”。

它到底记录什么

Rashomon 通过 Claude Code 的钩子观察工具调用。它会记录命令是否成功、文件操作、子 Agent 的执行情况,以及测试运行结果;当 Agent 的结束语没有出现与失败相关的词,而独立记录发现了失败,它会在回合末提醒你。

这个定位很重要:Rashomon 不试图理解 Agent 的意图,也不把自己包装成安全边界。它只是提供第二个视角。项目文档明确说明,它不会保存提示词、响应、文件内容或工具输出;命令会被压缩成程序名、参数数量和带密钥的摘要,命令中显式出现的主机名则会被保留用于报告。

它还会告诉你“看不到什么”。当前版本不观察网络流量,报告会标记网络目的地未被观察;Windows 也尚未支持。因此,Rashomon 的价值是执行事实审计,不是全能的安全监控。

两种安装方式,选一种即可

最直接的方式是使用命令行安装器。它会下载对应平台的发布包,校验 checksums.txt,并将二进制放到 ~/.local/bin:

curl -fsSL https://raw.githubusercontent.com/altrace-dev-role/rashomon/main/install.sh | sh
rashomon watch

watch 会把记录器写入 Claude Code 的设置。之后正常使用 Claude Code,需要查看会话时运行:

rashomon report

也可以把它作为 Claude Code 插件安装:

claude plugin marketplace add altrace-dev-role/rashomon
claude plugin install rashomon@rashomon
claude plugin enable rashomon@rashomon

两种方式不要同时启用,否则同一个调用会被记录两遍。插件方式需要重新启动 Claude Code;命令行方式则适合希望把记录器作为本地工具管理的用户。

一份报告能解决什么问题

典型场景是:主 Agent 说“重构完成,测试全部通过”,但报告显示有一次测试命令返回了失败状态;或者主对话没有呈现子 Agent 的工作,而报告列出了子 Agent 实际执行过的步骤。Rashomon 会把 Agent 的最后一句话放在报告上方,再列出失败调用、测试统计以及没有出现在总结中的失败词。

它不会替你判断“为什么失败”。例如,报告可以说某次 go test 或 pytest 以失败结束,却不会声称这是业务逻辑错误还是环境问题。这个克制的边界反而适合放进开发流程:人来判断原因,工具负责保留证据。

使用时建议把它当作提交前的第二道检查,而不是持续盯屏工具:

  1. 让 Agent 完成一个有明确验收标准的任务。
  2. 先阅读 Agent 的总结,再运行 rashomon report。
  3. 对报告中的失败调用、子 Agent 活动和测试统计逐项核对。
  4. 如果需要把结果交给 CI 或团队,再结合项目自身的测试和审查工具。

不要把它误当成沙箱

Rashomon 不会阻止危险命令,也不能阻止一个蓄意修改记录的 Agent。它不支持 Cursor 或 Codex 的原生工作流,README 还提醒:这些工具可能读取 Claude Code 的设置,从而触发记录器,但记录结果可能不准确。换句话说,它适合 Claude Code 的本地审计,不适合泛化成所有 Agent 的安全层。

对于隐私敏感的仓库,也应先检查本地状态目录和团队保留策略。项目默认把记录放在 ~/.local/state/rashomon,停止记录可以运行:

rashomon detach

结语

Agent 的“完成”是一个声明,测试进程的退出码和工具调用记录才是证据。Rashomon 的思路并不复杂:不和 Agent 抢控制权,只在旁边保留一份相对独立的执行账本。对于经常让 Agent 并行调用子任务、自动改代码和运行测试的开发者,这种低干扰的第二视角,可能比再加一个聊天窗口更有用。

项目仍处于 alpha 阶段,支持范围也明确有限;但它提出了一个值得保留的工程习惯:不要只问 Agent“你做完了吗”,还要问“实际发生了什么”。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。