标签归档:研发效能

如何打造 AI-Native 软件产品研发组织

如果一个团队真的想做 AI-Native 研发组织,第一步是改组织契约:谁可以让 AI 产出代码,谁对代码负责,什么质量底线不能退,什么流程可以砍,什么流程必须更重。

AI 现在太会写代码了,但是这就会导致一个问题:它把「产出代码」这件事的成本做到很低,低到组织里原本那些靠角色边界、流程延迟、评审机制勉强维持的质量平衡,突然失效了。

过去一个 PM 提需求,前端写页面,后端写接口,测试回归,整个链条慢,但慢本身也是一种摩擦力。现在 PM 自己就能把页面跑起来,AI 一下午能写出几十个组件,速度是上去了,但系统开始更脆弱了。

先说 AI-Native 组织不是什么。 AI-Native 组织它不是「让所有人都开始写代码」,也不是「研发岗位会被提示词工程师替代」。

它是把软件组织里的逻辑重排。

以前文档是入口,代码是结果。现在代码变成入口,文档变成派生物。 以前角色按工种切,PM、设计、前端、后端、测试各守一段。现在角色要按责任切: 谁定义业务闭环,谁维护系统护栏,谁提供稳定契约,谁为线上事故买单。

今天我们先聊组织契约,再聊角色重构,然后再把一条研发流水线拆开聊聊。

组织契约

没有组织契约,AI 进团队只会把烂流程放大。

合理预期

在某些 Demo 场景,或者脚本类场景,10 倍是一个合理的预期。 但是对于一个组织来说,10 倍是一个不科学的场景,因为在组织里面,在产品研发过程中,写代码并不是整个生产过程中最耗时的部分。

所以,我们要先摈弃一个幻觉:不要拿 10 倍产出当目标。

AI 在研发组织里的收益区间,我一直认为是 1.5 到 2 倍,高质量前提下的 2 倍。为什么呢? 因为代码生成速度和有效交付速度不是一回事。AI 能把编码阶段压缩掉一大块时间,但需求澄清、边界判断、异常处理、联调、测试、观测、回滚,这些成本不会自动消失。很多时候还会更高。

如果团队盯着 10 倍,结果一般都一样:PR 数量暴涨,代码体积暴涨,Review 质量下降,线上回归问题增加,半年后开始集中还债。这就是技术债积累速度第一次超过了团队消化速度。

所以合理预期应该写进团队共识里:我们追求的是 2 倍高质量交付,不追求 10 倍低质量代码喷射。

所有权

每个 AI 输出都必须有所有者。

谁发起生成,谁提交 PR,谁 approve merge,这中间可以分层,但最终必须落到一个明确的人身上。这个人要能够面对一句话:如果这段代码挂上你的名字,你愿不愿意负责。要是答案是否定的,这段代码就不该进主干。

这条规则听起来像废话,实际上很多团队做不到。因为 AI 会制造一种错觉:代码好像不是谁写的,是系统吐出来的。人变成了搬运工。只要团队接受这种错觉,质量就开始漂移。一个有所有权的流程大概是这样:

  • PR 模板里要求声明 AI 参与范围
  • 提交人对业务正确性负责
  • Reviewer 对工程质量负责
  • 合并人对上线风险负责

责任可以分工,但责任不能悬空。

质量顺序

质量第一,数量第二。

团队如果不显式声明这一点,默认会被 AI 拖向另一个方向:先铺功能,再补治理。这个方向对 demo 团队成立,对正式业务组织通常是灾难。因为 AI 特别擅长快速补齐显性功能,却不擅长主动建立长期维护结构。它会顺着需求走,不会替你守架构。

AI 时代必须把一些以前属于「好习惯」的东西升级为「强制门槛」,也就是我们之前经常强调的规范,流程等等,如测试、监控、CI/CD、单测等等。

  • 没有测试,不进主干
  • 没有异常处理,不进主干
  • 没有监控埋点,不进主干
  • 没有 feature flag,不上线
  • 不能被 reviewer 解释清楚的代码,不 merge

当代码供给能力暴涨时,质量约束必须同步加码,否则系统会很快从可控变成不可控。

交付代码

传统产品研发里,PRD 是上游,代码是下游。这个模型的问题大家都熟:PRD 经常过期,设计稿和实现偏移,字段定义藏在飞书文档、接口平台、聊天记录和前端代码里,最后没有一个地方是真正可靠的。

AI-Native 组织里:代码作为唯一源,文档从代码反向提取。

从代码出发

现在 PM 借助 Codex、Claude Code(最近又有同事被封号了)、Cursor 这类工具,已经可以生成带交互的页面、Mock 数据、状态流转,很多场景下甚至能直接把核心业务路径跑通。既然这样,就不要再让 PM 先写一份长 PRD,再让研发去猜什么叫「列表为空时的引导态」。让页面先跑起来,再从页面反推需求定义,效率和准确率都更高。

这里有个好处:讨论变得具体了。

以前评审会上大家讨论一句文档描述,脑子里各自渲染不同 UI。现在把页面摆出来,点击路径、字段结构、交互反馈、错误提示都变成可观察对象。对齐成本直线下降。后端也不需要看十页文字说明,只要看这个页面最终需要什么数据结构,就知道接口该怎么供给。

文档反向生成

代码是唯一真相源,不等于不要文档。让文档变成派生物,而且是自动派生物。

流程大概如下:

  1. PM 先生成并跑通前端页面,带 Mock 数据
  2. AI 从页面代码、组件 props、Mock schema 中逆向提取字段说明、交互流程、状态机描述
  3. PM 对这份自动生成的文档做人审
  4. 后端按确认后的 JSON Schema 或 TypeScript Interface 实现接口
  5. 联调时再根据真实契约让 AI 回写文档

这样处理后,文档不再是一个独立维护成本很高的系统,而是代码的视图层。它可以读给人看,但它的源头来自真实实现,而不是空想。

建议把接口契约标准化为 JSON Schema 或 TypeScript Interface

角色重构

AI-Native 组织可能会有一些角色的变更,但是也可能会裁掉一些角色,因为我们是重写角色边界。如果当前人不合适,或者适应不了,就需要换,否则就会变成打造新组织过程中的阻碍。

很多人讨论这件事喜欢走两个极端。一个极端是「以后人人都是全栈」。另一个极端是「AI 只会替代初级岗位,核心角色不变」。这两个判断都不够准确。

真正发生的变化是:低门槛生产能力下放,专业门槛上移。简单说,更多人能做出东西,但真正有价值的岗位,会向规范制定、质量兜底、系统抽象和复杂问题处理集中。

PM 变成产品工程师

在这个新组织中,变化最大的角色是 PM。

过去 PM 的主要输出物是 PRD、流程图、原型图和口头解释。现在这些东西很多都可以收敛成一个交互可运行的页面。于是 PM 的角色自然往「产品工程师」移动:他不再只描述需求,他直接构造需求的运行形态。

但这里一定要说清楚,PM 写了前端代码,不等于 PM 变成前端工程师。PM 的责任边界还是业务逻辑,不是工程治理。

