拒绝Vibe Coding:Matt Pocock的AI编程工程化实践

AI时代,软件工程基础是驾驭AI编程的核心竞争力
前Vercel工程师Matt Pocock开源了GitHub上获8万+ Star的Skills仓库,针对AI编程中需求对齐失败、术语混乱、架构退化三大痛点,将测试驱动开发、领域驱动设计等经典软件工程方法融入AI工作流。其核心观点是:AI会以十倍速度制造垃圾代码,因此限制AI自由度、用工程化思维驾驭AI,才是正确的人机协同范式。
当所有人都在吹捧「Vibe Coding」——凭直觉让AI随意生成代码时,一位前Vercel工程师、TypeScript社区最有影响力的教育者Matt Pocock,用一个GitHub上狂揽8万+ Star的开源仓库告诉我们:在AI时代,软件工程的基础不仅没有过时,反而比以往任何时候都更重要。
「Vibe Coding」这一概念由AI领域先驱Andrej Karpathy在2025年初提出,指的是开发者完全依赖直觉和自然语言描述,让AI自动生成代码,自己甚至不去阅读生成的结果。这种方式在快速原型开发中确实展现了惊人的效率,但也引发了软件工程界的激烈争论:当开发者放弃对代码的理解和控制时,软件质量、安全性和可维护性将何去何从?
AI编程的三大致命痛点
如果你正在使用Claude Code、Cursor或其他AI编程工具,大概率遇到过以下三个问题:
第一,需求对齐失败。 你以为AI懂了,结果它写出来的东西和你想要的南辕北辙。你说「做一个登录页面」,它立刻开始写HTML和CSS,却完全没考虑忘记密码、第三方登录、错误提示等关键场景。
第二,AI的冗长废话。 当AI被空降到一个新项目中,它不了解团队的术语和业务背景,只能用大量通用词汇来猜测和填充,生成的代码命名混乱、风格不一致。
第三,架构退化加速。 这是最致命的——AI写代码太快了,快到我们根本来不及思考架构设计。传统开发中,人类编码速度本身就是一种天然的「减速带」,开发者在敲键盘的过程中会不自觉地思考设计问题;而AI每秒可以生成数百行代码,完全绕过了这个思考环节。原本清晰的代码结构,在AI的高速输出下迅速退化成面目全非的「屎山」。这一现象在软件工程中被称为「软件腐化」或「技术债务累积」——借用热力学第二定律的概念,代码库的混乱度(熵)总是趋向增加,而AI的介入使这一过程急剧加速。
面对这些问题,难道AI编程真的只是一场美丽的泡沫吗?
Matt Pocock是谁?从声乐教练到TypeScript大神
要理解这套方法论的精髓,我们得先认识它的作者。Matt Pocock是Total TypeScript课程的创作者,TypeScript社区最有影响力的教育者之一。他曾在Vercel担任开发者倡导者,也曾在Stately(XState背后的公司)工作,是XState的核心贡献者。
Vercel是Next.js框架背后的公司,也是现代前端开发生态中最具影响力的企业之一。TypeScript作为JavaScript的超集,通过引入静态类型系统,极大提升了大型项目的代码可维护性和开发者体验。XState则是一个基于有限状态机和状态图理论的JavaScript/TypeScript状态管理库,它将计算机科学中的形式化方法引入前端开发,帮助开发者用数学化的方式管理复杂的应用状态。Matt在这两个生态中的深耕,使他对工程化实践有着深刻的理解。
但最让人意想不到的是,在成为顶尖工程师之前,他竟然是一名声乐教练。这种跨界背景让他对沟通和表达有着极其敏锐的直觉——而这恰恰是解决「人机协作」问题的关键能力。

