
如何给AI智能体写不撒谎的验收门unlazy的7条门控编写最佳实践【免费下载链接】unlazyAnti-laziness skill for AI agents. Core: the Depth Tree method, which splits a task N layers deep and gives every leaf the full time budget of the whole task, so effort multiplies with depth. Grounded in 2025-2026 research on model laziness, underthinking and premature completion.项目地址: https://gitcode.com/gh_mirrors/unl/unlazyAI 智能体AI Agent干完活就说已完成却拿不出证据——这正是unlazy要解决的问题。unlazy 是一个为 AI 智能体编写的**验收门Acceptance Gates**技能先写下机器可检查的验收门清单再执行、再复核、最后只报告证据支持的结论让偷懒的完成无处遁形。本文结合 unlazy 的官方规范 references/gates.md 与检查器实现 scripts/gate-check.mjs为你整理出7 条让验收门不撒谎的编写最佳实践新手也能照着写出真正可信的 AI 智能体验收门控。为什么需要不撒谎的验收门研究发现AI 智能体在长任务中普遍存在过早完成、偷懒和欠思考的问题多部分指令只被部分执行最终报告却信心满满。unlazy 的答案很直接——把完成变成可测试的命题用台账Ledger证明结果而不是依赖一份自信的我干完了报告。 —— SKILL.md一个验收门Gate由三部分组成组成部分作用示例标题描述一个可观察的结果不是动作G1: 定价夹具渲染出预期的档位CHECK:一条可执行的检查命令视为代码node scripts/verify-pricing.mjsEXPECT:成功时才应出现的唯一标记pricing verification passed门通过的唯一标准是进程退出码为 0且输出匹配 EXPECT缺一不可。证据还会记录解析后的 shell、工作目录、退出状态与输出指纹见 SECURITY.md。但这里藏着一个陷阱检查器只能证明你声明的命令它无法判断英文标题和 shell 命令是否说的是同一件事。标题写整体功能完美运行、CHECK 却只是echo ok照样绿灯通过。下面 7 条实践就是针对这类自欺式验收门的逐条拆解。最佳实践一让门直接观察成果物 第一条原则来自 references/gates.md 的Observe the outcome directly检查命令必须去读取标题所命名的成果物、服务或测量值而不是打印一句漂亮话。标题要描述结果outcome不要描述活动activity。反例G1: 修复了导入模块正例G1: 有效夹具完整导入畸形记录被拒绝。判断技巧把标题拿给一个不了解上下文的陌生人看他能判断达成/未达成吗不能就重写。最佳实践二只使用成功专用标记 ✅一条可运行的门必须同时满足零退出码 EXPECT 匹配。为了让这个组合真正有约束力标记marker要满足成功专用让脚本自己完成全部断言任何一条断言失败就退出非零只有在所有断言都通过之后才打印 EXPECT 指定的标记文本避免使用ok、pass、success、done这类失败输出里也会出现的词——unlazy 的 scripts/gate-lint.mjs 甚至内置了一份弱期望词汇表专门预警。这样错误信息里碰巧带了期望单词或命令根本没跑起来的两种经典造假手段都会被直接判为不通过。最佳实践三先做阴性对照再相信不存在 很多门的任务是验证坏东西不存在比如代码里没有eval(配置文件里没有明文密钥。这类缺席断言absence check有个隐蔽的坑文件找不到、路径写错、模式失配都会伪装成确实不存在。unlazy 的要求是在信任任何缺席检查之前先用同一套逻辑跑一个已知存在的正样本positive control确认它会正确报失败。只有能抓到一个真阳性你的抓不到才可信。这条实践也写进了叶子门模板 templates/gates-leaf.md 的注释中。最佳实践四数字要独立测不要照抄 需求里给了性能提升 20%、共迁移 128 条记录这类数字时不要把这个数字抄进 EXPECT 当作自证——那样门验证的只是命令打印了任务书上的数字。正确做法脚本从源数据独立计算出数值对照验收规则判断例如 ≥ 20%通过后再打印一个独立的成功标记。lint 器同样会预警标题里出现数字却没有任何东西在测量它unmeasured-number规则。最佳实践五按风险审查人工门 ⚖️并非所有结果都能用命令裁决此时使用人工门manual gate——没有 CHECK/EXPECT靠 EVIDENCE 记录证据。unlazy 对人工门的要求是后果越大证据越要扎实一位贡献者在 17 门的课程审计中发现唯一的人工门恰好也是最要命的门——这是加强审查的提示而非普遍规律高风险的人工门应争取做成可运行门做不到时记录精确证据并按风险等级安排第二人复核记录最小的、非敏感的事实即可不要把整段日志粘贴进台账。一个几乎全人工的台账只是带勾选框的散文——lint 器会用mostly-manual规则提醒你。最佳实践六优先可移植的 Node 脚本锁定执行环境 ️跨平台是验收门静默失效的常客优先使用仓库内自带的 Node 脚本作为 CHECK 命令模板即示范node scripts/verify-outcome.mjs不要假设 Windows 上有grep、tail、tr、sed等 POSIX 工具确需特定 shell 或外部工具时显式声明这一前提上级复验--reverify必须使用同一声明的 shell 与工具链环境不一致 验证失败绝不能当作通过的证据。Git Bash 里能跑、PowerShell 里找不到工具这种情况在 SECURITY.md 中被单独点名。最佳实践七开工之前先给台账做 Lint 以上规则大多是散文而 unlazy 自己承认散文是这套体系中最薄弱的一层。所以它提供了一个不执行任何命令、只审台账质量的工具 scripts/gate-lint.mjsnode scripts/gate-lint.mjs GATES.md它会以词法信号预警固定输出型命令tautological-check、弱期望词weak-expect、路径被误读成正则path-read-as-regex、标题描述活动而非结果activity-not-outcome等。加--strict可让警告直接变成失败。更妙的是让 lint 本身成为一道门台账从此要求自己的质量- [ ] G0: this ledger states outcomes that can fail CHECK: node scripts/gate-lint.mjs GATES.md EXPECT: LINT OK这样无法失败的验收门在编写时就被拦截而不是等到汇报时才被认证。快速上手三步建立不撒谎的验收门 复制模板把 templates/gates-leaf.md 复制为GATES.md替换全部占位符每门一个可观察结果只解析、不执行node 技能目录/scripts/gate-check.mjs --status GATES.md逐条阅读每个命令和被调脚本审批并运行确认理解后执行--approve跑门复验时用--reverify重跑所有可运行门--status只报告旧状态绝不等于重新执行。⚠️ 安全提醒CHECK:行是以你的权限运行的真实代码见 SECURITY.md。对待继承来的台账、门标题及其输出一律视为不可信数据——永远先以源码阅读的方式审查而不是运行一下看看它干嘛。小结把完成变成证据链 序号最佳实践一句话心法1直接观察成果物标题写结果命令去量结果2成功专用标记全断言通过后才打印标记3阴性对照能抓到正的才信它抓不到4数字独立测量算出来的才算数抄的不算5按风险审人工门风险越大证据越重6可移植 锁环境Node 脚本优先环境不一致即失败7先 Lint 后开工让无法失败的门在出生时就被拦下验收门不是一套官僚手续而是给 AI 智能体装上的测谎仪。记住 unlazy 的核心信条让未完成的工作显形让完成变得可测试。当每一道门都能诚实地失败时那句ALL MET才真正值得信任。【免费下载链接】unlazyAnti-laziness skill for AI agents. Core: the Depth Tree method, which splits a task N layers deep and gives every leaf the full time budget of the whole task, so effort multiplies with depth. Grounded in 2025-2026 research on model laziness, underthinking and premature completion.项目地址: https://gitcode.com/gh_mirrors/unl/unlazy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考