PM 需要对什么负责:

  • 用户路径是否闭环
  • 页面状态是否完整
  • 文案、条件、分支、空态是否符合业务预期
  • Mock 数据结构是否表达真实业务语义
  • 生成代码是否遵守团队规定的基础组件和样式约束

PM 不需要对什么负责:

  • 全局状态架构是否优雅
  • 包体积是否最优
  • 路由切换是否引入副作用
  • 渲染性能是否达标
  • 工程抽象是否可复用

这些后者还是需要专业前端要接住。

问题不是让 PM 承担更多,而是让 PM 把过去停留在文档层的业务表达,直接推进到代码层。这样整个团队拿到的是可执行的业务定义,不是抽象说明书。

设计师变成立法者

设计角色也会变。

当 PM 可以直接借助 AI 生成页面时,设计师如果还把大量时间耗在单页面高保真稿上,投入产出比会快速下降。更有价值的位置,是维护设计系统和机器可消费的样式规范。

设计师的工作重心会变成:

  • Design System
  • 样式 token
  • Visual QA

也就是把颜色、间距、字体、圆角、阴影、组件状态、可访问性规范,从设计稿资产转化成代码和配置资产。比如 Tailwind config、CSS variables、组件规范、图标集、交互动效约束。这些东西一旦进入 AI 生成上下文,PM 或其他角色在生成页面时就不容易跑偏。

说白了,设计师从「画每一张图」转向「制定法律」。立法做得越完整,AI 和 PM 生成的页面越像一个系统,而不是一堆拼起来的截图。

前端变成守门员和重构者

前端是最容易被误读的角色。很多人看到 PM 可以生成页面,就开始下结论:前端会被干掉。实际情况通常相反。前端从体力活里解放出来之后,工程价值反而被放大了。

因为 PM 生成的页面,最常见的问题不是「长得不对」,而是「能跑但脆」。

可能会有大量这类代码:

  • 一个组件里塞满请求、状态、渲染、事件处理
  • loading、error、empty 三种状态缺两种
  • useEffect 依赖写错
  • 切页面回来状态丢失
  • 没有 abort controller,快速切换导致竞态更新
  • 表单校验只校 happy path
  • 直接把 mock 字段名写死在视图层,后续接口一改全炸

这些问题不是 PM 能解决的,也不是 AI 自己会主动解决的。前端真正的工作变成三块:

第一块,Review。
不是审美式 review,也不是找缩进。重点看稳定性、边界条件、状态管理、组件职责、可维护性。

第二块,Refactor。
把单文件逻辑拆成组件、hooks、domain service,把团队组件库接上,把状态流收敛,把重复逻辑抽掉。这个过程需要持续迭代,做到团队规范中,给到 PM 生成的上下文中。

第三块,Integration。
把 Mock 替换成真实 API,处理鉴权、缓存、错误回退、重试、并发、路由守卫、埋点、监控。

这个阶段的前端,更像体验架构师和质量守门员。

后端变成能力供应商

后端角色也会收缩:提供稳定、安全、确定性的能力边界。

如果前端页面能更快被构造出来,后端的价值就不在于「接收一份文档然后写 CRUD」,而在于把系统能力以 API 或 Tools 的形式稳定暴露出来。尤其是 AI Agent 场景下,后端实际上在扮演工具供应商。

后端重点关注四类问题:

  • 契约稳定性
  • 权限与安全
  • 幂等性与确定性
  • 可观测性与审计

前端、PM、Agent 都可能直接消费这些能力。一旦接口设计漂、错误码混乱、鉴权模型含糊,整个上层生成式开发就会持续返工。AI 会把不稳定接口的问题放大得很明显,因为它极度依赖上下文中的确定性。

流程重构

只讲角色变化不够,需要把研发流程改成适合 AI 的形状。下面是一版比较能落地。

需求具象

第一阶段,需求不再先写成长文档,而是先具象成可运行页面。

PM 独立生成前端

PM 拿着明确业务目标,直接在受控环境里生成页面代码。这个页面至少要包含:

  • UI 布局
  • 基本交互
  • 主要状态流转
  • Mock 数据
  • 核心校验逻辑
  • 空态、错误态、加载态

特别强调最后三项。很多团队让 PM 生成页面,只盯着主流程,结果页面演示时很漂亮,一联调全是坑。空态、错误态、加载态必须在这个阶段一起生成,否则后面每一轮都要补票。

禁止黑盒交付

PM 生成页面这件事,最怕黑盒。也就是只看效果图对不对,不管代码是否落在团队跑道上。

所以团队必须先准备好脚手架和护栏。比如:

  • 必须使用指定组件库
  • 必须使用既定样式 token
  • 必须遵守目录结构
  • 必须使用指定的数据获取模式
  • 必须输出可运行测试脚本
  • 必须带 feature flag 接入点

否则 PM 生成的代码看似完成任务,实际是给前端制造二次工程。

不要让 PM 从空白页面开始提示 AI,而是给一个完整的基础模板,再让 AI 在模板内填充。这个模板的价值极高,它决定了团队是让 AI 在高速公路上开车,还是在野地里乱冲。

契约握手

第二阶段,前端页面和后端能力正式握手。

前端反定义接口

以前是后端先定义接口,前端去适配。现在很多场景可以反过来:前端页面里需要什么数据结构,先自然长出来,再把这份结构抽取成契约。

这里的关键点是「自然长出来」之后,必须立刻标准化。不能停留在 JS 对象字面量和口头描述。最好直接生成:

  • JSON Schema
  • TypeScript Interface
  • 字段说明
  • 校验规则
  • 错误码预期
  • 状态迁移说明

做到这一步,后端看到的就不是「我要一个用户列表接口」,而是一个明确的数据契约:字段、类型、可空性、分页、排序、过滤、异常响应、鉴权要求,全都摆明。

这一步会明显减少沟通损耗。后端可以少看很多无效文档,直接围绕契约开发。

后端提供确定性能力

后端接手后,不建议只机械实现接口。要借这个机会把系统能力做成稳定工具层。

如果团队本身就在做 Agent 或工作流系统,这里更应该统一成 Tools 注册机制,而不是散落一地的临时 API。因为未来调用这些能力的,未必只有前端页面,还有内部 Agent、自动化流程、运营工具、甚至外部合作系统。

后端在这一阶段最常踩的坑有几个:

第一,返回结构不稳定。
今天 success 返回 data,明天又套一层 payload。前端 AI 生成代码时非常怕这个,会反复产生错误适配。

第二,错误码语义不清。
鉴权失败、参数错误、资源不存在、限流、业务冲突全都混成一种 message,联调体验很差。

第三,幂等性缺失。
AI 驱动的调用链经常会重试,如果创建类接口没有幂等控制,很容易重复写入。

第四,缺少审计。
AI 或 PM 直接驱动系统能力时,操作路径更分散,审计日志不能省。

联调瓶颈

真正的瓶颈通常出现在第三阶段:联调、测试、排雷。

