
配套视频:https://www.bilibili.com/video/BV1esV86yEjz/
一、核心理论背景
Matt Pocock 是一名 AI 编程课程教师。他的核心观点是:AI 是新范式,但软件工程基本原理依然适用,甚至更加重要。 很多人在谈论 AI 是全新范式时,却忘记了那些经过时间检验的软件工程原则——这些原则不仅适用于人类协作,对 AI 协作同样极为有效。
二、大语言模型的两大核心限制
限制一:智能区 vs 愚钝区(Smart Zone / Dumb Zone)
这一概念来源于 Dex Horthy(Human Layer 公司创始人)。
大语言模型在处理上下文时,注意力机制本质上是每个 token 与其他所有 token 之间相互关联。每向上下文中添加一个 token,关系数量就呈平方级增长——就像联赛中每增加一支球队,比赛场次就呈平方级增长一样。
这意味着:上下文越长,模型越来越"笨"。
实用基准:约 10 万 token 以内为智能区(无论上下文窗口是 20 万还是 100 万)
应对策略:保持任务规模小,避免一次性塞入过多内容
类比:来自 Martin Fowler《重构》的建议——量力而行,任务宜小
限制二:记忆碎片问题(Memento Problem)
大模型就像电影《记忆碎片》里的主角——每次会话都会重置上下文,回到初始状态。
每次与大语言模型交互,都经历相同流程:
系统提示词(应尽量精简,否则直接陷入愚钝区)
探索阶段(代理探索代码库)
实现阶段
测试与反馈阶段
关于"压缩(Compaction)"技术: 将整段对话压缩为更小的历史摘要。作者的态度是——不喜欢压缩,更偏好让模型每次从干净状态启动,因为这样行为更可预测、更一致。
三、完整工作流程
构思 → 对齐(烤问)→ PRD → 看板拆分 → 并行实现 → QA → 代码审查 → 合并
↑ 人工介入阶段(白班) ↑ AI 自动执行阶段(夜班)这个流程可以理解为白班与夜班的分工:
白班(人工):统筹规划,确保方向正确,建立共识
夜班(AI):自动执行实现任务
Step 1:「烤问我」技能(Grill Me Skill)
目的:建立设计共识,避免无声的错位。
使用方式:
将客户简报(如 Slack 消息、需求描述)传入
调用
/grill-me技能AI 扮演"挑剔的客户",逐一追问需求细节,并给出推荐答案
开发者逐一回答,与 AI 达成一致
这一环节来自 Frederick P. Brooks《设计的设计》中的"设计理念"概念:当团队共同打造某样东西时,会产生一个所有参与者共享的设计共识。 作者意识到,他需要的不是让 AI 反复生成计划,而是与 AI 真正同频。
作者曾被 AI 问过 40 到 100 个问题,聊了一小时后,得到的就是一段高质量的对话记录——这正是最有价值的资产。
适用场景扩展: 与领域专家开会后,将会议记录喂给 AI,进入烤问环节,深入剖析那些未曾意识到的假设。
Step 2:撰写 PRD(产品需求文档)
烤问结束后,调用 /write-prd 技能,将对话共识转化为结构化文档。
PRD 模板包含:
问题描述(用户面临的问题)
解决方案
用户故事(定义"完成"标准)
实现决策清单
测试决策清单
非本 PRD 范围事项(明确边界,防止范围蔓延)
关键观点:作者通常不逐字细读 PRD。
原因:已通过烤问环节与 AI 建立了共识,LLM 本身就擅长总结。读 PRD 只是在检验 LLM 的总结能力,而非检验对齐质量。真正的对齐已在烤问环节完成。
⚠️ 文档腐烂警告:PRD 存入代码库后,随着代码迭代会逐渐过时,可能严重误导智能体。作者倾向于实现后直接关闭/删除 PRD,而非长期保留。
Step 3:看板式任务拆分
将 PRD 拆分为可独立抓取的任务卡片,明确阻塞关系。
核心原则:垂直切片(Tracer Bullet)
"Tracer Bullet"(追踪弹)来自《程序员修炼之道》——高射炮手在弹尾加装荧光物质,使子弹飞行时发光,从而实时看清弹道、获得即时反馈。
AI 天然倾向于水平切片(逐层编码),需要明确指导它采用垂直切片。
看板结构
任务间存在明确的阻塞关系,形成有向无环图(DAG),支持并行执行:
阶段一:[任务A](无阻塞,可立即开始)
↓
阶段二:[任务B] [任务C](同时进行)
↓
阶段三:[任务D](等待 B、C 完成)这意味着可以同时启动多个独立代理并行处理,而非线性串行。
Step 4:离线代理实现(AFK Agent)
人类退出循环,AI 自动处理看板任务。
基础版:Ralph Loop(单次循环)
# once.sh 核心逻辑
1. 获取所有本地 issue Markdown 文件
2. 获取最近五次提交记录
3. 运行 Claude Code(编辑模式)
4. 传入提示:选取下一个未完成任务,执行,完成后输出摘要进阶版:Sandcastle(作者自研 TypeScript 库)
作者对市面上现有的离线代理方案不满意,自行开发了 Sandcastle:
Docker 沙箱隔离:每个任务在独立容器中运行
Git 工作树:每个任务对应一个独立分支,随时可合并
并行处理流程:
规划器(Planner)
↓ 分析看板,选出可并行的任务
↓
[实现器A] [实现器B] [实现器C] ← 使用 Claude Sonnet(成本低)
↓
[审核器A] [审核器B] [审核器C] ← 使用 Claude Opus(智能强)
↓
合并代理(Merge Agent)← 处理冲突,解决测试问题为何实现用 Sonnet,审核用 Opus? 作者认为审核环节需要更强的智能,而实现环节对成本更敏感。
Step 5:TDD 测试驱动开发
TDD 对充分发挥智能体效能至关重要。
核心流程:红 → 绿 → 重构
红:先编写一个失败的测试(明确预期行为)
绿:编写最简实现,让测试通过
重构:在测试保护下优化代码
为什么 TDD 对 AI 尤其重要:
防止 AI "偷懒"——先写完整实现再补一层形式化测试
为代码库积累高质量测试
提供即时反馈循环
💡 核心公式:反馈质量 = AI 编码质量的上限
若 AI 输出不佳,通常需要提升的不是提示词,而是反馈质量。没有反馈机制的代码库,AI 完全盲目编码,永远无法产出像样的结果。
Step 6:质量保证(QA)与代码审查
QA 必须人工介入,不可完全自动化。
QA 是开发者将个人审美和品味注入代码库的方式。全自动流程会导致产出"slop"(粗制滥造)——应用缺乏品位、体验糟糕,甚至根本无法运行。
关于 AI 自动审查:
可以且应该在实现后加入 AI 自动审查环节
关键:清空上下文后再审查,让审查者处于"智能区"
若在同一上下文中实现后立即审查,审查者比被审对象更"笨"
四、代码库架构建议
来自 John Ousterhout《软件设计哲学》:
浅层模块 vs 深层模块
实践建议
设计模块接口,委托 AI 实现内部逻辑。
你只需了解模块在特定条件下的行为表现(灰箱思维)
无需深究每一行内部代码
这是在快速推进的同时保持对代码库感知力的最佳方式
⚠️ AI 天然倾向于生成浅层模块,需要明确引导。
工具: /optimize-codebase-architecture 技能,自动扫描代码库,找出可深化为深层模块的候选位置。
五、推式 vs 拉式指令
六、人工介入 vs 离席任务
七、核心书单推荐
💡 作者最重要的建议:去买一堆旧书!
AI 前时代的经典著作用自然语言描述了最佳软件实践,直接作为提示词使用效果极佳。
八、一句话总结
不要把 AI 当成"规格到代码的编译器",而要把它当成一个需要精心引导、持续对齐、严格质检的协作伙伴——软件工程的基本原理,正是这种引导的核心工具。
如果这篇文章对你有帮助,欢迎点赞、收藏、转发。也欢迎在评论区分享你的经验,我们一起交流学习!
加入社区 与 小遥一起成长 ↓

#独立开发者 #AI编程 #个人开发者 #一人公司 #程序员 #软件开发者 #创业者 #数字游民 #AI创业 #软件工程