AI建议采纳行为怎么记录:三类结果与低填报方案
AI建议的采纳结果往往分散在IDE、代码评审和提交三个环节,单靠人工登记既容易漏记,也会让开发者产生抵触。本文给出一套以事件自动采集为主、人工补录为例外的记录方案:先把直接采纳、修改后采纳、拒绝三类结果定义成可判定的状态,再用统一建议ID把各环节事件串成一条链路,最后只对少数无法自动判定的场景保留补录。
Table of Contents
要点总览(TL;DR)
- 采纳结果按最终产物判定:AI建议原样进入代码或提交为直接采纳,以建议为起点改动后进入产物为修改后采纳,建议未进入最终产物为拒绝;仅改格式、仅改注释等边界需在口径文档中单独约定。
- 用统一建议ID把IDE、代码评审、提交三个环节的事件串成一条链路,最终状态以提交差异与建议原文的比对结果为准,IDE过程事件只作过程数据、不重复计数。
- 人工补录只保留在线下讨论后采纳、跨会话复用、批量重构、比对失败等少数场景,补录字段控制在1至2个并设默认值,由开发者在提交时、评审人在评审结论时、效能负责人在固定时点分别补录。
- 上线前逐项核对状态无重叠、字段完整、自动判定与人工复核一致率达标、单条建议平均补录次数可控、口径版本可追溯,口径变更时历史数据按原口径保留并标注版本。
- 采集失败时提交环节可独立完成比对;比对也失败的记录进入待补录队列,不默认计入任何一类状态,优先补齐事件而不是扩大补录范围。
三类采纳结果先定义清楚:判定口径与字段
采纳结果按最终产物判定,不按开发者的主观感受判定。一条AI建议是否被采纳,看它有没有以某种形式进入代码或提交:原样进入记为直接采纳,改动后进入记为修改后采纳,未进入最终产物记为拒绝。这个口径的好处是每个状态都能从提交差异中找到证据,不依赖事后回忆。
边界情况需要在口径文档中单独约定,否则同一行为会被不同的人记成不同状态。常见约定如下:仅调整缩进、换行、空格等格式,视为直接采纳;仅修改注释文字而代码逻辑与建议一致,视为直接采纳;在建议基础上补充了新的逻辑分支或改变了实现方式,视为修改后采纳;建议被复制到其他文件或函数中使用,视为修改后采纳并标注复用场景;建议生成后开发者自行重写、最终代码与建议无实质关联,视为拒绝。
| 采纳状态 | 判定条件 | 典型边界处理 |
|---|---|---|
| 直接采纳 | AI建议原样进入代码或提交,差异仅限格式、空白、注释 | 仅改缩进、仅改注释文字归入此类 |
| 修改后采纳 | 以AI建议为起点,代码逻辑或结构发生改动后进入产物 | 跨文件复用、补充分支、调整实现方式归入此类 |
| 拒绝 | 建议未进入最终产物,或最终代码与建议无实质关联 | 开发者完全重写、建议被丢弃归入此类 |
支撑判定的最小字段集如下,字段数量控制在能还原一次完整链路即可:
- 建议ID:每条AI建议的唯一标识,由生成端分配,贯穿后续所有事件。
- 会话ID:一次对话或一次补全会话的标识,用于把同一上下文产生的多条建议归组。
- 生成时间:建议产生的时间戳,精确到秒。
- 采纳状态:直接采纳、修改后采纳、拒绝三选一。
- 改动行数或差异比例:建议原文与最终产物的差异度量,用于区分直接采纳与修改后采纳。
- 环节来源:记录该状态最终由哪个环节确认,取值为IDE、代码评审或提交。
- 判定方式:自动或人工,标明该条状态的产生途径。
取值规则要写进口径文档:一条建议只保留一条最终状态记录,以提交环节的比对结果为准;IDE环节的插入、编辑事件只作为过程数据,不单独计入采纳率;同一建议在多个提交中出现时,以首次进入产物的提交为准,后续提交只更新差异比例,不重复计数。
在IDE、代码评审和提交环节自动采集事件
三个环节各自产生不同类型的事件,单看任何一个环节都无法得出最终状态。IDE环节能看到建议是否被插入、插入后是否被编辑;代码评审环节能看到建议是否被讨论、被引用;提交环节能看到最终进入代码库的内容。记录方案的核心是用建议ID把这些事件合并成一条记录,最终状态以提交环节的比对结果为准。
| 环节 | 采集事件 | 写入字段 | 对最终判定的作用 |
|---|---|---|---|
| IDE | 建议生成、插入、编辑、撤销 | 建议ID、会话ID、生成时间、插入时间、编辑次数 | 提供过程证据,标记建议是否被使用过 |
| 代码评审 | 评审意见引用建议、评审通过、评审驳回 | 建议ID、评审单号、评审结论 | 关联建议与评审上下文,补充拒绝或修改的原因 |
| 提交 | 提交差异与建议原文比对 | 建议ID、提交哈希、改动行数、差异比例、采纳状态 | 产出最终状态,作为采纳率的计算依据 |
IDE环节的采集依赖插件埋点。插件在建议生成时分配建议ID并记录生成时间;开发者执行插入操作时记录插入事件;插入后对代码的每次编辑记录编辑事件和编辑后的代码快照;撤销操作记录撤销事件。这些事件只作为过程数据上报,不直接决定采纳状态,避免开发者在编辑过程中反复修改导致状态频繁跳变。
代码评审环节的关联方式有两种。一种是在评审意见中通过建议ID引用AI建议,评审系统解析引用后写入关联记录;另一种是在评审单上增加一个AI建议关联字段,由提交者在发起评审时填写建议ID。前者自动化程度高,后者实现成本低,团队可按现有评审工具的扩展能力选择。评审结论用于补充拒绝或修改的原因,不改变提交环节的最终判定。
提交环节是判定的关键节点。提交触发后,系统取出该提交涉及的建议ID,将提交差异与建议原文做比对:差异仅限格式、空白、注释的判为直接采纳;存在逻辑改动的判为修改后采纳;提交中找不到与建议对应的代码片段则判为拒绝。比对结果写入采纳状态、改动行数和差异比例,判定方式记为自动。
三环节事件的合并规则是:以建议ID为主键,按时间顺序合并事件;同一建议ID下出现多条提交记录时,取最早进入产物的提交作为状态来源;IDE环节的插入事件与提交环节的比对结果不一致时,以提交结果为准,并在记录中保留IDE事件作为过程数据。采集失败时的降级处理分两种情况:IDE插件未上报事件的,提交环节仍可独立完成比对,记录中环节来源标为提交;提交环节比对失败的,将该条建议标记为待补录,进入人工处理队列,不默认计入任何一类状态。
把人工填报压到最低:补录场景与责任人分工
自动采集能覆盖大部分常规场景,人工补录只保留在无法从提交差异中还原建议来源的情况。补录的原则是只补一个字段、只在一个时点补、只由一个人补,其余信息由系统从已有事件中带出。
需要人工补录的场景主要有四类:
- 线下讨论后采纳:建议在会议或口头沟通中被采纳,代码由他人代写,提交中无法关联建议ID。
- 跨会话复用建议:开发者把之前会话中的建议复制到新任务中使用,原会话已结束,事件链路断开。
- 批量重构:一次提交包含大量改动,涉及多条建议,自动比对无法逐条对应。
- 提交环节比对失败:代码格式化工具或合并操作导致差异无法与建议原文对齐。
| 角色 | 职责 | 补录时点 | 补录字段 |
|---|---|---|---|
| 开发者 | 在提交说明中标注关联的建议ID,或对跨会话复用场景补充来源 | 提交代码时 | 建议ID或来源说明 |
| 评审人 | 在评审单上确认AI建议关联字段,对线下讨论采纳的情况补充记录 | 评审结论给出时 | 采纳状态 |
| 效能或数据负责人 | 处理待补录队列,抽查数据质量,维护口径文档 | 每周固定时间 | 判定方式、备注 |
补录字段控制在1至2个,并设置默认值。例如采纳状态字段默认取自动判定结果,人工只在需要覆盖时修改;判定方式字段默认填自动,人工补录时改为人工。这样开发者在大多数情况下不需要做任何操作,只有遇到系统无法判定的场景才需要动一次手。
数据质量抽查由效能或数据负责人执行,频率建议为每周一次,每次抽取一定比例的建议记录,比对自动判定结果与人工复核结果。抽查发现的口径分歧记入口径文档的待议事项,在下一次校准中统一处理,不在抽查过程中临时改规则。
示例:一次AI建议从生成到计入采纳率的完整链路
以下示例演示一条AI建议从IDE生成到最终计入采纳率的完整过程,字段取值均为演示数据。
生成。开发者在IDE中请求AI补全一个数据校验函数,插件生成建议并分配建议ID为SUG-20240612-0031,会话ID为SES-8842,生成时间记为2024-06-12 10:21:05。此时尚无采纳状态。
插入与编辑。开发者将建议插入编辑器,插件记录插入事件。随后开发者修改了其中的异常处理分支,增加了一条日志输出,插件记录编辑事件和编辑后的代码快照。此时过程数据表明建议被使用且发生改动,但最终状态待提交确认。
提交。开发者提交代码,提交说明中标注了建议ID。系统比对提交差异与建议原文,发现存在逻辑改动,判定为修改后采纳,改动行数为6行,差异比例为18%,环节来源记为提交,判定方式记为自动。
评审。评审人在评审意见中引用该建议ID,提出再调整一处参数校验。开发者补充提交后,系统更新差异比例为24%,采纳状态保持修改后采纳,不重复计数。评审结论记为通过。
采集缺失时的回补。假设该次提交时IDE插件未上报编辑事件,提交环节的比对仍可独立完成,状态判定不受影响,环节来源标为提交。若提交环节比对也失败,该条建议进入待补录队列,由效能负责人在每周处理时根据提交差异人工判定为修改后采纳,判定方式改为人工,并在备注中说明比对失败原因。
最终这条建议在采纳率统计中计为一条修改后采纳记录,过程事件保留在明细中供追溯,不参与采纳率计算。
在评审与提交环节,团队可以把AI建议的关联信息随工作项一起流转。ONES支持通过代码提交与业务工作项关联,并支持多种数据报表追溯工具链操作,采纳结果的归档与查询可以依托工作项和报表完成;具体的埋点与比对逻辑仍需结合团队现有工具链设计。
上线前的完成检查与口径校准
方案上线前逐项核对以下检查项,确认记录可用、口径一致、人工负担可控。
- 状态判定无重叠:直接采纳、修改后采纳、拒绝三类各有明确判定条件,任意一条建议只能落入其中一类;边界情况在口径文档中有对应条目。
- 字段完整:每条建议记录都包含建议ID、会话ID、生成时间、采纳状态、改动行数或差异比例、环节来源、判定方式七个字段,缺失字段的记录进入待补录队列。
- 一致率达标:抽样比对自动判定与人工复核的结果,一致率达到团队设定阈值方可全量启用;未达标时先修正比对规则,不急于扩大采集范围。
- 人工负担可控:统计单条建议的平均人工补录次数,确认补录集中在少数场景;补录次数偏高的环节优先考虑补充自动采集,而非增加人手。
- 口径版本可追溯:口径文档每次变更记录版本号、变更内容和生效时间;口径变更前的历史数据按原口径保留,并在报表中标注口径版本,避免新旧数据混算。
口径校准记录建议包含三项内容:本次校准的抽样范围和样本量、自动判定与人工复核的一致率、待议事项及处理结论。校准频率可与数据质量抽查同步,在口径稳定后适当降低频率。上线后若发现某类场景持续需要人工补录,应回到采集映射表检查该场景的事件是否缺失,优先补齐事件而不是扩大补录范围。
常见问题
仅修改了AI建议的注释或缩进,应该算直接采纳还是修改后采纳?
按最终产物判定,这类改动归入直接采纳。口径文档中应明确:仅调整缩进、换行、空格等格式,或仅修改注释文字而代码逻辑与建议一致,都视为直接采纳。这样处理的原因是这些改动不影响建议所表达的实现逻辑,若归入修改后采纳,会让修改后采纳的比例被格式差异放大,失去区分度。
如果团队对注释质量有额外要求,可以在口径文档中单列一条说明,但状态本身仍记为直接采纳,避免同一行为在不同评审人手里被记成不同状态。
开发者在IDE里插入建议后又撤销,这条建议应该记成拒绝吗?
不建议仅凭撤销事件就判为拒绝。IDE环节的插入、编辑、撤销事件属于过程数据,只用于标记建议是否被使用过,最终状态以提交环节的比对结果为准。开发者插入后撤销、随后又以其他方式把建议内容写进代码的情况并不少见,若按撤销事件直接判拒绝,会低估实际采纳情况。
正确的处理是:撤销事件保留在明细中供追溯,提交时若在产物中找到与建议对应的代码片段,仍按差异情况判为直接采纳或修改后采纳;提交中确实找不到对应片段,才判为拒绝。
线下会议里采纳了AI建议、代码由他人代写,这种场景怎么补录?
这类场景无法从提交差异中还原建议来源,需要人工补一个字段。建议的做法是在提交说明中标注关联的建议ID或来源说明,由提交者在提交代码时完成;若提交时未标注,由评审人在评审结论给出时补充采纳状态。
补录字段控制在1至2个,采纳状态默认取自动判定结果,人工只在需要覆盖时修改;判定方式默认填自动,人工补录时改为人工。这样补录动作集中在一个时点、由一个人完成,不会演变成事后集中追填。
自动判定与人工复核的一致率一直上不去,应该先改规则还是先扩大采集范围?
先改规则。一致率未达标说明比对逻辑与团队实际写法之间存在偏差,此时扩大采集范围只会把偏差放大到更多记录上。建议先缩小抽样范围,逐条比对自动判定与人工复核的差异,定位是边界约定不清、差异比对阈值不合理,还是某类场景的事件缺失。
修正比对规则后重新抽样验证,一致率达到团队设定阈值再全量启用。若发现某类场景持续需要人工补录,应回到采集映射表检查该场景的事件是否缺失,优先补齐事件。
口径调整后,之前按旧口径统计的采纳率数据怎么处理?
历史数据按原口径保留,不做回溯重算,并在报表中标注口径版本。口径文档每次变更记录版本号、变更内容和生效时间,报表按版本分段展示,避免新旧数据混算导致趋势失真。
如果确实需要跨版本对比,建议在报表中同时给出两个口径下的数值并注明差异原因,而不是直接把旧数据按新规则重算。校准记录中同步写明本次校准的抽样范围和样本量、一致率、待议事项及处理结论,便于后续追溯。