到这一步,很多团队会发现:AI 把前半段提速提得很猛,但最后这段并没有自动消失,甚至更重。因为前面生成得越快,后面积累的隐患越多。

Review 的重点

前端 reviewer 在这一阶段要非常克制。不要把 review 做成审美比赛,也不要上来就要求所有代码重写一遍。真正该看的,是那些会直接影响稳定性和维护成本的问题。

我会把检查项固定成一张表,至少覆盖这些内容:

  • 异步请求是否有取消机制
  • Loading、Empty、Error 状态是否完整
  • 表单提交是否防重入
  • 路由切换是否会遗留脏状态
  • 全局状态有没有被随意污染
  • 组件职责是否过载
  • 是否接入统一埋点与异常上报
  • 是否存在明显重复逻辑
  • 是否绕过设计系统直接手写样式
  • 是否引入不必要依赖

这样做的好处是,review 从个人经验驱动变成组织标准驱动。AI 时代 PR 量会明显增加,没有标准化检查单,review 质量一定掉。

测试和验收左移

如果团队已经允许 PM 直接交付前端页面,那测试必须同步左移。否则生成速度越快,测试越像消防队。

谁生成页面,谁至少生成对应的 E2E 测试脚本。这个要求不算过分。因为页面交互路径是 PM 最熟的,AI 根据这些路径生成 Playwright 或 Cypress 脚本,命中率通常不低。

在生成代码时,PM 已经完成了第一次的验收。

测试左移不是为了把测试岗位干掉,而是为了把最贴近业务逻辑的验证提前到需求具象阶段。后面的 QA 才能把精力放在组合场景和系统回归上。

发布保险

第四阶段是发布与可观测性。这在 AI-Native 组织里是核心流程。

因为一旦允许更广泛的人群借助 AI 产出代码,线上报错率几乎一定会上升。组织必须提前接受这个现实,然后把监控和发布控制建好。

前端监控

前端监控一定要上,而且要够细。

至少需要这些能力:

  • 错误堆栈捕获
  • Source map 还原
  • 用户会话回放
  • 性能指标采集
  • 接口失败聚合
  • 版本维度对比

像 Sentry、LogRocket 这类工具的价值,在 AI 场景下会更高。因为当报错出现时,你可以把错误堆栈、用户操作轨迹、接口上下文直接喂给 AI,让它先生成修复建议,再由责任人确认。这种协作模式对定位简单问题很有效,尤其是 UI 状态错乱、边界遗漏、类型不匹配这类故障。

但不要误解成「有了 AI 修 bug 就轻松」。线上修复的难点从来不只是生成 patch,而是确认根因、评估影响面、决定是否回滚、验证是否引入新问题。这些仍然要靠工程纪律。

灰度发布

Feature Flag 在这个模式里几乎是必需品。

原因不复杂:当业务页面大量由 PM + AI 参与生成时,组织需要一个足够便宜的试错阀门。否则每次上线都把全量用户暴露在新逻辑下,风险太高。

把 Feature Flag 从「重要功能才加」提升为默认机制。尤其是下面这些场景必须强制:

  • 新页面替换旧页面
  • 新流程替换旧流程
  • 高价值转化路径
  • 涉及支付、权限、数据修改的动作
  • 首次由非传统研发角色主导产出的功能

灰度期间要明确看哪些指标,不要只看有没有报错。还要看:

  • 转化率变化
  • 页面停留时长
  • 关键按钮点击率
  • 表单提交成功率
  • 接口失败率
  • 用户退出路径

这些数据能帮助团队判断问题究竟出在代码稳定性,还是业务交互本身。

基建先行

前面这些流程能否跑起来,核心在于基建。没有基建,AI-Native 组织会迅速退化成提示词手工作坊。

可以先建三类基础设施。

护栏脚手架

这是第一优先级。

它包括:

  • 项目模板
  • 目录规范
  • 统一组件库
  • 设计 token
  • 数据获取封装
  • 表单与校验约定
  • 埋点和监控 SDK
  • 测试模板
  • CI 预设规则

这套东西是整个组织 Harness 的部分。

Prompt 资产

很多团队低估了 Prompt Library 的价值。实际上,当非工程角色也开始产出代码时,提示词模板本身就是组织资产。

可以把高频场景沉淀成标准模板,比如:

  • 列表页生成模板
  • 表单页生成模板
  • 详情页生成模板
  • 多步骤流程模板
  • 异常状态模板
  • E2E 测试生成模板
  • 文档反向提取模板
  • 重构任务模板

这些模板不是为了追求文风统一,而是为了把团队积累的工程约束嵌进去。你希望 PM 每次生成页面都自动包含 loading、error、empty、feature flag、埋点、测试入口,那就别靠口头提醒,直接写进模板。

CI/CD 闸门

AI 时代,CI/CD 不能只是跑个 lint。它必须承担质量闸门职责。

最低限度我会要求:

  • Lint
  • Type check
  • Unit test
  • E2E smoke test
  • Bundle size 检查
  • 安全扫描
  • 依赖合规检查
  • 自动化预览环境
  • 灰度发布流水线
  • 一键回滚

如果团队现在连这些都没有,先别急着搞 PM 交付前端代码。真把口子放开了,组织会先被事故教育一遍。

常见误区

这是几个最常见的误区。

把 AI 当外包

这是第一类坑。很多团队使用 AI 的方式,本质上和用廉价外包没区别:把需求甩出去,拿回代码,自己不理解也不维护。

这个模式短期可能看起来很省,长期一定出问题。因为系统复杂度没有消失,只是被包进了你看不懂的代码里。等线上出事,你会发现团队没有形成任何新的内生能力。

只提速前半段

第二类坑是,只提速需求到页面这一段,不提速后面的治理、测试、发布、观测。结果就是项目看板前面一片绿,最后两列全堵死。

AI 会把组织瓶颈照得更亮。以前慢慢暴露的问题,现在两周就能堆出来。你不改后半段流程,前半段越快,堵得越严重。

容忍脏代码,也容忍脆弱代码

我能接受 PM 生成的代码不够优雅。变量命名一般、文件拆分普通、抽象层次一般,这些问题都能后续治理。真正不能接受的是脆弱代码:没异常处理、没监控、没测试、状态流断裂、提交会重复、接口失败直接白屏。

脏和脆是两回事。组织必须把这条线划清楚。

用 AI 替代判断

第四类坑最隐蔽。团队开始迷信 AI 给出的架构建议、重构建议、性能建议,仿佛它给出了答案,工程判断就可以省掉。

这是错的。AI 非常适合提供候选方案、加快实现、缩短试错周期,但它不拥有系统上下文,不承担线上责任,也不会为半年后的维护成本买单。架构判断、边界判断、风险判断,最终还是人做。

最后

如果一定要用一句话概括我对 AI-Native 软件研发组织的理解,那就是:把代码生产普遍化,把工程责任集中化

前者意味着更多角色可以直接参与构造软件。PM 可以交付可运行页面,设计可以把规范直接编码,后端可以把能力做成工具供全组织消费。后者意味着系统质量不能民主化。责任必须更清晰,护栏必须更强,发布必须更克制,观测必须更细。

