Skip to content
View original post on X: meng shaoX· Pick72/100AI score72/100

University of Michigan course turns agentic coding method into five skills

AISummary

The University of Michigan course Applied Agentic Software Engineering packages its method as five skills: /peanuts, /elephant, /goldfish, /egm-implement and /mean-review.

The post explains the chain, which moves legacy code documentation, design writing, fresh-eyes review, gated implementation and adversarial code review in sequence. The skills are published at the linked GitHub materials page.

AIWhy it matters

The post breaks the University of Michigan course's five-skill workflow into design, review, and implementation steps, showing how each skill keeps AI-written code tied to an approved design document.

Post on XView on X
meng shaoVerified on X
@shao__meng

密歇根大学最新 AI 编程课「Applied Agentic Software Engineering」把方法论做成了五个 Skills

/peanuts (仅遗留代码) → /elephant → /goldfish → /egm-implement → /mean-review

Skills 地址:https://github.com/eecs498-aase/materials/tree/main/egm/skills

1. /peanuts — 自底向上为遗留代码建立 README 层级
定位:遗留代码库(无设计文档)的引导程序。百万行代码对 AI 是“整个丛林”,会迷失、幻觉。解法是每个目录一个 README:叶子目录是“花生”,分支目录是“干草”,自底向上递归压缩。

核心机制:
· 严格自底向上:父目录的 README 必须等所有直接子目录 approved 之后才能生成,因为坏叶子会沿树向上复合放大。
· 人类评审门是硬规则:AI 生成 README 后只能标 needs-human-review,永远不能自己标 approved。技能里明说:"AI 不是裁判。"
· 诚实的错误率预期:明确警告“约 50% 的叶子描述会是错的”,因为叶子层只有代码可看,每个叶子预算 5–10 分钟人工修正。分支层准确率更高,因为子目录摘要锚定了模型。
· PEANUTS.md 台账:五个状态(pending / needs-human-review / approved / rolled-up / blocked)驱动断点续传,配套 Python 脚本做确定性排序和门禁检查。
· 退役条款:每个 README 末尾固定一行“设计文档覆盖后本文件可退役”,它自我定位为脚手架,不是永久文档。

2. /elephant — 先长设计,再长代码
定位:EGM 的灵魂。产出不是代码,是一份四节设计文档(Problem / Technical Plan / Alternatives / Detailed Implementation),它成为唯一事实源。

核心机制:
· 绝对禁码:整个会话不写一行代码(连“举例说明”都不行),文档内少量解释机制的伪代码除外。
· "No Code" 面试:开场白固定逐字引用一段第二人称指令(“我不要你写代码……你要挑战我的假设”),然后以设计访谈的形式进行 20–30 分钟追问,每次只问一两个问题、挑战假设(“为什么必须实时?”)、推向边界(失败模式?回滚?破坏了什么?)。
· AI 先提草案:硬规则是不让用户的第一稿锚定讨论,AI 必须先给出独立的散文 + 框图提案,用户的盲点恰恰是这个技能要暴露的。
· 反谄媚防线:一旦察觉自己在不停附和,必须逐字念出复位语;“你没有在帮忙。你最大的价值是挑战我的思考。你同意我的时候,你没有在帮忙。” 然后以批评者身份重新进场。
· 逐节构建,绝不一次性成文:四节按序写,每节写完给用户看、改到满意才写下一节。一次性产出的大文档“浅且内部不一致”。
· 节奏预期很反直觉:技术辩论阶段“2–3 天的往返是正常的,不要赶”。

3. /goldfish — 用“新鲜眼”验证设计文档
定位:Elephant 满脑子上下文,但那些上下文活在聊天里,不在纸上。Goldfish 是一个零共享上下文的新评审者,只知道纸面上写了什么。

判定标准:一个 Goldfish 读文档后能 (1) 把系统讲回来、(2) 找出缺口、(3) 确认无需再问就能实现;文档才算承载了设计;否则它只是“你将失去的上下文上的一层薄皮”。

