免责声明:本站与 Uncle Bob 官方无关。
YuliusWiki
发布日期:•最后更新:•yulius
🌐 English Version

ub-mode 是什么?Uncle Bob 给 AI 编码智能体的单文件技能,7 天 5,787 星

快速答案

Uncle Bob 的 AI 编码技能:先跑通再门禁;无许可证,推 main 须人工把关。

2026 年 10 月 25 日,Robert C. Martin(Uncle Bob)在 GitHub 上贴了一个仓库,附言只有一句:“I composed this skill and have had pretty good luck with it. My grokbots use it when writing code.”(我写了这个技能,用下来效果不错,我的 grok 机器人写代码时就用它。)仓库名叫 ub-mode,里面只有一个 4KB 的 SKILL.md。7 天后,它在本文成稿的 2026 年 11 月 1 日实测为 5,787 星——一个 741 词的规则文件,成了 AI 编码技能话题里最受关注的新东西。先说清楚三点:第一,它不是模型、不是插件,只是一份让智能体照做的规则清单;第二,规则能不能落地,靠的是三个另装的确定性工具,不是靠智能体“自觉遵守”;第三,仓库没有许可证,且有两条规则涉及 agent 越权,用之前必须先改掉。\n\n免责声明:本站与 Uncle Bob 无关;本文为产品技术报道与分析,不构成采购、部署或法律建议。星数以 GitHub API 实测为准;许可证与 issue 信息以 GitHub 仓库页面为准,可能变化。

一、是什么:一页纸的规则,7 天 5,787 星

ub-mode 的本体简单到出乎意料:一个 SKILL.md,152 行、25 节、61 条、约 741 词,仓库总共 4KB。作者是写《代码整洁之道》的 Robert C. Martin,发布附言说自己的 grok 机器人写代码时就用它——三天内那条帖子获得约 27 万次浏览、约 3,700 次收藏、约 2,350 个赞,仓库星数一路从建仓日的几百冲到本文成稿时的 5,787 星(GitHub API 2026-11-01 实测,317 个 fork)。\n\n它解决的问题也很具体:AI 编码智能体很会“看起来合规”——嘴上答应写测试、保持简洁,实际交出来的代码可能既没测试又绕来绕去。ub-mode 不给智能体讲大道理,而是给它一串短到无法含糊的指令,比如“先复现问题”“小步有序提交”“删之前先减”。规则按三阶段排:先跑通(First Make it Work)、再做对(Then Make it Right)、练习惯(Practice)。安装同样简单:把 SKILL.md 拷进智能体的技能目录(例如 ~/.claude/skills/ub-mode/SKILL.md),用 /ub-mode 调用即可,Claude Code、Cursor、Grok 均可加载。\n\n出身要交代一句:作者自述它松散源自 poteto(Lauren Tan)的 pstack 规则集——一个 149 行的路由文件,指向 58 个技能、约 69,000 词。ub-mode 是把那套东西删减到 741 词,再配上三个可度量的工具。删减是它的卖点(短到能塞进上下文),也是它的争议点(见第四节)。

二、三阶段:先跑通、再做对、练习惯

第一阶段“先跑通”管的是做事顺序:懒惰协议(先想清楚再动手)、先复现问题再修、测试驱动开发、从第一性原理重新设计、攻击前提(先质疑需求本身对不对)、做减法再做加法、结果导向执行。架构纪律也放在这一阶段:领域建模、边界纪律、类型系统纪律、幂等操作、序列化前先分离共享状态——这些不是“写完再检查”的清单,而是动手前就要遵守的约束。\n\n第二阶段“再做对”管的是修的方向:修根因而不是症状、测行为而不是测实现、重构时保持测试通过。关键在“再”字:先让东西跑起来,再谈干净——顺序反过来,智能体容易陷入“重构一个还没跑通的东西”的死循环。\n\n第三阶段“练习惯”管的是长期协作:记日志、护上下文窗口、小步有序提交。其中“记日志”一条后来成了争议点:pstack 原文是“只在长期、自主或多阶段任务里记决策点与检查点,不记每个动作”,ub-mode 则写成“记下你采取的每个动作及其原因”——对每一次改动都这样要求,日志会迅速膨胀,反而挤占上下文窗口。照搬时建议按 pstack 的窄口径执行:只记决策点,不记流水账。