「PM 交付前端代码」这件事很容易被包装成一个新故事。真落地时,它首先是工程纪律问题,然后才是工具问题。团队如果没有建立所有权,没有把代码当唯一真相源,没有把契约、测试、监控、灰度这些基础设施补齐,这条路大概率会走成一场持续返工。

反过来,如果这些条件具备了,AI 确实会把组织推到一个新阶段。PRD 不再是那份总会过期的文档,代码本身就是需求表达。角色不再围着工种转,而是围着责任和系统边界重组。研发流程不再把大量时间浪费在翻译需求上,而是更早进入真实问题:契约、质量、异常、性能、发布。

这才是我理解的 AI-Native。

以上。

AI Coding 时代如何有效度量研发效能

在 AI Coding 时代,当我们说提升效能 50%,从老板的角度,那应该要干掉 50% 的人。

但又不能真这么干,这是一个简单的财务逻辑,也是一种本能的反应。

但研发又不是完全标准化的流水线。AI 在各环节都有提速,但对于需求理解的一致性,线上兜底,发布治理这些环节没法完全同步提速。

人是可以砍,但最终系统脆弱性、技术债务和交付风险一起放大。

以 AWS 为例,公众知道的类似线上故障发生不止两次了。

并且在一些大的公司,也出现了开发人员不知道自己写的是什么的情况,对于大公司一套巨大的工程体系,如果是一个完全的黑盒,没有人知道里面发生了什么,出现大的问题只是迟早的事情。

聊远了点,回到今天的主题,如何有效的度量研发效能。

当我们用上 AI Coding 之后,在上面所说的整体提效的逻辑中,我们需要细化这个效能的度量逻辑。

同样规模的团队,能不能交付更多有效价值,能不能把交付周期压短,能不能在不明显增加事故和历史债务的前提下,把过去做不到的事情做起来。

从指标的逻辑来看,DevOps 里那套大家已经很熟的「四个指标」——部署频率、交付周期、变更失败率、平均恢复时间依然是很能打的一组指标。尤其是 TTM,也就是从需求进入系统到真正产生用户价值的时间,还是王牌指标。

AI 时代,研发效能的核心指标体系要刷新,但不能推倒重来。

整个度量的逻辑不仅仅在于指标,同时也在于到底把指标绑在什么对象上,怎么解释,怎么防止它们被 AI 放大之后失真。

度量谁

一个问题,AI 产出要不要单独度量?

建议是:可以记录,不要单独考核。

因为 AI 没有责任主体。它不会背 SLA,不会参加事故复盘,也不会在需求失败时承担后果。

如果我们把「AI 生成代码占比」或者「AI 采纳率」当核心 KPI,很快就会把团队带进一个很熟悉的坑:为了优化指标而优化行为,最后牺牲真实交付质量。

研发效能度量一定要有清晰主体。这个主体通常有三层:

  • 工程师个体
  • 团队
  • 价值流或产品线

在 AI 时代,我更建议把主分析单位放在团队和价值流,但个体数据也需要通晒,人与人还是需要比较,并且人的实际使用情况也需要观测和度量。

说到个体度量,可能会有人觉得开始卷了,回到了粗暴管理

我觉得个体数据要看,并且要公开到一定程度。否则团队里谁在真正把 AI 用进生产,谁还停留在传统写法,谁能稳定地产出高质量变更,谁在用 AI 快速制造垃圾代码,管理层根本看不见,辅导也无从下手。问题从来不在于能不能比较,问题在于拿什么比较,以及比较之后准备用它干什么。

可以把「个体可观测」和「个体直接考核」分开。前者要做细,后者要克制。个体层的数据主要解决三类问题:第一,识别使用差异。第二,识别能力短板。第三,识别风险人群。比如有的人 AI 使用频率很高,但交付周期没有改善,返工率还在上升,这通常不是工具问题,是任务拆解、约束描述、结果校验出了问题。还有一种人,表面上 AI 使用不多,但需求稳定、事故极少、关键模块掌控力强,这类人往往承担了大量隐性复杂度,单纯看「人均产出量」会被严重低估。

所以个体层该看的,不是「生成了多少」,而是「借助 AI 之后,个人交付行为发生了什么变化」。可以重点盯几组数据:需求从领取到合并的中位时长、PR 平均大小、评审往返次数、回退率、线上问题关联率、测试补充情况、跨模块变更占比、AI 建议采纳后的修改幅度。这里面真正有价值的,不是某个数字本身,而是前后变化和人与人之间的分布差异。一个人 AI 采纳率高,不说明他强;采纳率高、评审一次过、上线后稳定,这才说明工具真的转化成了产能。反过来,另一个人采纳率也高,但 PR 越来越大、review 来回打架、上线后热修频繁,这种数据就已经在报警了。

个体数据为什么要通晒?

团队协作里,很多能力本来就是相对的。谁的需求吞吐稳定,谁总能把复杂变更压在可控范围里,谁的变更老是把测试链路打爆,谁对 AI 的依赖已经超过了校验能力,这些不能永远藏在「一团和气」后面。通晒的价值是建立真实参照系。工程团队里最怕的一种状态,是大家都觉得自己做得差不多,实际上产出质量、稳定性、问题密度差了一倍以上。数据如果不拉平,组织就只剩印象管理。

当然,个体通晒有前提。第一,口径必须统一。第二,不能只晒单一指标。第三,必须配上下文。比如一个人长期负责遗留系统改造,变更失败率高一点、交付周期长一点,很正常;另一个人长期做边缘功能,吞吐高也不稀奇。脱离任务难度做横向比较,最后一定会逼着大家抢简单活。我的经验是,个体层至少要把任务类型、系统风险等级、需求大小这几个维度一起带上。不然表面上是在做精细化管理,实际上是在奖励投机。

团队层和价值流层还是主轴,因为真正的交付结果最终只能在这两层闭环。一个工程师再强,也没法单独决定发布窗口、联调效率、测试环境、跨团队依赖和灰度策略。AI 时代尤其如此。代码写快以后,瓶颈更容易从个体编码能力转移到团队协作和系统机制上。所以如果一个团队整体 TTM 没降、变更失败率在升、MTTR 也没有改善,那就算团队里有几个人个体数据很亮眼,也不能说明这个组织真的变快了。很多管理者容易被「明星工程师 + AI」的局部高产迷惑,这是很危险的。效能度量最终看的是系统,不是看谁在局部冲得猛。

价值流这一层更关键,因为它决定了管理层看到的是局部繁荣,还是真实效率。一个需求从业务提出到用户可用,中间穿过产品、研发、测试、运维、合规、数据、客服,任何一个环节卡住,前面所有 AI 提速都白搭。很多团队以为自己效能不差,问题出在开发不够快;把价值流拉直一看,开发可能只占整个周期的 20%。剩下 80% 都耗在等待、确认、返工和协调上。这个时候你还在研究个人 AI 采纳率有没有上去,说实话,方向已经偏了。

