乐于分享
好东西不私藏

unlazy 按官方文档装,先改并行再开工

unlazy 按官方文档装,先改并行再开工

Agent 报完成,你还是不放心。 常见两种:文件只打开一部分,却说全看过;五件事砍掉难的那件,总结里当没这回事。

unlazy 不听口头完工。 开工前把验收写进文件。每条闸门带一条能跑的命令。 命令吐出期望原文,才算过。

仓库:Leonxlnx/unlazy。MIT。 同一人还做了 taste-skill。 Claude Code、Codex、Cursor 都能读 SKILL.md。 硬卡住收工的 Stop hook,只在 Claude Code。


安装和调用

官方安装:

npx skills add Leonxlnx/unlazy

加 -g 装到用户级。--all 给检测到的 agent 都装。 Claude Code 也可以 clone 到 ~/.claude/skills/unlazy。 Codex 对应 ~/.codex/skills/unlazy。 闸门脚本要 Node 16+。

调用很直:

/unlazy tree 5 refactor the payment module

tree N 是拆几层。 官方口径:2–3 做功能或排错;4–5 做子系统;6–7 才按叶子铺整项目。 功能级用 2 或 3 就够。从零做整应用才考虑 5。 选高了也没关系,叶子碎到不够大约 10 分钟真活,会降回默认 3。

3 及以下:solo,单会话干完。 4 及以上:编排。先写 PLAN.md,再给每片叶子一份 gates。


闸门长什么样

每一条闸门四行。

结果:这件事必须为真,任务才算完。 命令:证明这条结果的那条命令。 期望原文:命令输出里必须出现的字。 证据:一开始写 pending。

skill 自带 checker。 它按文件把命令跑一遍。输出对得上,勾上,并把决定性的那截输出写进证据。 勾上了、证据还是 pending:这是它自己打的勾。 算未完成。比空框更差。空框至少没撒谎。

编排模式下,子 agent 只拿到计划摘要和自己那份 gates。 不知道整份工作的其余部分。 它回来说做完了,主会话不信,自己再跑一遍检查。 过了才在 PLAN 里记一行,再发下一片。 做不到就写 ABANDON: 闸门名 原因。藏起来不算过。


默认循环是串行

官方 driver 循环是:计划 → 发一片叶子 → 主会话复验 → 再发下一片。 文档另有一句:文件归属互不覆盖时,可以并行。 按原 skill 跑,经常还是一个接一个。

有组实测:从零做应用,原装跑了 3 到 4 小时,进度只剩登录页。 Claude Code 和 Codex 本来就能同时跑多个子 agent。 改 skill 指令,让它真的一起发。PLAN 里写清哪项任务动哪些文件。 改完后 10 个 agent 同时干活,将近 2 小时出了能跑的第一版。

并行省的是墙钟。token 不一定更少。 复验不能省。叶子自评不算数。


先跑通闸门,再加层

可选硬模式(仅 Claude Code):

node <skill路径>/scripts/install-hooks.mjs

闸门没过,它不让这轮结束。 连续六次卡住还没进展,会放行并警告,避免死锁。.unlazy-hook-state.json 加进 gitignore。

今天按这个顺序。 先 npx skills add Leonxlnx/unlazy。 用 tree 2 跑一个熟功能,打开 gates 文件,看 checker 能不能独立跑通。 命令都跑不出来,先别上 tree 5。 确认文件归属写进 PLAN 之后,再改 skill 让互不覆盖的叶子一起发。 机械活可以分给便宜模型。复验留在强模型。