三、三个工具:规则从“建议”变成“门禁”

ub-mode 真正区别于普通提示词的地方,是第二阶段由三个确定性工具背书——智能体说“代码很干净”不算数,工具跑出来的数字才算数。Crapper 算 CRAP 分:公式是 CC² × (1 − coverage)³ + CC,其中 CC 是圈复杂度,coverage 是测试覆盖率;复杂又缺测试的函数分数高,简单或测得好的分数低,门禁是每函数低于 10,还能设阈值让超标时直接退出非零,正好接 CI 门禁。Dryer 查重复率,门禁低于 0.8。Mutator 做变异测试:把 < 改成 <=、&& 改成 ||、true 改成 false,看测试能不能发现这些“变异体”——发现不了,说明测试只是摆设。\n\n三点落地提醒。第一,三个工具不在技能文件里,要另装,排期里要留出安装与接入 CI 的时间。第二,语言覆盖是 Go、Java、TypeScript、Rust、Python、Clojure,超出这个范围的项目要先确认工具链。第三,变异测试跑全量较慢,日常可用 --changed 只查本次改动的部分,把全量留给合并前。\n\n一句话总结这个设计:规则管“智能体应该怎么做”,工具管“怎么证明它真做到了”。没有第二层,第一层在长任务里几乎必然滑坡——这也是这份 741 词文件比同类提示词更值得看的原因。

四、两处保留:无许可证,以及两条越权规则

第一处保留是许可证:没有。GitHub API 在本文成稿当天实测的 license 字段为 null,多家第三方核查结论一致——仓库公开可见,但默认版权适用,未经作者许可不能自由复用、改写或商用。个人学习、内部试用是一回事,把它打包进自家产品或课程是另一回事,商用前须先获作者许可。这条不写进选型清单,后面法务会找上门。\n\n第二处保留是 GitHub issue #2(用户 cryply,2026-10-27 提出)指出的两条越权规则,原文照录如下。第一条:“Commit and Push: Push to the main line at the end.”——智能体在没人看 diff 的情况下直接推 main,而推 main恰恰是大多数团队最想留给人的一步。建议改法:“Commit often. Stop before pushing; the human pushes, or push to a branch and open a PR.”(常提交,停在推送前;由人推送,或推分支开 PR。)第二条:“Worktree Cleanup: Find what is safe to remove … then reclaim the disk.”——由智能体自己判断什么文件“可以安全删除”。建议改法:删除先列清单,等人确认再动手。issue 还附了一个小点:“Attack the Premise”被压缩到失去含义(例如“count which actors hold the imbalance”没有示例),照抄前最好补一句自己的示例。\n\n这两条不是“作者错了”的定罪,而是“默认配置不适合直接上生产”的提醒:ub-mode 是作者给自己的机器人写的个人规则,里面的自主权限默认开得很大。团队采用时,把推 main 与删文件两处改成人工确认,成本只有两行字,不改的风险是丢代码或污染主分支。

五、适合谁、怎么用、来源清单

