PART 5 · Harness 與自我改進

Harness 的三大設計模式

好的 Harness 有清晰的模式語言,絕非一堆腳本拼起來。三個核心模式,覆蓋了當前最強 Agent 系統 90% 的架構決策。

Design Patterns for Harness Engineering

從循環到記憶,從單體到多體:Harness 的三大基礎設施模式

Lilian Weng(2026.07)在 "Harness Engineering for Self-Improvement" 中提煉出三個反覆出現在成功 Agent 系統中的設計模式:工作流自動化、文件系統做持久記憶、子 Agent 與後台任務。它們不是可選優化。它們是任何生產級 Agent 的結構性需求
Pattern 1
1
Workflow Automation
工作流自動化
核心思想:Agent 是一個目標導向的循環,不能當成執行一次就結束的腳本。
  • Plan → Execute → Observe/Test → Improve → Execute again:每一輪生成都是下一輪優化的起點。
  • 分析自身軌跡:優秀的 Agent 會回頭看自己前幾輪做了什麼、哪裏失敗了、為什麼失敗,然後調整策略,避免重複同一個 Prompt。
  • 強調運行時迭代:改進發生在 Agent 執行過程中,不依賴人類事先寫好的靜態模板。Agent 在每次執行中學習、適應、優化。
  • 失敗是信號,不是終止:測試不通過、命令報錯、輸出不符合預期,這些都是 Agent 自我糾正的觸發條件。
Agent 自動化循環
Agent 工作流循環:plan → execute → observe → improve → execute again(來源:OpenAI Codex Agent Loop)
設計啓示
不要把 Agent 設計成一次性回答器。讓它擁有自己審查自己的能力:看到測試失敗後自動分析原因、看到 linter 報錯後自動修復、看到用戶回饋後調整策略。這就是工作流自動化的核心:把回饋循環內置到系統裏
Pattern 2
2
File System as Persistent Memory
文件系統做持久記憶
核心問題:在長期運行的 Agent 中,製品會迅速超出上下文窗口
  • 製品種類繁多:實驗日誌、程式碼 diff、論文摘要、錯誤追蹤記錄、過去的完整執行軌跡,這些都是有價值的狀態,但塞不進上下文。
  • Harness 的正確做法:把持久狀態存在文件系統中,讓 Agent 學會按需讀寫。不要試圖把全部工作歷史壓入 Prompt。
  • 文件讀寫是 LLM 基礎技能:讀寫文件系統不需要複雜的外部工具鏈,它受益於核心模型能力的提升。模型越聰明,文件管理越高效。
  • 結構化存儲:好的 Agent 會自己維護 scratchpad、todo 列表、實驗記錄,像人類程序員一樣管理工作區。
上下文 vs 文件:何時放哪裏?
放上下文中:當前正在處理的任務指令、即時的工具調用結果、最近 2-3 輪對話,這些是需要即時參考的信息。

放文件系統中:歷史實驗結果、累積的錯誤日誌、已完成子任務的摘要、長期策略和規則,這些是需要持久保存但不必時刻在視野中的信息。

關鍵原則:上下文是工作記憶,文件系統是長期記憶。好的 Harness 像人腦一樣,在兩者之間智能地搬運信息。
Pattern 3
3
Sub-agent and Backend Jobs
子 Agent 與後台任務
核心思想:一個 Agent 不夠用時,生成多個子 Agent 並行執行,同時監控後台長任務。
  • 父 Agent 作為進程管理器:啓動子任務、檢查日誌和進度、取消失敗的分支、合併成功的結果。這是操作系統層面的思維。
  • 並行性必須顯式且可檢查:不能「發射後不管」。父 Agent 需要能查看每個子 Agent 的狀態、輸出和錯誤。
  • 子 Agent 輸出持久化:每個子 Agent 的結果存為文件、日誌或狀態記錄(而不僅是返回到父 Agent 的上下文中),這樣即使中斷也能恢復。
  • 容錯與恢復:後台任務可能超時、崩潰或產出低質素結果。Harness 需要設計重試策略和優雅降級機制。
關鍵設計決策
子 Agent 模式的核心取捨:並行帶來速度,但也帶來複雜性。成功的實現(如 Cursor 的 Task 系統、Claude Code 的子進程)都遵循同一原則:讓每個子 Agent 在獨立的沙箱中工作,輸出到明確的文件路徑,父 Agent 通過輪詢文件狀態來協調,不做記憶體共享。這極大簡化了併發控制。
Case Study · 編碼 Agent 的 Harness
主流編碼 Agent 的核心工具接口
Claude Code、Codex、OpenCode、Cursor,這些當前最強的編碼 Agent 都圍繞相似的工具集構建 Harness。下表按功能分組對比它們的核心接口:
工具分組 核心能力 典型工具
File System 讀、寫、搜索、編輯檔案;管理工作區狀態 Read, Write, Edit, Glob, Grep, StrReplace
Shell Execution 執行終端命令、運行測試、安裝依賴 Shell, BashExec, RunCommand
I/O 與用戶互動、確認操作、展示結果 Ask, UserConfirm, ShowResult
External Context 獲取外部信息、文檔、API 響應 WebFetch, ReadURL, DocSearch
Web Search 搜索互聯網獲取最新信息 WebSearch, BingSearch
Artifacts 生成、管理和版本化製品 CreateFile, SaveArtifact, VersionControl
Backend Processes 後台運行長任務、監控進程狀態 BackgroundShell, AwaitProcess, Monitor
Agent Delegation 生成子 Agent、分配並行任務、合併結果 Task, Subagent, Fork, ParallelRun
編碼 Agent Harness 循環
編碼 Agent 的 Harness 循環:從用戶意圖到程式碼交付,工具接口編排全過程(來源:Lilian Weng, 2026)
互動體驗:三種架構如何運行
就緒
Plan
Execute
Observe
Improve
↩ 循環
上下文窗口
92% 溢出風險
第 4 輪就開始丟信息
所有工具返回、歷史軌跡全塞進上下文,窗口很快打滿。Agent 開始遺忘早期信息,輸出質素驟降。
三大模式如何協同
三個模式是三層疊加,無需三選一
工作流自動化提供了執行的脊椎:循環結構和回饋機制。

文件系統記憶為循環提供了硬盤:讓每輪迭代的成果不會丟失,即使上下文被清空。

子 Agent 並行為循環提供了多核:當任務可分解時,用並行加速取代串行等待。

三者組合,一個 Agent 就具備了迭代優化 × 長期記憶 × 並行擴展的能力。這正是當前最強編碼 Agent 的共同架構。
核心觀點:Harness 設計不是隨機拼湊工具。它遵循三個結構性模式:目標導向的自動化循環(讓 Agent 能自我糾錯)、文件系統做長期記憶(突破上下文窗口限制)、子 Agent 做並行擴展(把串行瓶頸變成多綫程)。理解這三個模式,就掌握了構建生產級 Agent 系統的架構語言。