所以,三层都要度量,但角色不同。

  • 个体层,解决的是识别差异、暴露问题、推动辅导。
  • 团队层,解决的是交付责任和工程能力。
  • 价值流层,解决的是端到端效率和组织瓶颈。

如果非要再说得更落地一点,可以这样处理:

  • 个体层数据全量采集,有限通晒,谨慎用于绩效
  • 团队层数据作为正式经营指标,进入月度复盘
  • 价值流层数据进入管理层决策,用来推动跨部门改造

这里还有一个问题:AI 使用情况本身,确实会逐渐演化成个体能力差异的一部分。今天还可以说是工具习惯差异,再过一段时间,它会越来越接近工程生产方式差异。有人能用 AI 快速完成问题拆解、方案比选、代码生成、测试补全、文档整理,再自己完成严格校验;有人只是把 AI 当高级补全,甚至生成什么就提交什么。两者的产出质量和成长速度,一定会拉开。这个差异如果不观测,组织是在主动放弃识别新能力结构的机会。

还是那句话,观测不等于迷信,比较不等于唯排名论。个体层数据要服务于两件事:培养更强的人,提前发现风险。它不能把团队带回那种老派的、只会按数字压人的管理习惯。因为 AI 时代最不缺的,就是表面上很漂亮的数字。真正缺的,是能把这些数字放回具体工程语境里解释清楚的人。

量结果

我一直不太赞成把研发效能拆成「过程指标 vs 结果指标」两个完全对立的东西。工程里没这么清楚。很多大家嘴里的结果指标,实际上掺了很多过程含义。代码行数就是典型例子。

很多人说 LOC 已经过时,这话只说了一半。更准确一点:LOC 从来就不是好的一线效能指标,在 AI 时代更差。

原因有三个。

  • 生成成本塌了:过去一个人写 500 行和写 50 行,投入成本通常不同。现在 AI 补全、生成、重构、搬迁代码,几分钟就能吐出成百上千行。代码行数和人类投入的相关性被打穿了。
  • 噪音变大:AI 很容易生成「看起来很完整」的实现:参数校验、日志、适配层、重复样板、冗余抽象全都给你带上。LOC 涨得飞快,但业务价值未必增加。
  • 债务被掩盖:最麻烦的是第三点。AI 会让代码库存增长速度明显快于架构治理速度。表面上看,产出变高了;往后看,维护成本、理解成本、回归成本都在涨。LOC 会把这个问题盖住。

所以代码行数其实没有啥意义,只当成代码影响范围的辅助信号,别当产出指标。

那真正该量什么结果?

可以分三类。

交付结果

这是最基础的一层:

  • 需求交付数量
  • 需求交付周期
  • 按期上线率
  • 有效发布次数
  • 版本回退率

这里要提醒一下:上线需求数也很容易失真。
因为需求切得越碎,上线数越好看;但碎到一定程度,用户感知价值可能没有提升,反而多了协调成本。

所以需求数量一定要配合需求粒度标准化。最少要把需求分成几类:小修复、小功能、中型功能、跨系统项目、技术治理项。不同类型分开统计,不然一张表里什么都看不出来。

业务结果

如果团队做的是业务研发,最终还是得往用户影响上落。常见的:

  • 某类功能从提出到用户可用的时间
  • 用户覆盖范围
  • 功能使用率
  • 转化率变化
  • 关键漏斗改善
  • 客诉下降
  • 线上稳定性对收入的影响

很多技术管理者不敢碰业务指标,怕研发背锅。我反而觉得该看,但不要简单归因。业务结果可以做关联分析,不要粗暴做责任归因。比如某个推荐功能两周上线了,但实验效果一般,这不等于研发效能差。研发效能差,应该体现在 TTM 过长、试验成本过高、回滚困难、迭代慢,而不是实验结论本身不好。

工程结果

如果团队做的是平台、基建、中间件、工具链,不能硬套 GMV、转化率这种业务指标。这个场景下我更看这些:

  • 接入团队数
  • 接入周期
  • 平台能力调用成功率
  • 构建时长变化
  • 测试时长变化
  • 故障发现提前量
  • 资源成本变化
  • 事故数和事故影响面
  • 研发人均可支撑服务数

基建团队最吃亏的一点,是价值释放往往滞后,而且分散在别人的效率提升里。如果你只盯上线需求数,这类团队会被系统性低估。

TTM 还是核心指标

如果只能保留一个指标,我还是会选 TTM。

这里说的 TTM,不是立项到上线的日历时间,而是价值从进入研发系统到到达用户手里的有效时间。很多公司嘴上讲敏捷,实际上量的是开发开始到提测结束,这根本不是 TTM。

为什么 TTM 在 AI 时代更重要?

因为 AI 最直接改变的,就是局部生产速度。代码写快了,单测补得快了,文档初稿也快了。问题是,这些加速会不会真的传导到业务价值交付,完全不确定。

我见过最典型的一种情况:

  • 开发编码时间下降 40%
  • PR 数量上涨 2 倍
  • 评审负担上涨 60%
  • 测试回归时长上涨 35%
  • 发布前冻结窗口变长
  • 最终需求上线周期几乎没变

如果你只看编码侧的数据,会得出一个完全错误的结论:AI 大幅提升了效能。
如果你看 TTM,问题一下就暴露了:加速发生在局部,瓶颈转移到了下游。

所以 TTM 的价值就在这里。它不关心你用了什么先进工具,它只看最终有没有把价值更快交出去。

TTM 怎么拆

TTM 不能只看一个总时长,否则只能看热闹。要拆段看:

  • 需求澄清耗时
  • 方案设计耗时
  • 开发耗时
  • 评审耗时
  • 测试耗时
  • 等待发布耗时
  • 灰度验证耗时

拆完之后,你才知道 AI 真正帮到了哪一段,堵在了哪一段。

另外,在 AI 时代,这种拆段是否合理,是否可以合并不同阶段或角色,让一些信息的流转内化为个人的思考逻辑,实现端到端的 AI 化。

比如,产品经理直接从需求到前端代码的实现。

看分布,不看均值

TTM 最忌讳只看平均值。平均值非常会骗人。正确看法至少要有:

  • P50
  • P75
  • P90
  • 超过阈值的长尾需求占比

因为 AI 往往会优先优化简单需求。这样 P50 可能很好看,P90 反而更差。原因也简单,简单需求被快速吞掉之后,系统里剩下的都是复杂需求、遗留系统改造、跨域联动项目,长尾会更长。

如果你只看均值,会误判整个系统在变快。

四个指标

DevOps 四指标在今天依然能打,但口径需要有一些升级。

部署频率

部署频率比 LOC 强太多。因为它至少是靠近真实交付动作的。代码写了多少行没人关心,真正有意义的是你有没有把变更安全地推到生产环境。

但部署频率也不能裸看。

高频不等于高效

AI 上来之后,一个常见变化就是团队更愿意切小 PR,发小版本。这个方向本身没问题,小批量交付通常更安全。问题在于,有些团队把一个正常需求拆成大量低价值、低独立性的碎发布,频率上去了,用户价值没上去,测试和发布成本反而更高。

