最新消息:

unlazy:告别 AI Agent 的“糊弄学”,逼 AI Agent 把活干完

佳软 yeeach 65浏览 0评论

在Vibe Coding盛行的当下,真正让人头疼的往往已经不是“AI 不会写代码”。

更常见的问题是:它明明只完成了 70%~80%,却非常自信地告诉你:Done。

让它重构一个模块,它可能改了主流程,却忘记边缘情况;让它修一个 Bug,它修好了眼前的报错,却没有跑完整测试;让它完成一个大型项目,前面几十分钟做得很认真,随着上下文越来越长,后面开始越来越敷衍。

这就是开源项目 unlazy 想解决的问题。

它不是让 AI“智商提高”,也不是再写一段“请你认真工作、不要偷懒”的 Prompt,而是尝试给 AI Coding Agent 增加一套类似软件工程 CI(持续集成) 的 完工纪律:不要告诉我你做完了,拿证据证明你做完了。

unlazy:https://github.com/Leonxlnx/unlazy

 

unlazy 解决的问题

传统的 Agent 往往以“生成更多 token”或“尽快结束对话”为导向,导致它们在面对大型任务时倾向于采取“最省力路径”——写占位符(TODO)、不做边缘情况测试、甚至直接幻觉出“校验已通过”的结论。

典型的失败模式:

Laziness / premature completion:多段任务只做一部分就宣布结束。Quantifying Laziness 在受控实验里看到:即使指令写得很细,模型仍经常漏章节、达不到长度要求。

Underthinking / overthinking:推理路径切来切去,或者把算力花在无用思考上。

长程质量崩坏:SlopCodeBench 让 15 个 coding agent 反复扩展自己的解。没有一个端到端做完任何题目;最好的也只过了 14.8% 的 checkpoint。结构侵蚀在 77% 的轨迹上上升,冗余在 75.5% 的轨迹上上升。过 checkpoint ≠ 任务完成。

 

unlazy 的核心机制

核心机制 1:深度树方法(Depth Tree Method),把大型任务真正拆到底

unlazy 提出了 Depth Tree 概念:

算力乘法效应:将大任务递归拆解为 $N$ 层子任务树。关键在于:每一个叶子节点(Leaf)都分配与整个大任务相同的完整时间预算(Time Budget)。如果树拆解得越深,Agent 在细节上投入的总思考与计算量就会呈指数级增长。

严格的文件所有权与隔离:多任务并行时,要求明确定义 OWNS: 路径,防止不同子任务对代码库产生竞态修改。

 

核心机制 2:可执行门禁与验收账本(Runnable Gates & Acceptance Ledger)

告别靠模型口头承诺“我做好了”的时代,unlazy 引入了基于代码判题官的约束:

先写门禁,后写代码:在动手之前,必须先在 GATES.md 中写下可验证的断言。

命令判定(Command Oracle):每个 Gate 都包含明确的 CHECK:(要执行的 Shell 命令)和 EXPECT:(预期输出正则)。

证据链(Evidence):只有命令行返回码为 0 且输出匹配预期,才能将任务标记为已完成。

 

unlazy还有几个设计很有借鉴意义:

Fresh-context Agent:

大型 AI Coding 项目还有一个很难解决的问题:Context Degradation,也就是:上下文越长,Agent 越容易开始犯糊涂。

因此 unlazy 在 tree 4+ 场景里引入了 Fresh-context Agent 作为解决方案:叶子不共享同一条长对话,而是各自开 Fresh Context。叶子不读兄弟叶子的聊天记录,只读合同和自己的验收账本。注意力隔离,而不是再加一层 prompt 咒语。

tree 4+ 时,把叶子从主会话里抽出来,用合同和账本重新对准,比继续往一条已经塞满的上下文里塞提示词,更贴近真实大型工程的协作方式。

 

Integration Gates:解决子模块正常,但一集成成完整系统,系统就无法正常运行的问题

Stop Hook:Claude Code 专有功能,禁止 AI 提前退出。Agent 想停时先问 unlazy,门禁或派发还没收干净就 不准结束。目前这种 Hard Enforcement 是 Claude Code 专属;Codex、Cursor 等仍然可以使用 SKILL.md、Gates 和相关 Node 脚本,只是没有同样的 Stop Hook 强制退出控制。

–reverify:强制AI 在代码更改后做传统软件工程的回归测试(Regression Test),解决 AI 最喜欢说的“刚才已经测过了”。

 

unlazy 本质上是在 AI Agent 上面加了一层传统软件工程中常用的CI(持续集成),可以看作AI Agent CI / QA Layer。

unlazy 的思路其实非常简单:不要通过 Prompt 要求 AI 更认真,而是让“不认真”在工程结构上无法隐藏。

Acceptance Gates 把“完成”变成可以验证的事实;

Depth Tree 把大型任务拆成真正可执行的工作单元;

Fresh Context 减少长上下文带来的注意力衰退;

Integration Gates 防止“每个模块都正常,但组合起来不能用”;

–reverify 防止旧测试结果被拿来证明新代码;

Claude Code Stop Hook 更进一步,让“验收没通过就宣布完成”变得机械上更加困难。

unlazy 值得所有Vibe Coding 爱好者在自己的项目中引入。

 

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址