一盞紅色錄音燈下,一台盤式錄音機正將一條發光的代碼帶源源不絕地灌入一台敞開的筆記型電腦。
Guides & Insights

「如何錄製 Claude Code 會話,以及其他所有不肯配合的智能體:一本實用的實戰指南」

作者

Gideon Frost

發佈日期

最新模型 · 20查看全部模型
基準測試:Artificial Analysis · 每日更新
返回全部文章

是的:你今天就能錄製 Claude Code 工作階段,而你所得到的會是完整內容(每一次模型回合、每一次工具呼叫、代理程式碰過的每個檔案),以可供重播的形式呈現。這是簡短版本,而且目前確實如此。更完整的版本是:可否錄製是由每個 harness 決定的,取決於兩個問題:harness 能否指向代理伺服器,以及流量到達時,其線路格式是否可被辨識。Claude Code 兩者皆通過,使用 API 金鑰登入的 Codex CLI 也是如此。在原始碼中寫死提供者 URL 的代理程式、在容器或 VPS 上執行的代理程式,以及以訂閱方式登入的 harness,各自走上不同的路徑,而其中一種,在今天,無法送達。

改變的是,這些代理程式不再只是展示用的 demo。它們就待在你的 repository 裡,擁有 shell 存取權,會編輯檔案、執行測試套件、開啟 pull request。當其中一個代理做了你意料之外的事——無論是刪錯檔案、卡在同一個失敗的測試上不斷迴圈,還是燒掉整個下午的運算資源——終端機的 scrollback 並不算證據。它只是一種呈現,而且是不完整的呈現。

你需要的是實際傳輸內容:真正發送給模型的是什麼、真正回傳的是什麼,以及代理在回合之間做了什麼。這份記錄也是評估套件的起點,因為捕獲的會話就是一項回歸測試,你可以用它對著下一個模型或下一版提示詞重播。問題在於,每個框架都假設自己直接與其提供者對話,而幾乎沒有哪個框架讓這件事容易更改。

是什麼決定了測試夾具能否被記錄?

每個「你能錄下來嗎」的問題,最後都會歸結為同樣的兩個問題。

首先:測試工具能否指向代理伺服器?四種途徑可解決這個問題,按方便程度遞減排列。

base-URL 變數。為此建置的路由:測試工具會讀取 base-URL 環境變數,並由你設定。

自行啟動 harness。子處理程序會繼承父處理程序的環境,因此啟動了編碼代理的閘道,即使代理不配合,也會一併被捕捉。

TLS 攔截。對於完全不讀取任何設定的測試工具,錄製器會啟動代理程式,您可以選擇加入攔截。

附加。當代理程式在記錄器無法啟動它的地方執行時,剩下的辦法就是附加。

如果這些都不適用,流量就永遠不會到達記錄器,也就沒有什麼好討論的了。

第二:流量到達時,它的線路格式是否被理解?捕捉位元組本身不是產品。錄製器必須辨識它所代理的對話,包括工具呼叫的形式、串流訊框,以及重試機制;否則錄製結果只是 pcap,而不是重播。錄製器能理解的格式會產生可供重播的工作階段;私有方言只會產生只能盯著看的擷取資料。

答案會因 harness 而異,而且在容易出錯的細節上也有所不同:同樣的教訓也源於比較 DeepSeek harness 與 Claude Code 的差異。本文其餘部分將說明,實際執行 harness 時,這兩個問題會是什麼樣。

A three-card decision diagram running from "Pointed at a proxy?" through "Wire format known?" to a "Recordable" badge.

Claude Code、Codex CLI 和 Agents SDK

Claude Code 是其他一切方案據以衡量的基準案例,因為它會讀取ANTHROPIC_BASE_URL。將這個變數指向錄製器、啟動 agent,工作階段便會逐回合送達:提示詞、工具呼叫、檔案編輯,以及夾在這些步驟之間的模型回覆。我們用真實的 bug 修復做過端到端驗證(一個真實的儲存庫、一個真實的缺陷、一段從第一個提示詞一路執行到成功修復的工作階段),而第一個真實的 agent 就弄壞了四樣任何測試夾具都不曾產生的東西。這四樣目前已全部修復;換句話說,誠實的結論是:合成流量無法讓你為真實 agent 獨自面對程式碼庫時的行為做好準備。

