將一個 codebase 搬去另一種程式語言,難處未必只係語法唔同。原有程式到底要做到啲乜、邊啲行為先算正確,往往先係最需要釐清嘅部分。
軟件工程師 Geoffrey Huntley 提出一個以規格為中間站嘅做法:唔好一開始就叫 agent 照住舊程式碼重寫,而係先整理測試同功能背後嘅要求,再以呢啲規格指引移植。
8
先由測試抽出「應該點運作」
Huntley 建議先開一輪 Ralph loop,逐一研究測試目錄入面嘅檔案,再將測試所描述嘅內容整理成 /specs/*.md。規格亦應連結返相關實作,方便讀者追查描述嘅依據。
8
之後,再用另一輪工作檢視 src/ 入面嘅產品功能,並確保功能描述有引用相應規格。
8 簡單講,先整理測試講緊乜,再整理產品功能點樣對應呢啲要求,令移植工作有一份較清晰嘅文字參考。
規格係線索,唔係「測試已完成」
呢個方法嘅重點係將散落喺測試同程式碼入面嘅資訊,整理成可查閱嘅規格。尤其係跨語言移植時,規格可以幫手講清楚要保留嘅行為,而唔只係逐行模仿舊語言寫法。
8
不過,Huntley 原文講嘅係跨語言移植方法,唔應該直接推論成日常開發可以刪走回歸測試。規格係整理要求嘅材料,並唔會單靠自己證明新版本已經符合要求。
Agent 有冇權執行,同樣要講清楚
用 agent 協助呢類工作,除咗工作步驟,亦要留意工具本身嘅權限設計。Cline 文件將 Plan mode 描述為探索 codebase、釐清問題同制定策略;Act mode 則用嚟按計劃執行。
2 工具文件亦指出,透過 ClineCore 使用時,可用工具會視乎工作階段配置而定。
1
所以,唔好單憑某份規格檔存在,就當 agent 一定讀到、或者必定按指定權限行事;要先確認實際環境嘅工具同設定。Cline 有一宗 issue 曾報告 Plan mode 出現編輯檔案嘅情況,但單一 issue 並不足以證明所有環境都會有同一問題。
3
對團隊嚟講,較穩陣嘅理解係:先用規格交代移植目標,再按實際工具設定安排執行同檢查。Agent 可以協助整理材料同處理工作,但規格嘅依據同執行結果,仍然要逐項核對。