核心机制:
· 三个评审者并行单条消息 spawn:A 理解测试(讲回系统)、B 批评者(找遗漏和错误假设)、C 实现就绪(READY/NOT-READY + 所有会被迫提问的问题清单)。并行不仅快,还杜绝了“把 A 的结论喂给 B”的串通机会。
· 新鲜性的技术实现很清醒:价值来自独立上下文,不来自人设。编排者自己读 ELEPHANT.md 定向,但绝不把任何设计对话内容传给评审者;甚至要防文档里的链接泄漏到台账目录。
· 30% 启发式:批评者的建议约三成真正有价值,所以编排者必须综合排序(真缺口在前、措辞瑕疵沉底)、区分“文档错了”和“文档对但评审者不认同设计选择”,而不是照单全收。
· 循环直到停止条件:批评降到 nit 级 且 human_review_gate 被人类标为 passed(或明确 skipped-solo)。这个门永远不被自动改写,必须由人或队友亲手写进 GOLDFISH.md 头部。
· 报告永不覆盖:每轮存独立文件(-r2 后缀),GOLDFISH.md 逐轮追加。

4. /egm-implement — 把批准的文档钉进代码
定位:EGM 里最有工程克制力的环节。“文档批准”到“代码合并”之间,正是 AI 项目悄悄失真之地;新会话把文档当“参考”,从聊天历史重新推导上下文然后漂移。

核心机制:
· 入口门禁:先跑 check_gate.py,退出码 0(GO)/ 1(BLOCKED)/ 3(CHECK-BY-HAND,台账值含糊时交给人类裁决)。readiness: ready + 人工门通过,二者缺一不可,没有静默绕过。
· 文件级围栏:设计文档没枚举的文件一律不改。想改?停下来,先提出文档更新。“顺手也把 X 重命名一下”就是漂移,必须暴露。
· 漂移暴露而非吸收:这是整套技能最精妙的一条规则。现实与文档不符时(文档假设错误、需要新文件、写法编译不过),不是默默改掉,而是在 IMPLEMENT.md 记 drift 条目(日期/类型/建议处置/open 状态),按影响分级:小澄清就地改文档、实质性改动重写该节、大改回炉 /elephant 或 /goldfish。未解决的漂移不许开工。 否则设计文档会“一个未记录的 diff 接一个”地失去事实源地位。
· IMPLEMENT.md 是崩溃恢复协议:每个文件、每个决定、每条漂移实时记录(不是事后补)。会话崩了零成本,新会话读台账从断点继续。六个月后有人问“这代码为什么长这样”,答案是一份三件套:设计文档 + 验证记录 + 实现轨迹,这就是 EGM 复利的组织记忆。
· 小 diff 纪律:一个逻辑改动一个文件,因为一切产出都要流进 mean-review。

5. /mean-review — 对代码的对抗性评审
定位:与 goldfish 镜像,goldfish 审文档,mean-review 审代码。前提判断很尖锐:AI 产码速度已超过人类细审能力,一个客气地说“看起来不错!”的 AI 评审者,恰恰是 slop 大规模堆积的方式。

核心机制:
· 承重框架提示词:开场必须逐字念用户的那句“我强烈直觉这代码质量很差,请把它撕碎,告诉我它烂在哪”。这个框架就是“允许尖锐”的授权,没有它模型会漂回客气腔。
· 四项强制扫描(脚本化):10 行无注释规则、超 50 行函数、弱命名(data/tmp/result/helper/utils 等黑名单)、静默吞异常。确定性检查交给 Python 脚本,结果带 [enforced] 标签,与判断性发现区分。人类评审最容易扫视漏掉的恰恰是这四类。
· 聪明的豁免:声明式代码(常量表、schema、字段列表、路由表)豁免 10 行注释规则,“事物的形状本身就是解释”。误标声明式代码算评审者错。
· 读全文件而非只读 diff hunk,一半的正确性 bug 藏在改动周边的代码里。
· 产出是有优先级的 punch list(correctness > maintainability > style),每项带 [correctness]/[readability]/[nit] 标签、file:line、一句问题 + 一句修法,禁止“也许可以考虑”式的软化语。全部追加进 MEAN-REVIEW.md,每轮记录处置(修了哪些、拒了哪些及理由),循环到只剩 nit。
· 语气校准:尖锐但不辱骂,"This is broken, here's why" 对,"What were you thinking?" 错。
· 它只评审,永不改代码:用户修,然后重跑下一轮。

Original, in Chinese
meng shao@shao__meng
https://x.com/i/article/2108375208570818560
View quoted post on X

Source: meng shao · x.comPublished · added here