以 API 金鑰登入的 Codex CLI,情況也一樣——透過OPENAI_BASE_URL。將它指向記錄器,你就會取得工作階段;除此之外,你使用 harness 的方式不會有任何改變。

程式化代理繼承了所有路徑中最簡單的一條。子進程會繼承其父環境,因此啟動編碼代理的閘道也會被捕捉到,無需代理配合。只要在執行啟動的進程中設定一次基準 URL 變數,它所啟動的每個代理都會自行到達記錄器。如果你從 CI、編排器,或透過 Agents SDK 執行代理,這正是你已經在走的路。

在所有這些情況下,錄製器都是 OrcaReplay。它可以透過 npm i -g orcareplay 進行安裝,需要 Node 20 或更新版本,且沒有任何原生相依性:無需編譯、也無需建置。它所擷取的代理流量,正是 OrcaRouterOrcaRouter 的模型目錄中所路由的流量。

The OrcaReplay GitHub repository page with its README showing the npm i -g orcareplay installation command.

一個不讀取 base-URL 變數的代理。

有些 harness 會在其原始碼中把提供者 URL 寫死。沒有環境變數、沒有設定檔、沒有旗標。設定ANTHROPIC_BASE_URL不會有任何作用,因為沒有任何程式會讀取它。如果 recorder 可以啟動 agent,仍然有一條路徑,而那就是人們最擔心的:TLS 攔截。

選擇加入的意義就在於此:它是一種自願性參與,預設為關閉。當你針對某次執行啟用此功能時,記錄器會產生一個專屬於該次執行的憑證授權機構(CA),且該授權機構僅供記錄器所啟動的代理程式信任:它只被交給這一個處理程序,不會安裝進你的系統鑰匙圈,也不會留待下一次執行時使用。當該次執行結束,此憑證授權機構即遭刪除。代理程式仍舊如同以往,連線到其寫死的主機位址;記錄器回應請求,然後工作階段便抵達,彷彿該 URL 向來都是可設定的。

此路由刻意拒絕什麼,與它實際做什麼同等重要。它只讀取允許清單上的主機,其他一概不讀。允許清單之外的主機,其流量會以隧道方式傳送而不被讀取,留下來的記錄只有位址與位元組數:證明代理程式確實聯絡了某個對象,而交談內容連一個位元組也沒留下。這道界線是刻意的設計決定,不是某個我們尚未去處理的限制;同樣的紀律也貫穿於 OrcaRouter 的代理程式防火牆,其中允許清單本身就是產品,而非記錄的副作用。

The OrcaRouter agent firewall solutions page with its title and introduction visible.

難點與第一個問題相同:攔截只有在錄製器啟動代理時才有效。已經在容器內運行的代理從未收到該次運行的憑證授權,因此不會信任錄製器的回應。

不在這台機器上的代理

容器有自己的環境。你在 shell 中設定的 base-URL 變數無法進入其中,主機上的記錄器也無法啟動已經存在於其他地方的進程:例如在 VPS 上、在 CI 中,或在 harness 未經你同意就建立好的沙箱裡。在這種情況下,啟動式捕捉會失敗,不是因為代理難處理,而是因為記錄器根本碰不到它。

正好針對這種情況,有orca attach:它用於記錄錄製器無法啟動的代理程式,例如容器或 VPS 中的代理程式。方向反轉:與其由錄製器啟動代理程式並提供環境,不如附加到已在執行的代理程式並加以記錄。

「attach」並不會為你回答第二個問題。它能將流量傳送到記錄器;但這些流量是否能成為可重播的工作階段,仍取決於線路格式是否被理解。附加一個使用記錄器已知格式的代理程式,你就能得到可重播的工作階段;如果附加的代理程式不是使用那種格式,你就會找到那堵高牆——刻意去找出這堵牆,比在事故中途才發現要省事得多。