最近,Matt将自己日常使用的一组AI Agent技能整理并开源,这个名为Skills的仓库副标题就是「Skills for Real Engineers」——强调真正的工程实践,而不是随性的Vibe Coding。他在Readme中直言不讳地批评了GSD、BMAD、SpecKit等试图接管整个开发流程的工具,认为它们剥夺了开发者的控制权,使调试变得异常困难。
核心技能拆解:用工程化思维驾驭AI
GrillMe:让AI反过来「盘问」你
Matt认为软件开发中最常见的失败模式就是对齐失败——你以为AI懂了,其实它根本没懂。为此他设计了「GrillMe」技能。Grill在英文里有盘问、考问的意思。
启用这个技能后,AI不再是那个只会说「好的,我马上写代码」的顺从助手,而是变成一个严厉的面试官。它会不断向你提出尖锐的问题,逼着你把模糊的想法具象化,直到决策树的每一个分支都被彻底理清。
比如你让AI写一个登录页面,它不会马上动手,而是会问:用户忘记密码怎么办?需要支持第三方登录吗?登录失败的错误提示应该怎么设计?这种反向考问机制极大降低了需求理解的偏差。Matt称GrillMe是他最受欢迎的技能,因为它强迫开发者在写下第一行代码之前先进行深度思考。
GrillWithDocs:用领域语言消灭废话

当AI缺乏项目上下文时,它只能用通用词汇来猜测——这在领域驱动设计(DDD)中被称为「缺乏通用语言」。领域驱动设计是Eric Evans在2003年提出的软件设计方法论,其核心思想是让软件的结构和语言与业务领域保持高度一致。其中「通用语言」(Ubiquitous Language)是DDD最基础也最重要的概念——它要求开发团队、产品经理和业务专家使用同一套术语来描述系统,这套术语既出现在日常沟通中,也直接体现在代码的类名、方法名和变量名中。当AI缺乏这套通用语言时,它生成的代码就会充满自造的、与团队约定不一致的命名,导致代码库的可读性和一致性急剧下降。
Matt的解决方案是GrillWithDocs技能:在考问你的同时,AI会检查项目已有的领域语言和Context.md文件。
当你使用了模糊或冲突的术语时,它会当场追问澄清,并把已确认的术语和关键决策沉淀到Context.md或ADR(架构决策记录)中。架构决策记录(Architecture Decision Records)是Michael Nygard在2011年提出的一种轻量级文档实践,每条ADR记录一个重要的架构决策,包括背景、考虑的方案、最终选择及其理由。ADR的价值在于它为团队提供了决策的可追溯性——新成员可以快速理解「为什么系统是这样设计的」,而不仅仅是「系统是什么样的」。在AI协作场景中,ADR的价值被进一步放大:AI可以通过阅读ADR来理解项目的技术约束和设计哲学,从而生成更符合项目整体架构的代码。
GrillWithDocs不是简单的自动提取关键词,而是把需求讨论变成可复用的项目上下文。
举个例子:如果你的团队把「用户」称为「客户」,把「订单」称为「交易」,AI在阅读了Context.md之后就会自动使用这些术语,而不会再用它自己编造的词汇。这不仅提高了沟通效率,也让生成的代码更符合团队规范,甚至还能节省大量的推理Token。
TDD技能:用测试驱动开发对抗架构退化
AI写代码太快,快到架构来不及跟上——这是最致命的问题。Matt的应对策略是将经典的**测试驱动开发(TDD)**融入AI工作流。
测试驱动开发由Kent Beck在2003年系统化提出,其核心是一个严格的三步循环。他设计的TDD技能引导AI遵循「红-绿-重构」循环:不是一次性写完所有测试再实现所有代码,而是一个行为、一个测试,按垂直切片推进。垂直切片(Vertical Slice)是一种增量开发策略,指每次只实现一个完整的功能切面——从用户界面到数据库——而不是先做完所有界面再做所有后端逻辑。
AI先写一个失败的测试(红),然后实现功能让测试通过(绿),再重构优化代码,然后循环往复。这个循环的精妙之处在于它将「规格说明」和「验证」前置于「实现」,确保每一行代码都有明确的存在理由。这种做法与垂直切片结合,能有效防止AI一次性生成大量未经验证的代码,不仅保证了代码质量,也让AI的输出更加可控。
架构审查:给代码库定期体检