结论分三档。第一档,直接受益:个人开发者或小团队,想给 Claude Code、Cursor 这类智能体立一套可度量的规矩——装上技能、接好三工具、把推 main 与删文件改成人工确认,就能先跑起来;7 天 5,787 星说明社区正在用同一套东西,遇到问题容易找到讨论。第二档,可用但要先对齐:多人协作团队——规则本身只有 741 词,团队要先统一“门禁超标怎么办”(是挡合并还是只告警)、日志记多细这两点,否则不同成员的智能体行为会各不相同。第三档,暂缓:需要合规审查的组织(许可证是空的,先走法务)、语言不在三工具覆盖范围内的项目、以及把技能当“装上就自动变好”的团队——规则不执行等于没有规则,门禁不接 CI 等于没有门禁。\n\n来源清单(核实日期 2026-11-01):\n1)https://api.github.com/repos/unclebob/ub-mode —— GitHub API 实测:5,787 星、317 fork、license 为 null、4KB、建仓 2026-10-25、8 个 open issue;\n2)https://github.com/unclebob/ub-mode —— 仓库主页:单文件 SKILL.md、作者附言、三阶段结构;\n3)https://github.com/unclebob/ub-mode/issues/2 —— issue #2:推 main 与自行删文件两条越权规则及建议改法、“Attack the Premise”过度压缩;\n4)https://www.indiekings.com/2026/10/ub-mode-uncle-bobs-skill-for.html —— 10 月 29 日第三方核查:3,668 星、189 fork、1 位贡献者、无许可证、三阶段与三工具梳理;\n5)https://medium.com/@cadienvan/uncle-bob-wrote-a-skill-and-forgot-who-reads-it-52bde6aab4e6 —— 152 行、25 节、61 条、741 词、pstack 出身对比、帖子 27 万浏览;\n6)https://gittrend.io/repo/unclebob/ub-mode —— 增长里程碑:10 月 27 日破 1,000、10 月 28 日破 2,500、10 月 30 日破 5,000;\n7)https://repoalerts.com/repo/unclebob/ub-mode —— 10 月 31 日第三方统计 5,714 星。\n\n免责声明:本站与 Uncle Bob 无关;本文为产品技术报道与分析,不构成采购、部署或法律建议。星数以 GitHub API 实测为准;许可证与 issue 信息以 GitHub 仓库页面为准,可能变化。

三个确定性工具:各测什么、门禁是多少

工具测什么门禁注意
CrapperCRAP 分:CC² × (1 − coverage)³ + CC每函数 <10复杂且缺测试的函数分数高;可作 CI 门禁
Dryer代码重复率<0.8只查重复,不判断重复是否有意为之
Mutator变异测试:翻转运算符看测试能否发现无存活变异体翻转 <、&&、true 等;跑全量较慢,可先用 --changed

ub-mode 星数增长(颗;GitHub API 实测 + 第三方里程碑)

10 月 27 日破 1,000
10 月 28 日破 2,500
10 月 30 日破 5,000
★ 11 月 1 日5,787

数据来源:来源:2026-11-01 GitHub API 实测 5,787 星;里程碑与 10 月 31 日 5,714 星为第三方统计,仅作趋势参考

常见问题解答 (FAQ)

ub-mode 怎么装到我的编码智能体里?

把仓库里的 SKILL.md 拷进智能体的技能目录,例如 ~/.claude/skills/ub-mode/SKILL.md,然后用 /ub-mode 调用。Claude Code、Cursor、Grok 均可加载。三个工具(Crapper、Dryer、Mutator)要另装,不在技能文件里。

没有许可证,ub-mode 能商用吗?

不能直接商用。仓库未声明许可证,GitHub API 实测 license 字段为空,默认版权适用——公开可见不等于可自由复用。个人学习与内部试用是一回事,打包进产品或课程前须先获得作者许可。

issue #2 说的两条规则,实际使用时怎么改?

把“推 main”改成“停在提交前、由人推,或推分支开 PR”;把“自行判断删文件”改成“先列删除清单,等人确认再删”。只改两行字,就能去掉丢代码与污染主分支的风险。

三个工具是必须的吗?

是 ub-mode 设计的核心:规则管智能体应该怎么做,工具管怎么证明它真做到了。没有 Crapper、Dryer、Mutator 的门禁,规则在长任务里很容易滑坡。语言覆盖 Go、Java、TypeScript、Rust、Python、Clojure,日常可用 --changed 只查本次改动。

© 2026 YuliusWiki. All rights reserved.