- CLI
- 0.2.17
- 预览 ref
- a2c45c8
当多个 AI 代理并行运行时,会出现一种模式:权限被批准,代理继续工作,但直到很久以后才有人系统地审阅它们实际做了什么。
等到去看 diff 时,模式已经形成:
- 一个代理在添加不需要的调试输出
- 另一个一直在重新格式化无关的文件
- 第三个在推进,但方向本该更早纠正
有帮助的是一套以手机为主的审阅工作流,在这些模式跨会话扩散之前发现它们。
简要总结
- 每个重要轮次之后或在自然的间歇点,审阅代理改了什么
- 在手机上使用 Happier 的 diff 审阅(无需 SSH)
- 检查模式:格式化噪音、范围蔓延、调试残留
- 趁上下文还新鲜时发现错误,而不是几小时后
- 多个代理时:每天审阅所有会话,发现跨会话的模式
问题所在
AI 代理干活很快。这正是重点。
但快意味着:
- 改动迅速累积
- 你根据描述而不是完整 diff 批准权限
- 等你运行 git diff 时,已经改了几十个文件
- 发现“代理跑偏了”时已经太晚
代价高昂的失败模式不是一个糟糕的改动,而是:
- 代理形成了某种模式(注释过多、不必要的重构)
- 你 3 个小时都没注意到
- 现在这种模式出现在 4 个会话的 6 个文件中
- 回滚意味着要重新解释上下文
常见做法及其权衡
- 一天结束时再审阅:太晚了,模式已经扩散。
- SSH 后运行 git diff:可行,但在手机上很繁琐,很容易匆忙漏看。
- GitHub PR diff:适合最终审阅,但你想在提交前就检查。
- 相信代理:快但有风险,质量随任务复杂度而变。
Happier 的移动端 diff 审阅解决了这个问题:
- 无需 SSH,在手机上查看 diff
- 每轮之后或按计划审阅
- 与会话上下文放在一起
- 可以立即要求修改
如果你第一次接触 Happier
Happier 是一款面向 Claude Code、Codex 和 OpenCode 等 AI 编码代理的开源配套应用。
这里的工作流是:代理在你的机器上运行,Happier 在手机上展示改了什么,你可以在问题累积之前发现它们。
开始设置:
- 如何在手机上使用 Happier
- GitHub: https://github.com/happier-dev/happier
- 安装/下载: https://github.com/happier-dev/happier#how-it-works
- Discord(社区与支持): https://discord.gg/W6Pb8KuHfg
分步操作:用手机审阅代理的改动
1) 打开会话
在 Happier 应用中:
- 点按你要审阅的会话
- 等当前轮次结束(或在运行中打开)
2) 进入 diff 审阅
找到 diff 或改动的入口:
- 在会话对话记录中,轮次摘要可能包含改动标记
- 会话信息或详情通常显示文件改动数量
- 滑动或点按进入 diff 视图
3) 审阅已更改的文件
diff 视图会显示:
- 哪些文件改了
- 逐行的新增和删除
- 语法高亮
- 文件路径上下文
在手机上:
- 一次滚动浏览一个文件
- 重点看高风险改动(核心逻辑、配置文件)
- 快速浏览安全的改动(测试、注释)
4) 寻找模式
需要尽早发现的常见代理模式:
调试残留:
# Added debug print the agent forgot to remove
print(f"DEBUG: user_id={user_id}")格式化噪音:
- existing_function()
+ existing_function(
+ )逻辑没变,但现在每一行都显示为已修改。
范围蔓延:
# You asked to fix auth.py
# Agent also reformatted database.py, models.py, utils.py注释过多:
# Initialize the variable
x = 0
# Increment the variable
x += 1不必要的复杂性: 代理把 5 行代码换成了 20 行过度设计的抽象。
5) 根据发现采取行动
如果改动看起来不错:
- 继续下一个会话或任务
- 如果这是合适的停顿点,就提交
如果发现问题:
- 回复代理:“继续之前,先删掉 auth.py 里的调试输出”
- 或者:“撤销 database.py 的格式化改动,那个文件不在范围内”
- 代理可以在你提交前修好
适合多个并行代理的工作流
同时运行 3 到 5 个代理时:
早上检查
- 打开每个会话
- 审阅每个代理夜间做了什么
- 发现跨会话的模式
发现示例:
“三个代理加类型提示的方式都不一致。两个用
typing.List,一个用list。定个标准。”
午间审阅
- 查看已完成轮次的会话
- 审阅它们的 diff
- 批准下一步或要求修正
一天结束时的检查
- 审阅所有会话中所有未提交的改动
- 寻找跨会话的模式
- 提交干净的工作,修复或丢弃其余部分
需要留意的质量模式
文件选择的准确性
代理改的是你预期的文件吗?
好的:
- 你要求修复 auth
- 它修改了:
auth.py、auth_test.py
危险信号:
- 你要求修复 auth
- 它修改了:
auth.py、database.py、utils.py、config.py、README.md
改动粒度
改动是聚焦的还是铺开的?
好的:
- 修改了一个 50 行的函数,改了 3 行
危险信号:
- 修改了一个 50 行的函数,改了 45 行(预期是编辑,却可能是重写)
测试覆盖
代理是否添加或更新了测试?
好的:
- 修改了
feature.py,并在feature_test.py中添加了测试
危险信号:
- 修改了核心逻辑,却没有测试改动
提交边界
这些工作能干净地提交吗?
好的:
- 一个完整的逻辑改动,可以提交
危险信号:
- 三个无关的改动混在一起
- 仍有调试代码
- 留下了被注释掉的代码
尽早发现代理漂移
代理漂移:代理对任务的理解逐渐偏移。
迹象:
- 第一次改动:正是你要求的
- 第二次改动:仍然相关,但范围更大
- 第三次改动:在解决你没要求的相邻问题
尽早发现:
每轮之后审阅。如果第 2 轮出现漂移,立即纠正:
“CSV 导出看起来不错,但先别重构整个导入系统。我们先测试导出。”
没有尽早发现:
最后才审阅。现在代理已经在 12 个文件中重构了导入,你得理清哪些可以安全保留。
手机审阅技巧
聚焦信息量高的文件
你不需要逐行审阅每个改动的文件。
优先顺序:
- 核心逻辑文件(认证、业务逻辑、API 处理程序)
- 配置文件(可能导致全面故障)
- 测试(确保测的是正确的东西)
- 文档(风险较低,稍后审阅)
用改动数量来分流
如果一个会话改了:
- 3 个文件、50 行:现在审阅,快速浏览
- 12 个文件、300 行:现在审阅,重点看核心文件
- 50 个文件、2000 行:可能是格式化或重构,抽查 5 个关键文件
在自然的边界处审阅
除非代理卡住,否则不要在轮次中途审阅。
在以下时候审阅:
- 代理完成一轮并问下一步做什么
- 代理完成一个完整的里程碑
- 你即将批准下一个重要权限
故障排查
症状:在应用中看不到 diff
可能原因:
- 会话运行在 Happier 无法访问的机器上
- 没有初始化 Git 仓库
- 该会话类型不支持 diff 视图
解决方法:
- 确保会话所在的机器可访问
- 确认会话位于 git 仓库中
- 检查会话类型是否支持 diff 审阅
症状:改动太多,无法在手机上审阅
可能原因:
- 代理做了大范围重构或格式化
- 多个轮次叠在一起
解决方法:
- 分流:先关注核心文件
- 切换到桌面端做完整审阅
- 或者:让代理按文件总结改动
症状:代理一直犯同样的错误
可能原因:
- 代理指令中没有明确处理这种模式
- 代理没有项目风格指南
解决方法:
- 创建或更新包含风格规则的
AGENTS.md - 说清楚:“不要添加调试输出”、“不要格式化范围外的文件”
- 纠正之后,在下一轮确认代理理解了
常见问题
我应该审阅每一轮吗?
不。在合理的边界处审阅:
- 完成一个子任务之后
- 提交之前
- 多个轮次累积时
- 切换代理时
探索性工作可以少审阅,生产代码要多审阅。
如果几小时后才发现错误怎么办?
让代理修复:
“auth.py 第 45 行你加了一个调试输出。删掉它,并检查有没有其他的。”
或者撤销该文件:
git checkout HEAD -- auth.py然后让代理重做那个具体的改动。
不用 Happier 能审阅吗?
能:
git diff
git status但在手机上,SSH + git 比 Happier 的界面别扭得多。
适用于所有代理吗?
适用于在 git 仓库中运行的任何代理:
- Claude Code
- Codex
- OpenCode
- 自定义代理
diff 是标准的 git 输出,与代理无关。
如何审阅多个代理的工作?
在手机上:
- 打开 Happier
- 查看每个会话最近的改动
- 寻找相互冲突的模式或重叠的编辑
或者在桌面上:
git diff main
git log --oneline --graph