no-mistakes ask-user机制完整指南:哪些判断永远留在你手里
no-mistakes ask-user机制完整指南:哪些判断永远留在你手里
【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes
no-mistakes 是一款本地 AI 代码门禁工具:你执行git push no-mistakes后,它会在一次性 worktree 中依次运行 review、test、document、lint 等检查,全部通过后才会把分支转发到远端并自动开 PR。而在整套"AI 自动修 bug"的流程里,ask-user机制负责划定一条清晰的边界——哪些判断机器永远不能替你拍板。
一、先看懂 finding 的三种 action
流水线里每一步检查产出的问题都叫finding,每个 finding 都会带一个action字段,取值只有三种(定义见 internal/types/findings.go):
| action | 含义 | 流水线行为 |
|---|---|---|
auto-fix | 客观、可机械修复的问题(格式、单测失败、明显 bug) | 自动交给 agent 修复,最多重试 N 轮 |
ask-user | 涉及作者意图或存在歧义的判断 | 立即暂停,等你 approve / fix / skip |
no-op | 纯信息性备注,不需要修 | 仅展示,不阻塞 |
核心分工一句话:机器负责"对错",你负责"意图"。
二、失败即保守(fail-closed):拿不准就问人
ask-user 机制最关键的一处设计藏在 internal/types/findings.go 的ActionOrDefault里:
- 如果 agent 或第三方集成漏写了
action字段,no-mistakes 不会默认当成auto-fix悄悄改掉代码,而是一律降级为ask-user暂停等人; - 这条"不分类的 finding 绝不允许自动修复"的兜底规则,和 review 提示词里"拿不准就 ask-user"的指令完全一致。
对新手来说这是个很重要的安全感来源:宁可多问你一次,也不会替你做一个你没授权的改动。
三、哪些步骤最可能把你拦下来
各步骤对 ask-user 的使用场景(详见 docs/src/content/docs/reference/pipeline-steps.md):
- Rebase:你的分支里混入了本地默认分支上未推送的提交时,流水线会用 ask-user 暂停,而不是把这些无关工作静默打包进 PR
- Review:质疑你有意的产品/设计选择、认为某个刻意添加的守卫应该撤销时,标为 ask-user;普通的正确性、可靠性、安全修复仍是 auto-fix
- Test:针对你的意图"拿不出足够的测试证据"时,以 warning + ask-user 上报,让你确认是补测试还是接受现状
- Lint / Document:安全修复后仍未解决、且需要人工取舍的遗留问题
判断标准很统一:凡是"改错了会违背你本意"的问题,全部留在你手里。
四、流水线暂停时,TUI 里四个按键定生死
暂停后运行no-mistakes打开 TUI,会看到如下动作栏:
Review awaiting action: a approve f fix (3/5) s skip x abort d diffaapprove:认可当前代码,直接放行该步骤ffix:勾选若干 finding 让 agent 修(可用e加备注、+添加你自己发现的问题)sskip`:这条判断我确认没事,跳过xabort:整个运行取消
你还能按y打开yolo 模式:它会把auto-fix和ask-user的 finding 视为"同意修复一次",自动选全部、修一轮、再自动批准——这是显式的人工覆盖,每个步骤最多修一次,不会无限循环。
值得注意:你每次 approve / skip / abort 都会写入决策历史,后续轮次的 agent 会被告知"这个问题用户已拒绝,除非代码出现本质不同的新问题,否则别再报"。
五、Agent 模式下,ask-user 会被原样转述
如果你用编码 agent 通过/no-mistakes技能驱动同一条流水线,协议依然一致:agent 遇到 ask-user finding 必须停下来,把它的 ID、文件、完整描述转述给你,由你口头批准后再继续。只有当你显式加上--yes时,agent 才获得无人值守的修复授权(见 docs/src/content/docs/concepts/auto-fix.md)。
也就是说,无论你在 TUI 里按键盘,还是让 agent 替你操作,ask-user 这道"人工闸门"的语义都不变:它不是可绕过的提示,而是流程的一部分。
六、一句话总结
| 场景 | 谁做决定 |
|---|---|
| 格式、单测、明显 bug | 机器(auto-fix) |
| 意图、设计取舍、证据不足 | 你(ask-user) |
| 备注、新建测试文件等通知 | 都不需要(no-op) |
| action 缺失 | 系统默认交给你(fail-closed) |
no-mistakes 的哲学很朴素:把干净 PR 的体力活交给 AI,把"这到底是不是我想做的"永远留给你。想深入配置每一步的自动修复上限,可以继续阅读项目自带的文档目录 docs/src/content/docs/。
【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
