AI Agent 写完代码却说不清为什么?Wy 把修改、对话和证据放在一起
AI 编程工具最容易留下的一笔技术债,不是代码本身,而是“这段修改为什么存在”。当 Agent 自动加入缓存、调整重试次数或改动数据库 schema 时,Git diff 能告诉我们改了什么,却不一定能回答:这是需求、模型推断,还是一次没有被验证的临时决定?Rust 终端工具 Wy(项目名为 wy)正是针对这个缺口设计的实验性工具。
Wy 将 Git 变更与 Codex、Claude Code 的本地会话记录放进同一个审查界面。它不会修改应用源码,也不会执行被审查的代码;开发者可以先离线查看,再按需让已安装的 Agent 针对有限、经过脱敏的证据做解释。
它审查的不是“代码好不好”,而是“理由是否可追溯”
Wy 的核心模型很克制:把观察到的事实、基于仓库证据作出的推断,以及目前无法证明的部分分开。
| 状态 | 含义 |
| — | — |
| Recorded | 在 Agent 的可观察会话记录中找到明确的理由。 |
| Inferred | 仓库证据支持某个假设,但仍有前提。 |
| Unexplained | 修改可见,但现有证据无法建立其动机。 |
这一区分很重要。即使某句话确实出现在会话记录里,也不代表它一定正确;Wy 不会因为一次新的模型分析,就把推测升级成“已记录事实”。这种保守的证据链比让模型给每个 diff 写一段听起来合理的解释更适合代码审查。
最小上手流程
Wy 当前通过 Rust 工具链从 GitHub 安装,要求 Rust 1.88+、Git 和 C 工具链:
cargo install --git https://github.com/grandimam/wy --locked wy-code cd /path/to/your/repo wy
进入界面后,可以用方向键或鼠标选择文件,查看变更和匹配到的 Agent 笔记。按 e 请求一次上下文增强;按 s 选择来源并打开证据;Tab 切换面板,? 查看帮助,q 退出。若要切换回答 Agent,可以输入:
/agent claude
Codex 是默认回答 Agent。需要增强解释时,所选择的 Codex 或 Claude CLI 必须已经安装并完成登录;只浏览变更、笔记和已保存证据时,可以保持离线。
三类使用场景
第一类是合并前复盘。 Agent 提交一个看似合理的缓存或重试改动,Wy 可以把 diff、相关会话消息和工具调用放在一起。审查者不必只根据提交者后来补写的说明判断动机,而是能打开原始来源,检查“为什么这样做”是否真的被说过。
第二类是长期维护。 Wy 会把审查、来源快照和规范化后的对话摘录保存到项目的 .wy/ 目录。重新打开时,如果代码已经变化,已保存的解释会被标记出来。建议把 .wy/ 加进 .gitignore:这些本地资料默认不会上传,但它们没有加密,脱敏也只是尽力而为。
第三类是离线调查。 wy review、wy explain 和 wy ask 的离线模式不请求模型或网络;可选的 --model 才会连接已配置的 Ollama 兼容端点。这样可以把“先找证据”和“再让模型总结”拆成两个明确阶段,减少无必要的数据外发。
它的边界同样值得关注
Wy 不是自动代码修复器,也不是完整的架构决策挖掘系统。当前离线检测覆盖缓存、依赖版本、运行限制、数据库 schema 和重试等模式,并且每次审查最多处理 12 个决策;Rust、JavaScript、TypeScript 和 JSON 使用 tree-sitter 导航,其他文本使用行锚点。检索主要是词法匹配,因此引用仍需要人判断。
项目目前标注为实验性软件,版本为 0.2.0,界面、命令和本地工件格式都可能变化。它的价值不在于替开发者作最终判断,而在于把“代码改动”和“Agent 当时看到了什么、说了什么”连接起来。对于已经依赖 AI 编程 Agent 的团队,这条证据链往往比又一个自动生成的审查分数更可操作。
结语
如果你的团队经常遇到“代码能跑,但没人知道为什么这样改”的问题,Wy 提供了一个低侵入的实验路径:继续使用现有的 Codex 或 Claude Code,把会话记录留在本地,再用 Git diff 对照原始理由。它不会消除错误决策,却能让未经证明的理由保持可见,让后续维护者知道哪些是事实、哪些只是推断。
相关链接