所以我一般会同时看三个维度:

  • 单位时间部署次数
  • 每次部署的有效变更量
  • 每次部署的独立可验证价值

没有后两项约束,部署频率很容易变成表演数据。

适用场景不同

业务团队和基建团队的部署频率口径也不能完全一样。

业务团队可以看:

  • 每周或每日生产发布次数
  • 灰度发布次数
  • 从功能完成到触达用户的次数

基建团队更适合看:

  • 核心服务变更发布频率
  • 非工作时段紧急发布占比
  • 配置变更自动化发布比例
  • 平台工具链版本迭代频率

基建团队很多时候更强调稳定和兼容,追求极端高频未必合理。比如数据库、中间件、网关这类系统,频率太高反而可能说明变更管理有问题。

交付周期

交付周期本质上是 TTM 在工程流水线里的展开版。通常从代码提交到生产运行,也有人从需求进入开发开始统计。具体口径可以按团队定,但必须固定。

AI 时代交付周期最容易出现两个假象。

  • 提交变快了,交付没变快: 这是前面说的局部提速问题。AI 让提交更快,但后续验证没跟上,周期不会实质下降。
  • PR 变多了,周期看起来更短:如果团队把一个需求拆成多个极小 PR,每个 PR 周期都很短,报表会很好看。但从需求视角看,整体仍然很慢。所以我建议同时维护两套口径:一个是 PR 级交付周期,另一个是需求级交付周期。PR 级用于观察工程流水线摩擦,需求级用于看真实业务交付。只看其中一个,都会失真。

变更失败率

这个指标在 AI 时代的重要性实际上上升了。

因为生成式编码提高了变更速度,也提高了「错误以正确形式出现」的概率。以前很多错误是写不出来,现在是能很快写出一个逻辑闭环、风格统一、还能过部分测试的错误实现。它更隐蔽,也更容易通过表面检查。

可以把变更失败率定义得更工程化一点,至少包含这些事件:

  • 发布后触发回滚
  • 发布后引发 Sev 事故
  • 发布后触发热点修复
  • 发布后造成核心指标异常
  • 发布后引起客户可感知故障

如果定义太窄,只算重大事故,这个指标会钝化。定义太宽,又会把正常试错算进去。团队需要自己定边界,但边界一旦定了就别频繁改。

AI 对失败率的影响机制

这里有几个常见来源:

  • 生成代码对边界条件覆盖不足
  • 引入不必要抽象,增加理解偏差
  • 与历史代码风格和隐式约束不一致
  • 测试代码同样由 AI 生成,出现「同源缺陷」
  • 变更面比工程师主观预期更大

我自己比较警惕第四点。很多团队现在喜欢让 AI 顺手补测试,看起来很完整。但如果实现和测试都建立在同一段错误理解上,测试通过并不能证明正确。

所以在高风险变更里,测试不能只依赖生成。关键路径一定要有人做反例设计。

平均恢复时间

很多团队对 MTTR 的重视程度不够,尤其是业务团队。实际上,AI 时代恢复能力的重要性在上升。

当代码生成速度变快,进入生产环境的变更更多、更碎、更频繁,系统面对故障的概率和复杂度都在变化。你不一定能把每次变更都做得完美,但你必须能快速止血。

MTTR 的价值在于衡量团队是否真正具备工程韧性。这个指标背后对应的是一整套能力:

  • 监控和告警是否有效
  • 变更是否可追踪
  • 是否支持快速回滚
  • 灰度和开关能力是否完善
  • 值班机制是否靠谱
  • 故障定位信息是否充分

很多团队前面三个指标都好看,MTTR 很差。这样的系统经不起规模化 AI 变更。因为一旦出事,恢复慢会把前面所有频率和周期优势全吃掉。

历史债务

AI Coding 真正会在一年后把团队拉开差距,这里的差距在于谁更早处理历史债务。

这个问题现在还没有被足够重视。但是实际中已经越来越严重了。

因为短期内 AI 会制造一种繁荣感:交付更快,PR 更多,需求吞吐上升。可如果代码库质量、模块边界、测试资产、文档一致性没有同步改善,债务会以更快速度积累。

AI 会怎样放大债务

几个很典型的模式。

  • 重复实现增多:工程师直接让 AI 在局部上下文里生成功能,很容易绕过现有抽象和公共能力。短期最省事,长期就是重复轮子到处长。
  • 中间层膨胀:AI 很擅长生成 adapter、wrapper、facade 这类看起来规整的中间层。问题是很多层根本没有必要,只是为了让局部代码更顺。半年后系统会变得非常厚,排障和重构都很痛苦。
  • 测试资产劣化:生成测试很快,真正有效的测试不快。团队如果只追求覆盖率,很快就会积累大量低价值测试:断言脆弱、依赖实现细节、执行慢、维护成本高。最后 CI 时间越来越长,大家开始跳过测试。
  • 文档与实现漂移更快:AI 可以快速生成设计说明、变更记录、接口文档初稿。但只要流程里没有强约束,这些文档过几周就过时。文档数量增加,不代表知识管理更好。
  • 债务怎么量:技术债务很难精确,但不代表不能量。至少看四组信号:

    • 重复代码比例或重复能力点数量
    • 关键模块复杂度变化
    • 测试执行时长与稳定性
    • 历史模块变更失败率和恢复时长

指标落地

说一堆指标,如果最后只是做一张月报,那基本没用。研发效能度量要落地,大概可以看三点:统一口径、自动采集、和决策绑定。

统一口径

很多团队最大的问题不是没数据,是每个人嘴里同一个词代表不同意思。

比如「交付周期」,有人从排期开始算,有人从开始开发算,有人从代码提交算。你拿这三种数据做横向比较,结论一定错。

所以第一件事就是给每个指标下工程定义:

  • 起点是什么
  • 终点是什么
  • 谁负责标记状态
  • 异常情况怎么处理
  • 统计周期是什么
  • 看均值还是分位数

这一步很枯燥,但躲不过去。没有口径统一,报表越华丽越危险。

自动采集

凡是靠人手填的效能数据,最后都会漂。

我建议优先从这些系统自动取数:

  • 需求系统
  • Git 仓库
  • CI/CD 平台
  • 测试平台
  • 线上监控与事故系统
  • 发布平台
  • 值班和告警系统

AI 时代还可以补一些辅助数据,比如:

  • AI 建议采纳率
  • AI 生成代码在最终提交中的占比
  • AI 相关变更的回退率
  • AI 生成测试的失败分布

但这些只建议做诊断维度,不建议直接进核心看板。

和决策绑定

指标如果不进入真实决策流程,就只会变成汇报材料。

可以把不同指标绑定到不同节奏:

周维度

团队看流水线摩擦:

  • PR 周期
  • 构建失败率
  • 测试时长
  • 发布次数
  • 热修次数

月维度

管理者看交付和稳定性:

  • TTM 分布
  • 部署频率
  • 变更失败率
  • MTTR
  • 技术债务信号

