如何让你的 AI 助手永远留在“智能区”?
AI 的出现并不是为了帮我们跳过软件工程,恰恰相反,它在逼着我们将软件工程做得更扎实。只有更严谨的需求对齐、TDD 和模块化设计,才能真正驾驭 AI 的力量。

如何让你的 AI 助手永远留在“智能区”?
在 AI 编程浪潮中,很多开发者发现 AI 似乎“越聊越蠢”。这并非错觉。近日,知名讲师马特·波科克(Matt Pocock)在一场 AI 编程工作坊中直言不讳地指出:别把 AI 当作许愿机。
关于讲师: 马特·波科克(Matt Pocock)是一位知名的软件工程专家和讲师,在 TypeScript 和现代 Web 开发领域具有深厚的影响力(注:此背景信息来自外部,非源文件直接提供)。在本次分享中,他重点探讨了如何将传统的软件工程严谨性引入 AI 协作流程中。
一、 警惕“智能区”与“消失的记忆”
马特指出,AI 存在智能区和愚蠢区。
- 10 万 Token 的红线: 随着对话长度增加,模型需要维护的注意力关系会呈平方级爆炸。经验表明,当上下文超过约 10 万 Token 时,AI 就会开始做出愚蠢的决策
- 记忆碎片化: AI 就像电影《记忆碎片》的主角,会不断遗忘之前的设定。
对策: 任务必须被切分得足够小,确保 AI 始终在“智能区”内工作。
二、 拒绝“氛围感编程”(Vibe Coding)
马特严厉批评了“规格到代码”(Spec-to-Code)的想法,并将其归类为 Vibe Coding。
什么是 Vibe Coding? 这是一种完全依赖“感觉”而非工程控制的开发方式。开发者写一份 PRD 丢给 AI,生成代码后如果发现错误,不是去审视代码,而是不断回去修改规格或 PRD,试图通过“调优描述”来碰运气得到正确答案。这种做法不看代码本身、只靠反复迭代规格,最终会导致对代码结构失去持续的掌控,令项目走向失控。
三、 “考打我”模式:人类主导的规划阶段
如何将含糊的需求变成 AI 可执行的任务?马特推荐了 "Grill Me"(考打我) 技巧:
- 清空上下文,从零开始: 将原始需求丢给 AI。
- 让 AI 提问: 要求 AI 一个接一个地向你提问,直到逻辑对齐为止。
- Human in the Loop: 规划阶段必须由人类拍板,因为这是定义边界、进行风险取舍的阶段。
最终得到的不是一份漂亮的计划,而是一份共同的“设计概念资产”。
四、 垂直切片与“夜班”模式
在执行阶段,任务的拆分方式至关重要:
- 反对水平写代码: AI 倾向于先写数据库,再写 API,最后写前端,这会导致直到最后一层才能拿到反馈。
- 推崇垂直切片(Vertical Slices): 每一刀都让它从 Schema 到服务再到前端展示全部跑通。虽然功能薄,但能立刻集成、验证和 QA。
- 并行“夜班”: 当任务被拆成彼此依赖清晰的看板后,人类负责“白班”(对齐、拆分、架构),AI Agent 负责“夜班”(按工单推进)。
五、 TDD:给 AI 套上“紧箍咒”
马特强调,通过 TDD 把反馈回路“盯死”对 AI 极其重要。
什么是 TDD? TDD 即 测试驱动开发(Test-Driven Development)。它遵循“红-绿-重构”的循环:先写一个会失败的测试(红),再编写实现代码让测试通过(绿),最后优化代码。对 AI 而言,这强迫它说清可验证的行为,且很难在实现中“耍赖”,因为测试先于代码出现。
六、 架构升级:为了 AI 打造“深模块”
为了让代码库更适合 AI 协作,马特引用了《软件设计哲学》中的概念:深模块(Deep Modules)。
- 浅模块(应避免): 很多小文件到处互相引用,AI 很难追踪依赖,也难以划清测试边界。
- 深模块(推荐):
- 接口小: 外部调用的入口尽可能简洁。
- 内部实现复杂: 模块内部承担了大量的逻辑和复杂性。
- 封装严密: 将复杂性深深地隐藏在模块内部。
在这种模式下,开发者只需牢牢记住模块的接口与形状,而将复杂的内部实现细节完全交给 AI。
结语:AI 是软件工程的试金石
AI 的出现并不是为了帮我们跳过软件工程,恰恰相反,它在逼着我们将软件工程做得更扎实。只有更严谨的需求对齐、TDD 和模块化设计,才能真正驾驭 AI 的力量。