ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Matt Pocock 怒批“氛围编程“:中文圈最该被这句话打醒的,是那些只会截图晒 Diff 的人

Matt Pocock 怒批“氛围编程“:中文圈最该被这句话打醒的,是那些只会截图晒 Diff 的人 Matt Pocock 怒批氛围编程中文圈最该被这句话打醒的是那些只会截图晒 Diff 的人【免费下载链接】skillsSkills for Real Engineers. Straight from my .agents directory.项目地址: https://gitcode.com/GitHub_Trending/skills13/skills当AI 编码在中文技术圈变成一种氛围——群里晒出五彩斑斓的 Diff 截图、朋友圈转发我用 Agent 三小时从零搭了个 App、收藏夹里躺着十几个一键装技能的教程——很少有人停下来问一句这些东西真的被验证过吗氛围编程vibe coding这个词本身就是对一种态度的精准命名不读代码、不看报错、不写测试凭感觉让模型把东西搞出来然后靠一张截图证明我搞定了。TypeScript 圈的代表人物 Matt Pocock 对此的态度异常强硬。他开源的 skills 仓库开篇第一句就是My agent skills that I use every day to do real engineering - not vibe coding.这不是一句营销口号。这个仓库的每一份技能文件都在和氛围编程的三大幻觉正面作战需求不需要对齐、代码不需要反馈、合并不需要验收。本文结合该仓库的源码与近期社区舆情逐条拆解他的立场并把它翻译成中文团队能直接执行的工程标准。氛围编程的三种典型症状症状一晒截图——PR 只有一个 Summary中文圈最常见的AI 成果展示是一张覆盖全屏的 Diff 绿图加一句Agent 太强了。社区最近就有一个极具讽刺意味的案例名为 Ponytail 的代理技能在公布基准测试成绩后被贡献者质疑最终不得不修正自己的测试结果——因为它把自己测自己的评分当成了可信的证据。这个事件说明在一个没有外部验证机制的环境里Agent 自己出示的证据一文不值。而 Matt Pocock 仓库里的pr技能skills/engineering/pr/SKILL.md给 PR 体制定了一个完全相反的结构Summary、Evidence、Merge Danger 三段缺一不可。其中对 Evidence 的等级划分极其直白S 级截图——但必须同时给出 Before 和 After是前后对照的可视化证明而不是一张孤零零的它跑起来了A 级可执行证据——测试结果、控制台输出而且必须具体到哪个测试从失败变成通过。更关键的是第三段 Merge Danger这个改动是一扇 one-way door 还是 two-way door滚回成本高不高爆炸半径blast radius有多大这才是真正的验收思维——它在逼你回答如果它错了我们损失多少而氛围编程从来不考虑这个问题。症状二追热点——装了 20 个技能一个都没验收中文社区近半年掀起了给 Agent 装技能的热潮npx skills、agent-skills、OpenSpec Skills Codex 一键脚本……教程里的截图一张比一张华丽。但热度之下很少有人按仓库里triage技能skills/engineering/triage/SKILL.md的方式对待任何一个新想法。triage定义了一个严格的状态机needs-triage→needs-info/ready-for-agent/ready-for-human/wontfix。每个 issue 或 PR 进入流程后第一件事不是讨论而是Verify the claim验证主张是 bug 就先按复现步骤跑一遍是 PR 就 checkout 下来、跑相关测试看 diff 是否真的做了它声称做的事。验证失败的要么退回needs-info补充信息要么直接wontfix。追热点的人缺的正是这个环节。装技能不是目标验证技能在你自己代码库上真的产出可验收的结果才是。技能装得越多越需要一个 triage 状态机来给它们过堂。症状三不验收——整个流程没有一个红灯氛围编程最深的病灶是整个开发—合并链条上没有任何一个反馈信号。README 里的第三大失败模式README.md标题就叫 The Code Doesnt WorkMatt 的解法是静态类型、浏览器访问、自动化测试一个都不能少。diagnosing-bugs技能skills/engineering/diagnosing-bugs/SKILL.md把这个观点推到极致。它的第一阶段叫 Build a feedback loop并写下了一句几乎可以裱起来的话Build the right feedback loop, and the bug is 90% fixed.该技能的 Phase 1 完成标准是一串硬核清单这个循环必须能变红能针对这个具体 bug 失败、确定性每次运行结论一致、快秒级不是分钟级、Agent 可无人值守运行。达不到这四条技能明确禁止进入下一阶段甚至禁止你读代码猜测原因jumping straight to a hypothesis is the exact failure this skill prevents.对比之下只会截图晒 Diff 的人连这个改动是否会变红都不知道。没有红灯就没有修复和破坏之分只有看起来像在干活。为什么 28 万星的大盘里最火的偏偏是反氛围仓库有人会说反氛围编程是老人守旧。氛围编程多火啊Agent 随便点点就出活。但市场给出了相反的回答。GitHub 数据显示mattpocock/skills 创建于 2026 年 2 月到本文写作时2026 年 10 月已收获超过 28.5 万颗星、2.4 万次 fork项目推送依然活跃Matt 本人自述其配套 Newsletter 已有约 6 万开发者订阅。在一个 AI 编码工具百花齐放的大盘里这个反对氛围编程的仓库成了增长最猛的那一个。为什么README 的 Why These Skills Exist 一节给出了答案他总结的四大 Agent 失败模式恰恰是氛围编程的四个死角——The Agent Didnt Do What I Want没做对你以为它懂了它完全没懂。解法是grilling——在动手之前让 Agent 用一轮轮问题把需求树的每一个分支问穿。grilling技能skills/productivity/grilling/SKILL.md的规则里有一句点睛之笔facts are the agents job, decisions are yours——找事实是 Agent 的职责做决策是你的事。氛围编程刚好反过来了让 Agent 替你做决策而事实它又懒得去查。The Agent Is Way Too Verbose说废话Agent 不会用你的领域语言。解法是建立共享词汇表GLOSSARY.md。README 里那个例子足够说明问题把课程某个 section 里的 lesson 被做成real即在文件系统里获得一个位置时出了问题压缩成materialization cascade 出了问题——一次对齐省下之后所有会话里的废话。The Code Doesnt Work跑不通没有反馈环的 Agent 是闭着眼飞行。解法是tdd的红—绿—重构循环。We Built A Ball Of Mud屎山加速Agent 让编码提速也让软件熵加速。解法是to-spec先问清动了哪些模块以及improve-codebase-architecture定期扫描代码库、产出结构化的 HTML 报告。这四点没有任何一条是新潮的它们是软件工程三十年来反复验证的常识。真实工程的问题在 AI 时代一个都没有消失只是换成了由 Agent 来犯。这才是这个仓库逆势涨星的根本原因它卖的不是新工具而是纪律。从晒 Diff 到验收中文开发者缺的那一环如果只选一个技能来理解 Matt 的验收哲学应该看code-reviewskills/engineering/code-review/SKILL.md。它的核心是双轴评审Standards是否符合仓库编码规范 Fowler 代码坏味道基线和 Spec是否忠实实现了原始 issue/spec两条轴各跑一个平行 sub-agent互不污染上下文。为什么必须拆开因为代码完全符合规范、但实现错了需求 →Standards 过Spec 挂代码完全符合需求、但破坏了项目约定 →Spec 过Standards 挂。中文圈晒 Diff 的文化里最常见的就是拿Standards 过冒充验收过了。双轴评审的价值正在于一个轴通过不能掩盖另一个轴的失败。验收不是diff 绿了验收是两把尺子各自量完、分别汇报。配套的tdd技能skills/engineering/tdd/SKILL.md则直接堵死了自证陷阱。它列出的反模式里有一条尤其值得截图晒 Diff 的人读三遍Tautological同义反复测试断言用和代码相同的方式重算期望值expect(add(a, b)).toBe(a b)或者手写一个和实现一模一样的快照测试永远不可能失败。这是 AI 生成代码最典型的作弊模式——测试和实现是同一只模型写出来的互相印证等于没测。tdd的规则是期望值必须来自独立的事实来源——已知正确的字面量、手工推演的样例、spec 本身。另一个反模式是Horizontal slicing横向切片先把所有测试写完、再写全部实现。它验证的是想象出来的行为而不是用户真正面对的行为。正确的姿势是垂直切片一个测试 → 一段最小实现 → 下一个每个测试都是一颗曳光弹用上一轮学到的真实反馈校准下一轮。而diagnosing-bugs更是把拒绝自证写进了流程Phase 3 要求先列出 3–5 个可证伪的假设并展示给用户如果 X 是原因那么改变 Y 应该让 bug 消失Phase 5 要求回归测试必须在修复之前先写出来、先看着它红。整个过程没有任何一步允许我觉得修好了。把 Matt Pocock 的立场翻译成可执行的团队标准ask-matt技能skills/engineering/ask-matt/SKILL.md是整个仓库的路由器它把主流程画成了一条主线grill-with-docs → to-spec → to-tickets → implement / implement-spec → code-review → pr → retro。这其实就是一套完整的反氛围编程落地路线图逐条翻译成团队可执行的检查项是下面五条标准一动手前必须被烧烤grilling。任何变更先让 Agent 用设计树的方式把需求问穿——一轮问题、带推荐答案、等用户回答、再问下一轮直到决策树的边界为空、没有任何东西被默默假设。团队成员在 Agent 面前学会的第一件事应该是先接受一轮盘问而不是快给我生成。标准二spec 先于代码。to-spec把对话沉淀成带 Problem Statement、User Stories、Implementation Decisions、Testing Decisions、Out of Scope 的规范skills/engineering/to-spec/SKILL.mdto-tickets再把它拆成带 blocking edges 的垂直切片工单每张工单必须写清楚验收标准acceptance criteriaskills/engineering/to-tickets/SKILL.md。没有可勾选的验收标准就没有完成的定义。标准三一切实现走红绿循环。implement技能skills/engineering/implement/SKILL.md写得非常明确在预先协商好的 seam测试接缝上驱动tdd定期跑类型检查、定期跑单个测试文件结束时跑一遍完整测试套件再交给code-review。多票并行的implement-spec也是同样逻辑每个 implementer 在自己的 worktree 里用tdd构建工单最后在集成分支上做一次全量评审。标准四PR 必须携带 Evidence 与 Merge Danger。按pr技能的三段式Summary 用最小的可视化伪代码、调用树、diff 草图、Mermaid讲清改动Evidence 给出 before/after 的可执行证明Merge Danger 声明这是一扇 one-way 还是 two-way 的门、爆炸半径是什么。从今往后截图晒 Diff可以保留但必须补上另两段。标准五机械问题转成自动化检查。retro技能skills/engineering/retro/SKILL.md的立场是回顾的目的不是改代码而是改 Agent 的环境。机械性违规固定的语法模式、禁用的 API、文件布局规则一律变成确定性的检查——linter 规则、pre-commit 钩子或 CI 任务只有真正的判断型问题才写进CODING_STANDARDS.md。而仓库没有任何 guardrail没有 pre-commit、没有跑 lint/typecheck/test 的 CI本身就是一个待修的问题。中文团队最该抄的这一条让机器去验收机器别让截图去验收 Agent。结语Matt Pocock 反的不是 AI 编码而是氛围对工程的偷换。他仓库里每一个技能文件的底层逻辑是同一句话需求要对齐代码要有反馈改动要能验收环境要持续改进——这些原则没有一条是 AI 发明的也没有一条会因 AI 而过时。中文圈最该被打醒的不是那些还在观望的人恰恰是那些已经用上 AI、正在朋友圈晒 Diff 的人。晒 Diff 没有错错的是把 Diff 当成了验收。把那张截图收起来先回答这三个问题需求问穿了吗测试变红过吗合并的爆炸半径有多大答不上来就别说自己在做真实工程。【免费下载链接】skillsSkills for Real Engineers. Straight from my .agents directory.项目地址: https://gitcode.com/GitHub_Trending/skills13/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进