agent harness 是一個已準備好的 OpenClaw agent 回合所使用的低階執行器。它不是模型提供者、不是頻道,也不是工具登錄表。若要了解面向使用者的心智模型,請參閱 Agent 執行環境。 此介面只應用於內建或受信任的原生 Plugin。此合約仍屬實驗性質,因為參數型別刻意對應目前的嵌入式執行器。Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
何時使用 harness
當某個模型家族具有自己的原生工作階段執行環境,而一般 OpenClaw 提供者傳輸並不是合適抽象時,請註冊 agent harness。 範例:- 擁有執行緒與 Compaction 的原生程式碼 agent 伺服器
- 必須串流原生規劃、推理、工具事件的本機 CLI 或 daemon
- 除了 OpenClaw 工作階段 transcript 之外,還需要自身 resume id 的模型執行環境
核心仍負責的內容
在選取 harness 之前,OpenClaw 已經解析:- 提供者與模型
- 執行環境驗證狀態
- thinking 等級與上下文預算
- OpenClaw transcript/工作階段檔案
- 工作區、沙箱與工具政策
- 頻道回覆 callback 與串流 callback
- 模型 fallback 與即時模型切換政策
params.runtimePlan,這是 OpenClaw 擁有的政策套件,用於必須在 PI 與原生 harness 之間保持共用的執行環境決策:
runtimePlan.tools.normalize(...)與runtimePlan.tools.logDiagnostics(...),用於具備提供者感知的工具 schema 政策runtimePlan.transcript.resolvePolicy(...),用於 transcript 清理與工具呼叫修復政策runtimePlan.delivery.isSilentPayload(...),用於共用的NO_REPLY與媒體傳遞抑制runtimePlan.outcome.classifyRunResult(...),用於模型 fallback 分類runtimePlan.observability,用於已解析的提供者/模型/harness 中繼資料
註冊 harness
匯入:openclaw/plugin-sdk/agent-harness
選取政策
OpenClaw 會在提供者/模型解析之後選擇 harness:- 現有工作階段中記錄的 harness id 優先,因此 config/env 變更不會將該 transcript 熱切換到另一個執行環境。
OPENCLAW_AGENT_RUNTIME=<id>會對尚未固定的工作階段強制使用具有該 id 的已註冊 harness。OPENCLAW_AGENT_RUNTIME=pi會強制使用內建 PI harness。OPENCLAW_AGENT_RUNTIME=auto會詢問已註冊的 harness 是否支援已解析的提供者/模型。- 如果沒有相符的已註冊 harness,OpenClaw 會使用 PI,除非 PI fallback 已停用。
auto 模式中,只有當沒有已註冊的 Plugin harness 支援已解析的提供者/模型時,才會使用 PI fallback。一旦某個 Plugin harness 已宣告接手執行,OpenClaw 不會再透過 PI 重播同一回合,因為那可能改變驗證/執行環境語意或重複副作用。
在嵌入式執行之後,選取的 harness id 會與工作階段 id 一起持久化。在 harness pins 之前建立的舊版工作階段,只要已有 transcript 歷史,就會被視為已固定到 PI。若要在 PI 與原生 Plugin harness 之間切換,請使用新的/重設的工作階段。/status 會在 Fast 旁顯示非預設 harness id,例如 codex;PI 會保持隱藏,因為它是預設相容路徑。如果選取的 harness 出乎意料,請啟用 agents/harness 偵錯記錄,並檢查 Gateway 的結構化 agent harness selected 記錄。它包含選取的 harness id、選取原因、執行環境/fallback 政策,以及在 auto 模式中每個 Plugin 候選者的支援結果。
內建 Codex Plugin 會註冊 codex 作為其 harness id。核心會將它視為一般 Plugin harness id;Codex 專屬別名應屬於 Plugin 或操作員 config,而不是共用的執行環境選擇器。
提供者加 harness 配對
多數 harness 也應註冊提供者。提供者會讓模型參照、驗證狀態、模型中繼資料與/model 選取對 OpenClaw 其餘部分可見。接著 harness 會在 supports(...) 中宣告該提供者。
內建 Codex Plugin 採用此模式:
- 偏好的使用者模型參照:
openai/gpt-5.5加上agentRuntime.id: "codex" - 相容性參照:舊版
codex/gpt-*參照仍會被接受,但新的 config 不應將它們作為一般提供者/模型參照使用 - harness id:
codex - 驗證:合成提供者可用性,因為 Codex harness 擁有原生 Codex 登入/工作階段
- app-server 請求:OpenClaw 會將裸模型 id 傳送給 Codex,並讓 harness 與原生 app-server 協定溝通
openai/gpt-* 參照會繼續使用一般 OpenClaw 提供者路徑,除非你使用 agentRuntime.id: "codex" 強制使用 Codex harness。較舊的 codex/gpt-* 參照仍會為相容性而選取 Codex 提供者與 harness。
若要了解操作員設定、模型前綴範例與 Codex 專用 config,請參閱 Codex Harness。
OpenClaw 需要 Codex app-server 0.125.0 或更新版本。Codex Plugin 會檢查 app-server initialize handshake,並封鎖較舊或未標示版本的伺服器,讓 OpenClaw 只針對已測試過的協定介面執行。0.125.0 下限包含在 Codex 0.124.0 中落地的原生 MCP hook payload 支援,同時將 OpenClaw 固定到較新的已測試穩定線。
工具結果 middleware
內建 Plugin 可以在其 manifest 於contracts.agentToolResultMiddleware 宣告目標執行環境 id 時,透過 api.registerAgentToolResultMiddleware(...) 附加執行環境中立的工具結果 middleware。這個受信任介面用於非同步工具結果轉換,必須在 PI 或 Codex 將工具輸出回饋給模型之前執行。
舊版內建 Plugin 仍可使用 api.registerCodexAppServerExtensionFactory(...) 來處理僅適用於 Codex app-server 的 middleware,但新的結果轉換應使用執行環境中立 API。僅適用 Pi 的 api.registerEmbeddedExtensionFactory(...) hook 已被移除;Pi 工具結果轉換必須使用執行環境中立 middleware。
終端結果分類
擁有自身協定投影的原生 harness,可以在完成的回合沒有產生可見 assistant 文字時,使用來自openclaw/plugin-sdk/agent-harness-runtime 的 classifyAgentHarnessTerminalOutcome(...)。此 helper 會回傳 empty、reasoning-only 或 planning-only,讓 OpenClaw 的 fallback 政策可以決定是否使用不同模型重試。它刻意不分類提示錯誤、進行中的回合,以及像 NO_REPLY 這類有意的靜默回覆。
原生 Codex harness 模式
內建codex harness 是嵌入式 OpenClaw agent 回合的原生 Codex 模式。請先啟用內建 codex Plugin;如果你的 config 使用限制性允許清單,也請在 plugins.allow 中包含 codex。原生 app-server config 應使用 openai/gpt-*;OpenAI agent 回合預設會選取 Codex harness。舊版 openai-codex/* 路由應使用 openclaw doctor --fix 修復,而舊版 codex/* 模型參照仍會作為原生 harness 的相容性別名保留。
此模式執行時,Codex 會擁有原生 thread id、resume 行為、Compaction 與 app-server 執行。OpenClaw 仍擁有聊天頻道、可見 transcript 鏡像、工具政策、核准、媒體傳遞與工作階段選取。當你需要證明只有 Codex app-server 路徑可以宣告接手執行時,請使用 agentRuntime.id: "codex"。明確的 Plugin 執行環境會封閉式失敗;Codex app-server 選取失敗與執行環境失敗不會透過 PI 重試。
執行環境嚴格性
預設情況下,OpenClaw 會使用 OpenClaw Pi 執行嵌入式 agent。在auto 模式中,已註冊的 Plugin harness 可以宣告接手某個提供者/模型配對,而在沒有相符項目時由 PI 處理該回合。當缺少 harness 選取時應失敗、而非透過 PI 路由,請使用明確的 Plugin 執行環境,例如 agentRuntime.id: "codex"。選取的 Plugin harness 失敗一律會硬性失敗。這不會封鎖明確的 agentRuntime.id: "pi" 或 OPENCLAW_AGENT_RUNTIME=pi。
對於僅使用 Codex 的嵌入式執行:
id: "auto":
OPENCLAW_AGENT_RUNTIME 仍會覆寫已設定的執行環境。
原生工作階段與 transcript 鏡像
harness 可以保留原生工作階段 id、thread id 或 daemon 端 resume token。請讓該繫結明確關聯到 OpenClaw 工作階段,並持續將使用者可見的 assistant/工具輸出鏡像到 OpenClaw transcript。 OpenClaw transcript 仍是以下項目的相容層:- 頻道可見的工作階段歷史
- transcript 搜尋與索引
- 在後續回合切換回內建 PI harness
- 泛用的
/new、/reset與工作階段刪除行為
reset(...),讓 OpenClaw 能在擁有該繫結的 OpenClaw 工作階段被重設時清除它。
工具與媒體結果
核心會建構 OpenClaw 工具清單,並將其傳入已準備好的嘗試。當 harness 執行動態工具呼叫時,請透過 harness 結果形狀回傳工具結果,而不是自行傳送頻道媒體。 這會讓文字、影像、影片、音樂、TTS、核准與訊息工具輸出,與 PI 支援的執行使用相同傳遞路徑。目前限制
- 公開匯入路徑是通用的,但為了相容性,某些嘗試/結果型別別名仍帶有
Pi名稱。 - 第三方測試框架安裝仍屬實驗性。請優先使用提供者 Plugin,直到你需要原生工作階段執行階段。
- 支援跨回合切換測試框架。在原生工具、核准、助理文字或訊息傳送已開始後,請勿在回合中途切換測試框架。