文档目录06 / 20

看懂实现06 / 20

按意图看改动

本页内容

Agent 一轮改了几十个文件,按文件逐个看 diff,很难回答“这些改动是为了什么”。在 Noea 里,一轮改动可以按它回应的意图分组:这一处是为了你的哪句话而改。没有对应任何意图的改动单独列在最后,不会混在里面。

从改动卡进入

Agent 的一轮工作留下了文件改动,回复末尾就会出现一张改动卡。只改了一个文件时,标题是“已编辑 grace.ts”这样的写法;改了多个文件时显示“已修改 9 个文件”,旁边是增删行数。Agent 通过命令行改的文件也计算在内。

这一轮被解释处理过之后,卡片第二行会显示“2 处意图 · 1 处未对应”:改动对应到几段意图,有几处没有对应。还没有处理时,第二行提供“运行解释以分类”。

点击整张卡,代码面板在主区域最右侧的辅助栏中打开,范围是这一轮的全部改动。对话里不再重复展示这一轮的 diff。

认识代码面板

面板顶部显示对话标题和回合序号,例如“宽限期邮件通知 · 回合 2”,可以切换到同一对话里其他有改动的回合。右上角的按钮开关文件列表,列表可以平铺或按文件夹显示,每个文件附增删行数,点击跳到该文件;每个文件头部都有“用默认程序打开”。

diff 只有一列行号:新增行和未改动的行显示改后的行号,删除行显示改前的行号并变淡。改动之间未改动的行折成一行,点击展开,可以一直展开到整个文件。文件在这一轮之后又被改过时,面板只显示这一轮的改动,并提供“查看当前文件”。

拖动辅助栏的左边缘可以加宽面板;关闭它只收起辅助栏,不影响左边的文档和对话。

按意图排列

面板有两种排列:“按文件”和“按意图”。“按意图”时:

  • 每组对应一段意图,组头是这段意图的原文,上方小字写着它所在的文档和章节。组按段落在意图文档中的顺序排列。
  • 组内先按要点、再按文件排列。每个要点以它的名字为小标题,下面一行小字是它的说明里“实现”的第一句。
  • 每处改动只出现一次。同时对应几个要点时,归入最主要的那个,其余要点以芯片挂在这处改动上。
  • 最后固定一组“其余改动”,放没有对应任何意图的改动。
“试用延长到 21 天”这一轮改了 12 个文件。按意图排列时,改动归到它回应的那句意图下:常量 TRIAL_DAYS 从 14 改为 21,对应《试用》里的“试用期”。

面板默认用哪种排列,取决于解释对这一轮的处理:

解释的状态默认排列
还没有处理按文件
处理中,已有说明对应到这一轮第一段说明发布时自动切到按意图;还在调查的段落在组内占位
正常结束按意图
判定没有需要调查的段落按文件,并说明“这一回合没有触及任何已说明的意图”

你随时可以切回按文件查看。

看每处改动对应了什么

在每处改动上,意图从轻到重分三层出现:

  • 行旁的标记:说明里明确引用的行,左侧有一条中性色的细标记。指向它,会高亮同一说明引用的其他行,并显示意图的名字。
  • 意图芯片:每处改动的头部挂着它对应的要点,最多直接显示两个,其余收为“+N 处意图”。指向芯片可以预览这段意图的原文和说明的第一句;点击后,文档在旁边一栏打开,并展开这条说明。
  • 意图块:每处改动下方有一行折叠的摘要,例如“意图 2 · 缺口 1”。展开后显示对应的每段意图原文,以及这段最新说明里的关注事项。

改动和意图的对应有三种来源:“解释引用”是说明里明确引用了这些行;“按行区间对应”是改动落在说明引用的行范围内;“判定未影响”是解释检查后认为这处改动不影响那段意图。如果一处改动覆盖了文件的大半,或改动前的内容来自 Agent 上报而不是 Noea 自己读取,就不按行区间归类,面板会标明“未按行区间归类”。

筛选一段意图的改动

文件列表顶部的“按意图筛选”可以只看某一段意图或某个要点对应的改动。选“未对应意图”,只看没有对应任何意图的改动。

反过来,也可以从意图找到改动:在意图文档里打开一段的说明,旁注最后的“最近实现”列出最近改动过它的回合。点开一个回合,代码面板以这一轮为范围打开,并已经筛选到这段意图。

读完之后

“其余改动”不一定有问题,常见的是测试辅助函数、格式调整或依赖升级。但如果一处业务逻辑的改动不对应任何意图,值得问一句它为什么改、是否需要写进意图。

在对话里直接问 Agent,或者在相关段落左侧点“就此提问”。需要留下的决定,见把聊定的事写进意图。

代码面板的分组依赖解释的结果。如果卡片一直显示“运行解释以分类”,检查“设置 → 自动化”里的“实现后自动解释”和“解释只改代码的回合”,或手动点击它,见代码变了之后。