訂閱登入會改變什麼?

同一個二進位檔是否可被錄製,取決於它的登入方式。使用 API 金鑰登入的 Codex CLI,其流量會透過OPENAI_BASE_URL:將它指向錄製器即可。若以 ChatGPT 訂閱方案登入同一個 CLI,它就會完全停止與該端點通訊;它會改為與自己的後端通訊,並以你的身分進行驗證,因此沒有任何來源可供重寫。base-URL 變數仍然存在,但無論你將它指向何處,都不會成為該測試框架實際使用的服務。

這是第二個失敗的問題,不是第一個。位元組可以被移動;記錄器甚至可以看到它們。但對話是導向一個記錄器無法取代的後端,其流程不是記錄器所說的 API。沒有可以產生的重播,因為沒有記錄器可以成為的來源。

老實說,目前以訂閱方案登入的 harness 是無法錄製的;這裡值得記取的教訓是:登入方式本身就是決定能否錄製的一環。如果你需要錄製內容供評測(eval)或稽核軌跡之用,請改用 API key 執行這些需要錄製的工作階段,並把訂閱方案留給互動式操作——如何把錄製下來的工作階段轉成回歸評測會把這整個循環從頭到尾講清楚。而在你把任何 harness 標準化之前,請先用那兩個問題考驗它;我們對每個 harness 都會如此反覆檢驗,最近一次檢驗的對象是Prime Agent harness

重點

您可以使用一個指令和一個環境變數來記錄今天的 Claude Code 工作階段:

npm i -g orcareplay

• 將 ANTHROPIC_BASE_URL 指向記錄器

• 執行代理程式

使用 API 金鑰的 Codex CLI,也同樣相隔那麼遠。寫死的 URL 會讓你付出「同意 TLS 攔截」的代價:該攔截只會讀取自己的允許清單(這也正是 OrcaRouter 的 agent 防火牆所強制執行的紀律),並在執行結束時忘掉自己的憑證。而容器或 VPS,則需要你執行 orca attach。訂閱制登入會讓你失去錄音本身:該 harness 不會被記錄下來,而今天的任何設定變更也都無法改變這點。

整個決策一覽:

• Claude Code — 登入 API 金鑰 vs 路由至記錄器 ANTHROPIC_BASE_URL vs 目前可記錄:是

• Codex CLI — 登入 API 金鑰 vs 路由至錄製器 OPENAI_BASE_URL vs 目前可錄製:是

• 將提供者 URL 寫死的 Harness — 任意登入 vs 路由至錄製器;由錄製器啟動的選擇性加入 TLS 攔截 vs 目前可錄製:是

• 容器或 VPS 上的 Agent — 隨處登入 vs 路由至錄製器 orca attach vs 目前可錄製:可以,若線路格式已知

• Codex CLI — 登入:ChatGPT 訂閱 vs 路由至錄製器:無 vs 今日可錄製:否

最後一列是唯一完全沒有任何通往錄音器的路線的組合。

在你採用某種束具之前,先問那兩個問題,而不是等到第一次事故之後;這些答案得來容易,卻決定著你日後某天急迫需要的 session 是否根本存在。

來源說明:本文所述的所有行為與數據(`ANTHROPIC_BASE_URL` 與 `OPENAI_BASE_URL` 的擷取路徑、四個 fixture 後置破裂問題及其修正、TLS 憑證生命週期、允許清單與隧道行為、`orca attach`,以及安裝需求)皆來自我們針對所列測試框架自行進行的驗證;最近一次是在 2026-09-04。我們未引用任何第三方基準,因為我們並未執行任何此類基準。

© 2026 OrcaRouter

推理服務商

經營推理平台?讓您的模型上架 OrcaRouter。

providers@orcarouter.ai

加入我們的社區

Discordsupport@orcarouter.aiXGitHubYouTube