配套视频: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)

大模型就像电影《记忆碎片》里的主角——每次会话都会重置上下文,回到初始状态。

每次与大语言模型交互,都经历相同流程:

  1. 系统提示词(应尽量精简,否则直接陷入愚钝区)

  2. 探索阶段(代理探索代码库)

  3. 实现阶段

  4. 测试与反馈阶段

关于"压缩(Compaction)"技术: 将整段对话压缩为更小的历史摘要。作者的态度是——不喜欢压缩,更偏好让模型每次从干净状态启动,因为这样行为更可预测、更一致。


三、完整工作流程

构思 → 对齐(烤问)→ PRD → 看板拆分 → 并行实现 → QA → 代码审查 → 合并
       ↑ 人工介入阶段(白班)         ↑ AI 自动执行阶段(夜班)

这个流程可以理解为白班与夜班的分工

  • 白班(人工):统筹规划,确保方向正确,建立共识

  • 夜班(AI):自动执行实现任务


Step 1:「烤问我」技能(Grill Me Skill)

目的:建立设计共识,避免无声的错位。

使用方式:

  1. 将客户简报(如 Slack 消息、需求描述)传入

  2. 调用 /grill-me 技能

  3. AI 扮演"挑剔的客户",逐一追问需求细节,并给出推荐答案

  4. 开发者逐一回答,与 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"(追踪弹)来自《程序员修炼之道》——高射炮手在弹尾加装荧光物质,使子弹飞行时发光,从而实时看清弹道、获得即时反馈。

方式

描述

问题

水平切片

第一阶段做所有数据库 → 第二阶段做所有 API → 第三阶段做前端

到第三阶段才能获得反馈,前期完全盲目

垂直切片

每个任务贯穿数据库 + API + 前端,形成完整可测试的功能片段

每个切片完成后即可获得反馈

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 对充分发挥智能体效能至关重要。

核心流程:红 → 绿 → 重构

  1. :先编写一个失败的测试(明确预期行为)

  2. 绿:编写最简实现,让测试通过

  3. 重构:在测试保护下优化代码

为什么 TDD 对 AI 尤其重要:

  • 防止 AI "偷懒"——先写完整实现再补一层形式化测试

  • 为代码库积累高质量测试

  • 提供即时反馈循环

💡 核心公式:反馈质量 = AI 编码质量的上限

若 AI 输出不佳,通常需要提升的不是提示词,而是反馈质量。没有反馈机制的代码库,AI 完全盲目编码,永远无法产出像样的结果。


Step 6:质量保证(QA)与代码审查

QA 必须人工介入,不可完全自动化。

QA 是开发者将个人审美和品味注入代码库的方式。全自动流程会导致产出"slop"(粗制滥造)——应用缺乏品位、体验糟糕,甚至根本无法运行。

关于 AI 自动审查:

  • 可以且应该在实现后加入 AI 自动审查环节

  • 关键:清空上下文后再审查,让审查者处于"智能区"

  • 若在同一上下文中实现后立即审查,审查者比被审对象更"笨"


四、代码库架构建议

来自 John Ousterhout《软件设计哲学》:

浅层模块 vs 深层模块

类型

特征

对 AI 的影响

浅层模块

大量小文件,导出内容少,依赖关系复杂

难以理解依赖图,测试边界模糊,AI 表现差

深层模块

接口精简,内部功能丰富

易于测试,AI 能清晰理解边界,表现优秀

实践建议

设计模块接口,委托 AI 实现内部逻辑。

  • 你只需了解模块在特定条件下的行为表现(灰箱思维)

  • 无需深究每一行内部代码

  • 这是在快速推进的同时保持对代码库感知力的最佳方式

⚠️ AI 天然倾向于生成浅层模块,需要明确引导。

工具: /optimize-codebase-architecture 技能,自动扫描代码库,找出可深化为深层模块的候选位置。


五、推式 vs 拉式指令

方式

描述

适用场景

推(Push)

在系统提示中直接注入规范,始终发送给 AI

审核阶段:强制执行编码规范

拉(Pull)

技能文件存于代码库,AI 按需调取

实现阶段:AI 遇到疑问时主动查阅


六、人工介入 vs 离席任务

阶段

类型

说明

构思、对齐、规划

🧑 人工介入

必须人工参与,无法自动化

原型、PRD 迭代

🧑 人工介入

需团队共同讨论决策

代码实现

🤖 离席任务

可交由 AI 自动完成

QA、代码审查

🧑 人工介入

必须人工把关,注入品味


七、核心书单推荐

💡 作者最重要的建议:去买一堆旧书!

AI 前时代的经典著作用自然语言描述了最佳软件实践,直接作为提示词使用效果极佳

书名

作者

关键概念

《重构》

Martin Fowler

量力而行,任务宜小

《程序员修炼之道》

Hunt & Thomas

追踪弹(垂直切片)

《软件设计哲学》

John Ousterhout

深层模块 vs 浅层模块

《设计的设计》

Frederick P. Brooks

设计共识


八、一句话总结

不要把 AI 当成"规格到代码的编译器",而要把它当成一个需要精心引导、持续对齐、严格质检的协作伙伴——软件工程的基本原理,正是这种引导的核心工具。


如果这篇文章对你有帮助,欢迎点赞、收藏、转发。也欢迎在评论区分享你的经验,我们一起交流学习!


加入社区 与 小遥一起成长 ↓


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


Work Less, Earn More, Enjoy Life.