跳轉到

8.5 Coding Agent 與程式碼生成的元能力#

把 Agent 用在程式設計#

第 8 章我們建立了工具(8.1-8.3)與執行迴圈(8.4)的完整圖景。本節把這一切應用在一個最重要的場景——寫程式,形成 Coding Agent(程式設計 Agent) ——也就是附錄 B 的 OpenCode、以及 4.4 節「Agentic Coding」所指的那類工具。

Coding Agent 就是「以軟體開發為任務的 Agent」:它利用程式設計相關工具(讀檔、寫檔、執行程式、搜尋程式碼、跑測試),透過 ReAct 迴圈,自主地完成寫程式任務。

它的「工具箱」恰好對應 8.2 節的檔案環境類與計算處理類,加上知識檢索(搜尋文件)與溝通輸出(請求確認):

Coding Agent 常見工具 作用的環節
read_file / list_files 理解既有專案(上下文,7.2 節)
search_code / grep 定位相關程式碼
write_file / edit_file 產生/修改程式碼(4.4 節)
run_command / run_tests 執行與驗證(5 章)
ask_user 請求方向確認(人在迴路)

Coding Agent 需要「程式碼生成的元能力」#

一個 Coding Agent 能不能寫好程式,除了模型強不強,更關鍵的是一組「程式碼生成元能力(Meta-capabilities)」——不是「會寫幾行語法」,而是「能不能勝任一個真實軟體開發任務」所需的高層能力。這組元能力包括:

1. 理解既有程式碼(Code Understanding)#

Coding Agent 大部分時間不是在「空白起手」,而是在讀懂別人寫的既有程式碼——理解專案結構、沿用既有風格、不破壞其他功能(呼應 4.4 節「看懂別人寫的程式」)。

核心問題:能不能在紛亂的專案中,找到「該看的那幾件事」、並正確理解?這依賴上下文工程(7.2 節)的「相關性」——判斷哪些檔案相關、讀取重點。

2. 規劃與分解(Planning & Decomposition)#

能不能把一個模糊的任務(「把結帳流程做好」)分解成可執行的小步驟、並排出順序(先改 Schema、再改邏輯、再寫測試)?這對應 ReAct 迴圈裡「Thought」的品質。

3. 與工具的正確互動(Tool Orchestration)#

能不能正確地使用工具:知道什麼時候該讀檔、什麼時候該搜尋、什麼時候該跑測試、什麼時候該停下來問人?這依賴工具設計(8.1 節)與 Agent「工具智慧」。

4. 自我驗證(Self-Verification)#

能不能主動驗證自己的產出——寫完程式,我就「跑測試、看結果、修錯誤」,而不是「寫完就算完事」?這就是「用測試作準繩」(5、4.4 節)在 Agent 內部的內化。不會自我驗證的 Coding Agent,就像不檢查作業就交卷的學生。

5. 迭代修正(Iterative Correction)#

驗證失敗(測試紅、編譯錯)時,能不能分析失敗原因、修正再試,而不是重蹈覆轍或放棄?這連到 9.4 節的「糾正」與 ReAct 的迴圈本質。

元能力的評估:是決定 Coding Agent 上限的關鍵#

為什麼特別強調「元能力」而非「會寫語法」?

  • 語法能力(「會寫一段 for 迴圈」)已經被現今模型普及化了——幾乎所有模型都會
  • 區分 Coding Agent 高下的,是元能力:能不能讀懂複雜專案、能不能自己驗證修正、能不能在長任務中保持正確——這些才是決定「能不能完成一件真實軟體工程任務」的關鍵

這也呼應本書全書的核心:就像工程師的價值從「寫程式碼」轉移到「指揮、審查、品質把關」一樣,Coding Agent 的價值,也從「會寫語法」上升到「能不能勝任完整的軟體工程任務」——而這正是第 10 章「評估」要量化的東西。

當 Coding Agent 遇上軟體工程護欄#

Coding Agent 再強,也不能裸奔。把它放進我們的軟體工程框架(第 4、5、12 章),它需要外在的「護欄」來控管風險:

  • 人在迴路:關鍵節點(高風險動作、大型改動)請求人確認(8.2 節「溝通輸出類」)
  • 測試護欄:用 CI(6.1、5.6 節)與測試網驗證 Agent 的改動,防迴歸
  • 權限與安全:限制 Agent 能碰的工具與範圍(13.2 節、附錄 B.4)
  • 審查:對 Agent 輸出的程式碼做 Code Review(4.5 節)

一句話:Coding Agent 是「強而需馭」的執行者——它幫你快速產出與驗證,但軟體工程師的價值,正在於為它建立正確的上下文、設置護欄、並承擔最終品質責任(貫穿全書的主軸)。

從 Coding Agent 到「軟體工程的「半自動化」#

展望:當 Coding Agent 的元能力越來越強,配合 harness(9 章)與評估(10 章),軟體工程的很多環節會走向「人定義方向、Agent 執行、人把關」的半自動化:

  • 需求 → 生成 Spec(2.6 節)
  • Spec → 生成程式碼(4.4 節)
  • 程式碼 → 生成測試(5.4 節)
  • CI → 自動驗證(6.1 節)
  • 失敗 → Agent 自我修正(本節 + 9.4 節)

但「定義目標、審查品質、承擔責任」這些本質性工作,始終是人。這正是 1.4、14.4 節反覆重申的結論。

本章小結#

  • Coding Agent=以軟體開發為任務的 Agent,Toolbox 對應檔案環境類等工具
  • 關鍵是元能力而非「會寫語法」: 理解既有程式碼、規劃分解、正確用工具、自我驗證、迭代修正
  • 語法能力已普及,元能力決定 Coding Agent 高下(與人相似,見 14.4 節)
  • 需要外在護欄:人在迴路、測試、權限、審查
  • Coding Agent 是「強而需馭」的執行者;本質性工作仍是人

想一想#

  1. 為什麼「會寫語法」已不能區分 Coding Agent 高下?哪些「元能力」才是關鍵?
  2. 「自我驗證」為什麼是 Coding Agent 最重要的元能力之一?不會自我驗證的 Agent 會怎樣?
  3. 用 OpenCode(附錄 B)讓 Coding Agent 完成一個小任務,觀察它的「讀懂→規劃→修改→驗證」迴圈,並記錄它做到了哪些元能力。