
1. 为什么“生成了多少代码”是个伪指标我在团队里推 AI 编程工具差不多两年了从最早的代码补全插件到后来的对话式编程助手再到最近半年开始折腾 Agent 和 Harness 这一套东西。中间踩过的坑、交过的学费说实话比我在前十年写代码加起来都多。最开始我们也是拿“生成了多少行代码”当 KPI 的每周统计一下 AI 帮我们写了多少行然后沾沾自喜地觉得效率提升了多少倍。结果一个季度下来交付周期没缩短线上事故倒是多了几起。后来复盘才发现这个指标从根上就是错的。AI 编程有没有提效不能只看生成了多少代码。这句话我现在逢人就说。原因很简单代码生成量是一个“产出”指标但编程这件事的核心从来不是产出代码而是解决问题。你让 AI 生成一千行代码如果其中八百行需要重构、三百行引入了隐蔽的 bug、还有两百行根本跑不通那这一千行的价值可能是负的。真正该看的是从需求到可交付成果的端到端时间有没有缩短以及交付质量有没有下降。这个道理听起来像废话但实际操作中绝大多数团队和个人都会不自觉地滑向“代码量”这个最容易量化的指标。因为端到端时间难测质量难量化而代码行数一行命令就能统计出来。这就是典型的“路灯下找钥匙”——不是因为钥匙丢在那里而是因为那里亮。我写这篇东西是想把这半年多在 Agent、Harness、Token 管理这些方面摸出来的经验整理一下给正在或者准备用 AI 编程的同行一个参考。不管你是刚接触 AI 编程助手的新手还是已经在折腾 Agent 框架的老手应该都能从里面找到一些能直接抄作业的东西。核心就一句话别被代码生成量骗了要建立一套真正能反映提效的评估体系。2. 拆解 AI 编程提效的真实维度2.1 从“生成量”到“净收益”的思维转变我先讲一个我们团队的真实案例。去年年底我们有一个中等规模的重构任务大概涉及十几个模块。当时我们分了两组A 组用 AI 编程助手深度参与B 组基本手写。两周后统计A 组生成了大约一万两千行代码B 组手写了大概四千行。如果只看这个数字A 组效率是 B 组的三倍。但实际情况是A 组那一万两千行里有大量重复的样板代码、过度设计的抽象层、以及因为 AI 不理解业务上下文而写出的“看起来对但逻辑有偏差”的实现。最后 A 组花了大量时间做 code review 和重构实际合并进主干的代码只有五千行左右而且交付时间比 B 组还晚了两天。这个案例让我意识到AI 生成的代码需要经过“净化”才能算数。净收益 生成代码的价值 - 审查成本 - 重构成本 - 调试成本 - 潜在风险成本。很多时候后面这几项加起来会把前面的价值吃掉一大半。那怎么衡量净收益我后来总结了一个简单的公式不一定精确但方向是对的净提效 (传统方式端到端时间 - AI 辅助端到端时间) / 传统方式端到端时间注意这里是端到端时间不是写代码的时间。写代码只是整个交付链路中的一环需求理解、方案设计、联调、测试、部署每一环都可能因为 AI 的介入而发生变化。有时候 AI 帮你写代码快了但因为你没完全理解它写的逻辑调试时间反而变长了。这种“局部快、整体慢”的情况在 AI 编程里非常常见。2.2 四个必须单独追踪的指标基于上面的思路我现在会单独追踪四个指标而不是只看代码生成量。第一个是“首次通过率”。就是 AI 生成的代码在不经过人工修改的情况下能直接通过测试的比例。这个指标直接反映了 AI 对你当前项目上下文的理解程度。如果首次通过率很低说明要么是你的提示词有问题要么是 AI 对项目结构、编码规范、业务逻辑的掌握不够。我们团队现在的首次通过率大概在 40% 到 60% 之间波动取决于任务类型。纯算法题能到 80% 以上业务逻辑复杂的模块可能只有 30%。第二个是“审查耗时占比”。就是 code review 花的时间占总开发时间的比例。AI 生成的代码往往“看起来很美”但隐藏的逻辑漏洞需要仔细看才能发现。如果审查耗时占比超过 30%那就要警惕了说明 AI 生成的代码质量可能有问题或者你的审查流程需要优化。第三个是“返工率”。就是 AI 生成的代码在合并后因为 bug 或逻辑问题需要返工的比例。这个指标最要命因为它直接关系到线上稳定性。我们曾经有一个模块AI 生成的代码返工了三次最后发现是 AI 对某个边界条件的理解一直有偏差。这种问题如果不在早期发现后期修复成本会指数级上升。第四个是“Token 效率”。这个后面会专门讲简单说就是每消耗一千个 Token能产出多少“净收益代码”。Token 是要花钱的尤其是用一些付费的 AI 编程软件时Token 用量直接关系到成本。如果 Token 消耗很大但净收益很低那这个用法就有问题。2.3 不同任务类型的提效差异还有一个很重要的点AI 编程的提效幅度在不同任务类型上差异巨大。我大致分了几类任务类型典型提效幅度主要原因样板代码生成200%-500%AI 极擅长重复模式单元测试编写100%-300%测试逻辑相对独立算法实现50%-150%AI 有大量训练数据业务逻辑开发20%-60%需要深度上下文理解架构设计0%-30%AI 难以把握全局疑难 bug 排查可能为负AI 容易给出误导性建议这个表格是我根据团队半年多的数据粗略估算的不一定适用于所有团队但趋势是明显的。越是标准化、模式化的任务AI 提效越明显越是需要业务理解、全局判断的任务AI 提效越有限甚至可能拖后腿。所以当你评估 AI 编程有没有提效时首先要看你的任务构成。如果你 80% 的时间花在业务逻辑开发和架构设计上那 AI 带来的提效可能远低于你的预期。反过来如果你大量时间花在写样板代码和测试上那 AI 就是神器。3. Agent 与 Harness提效的关键基础设施3.1 Agent 到底是什么和普通 AI 编程助手有什么区别最近“Agent”这个词特别火但很多人其实没搞清楚它和普通 AI 编程助手的区别。我用一个生活化的类比来解释普通的 AI 编程助手就像你问一个博学的朋友“这段代码怎么写”他给你一段代码然后你自己去复制、粘贴、调试、运行。他只负责“回答”不负责“执行”。而 Agent就像你雇了一个实习生你说“帮我把这个功能实现了”他会自己去读代码、查文档、写代码、跑测试、发现问题再改最后告诉你“搞定了”。他不仅“回答”还“执行”。这个区别听起来简单但实际影响巨大。普通助手模式下你还是要花大量时间在“复制粘贴调试”这个循环里。而 Agent 模式下这个循环由 AI 自己完成你只需要在关键节点做审查和决策。但 Agent 也不是万能的。它最大的问题是容易跑偏。因为它有自主执行能力如果方向错了它会沿着错误的方向一路狂奔消耗大量 Token 和时间。所以 Agent 需要“Harness”来约束。3.2 Harness 和 Agent 的区别与配合“Harness”这个词在 AI 编程语境下我理解为一套约束和引导 Agent 行为的框架。如果说 Agent 是那匹能跑的马Harness 就是缰绳和马鞍。没有 Harness 的 Agent就像脱缰的野马跑得快但不知道跑向哪里。Harness 通常包含几个部分任务边界定义告诉 Agent 哪些能做哪些不能做。比如“只能修改 src 目录下的文件”、“不能引入新的第三方依赖”。执行流程约束规定 Agent 的执行步骤。比如“先写测试再写实现”、“每次修改后必须运行测试”。输出格式规范要求 Agent 按特定格式输出方便后续自动化处理。安全护栏防止 Agent 执行危险操作比如删除文件、修改配置、执行系统命令。我试过几个不同的 Harness 方案有开源的也有自己搭的。实测下来有没有 HarnessAgent 的可用性差距是数量级的。没有 Harness 的时候Agent 经常做出一些让人哭笑不得的操作比如把整个文件重写了一遍但只改了一个变量名或者引入了一个根本不存在的库。有了 Harness 之后这些问题大幅减少。3.3 一个最小可用的 Harness 配置思路我不打算给一个具体的代码实现因为不同团队的技术栈差异太大。但可以分享一个最小可用的 Harness 配置思路你可以根据自己的情况调整。第一步定义工作目录边界。明确告诉 Agent 它只能在哪个目录下操作。这个看似简单但能避免很多“误伤”。我们曾经有一个 Agent 在调试时把项目根目录下的配置文件给改了导致整个构建流程挂掉。后来加了目录边界限制再没出过这个问题。第二步定义允许的操作类型。比如允许读文件、写文件、运行测试但不允许执行 shell 命令、不允许安装依赖、不允许修改 CI 配置。这个列表要根据你的安全要求来定。第三步定义执行流程。我一般要求 Agent 遵循“理解需求 - 定位相关代码 - 编写测试 - 编写实现 - 运行测试 - 修复问题 - 输出总结”这个流程。每一步都有明确的输入和输出方便我中途介入。第四步定义输出格式。我要求 Agent 最后输出一个结构化的总结包括修改了哪些文件、每个文件改了什么、测试结果如何、还有什么遗留问题。这个总结可以直接贴到 PR 描述里省了我不少事。这套 Harness 配置下来Agent 的“可控性”大幅提升。虽然它还是会偶尔犯错但至少不会犯那种“灾难性”的错误。4. Token 管理被大多数人忽视的成本黑洞4.1 Token 用量为什么重要Token 是 AI 编程的“燃料”。每一次对话、每一次代码生成、每一次 Agent 执行都在消耗 Token。如果你用的是付费的 AI 编程软件Token 直接对应着真金白银。即使你用自部署的模型Token 也对应着算力成本。但 Token 管理的重要性不止于成本。Token 用量还直接影响响应速度和上下文质量。当你给 AI 的上下文太长时它不仅处理得慢而且容易“迷失”在大量信息中抓不住重点。这就是所谓的“上下文窗口焦虑”。我见过很多团队一开始用 AI 编程很兴奋什么任务都往里扔结果 Token 用量飙升月底账单吓人而且效果并没有想象中好。问题就出在没有做 Token 的精细化管理。4.2 三个立竿见影的 Token 优化技巧我总结了三个最有效的 Token 优化技巧都是实操验证过的。第一个是“上下文裁剪”。不要把所有代码都塞给 AI。只给它当前任务相关的文件、函数、类。我一般会用“相关文件定位”的方式先让 AI 自己判断需要哪些文件然后只把这些文件的内容传给它。这个技巧能减少 50% 以上的 Token 消耗。第二个是“对话历史压缩”。长对话会累积大量历史消息这些消息都会占用 Token。我的做法是每隔几轮对话就让 AI 自己总结一下之前的讨论要点然后用这个总结替换掉原始的历史消息。这样既保留了关键信息又大幅减少了 Token 占用。第三个是“输出长度限制”。明确告诉 AI 你需要的输出长度。比如“用不超过 50 行代码实现”、“总结不超过 200 字”。不加限制的话AI 倾向于生成冗长的输出既浪费 Token 又增加审查负担。这三个技巧叠加使用我们团队的 Token 消耗降低了大约 60%而输出质量基本没有下降。4.3 Token 效率的衡量方法光看 Token 消耗量是不够的还要看 Token 效率。我定义了一个简单的指标Token 效率 净收益代码行数 / 消耗的 Token 数以千为单位“净收益代码行数”就是前面说的经过审查和重构后真正合并进主干的代码行数。这个指标能反映你的 Token 花得值不值。我们团队目前的 Token 效率大概在 15 到 25 之间也就是说每消耗一千个 Token能产出 15 到 25 行净收益代码。这个数字在不同任务上差异很大算法题能到 50 以上业务逻辑可能只有 5 到 10。如果你的 Token 效率长期低于 5那就要反思了要么是任务选择有问题要么是提示词需要优化要么是 Harness 配置不到位。5. 实操搭建一套可量化的 AI 编程提效评估流程5.1 评估流程的整体设计说了这么多理论现在讲怎么落地。我设计了一套评估流程在我们团队跑了三个月效果还不错。核心思路是把 AI 编程的提效评估嵌入到日常开发流程中而不是单独搞一套。具体来说我们在每个 Sprint 里选几个典型任务做 A/B 对比。A 组用 AI 辅助B 组不用。然后记录端到端时间、代码质量、Token 消耗等数据。一个 Sprint 下来就能得到一组相对可靠的数据。这套流程的关键是不要为了评估而评估。评估本身也要消耗时间如果太重大家会有抵触情绪。所以我把评估做得很轻量主要靠自动化工具采集数据人工只需要在关键节点做标记。5.2 数据采集的具体方法数据采集分几个部分时间数据我们用项目管理工具自带的时间追踪功能。任务开始时打一个标签任务完成时再打一个。中间如果切换了任务就分段记录。这个数据不需要额外操作养成习惯就好。代码质量数据我们接入了静态代码分析工具每次提交自动跑。主要看几个指标圈复杂度、重复代码率、测试覆盖率。这些数据自动采集不需要人工干预。Token 数据如果你用的是云端 AI 编程服务一般都有 API 可以查用量。我们写了一个小脚本每天定时拉取 Token 消耗数据按任务和人员分类汇总。人工反馈数据每个任务完成后开发者填一个简单的问卷就三个问题AI 帮了多大忙1-5 分、审查花了多少额外时间、有没有遇到 AI 误导的情况。这个问卷 30 秒就能填完不会增加太多负担。5.3 数据分析和解读数据采集完之后怎么分析我一般看几个维度第一看趋势。不要只看单次数据要看趋势。比如首次通过率是不是在提升Token 效率是不是在改善。趋势比绝对值更重要。第二看差异。不同任务类型、不同开发者之间的差异。如果某个开发者的 AI 提效特别明显就去了解他是怎么用的然后把经验推广开。如果某个任务类型 AI 提效一直很差就考虑是不是不适合用 AI。第三看异常。如果某个指标突然恶化要立刻排查原因。比如 Token 消耗突然飙升可能是某个 Agent 跑飞了返工率突然上升可能是 AI 生成的代码质量下降了。这套分析流程跑下来我们对 AI 编程的提效情况就有了比较清晰的认识。不再是“感觉快了”或者“感觉慢了”而是有数据支撑的判断。6. 常见问题与避坑指南6.1 为什么 AI 生成的代码“看起来对但跑不通”这是最常见的问题。AI 生成的代码语法通常没问题逻辑看起来也合理但一跑就报错。原因通常有几个一是上下文缺失。AI 不知道你项目里的某些约定比如某个工具类的特殊用法、某个配置项的默认值、某个接口的返回格式。它按“通用情况”写但你的项目是“特殊情况”。二是版本差异。AI 的训练数据可能包含某个库的旧版本用法而你项目用的是新版本API 已经变了。三是边界条件。AI 对边界条件的处理往往不够严谨。比如空数组、null 值、超大输入、并发场景这些它可能考虑不到。解决办法给 AI 提供足够的上下文并明确要求它处理边界条件。我一般会在提示词里加一句“请考虑空值、边界值和异常情况”。这一句话能减少很多问题。6.2 Agent 跑飞了怎么办Agent 跑飞是另一个常见问题。表现是它开始执行一些你根本没要求的操作或者在一个问题上反复绕圈消耗大量 Token 但没进展。我的处理经验是设置硬性止损点。比如最多执行 20 步最多消耗 5000 个 Token超过就自动停止。这个止损点要在 Harness 里配置好不能靠人工盯着。另外定期检查 Agent 的中间输出。不要等它全部跑完再看那样如果跑飞了损失就大了。我一般会让 Agent 每完成一个步骤就输出一个简短的状态这样我能及时发现异常。6.3 如何避免“AI 依赖症”还有一个隐性问题过度依赖 AI导致自身能力退化。我见过一些年轻开发者离开 AI 就不知道怎么写代码了。这很危险。我的建议是把 AI 当“副驾驶”而不是“自动驾驶”。关键决策、核心逻辑、架构设计还是要自己来。AI 可以帮你写样板代码、查文档、做重复劳动但不能替你思考。另外定期做“无 AI”练习。我每个月会挑一两个任务完全不用 AI纯手写。这样既能保持手感也能更客观地评估 AI 到底帮了多少忙。6.4 常见问题速查表问题现象可能原因解决思路生成代码跑不通上下文缺失/版本差异补充上下文明确版本Agent 反复绕圈任务定义不清细化任务边界设置止损Token 消耗过快上下文过长裁剪上下文压缩历史审查耗时过长代码质量差优化提示词加强 Harness提效不明显任务类型不匹配选择适合 AI 的任务线上事故增多边界条件未覆盖强制要求处理边界情况这张表我贴在工位上遇到问题就对照着排查省了不少时间。7. 我个人的一些实操心得最后分享几个我踩坑踩出来的心得都是文档里不会写的。第一个心得提示词的质量比模型的能力更重要。我试过用同一个模型不同的提示词效果差距能有十倍。好的提示词要包含任务背景、输入输出示例、约束条件、边界要求。花十分钟写提示词能省一小时调试时间。第二个心得不要追求“全自动”要追求“半自动”。全自动的 Agent 听起来很酷但实际用起来人工介入的“半自动”模式往往更高效。因为人工可以在关键节点做判断避免 Agent 跑偏。我现在的工作流是AI 生成 - 人工审查 - AI 修改 - 人工确认。这个循环比全自动靠谱得多。第三个心得建立自己的“提示词库”和“Harness 模板”。不要每次从零开始写提示词。把常用的提示词和 Harness 配置存下来下次直接复用。我们团队现在有一个共享的提示词库新来的同事直接抄作业上手快很多。第四个心得定期复盘 AI 编程的效果。不要闷头用要定期停下来看看数据想想哪里可以优化。我们每个月会开一次 AI 编程复盘会大家分享一下这个月遇到的坑和技巧。这个会通常不超过半小时但收获很大。第五个心得对 AI 保持“健康的怀疑”。AI 很强大但它不是神。它会犯错会误导会自信地给出错误答案。所以永远不要盲目相信 AI 的输出尤其是涉及核心逻辑和安全相关的代码。审查审查再审查。这套东西我摸索了半年多中间走了不少弯路。现在回头看最大的收获不是“AI 帮我写了多少代码”而是“我学会了怎么和 AI 协作”。这个协作能力可能比任何具体的工具或技术都更重要。毕竟工具会变但“如何高效地利用工具解决问题”这个能力是通用的。