季度维度

看结构性问题:

  • 跨团队依赖导致的等待占比
  • 核心系统复杂度变化
  • 自动化覆盖关键路径的比例
  • 平台能力复用率
  • 人均支撑规模变化

只有当指标驱动了人力投入、架构治理、流程调整,度量才算产生价值。

常见误区

  • 误区一: 拿 AI 使用量替代研发效能。 比如:人均每天调用 AI 多少次,AI 生成了多少代码,采纳率多少,这些数据可以看工具渗透率,不能代表团队变快了,更不能代表交付变好了。高采纳率有时候只是因为团队在写更多样板代码。
  • 误区二:把效能问题当管理问题。 一看到周期长,就加日报、加审批、加同步会。这个思路在 AI 时代更危险,因为编码加速之后,组织摩擦会成为主要瓶颈。继续加管理动作,只会让非编码时间更长。效能最后还是要回到工程根上:架构边界、测试自动化、环境一致性、发布能力、可观测性、模块治理。
  • 误区三:把所有团队放在一套指标下排序。业务、基建、平台、安全、数据团队的工作性质差异很大。统一看板可以有,统一排名很容易把组织带偏。
  • 误区四:只看短期提速,不看长期维护成本。 AI 最容易制造的错觉就是这个月吞吐上涨了,于是大家默认效能提升。可如果未来三个月回归变慢、故障变多、重构困难,这个月的漂亮报表只是透支。
  • 误区五:只看平均值。平均值会把长尾、异常、结构性阻塞全部抹平。工程管理里,很多真正该解决的问题都藏在 P90 之后。

最后

研发效能从来不是一个分数问题,它是一个约束系统问题。得回答下面的问题:

  • 价值有没有更快交出去
  • 变更是不是足够安全
  • 出问题能不能快速恢复
  • 现在的速度有没有透支未来

这四件事里,TTM 仍然是排第一的。因为业务不会为你写了多少代码买单,也不会为你调了多少次 AI 买单。业务只关心一件事:价值多久能到用户手里。

AI Coding 改变了工程生产函数。

但它没有改变研发效能的基本物理规律。局部速度不等于系统速度,生成能力不等于交付能力,短期吞吐不等于长期效率。

不要急着发明一套全新的效能宗教。先把工程里的主干指标守住,把主体放对,把业务团队和基建团队分开看,把技术债务纳入视野,再去观察 AI 到底在哪些环节真的创造了增益。

这样量出来的数据,才能指导决策。否则报表再热闹,也只是另一种噪音。

以上。

Cursor AI 编程让我的编码效率提升了 10 倍

从 2022 年 6 月底正式上线的 GitHub Copilot 开始,AI 编程逐步开始进入工作的环境中,开始成为一个真正的 Copilot。据当时微软的评测报告以及当时公司内部使用的问卷反馈调查显示提升效率大概在 10% ~ 30%。

这一数据在当时已经令人惊叹,但随着大语言模型的飞速发展,以及 Cursor、Windsurf 等新一代 AI 编程工具以更直接的 IDE 方式的加入,效率提升的天花板被彻底打破。

从个人体感来说,部分场景有超过 10 倍的提升,特别是通用类功能实现,如爬虫、CRUD 功能、脚本类处理等。但并不等于以前一个项目要 10 个人,现在只需要 1 个人了,毕竟编码在整个项目过程中只占用的时间资源的一部分。

而且,这里的提升并不是说给 AI 说一句话:「给我完成 XXX 功能」,就能直接提效 10 倍 ,当前阶段,我们还需要有一些使用技巧才能较好的使用 AI 编程,让 AI 编程成为一个实实在在的助手。以下为过程中的一些注意事项和一些可能遇到的问题。

1. 使用 AI 编程的注意事项

1.1 不要求一次性完成所有的工作

AI 编程工具暂时并不擅长处理复杂且模糊的任务,而是更适合解决清晰、具体的小问题。因此,任务分解是高效使用 AI 编程的第一步。

如何实现?

  • 需求分解:将大任务拆解为小模块,可以人工分解,也可以让 AI 协助分解。例如:

    • 开发一个后端服务时,可以分解为:数据库表设计、路由框架搭建、业务逻辑实现、测试用例编写。
  • 框架优先:先让 AI 生成代码框架,例如接口的骨架代码、类和方法的定义,然后再逐步实现具体功能。

以一个简单的任务管理系统为例,你直接告诉 Cursor 「帮我实现任务管理功能」,他会提示你给出更多的输入,比如所要使用的技术栈等等,如果我们输入:请用 python 语言作为后端,vue 作为前端帮我实现任务管理功能。他会给出完整的看起来可以使用的架子,实际不太能用。

如果是在一个已有项目的基础上增加模块,以 CRUD 管理任务来说,较好的做法是:

  1. 分解需求

    • 第一步:设计任务表(表结构设计),也是明确核心需求的过程;
    • 第二步:实现核心的接口和界面;
    • 第三步:添加权限管理,一般是有权限体系,可以给参考或者表结构之类的实现;
  2. 逐步实现

    • 先让 AI 生成数据库表的定义,明确需求及约束;
    • 再生成 API 的路由框架。
    • 最后逐一实现各个功能模块。
    • 在各功能模块上再扩展其它的需求,如在任务添加的时候要调起弹性接口去完成任务等。

1.2 明确和细化需求

明确和细化需求和第一点有一些不同,这里所要表达的是我们在需求描述时要尽可能的明确和细致,以及需要有我们的转化和理解。

当前阶段,我们用 AI 编程并不是把产品需求扔给 AI,而是我们思考过整个实现的过程,有自己的认知后让 AI 来做会更好,当然,这个思考的过程也可以让 AI 来辅助。

  • 明确需求的层级

    假设你需要实现一个用户登录功能,可以先从高层次的需求入手「实现用户登录功能」,然后逐步细化为:

    • 数据库中需要存储哪些信息?
    • 前端需要提供哪些输入?有没有什么安全输入策略?
    • 后端服务的接口设计是什么样的?格式是怎样的?返回码规范是怎样的?
    • 需要哪些验证逻辑?使用 JWT 还是 Auth2.0?有哪些安全策略?
  • 细化到函数级别

    在某些情况下,有必要直接将需求分解到函数的输入输出、核心逻辑或算法。比如:

    • 函数应该接受哪些参数?
    • 输出的结果应该是什么样的?是什么类型的数据结构?
    • 核心逻辑是否需要特殊的算法优化?

以上这个细化的过程也是个 AI 交互的过程,从大到小,从整体到部分,逐步完成整个需求

在使用 AI 编程的过程中,确定需求并细化需求是最难,也是整个过程中最复杂的环节,因为它是对现实世界的建模。

把产品需求没有歧义的描述出来,这个过程远没有很多人想象中那么简单。期待 AI 进一步进化后能优化这部分理解的工作。

1.3 善用 AI 的上下文记忆

AI 编程的生成效果在很大程度上依赖于上下文信息

