文件目錄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,或者在相關段落左側點「詢問這段」。需要留下的決定,見把談定的事寫進意圖。

程式碼面板的分組依賴解釋的結果。如果卡片一直顯示「執行解釋以分類」,檢查「設定 → 自動化」裡的「實作後自動解釋」和「解釋只改程式碼的回合」,或手動點選它,見程式碼變了之後。