更绝的是「Improve Code-Based Architecture」技能。Matt建议开发者定期运行这个技能,让AI从全局视角审视代码库。它会审视模块设计,找出那些接口复杂、难以测试、容易出bug的地方,并提出改进方向。这就像给代码库定期做一次深度体检和理疗——主动对抗软件系统中不可避免的熵增趋势,在技术债务累积到不可收拾之前及时干预。
其他实用工具
除了核心技能,Matt还提供了一系列实用工具:
- Diagnose技能:提供结构化的诊断循环——重现bug、最小化、假设、验证、修复、回归测试。核心不是直接猜答案,而是先建立可重复的反馈循环。这种方法论源自科学方法中的假设-验证范式,避免了AI常见的「瞎猜式修复」——即不理解根因就随意修改代码,往往引入更多问题。
- To PRD技能:把当前对话和代码库理解整理成产品需求文档(PRD),并发布到GitHub Issues、Linear或本地文件。PRD是产品开发中的核心文档,定义了产品要解决什么问题、面向什么用户、具备什么功能以及成功的衡量标准。其中Linear是近年来在开发团队中迅速流行的项目管理工具,以其极致的速度和简洁的设计著称,被视为Jira的现代替代品。将AI生成的PRD直接发布到这些平台,实现了从需求讨论到任务追踪的无缝衔接。
核心认知:AI时代坏代码的代价更大

看到这里你可能会想:这些不都是传统的软件工程方法吗?测试驱动开发、领域驱动设计、架构重构——这些经典概念在AI时代还有用吗?
这正是Matt Pocock带给我们的最大认知反转。
很多人以为有了AI,就不需要懂架构、不需要写测试、甚至不需要懂编程了。但事实恰恰相反:AI是一个极其强大的执行者,但它缺乏对复杂系统的全局把控能力。如果你不懂软件工程,AI只会帮你以十倍的速度制造垃圾代码。
在过去,写出一段烂代码可能需要几天时间;而现在,AI只需要几秒钟就能生成成百上千行的烂代码。如果不加以控制,这些烂代码很快就会把整个项目拖垮。这与Fred Brooks在经典著作《人月神话》中提出的观点一脉相承——软件工程的核心困难不在于编码本身,而在于概念完整性和系统设计。AI解决了编码效率的问题,但概念完整性的挑战不仅没有消失,反而因为生成速度的提升而变得更加尖锐。
这套方法论背后的核心观点是:在AI时代,坏代码的代价更大,因此掌握扎实的软件工程基础不仅没有过时,反而成为了开发者最核心的竞争力。
人机协同的正确范式
Matt Pocock的Skills仓库表面上是一个AI工具集,本质上是一套AI时代的软件工程方法论。它告诉我们:
- 不要试图让AI接管整个开发流程,而是要把AI嵌入到成熟的工程实践中
- 用GrillMe强化需求分析,用Context.md固化领域知识
- 用TDD保证代码质量,用架构审查对抗系统熵增
最聪明的AI编程方式,反而是限制AI的自由度——通过流程化、规范化、可验证化,让AI成为真正的生产力工具。这与控制论(Cybernetics)的核心思想不谋而合:任何高效的系统都需要反馈回路和约束机制,完全不受约束的自由并不会带来最优输出,反而会导致系统失控。
人类负责定义问题、设计架构、制定规范;AI负责编写代码、生成测试、执行重构。这才是真正的AI工程师应该具备的工作模式。
未来的顶尖工程师,一定是既懂底层技术,又懂如何与AI进行高效人机协同的人。他们不是被AI替代的码农,而是指挥AI大军的架构师——知道什么时候该让AI自由发挥,什么时候该对AI进行严格约束。
在AI时代,软件工程的基础不仅没有失效,反而成为了你最核心的护城河。拒绝不经思考的代码生成,用工程化的思维去驾驭AI——这才是AI编程的正确姿势。
相关推荐
观点碰撞Windsurf CEO深度访谈:速度是唯一的护城河
Windsurf CEO Varun Mohan深度访谈,分享AI编程IDE的创业pivot经验、产品构建方法论、异步Agent挑战,以及与Cursor竞争的差异化策略。速度才是创业公司唯一的护城河。
观点碰撞被低估即自由:AI时代的逆向竞争哲学
探讨AI行业中"被低估即自由"的逆向竞争策略。从OpenAI、DeepSeek到Cursor,解析为何低调积蓄力量比站在风口浪尖更具战略优势,以及这一哲学对AI创业者和从业者的深刻启示。
观点碰撞新教工作伦理如何被劫持:从保护工人到压迫工人的演变
哲学家Elizabeth Anderson揭示新教工作伦理如何从保护工人的理想被扭曲为压迫工具。从清教徒的公平商业伦理到新自由主义的复活,深度解析工作伦理的历史演变及其对AI时代劳动关系的启示。