昨天那六個名詞都指得出實體,可以指著某個行程或某個檔案說這就是它,今天這一組講的是做事的方法。
這一組名詞的用處在遇到問題時定位:該去改 prompt、改 context,還是改權限。
Guo 等人 2026 年的調查(arXiv:2606.20683)把 agent 工程的演進整理成四個範式:
| 範式 | 處理什麼 | 你能調的東西 |
|---|---|---|
| Prompt engineering | 單次請求的指令 | 提示詞本身怎麼寫 |
| Workflows 與 context engineering | 進入 context window 的內容 | 模型看得到什麼 |
| Harness engineering | 模型被授權做的事 | 模型能做什麼、做完誰來驗 |
| Agent-native training with co-evolution | 模型與 harness 的共同演進 | 模型本身怎麼訓練 |

前三者是疊加關係。 到了 harness 這一代,prompt 仍然要寫,context 仍然要配置,新的一代處理的是舊的一代範圍以外的問題。
第四個範式動到模型訓練,需要自己訓模型才碰得到,接下來 30 天的範圍停在第三個。
| 現象 | 該往哪個範式改 | 為什麼 |
|---|---|---|
| 輸出格式在 JSON 與散文之間游移 | Prompt | 指令留有解讀空間,補 schema 或範例即可收斂 |
| 模型違反某個專案慣例 | Context | 這件事還在 context window 之外 |
| 對話一長,先前給的指示就失效 | Context | 壓縮時被丟掉了 |
| 模型執行了授權範圍外的操作 | Harness | 權限問題,協定層才擋得住 |
| 排程跑完,結果的正確性待確認 | Harness | 驗證機制尚未建立 |
對照時先確認模型落在哪一種狀態:
Anthropic 在 2026 年 6 月的文章裡把 loop 定義為 agent 重複執行工作,直到停止條件成立,並依觸發方式分成四種:
| 類型 | 怎麼開始 | 什麼時候停 |
|---|---|---|
| turn-based | 你每問一次跑一輪 | 模型判斷做完了 |
| goal-based | 給一個目標 | 目標達成,或用完預設輪數 |
| time-based | 排程時間到 | 工作結束或被取消 |
| proactive | 偵測到事件 | 人工關掉才停 |
四種的差別集中在一件事,什麼時候停。停止條件決定 agent 何時收手,條件模糊時它會一路做下去,把 context window 耗光為止。
GitHub 在 2025 年 9 月開源 Spec Kit,對這套做法的說明是:
先寫規格,這份規格是一份合約,agent 拿它來產生程式碼、測試、驗證
重點在同一份。產生用的規格與驗證用的規格是同一份時,通過驗證等於符合規格;驗證另寫一套標準時,系統就有兩個真實來源,通過驗證只代表符合另外那一套。
Anthropic 那篇文章有一句講得很直接:
寫程式的迴圈,需要另一個檢查它的迴圈
要防的是這種狀況:
這種輸出在下游看起來很正常,往往要好幾層之後才會顯現,回頭追原因的成本隨層數上升。
程式碼以外也適用。我在既有的 IoT 專案上做過一版,排程送出控制指令之後,agent 回頭讀感測端點,比對現在的狀態與預期的狀態,兩者有落差就重試並記錄。
指令回傳成功屬於通訊層的回應,設備實際動作要回讀狀態才能確認。
三者由內而外包覆,外側依賴內側:
這三個詞在網路架構、資訊安全與可靠度工程裡都有既有用法,搬到 agent 系統之後語意會有些出入,先講清楚各自對應到什麼。
| 名詞 | 原本的意思 | 在 agent 系統裡對應到 |
|---|---|---|
| control plane | 決定封包怎麼走的那一層,跟負責搬運的 forwarding plane 分開 | 決定 Model 看到什麼、能呼叫什麼、輸出誰來驗的那一層,跟它本身分開 |
| least privilege | 每個程式、每個使用者只拿完成工作所需的最小權限 | agent 手上的憑證只涵蓋當前任務需要的 scope |
| failure mode | 失效的具體形式,跟失效原因、失效後果分開描述 | 同一種錯誤反覆出現的固定形式 |
RFC 7426 把網路設備拆成 control plane 與 forwarding plane 之後,換掉轉送硬體時決策邏輯照舊。Agent 系統套同一個結構,換掉 Model 時記憶、身分與權限設定照舊。
Saltzer 與 Schroeder 在 1975 年那篇論文裡說:
系統裡的每個程式、每個使用者,都應該只用完成工作所需的最小權限集合來運作
放到 agent 上有個特別的地方,權限上限由憑證決定:
| 做法 | 擋在哪一層 | 驗證方式 |
|---|---|---|
| 在 prompt 裡寫明禁止寄信 | 只存在於 prompt | 僅能從輸出推測模型是否照做 |
| OAuth scope 只授予讀取範圍 | 協定層 | 請求在送出前被擋下,伺服器留有紀錄 |
差別在於能否驗證。
這個詞要求把形式、原因、後果分開講:
Hashimoto 對 harness engineering 的定義就建立在這個區分上,每發現一次錯誤,就做一個機制讓它不再發生,前提是那次錯誤能被講成一種形式。
同一個技術名詞在二手文章與一手文件裡的定義可以差很多。
Loop Engineering 就是例子。部分文章把它描述成「Spec-Driven Development 的執行期形式」,這個框架讀起來合理,而 Anthropic 的原文界定的範圍限於停止條件,以及依觸發方式分出來的四種 loop。
那個「執行期形式」是撰文者自己的類比。
二手轉述有兩個問題:
名詞的定義取自二手來源時,別人的推論會混進定義,後面所有以該定義為前提的判斷都跟著偏掉。查一手文件的成本通常是多開一個連結。
拆解 Agent = Model + Harness,說明既有文獻把 harness 分成哪六項執行期職責。