10万开发者调查证实AI写的代码大部分是垃圾,这个Harness Engineering方法论把产出质量拉高了3倍

张开发
2026/4/11 2:59:06 15 分钟阅读

分享文章

10万开发者调查证实AI写的代码大部分是垃圾,这个Harness Engineering方法论把产出质量拉高了3倍
Dex Horthy 是 HumanLayer 的创始人他之前在 AI Engineer 大会上讲的 12 Factor Agents 是全场最火的演讲之一。这次他带来了续集主题是怎么在真实的、复杂的、十年历史的代码库里让 AI 编码 Agent 真正干活他的团队三个人花了八周时间彻底重构了用 AI 写代码的工作流。效率提升了 2 到 3 倍而且产出质量高到他们不得不改变整个团队的协作方式。他说这个过程非常痛苦但回不去了大多数人用 AI 写代码写的是垃圾Dex 开场引用了一组数据Eigor 调查了 10 万开发者发现大部分人用 AI 写代码的结果是大量返工。代码量确实上去了但很多只是在修上周 AI 写出来的烂代码绿地项目全新的 Vercel dashboard 之类效果很好。但如果是一个十年历史的 Java 代码库AI 基本就废了这和 Dex 自己的体验完全一致。他第一次用 Claude Code 的时候并没有觉得多惊艳就觉得还行比手写好一点。直到他们团队摸索出了一套方法才真正把产出质量拉上来上下文窗口就是一切LLM 是无状态的。每次调用的时候模型能看到的只有当前上下文窗口里的内容。放进去什么 token就出来什么质量的结果Dex 把上下文窗口分成了聪明区和笨蛋区。以 Claude Code 为例大概在 40% 使用率的时候就开始出现质量下降。如果你的 MCP 工具往上下文里灌了一堆 JSON 和 UUID那你所有的工作都在笨蛋区里完成结果不可能好优化上下文窗口要看四个维度正确性、完整性、大小、轨迹轨迹这个维度很有意思。很多人跟 Agent 对话的模式是下指令Agent 做错了骂它Agent 又做错了再骂它。模型看到的对话历史就是做错被骂做错被骂它推测出的下一步就是我最好再做错一次好让人骂我。所以如果对话走偏了最好直接开一个新的上下文窗口重来Research-Plan-Implement三步压缩法Dex 团队的核心工作流叫 Research-Plan-ImplementRPI本质上是一套持续压缩上下文的方法Research 阶段搞清楚系统怎么运作。找到相关文件理解代码流程把结论压缩成一份研究文档。这份文档就是对代码库真实状态的快照不是文档里可能过时的描述是从代码本身提取的事实Plan 阶段把研究结论和需求合在一起列出精确的执行步骤。关键是要包含具体的文件名、行号、代码片段。一份好的计划应该让最笨的模型都能按步骤执行不出错Implement 阶段按计划执行保持上下文小。每一步完成后可以做有意压缩intentional compaction把当前进展总结成 markdown 文件新的 Agent 接手时直接从总结开始不用重新搜索和理解整个代码库这三个阶段的共同目标是一个始终待在上下文窗口的聪明区Sub-agent 是用来控制上下文的不是用来扮演角色的很多人用子 Agent 的方式是一个前端 Agent一个后端 Agent一个 QA Agent一个数据科学 AgentDex 说别这样子 Agent 的正确用法是控制上下文。比如你要搞清楚一个大型代码库里某个功能怎么运作可以派一个子 Agent 去做所有的搜索、读文件、理解代码流程的工作。这些操作会消耗大量上下文空间。子 Agent 完成后只返回一条简洁的消息“你要的文件在这里”。父 Agent 读那一个文件就能直接开工上下文干干净净渐进式加载别把整个代码库的知识塞进去最常见的做法是在仓库根目录放一个大的 onboarding 文件写清楚整个项目的架构、约定、关键文件。问题是代码库一大这个文件要么太长吃掉整个聪明区要么信息不够 Agent 还是会犯错Dex 推荐的做法是分层加载。根目录放全局上下文每个子目录放局部上下文。Agent 工作的时候只加载根上下文加上当前工作区域的局部上下文其他的不碰。这样上下文小还有足够的空间做实际工作还有一个更好的方案按需压缩上下文。不维护一个可能过时的静态文档而是每次开始新任务的时候让 Agent 现场去代码里找然后压缩成一份当前有效的研究文档。因为代码本身是真相源文档只会越来越不准Dex 画了一张图问观众在代码、函数名、注释和文档之间哪个的谎话最多答案是文档计划就是杠杆计划的核心价值是压缩意图。一份好的计划不只是步骤列表它包含了具体的代码片段让审阅者能快速判断这个方向对不对Dex 特别强调了心理对齐mental alignment这个概念。代码审查的真正目的不只是找 bug是让团队所有人对代码库的变化保持同步理解。当 AI 每周产出的代码量是以前的 2 到 3 倍传统的逐行审查已经跟不上了他们的做法是审查计划而非审查代码。团队 leader 可以通过读计划来了解系统在怎么演进在计划阶段就能发现方向性的问题。Mitchell 还把他的 Agent 对话线程直接附在 Pull Request 里让审查者能看到完整的推理过程不只是一堆绿色的新增代码一条坏的 research 结论对系统的错误理解会导致整个计划偏离进而产生几百行错误代码。所以人的精力应该集中在链条最上游确保 research 是对的确保 plan 是对的实战验证30 万行 Rust 代码库的一次性修复Dex 拿了一个真实案例做验证。他的朋友 Vibv 是 Boundary ML 的 CEO有一个 30 万行的 Rust 代码库BAML 编程语言项目。Dex 用 RPI 方法论尝试一次性修复一个问题先做了几轮 research扔掉了质量不好的重新做。然后分别用有 research 和没 research 的方式生成了计划对比效果。周一晚上做完周二早上 CTO 看了 PR 说看起来没问题下个版本合进去后来他们又花了一个周六 7 小时往 BAML 提交了 35000 行代码部分是 codegenVibv 估计这相当于 1 到 2 周的正常工作量但也有失败的案例。他们尝试从 Parquet Java 中移除 Hadoop 依赖RPI 方法论到了某个点就不够用了最后不得不回到白板前用人脑思考整体架构不要外包思考这是 Dex 反复强调的一句话AI 不能替代思考它只能放大你已经做过的思考或者放大你没做过的思考不是所有任务都需要完整的 RPI 流程。改个按钮颜色直接跟 Agent 说就行。做一个小功能写个简单计划就够。跨多个仓库的中型功能做一次 research 再写计划。只有最复杂的问题才需要完整的多轮 research 加详细计划怎么判断需要多少 context engineering没有公式靠经验。你会做错很多次有时候准备过度有时候准备不足。Dex 的建议是选一个工具然后大量练习不要在 Claude、Codex、Cursor 之间反复切换试图找到最优解Spec-driven 开发已经语义扩散了Dex 提到了 Martin Fowler 在 2006 年说过的概念语义扩散semantic diffusion。一个好的术语被提出来之后所有人都开始用它表达不同的意思最终这个词变得毫无意义Agent经历过这个过程从一个人到一个微服务到一个聊天机器人到一个工作流。现在 “spec-driven development” 也在经历同样的事。有人说它是写更好的 prompt有人说是产品需求文档有人说是可验证的反馈循环有人说只是在写代码的时候用一堆 markdown 文件Dex 说真正重要的不是叫什么名字是背后的原理压缩上下文管理上下文窗口待在聪明区下一步是团队变革Dex 认为 AI 编码工具本身会被商品化所有人都会学会怎么用。真正难的是怎么让团队和开发流程适应一个 99% 代码由 AI 产出的世界现在正在出现一个裂痕资深工程师不用 AI因为觉得提升不大。中级工程师大量使用因为能填补技能缺口但同时也产出了一些低质量代码。然后资深工程师越来越烦因为每周都在清理 Cursor 生产出来的烂代码这不是 AI 的错也不是中级工程师的错。这是文化变革的问题需要从团队顶层推动学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多文章