Cursor 支持上下文记忆功能,可以根据当前项目的代码结构或对话历史生成更精准的结果。并且对于已有代码的项目,提供示例代码给 Cursor 参考,可以帮助它更好地理解项目的整体风格、编码规范以及约定。

  • 参考已有代码

    比如,我们可以将公司内部的编码规约或项目约定通过已有代码的形式提供给 AI,这样生成的代码更符合项目需求,减少后续调整的工作量

  • 让 AI 理解当前代码环境

    在和 Cursor 对话时,可以特别的指出关键代码片段(如数据模型、核心函数),这种方式是为了规避 LLM 的上下文记忆的限制问题,突出当前要解决的问题和场景。

  • 补充上下文

    如果项目中有复杂的业务逻辑或特定的技术约定,可以通过注释、文档或已有代码的形式向 AI 提供相关背景信息。这样,AI 生成的代码不仅能够「跑通」,还更贴近实际需求。如使用 Cursor 的 @ 符号,除了本地的代码、文档、还可以有多模态的图片、外部链接的文档,Web 网页等等。

2. AI 编程使用中的问题及解决方案

在使用 AI 编程工具(如 Cursor、Windsurf 等)时,尽管其效率提升显著,但也有一些问题亟待解决。

2.1 额度不够了

以 Cursor 为例,即使在不大量使用的情况下,Pro 版本(如 GPT-4、GPT-4o、Claude 3.5 Sonnet 的高速请求)两周内就可能用完额度。高级模型的调用成本较高,尤其是当需要生成大量代码或反复调试时,消耗会非常快。

解决方案:

  1. 分工明确,优化工具使用场景

    • 代码相关任务交给 Cursor:专注于代码生成、函数实现等任务,减少对 Cursor 的非核心调用。
    • 知识性问题交给 ChatGPT或其它大语言模型:对于纯知识性或逻辑性的问题,使用 ChatGPT 或其他不限量的模型(如 GPT-3.5 免费版本)来查询。
  2. 分层实现代码

    • 先写框架:在开发项目时,先用 Cursor 生成代码框架,明确主流程。
    • 逐步细化:将需求明确的函数(尤其是复杂的小块代码)交由 Cursor 实现,而非一次性生成庞大的代码段。
  3. 结合其他无限制的大模型

    • 对于通用型函数(如工具类代码、简单的逻辑实现),可以利用免费的语言模型完成。
    • 配合使用多个编辑器(如 Windsurf 、Cursor、豆包),减少单一工具的使用频率。
  4. 节约上下文消耗

    • 避免在上下文中反复输入无关信息,尽量精简对话内容。
    • 善用工具内的上下文管理功能,如 Cursor 提供的 Add context@ 引用功能,将关键信息外部化,减少重复输入。

当然,对于不差钱的小主来说,可以忽略此问题。

2.2 上下文限制:会「失忆」

当前的 LLM 上下文窗口有限,当输入信息超出限制时,模型可能会「遗忘」之前的内容。这种「失忆」表现尤其明显,例如在多次会话后,最前面的一些关键信息可能会被遗忘,导致生成的代码出现不一致的问题。

解决方案

  1. 简要总结关键信息

    • 当模型开始「失忆」时,可以总结项目的关键信息并重新输入。例如, 核心配置或表结构可以作为关键信息,在对话开始时就输入给 LLM,确保其随时可用。
  2. 外部化核心信息

    • 将一些不变的核心信息(如数据库表结构、配置文件、接口定义等)存储到单独的文件中。
    • 在对话中通过 @Add context,将这些文件动态添加到上下文中,避免重复输入。
  3. 引用外部文档

    • 将外部帮助文档、链接或者参考资源作为上下文的一部分添加到对话中。例如,直接粘贴代码库的 README 文件、API 文档链接等,可以帮助模型更好地理解当前任务。
    • Cursor 自身支持这些外部的引用,具体方法参见 Cursor 的帮助文档,探索上下文扩展功能。
  4. 优化上下文使用策略

    • 尽量减少对话中的无关内容(如闲聊或冗长描述)。
    • 定期总结对话内容并清理上下文,确保关键信息占用优先位置。

2.3 修改代码混乱:会改乱代码

AI 工具在生成代码时,可能覆盖或修改原有代码,导致逻辑混乱,甚至出现功能性错误,一不小心原来能跑通的功能就不通了。这种情况常发生在对已有代码进行修改时,尤其是在多次修改的情况下。

解决方案

  1. 结合版本控制工具

    • 在完成每一阶段的明确功能后,及时使用 Git 提交代码,确保已有的工作成果被保存。
    • 在尝试新的修改时,可以创建分支或临时提交,确保不影响主分支的代码完整性。
  2. 分步引导 AI

    • 避免一次性让 AI 修改大量代码,而是按功能模块逐步进行修改。例如,先让 AI 修改某个函数,再验证其效果,而不是直接让它大规模重构代码。
  3. 生成新代码替代旧代码

    • 在涉及复杂逻辑的修改时,建议让 AI 生成新的代码片段,而不是直接修改现有代码。我们可以手动选择将新代码合并到项目中,避免出现覆盖错误。
  4. 代码审查

    • 对 AI 生成或修改的代码进行人工审阅,尤其是涉及关键逻辑的部分,确保生成代码符合预期。

2.4 无法解决复杂问题:可能进入死循环

在调试复杂问题或某个难点时,AI 工具可能陷入死循环,反复尝试生成代码但无法有效解决问题。例如,AI 对某个 bug 的修复建议多次尝试后仍然无效,甚至可能导致代码更加混乱。

解决方案

  1. 重新整理问题

    • 如果问题复杂而模糊,先关闭当前对话,重新开启一个新的会话。
    • 将问题简化为多个子问题,并逐步整理关键信息后输入给 AI。例如,将错误日志、上下文代码片段和预期行为整理成清晰的描述。
  2. 结合搜索引擎

    • 对难以解决的问题,可以将错误信息、bug 的关键描述扔给搜索引擎,结合开发者社区(如 Stack Overflow)寻找答案。
    • 搜索的过程中可以收集更具体的上下文,再反馈给 AI,增加其解决问题的可能性。
  3. 寻求多工具协作

    • 如果单个 AI 工具陷入死循环,可以尝试切换到其他工具或模型。例如,Cursor 无法解决的问题,可以切换到 ChatGPT 或 Claude 进行尝试。
    • 结合传统的调试手段(如 IDE 的调试功能、日志分析工具等),帮助定位问题。
  4. 分阶段测试

    • 将复杂问题拆解为多个小问题,逐步测试每一部分的结果。例如,如果某个模块的逻辑无法正常运行,可以先测试其输入输出,再逐步调试内部逻辑。

3. 小结

用 AI 编程,也就是和 AI 协作,本质上是一种双向的沟通过程。

我们需要像与团队成员协作一样,清晰表达需求、提供必要的背景信息,并通过持续的反馈和迭代优化,逐步引导 AI 生成符合预期的结果。只有做到有效沟通,AI 才能真正成为开发者的高效助手,而不是一个需要频繁纠错的工具。

以上。