第 7 站 · 上線與觀測該站第 1 / 12 場
Agent 的身分其實是一份 Log
The Log Is The Agent - Ishaan Sehgal, Omnara

講者主張 agent 的身分不在 model 或 runtime,而是那份可回放的事件紀錄,也就是 log。
重點摘要
- Agent 的身分是 log,不是 model:講者用 Skyrim 存檔類比:角色的本體不是主機或手把,而是可攜帶、可還原的存檔資料;agent 也一樣,身分寫在 log 裡,model 與執行環境只是拿來讀寫這份紀錄的介面。
- log 才是唯一真實紀錄:log 是 append-only 的事件歷史,記下每一次 user input、model output、tool call、tool result、permission 與 failure;context window、UI、除錯追蹤、稽核、compaction 全部只是從這份 log 算出來的投影(projection),log 本身才是不變的那份。
- compaction 有損,不等於丟掉 agent:context window 有限,log 遲早要壓縮,但壓縮出來的摘要一定會漏掉細節,無法完整還原原始狀態;只要保留原始 log,隨時能重新產生投影,真正丟掉的是只留壓縮版、扔掉原始 log 的時候。
- log 不等於整個世界:agent 能做的事(改檔案、開 GitHub issue、寄信)會在 log 之外留下狀態變化,回溯 log 沒辦法讓外部世界跟著倒轉,例如信寄出去就是寄出去了;log 的職責只是忠實記下 agent 做了什麼、看到什麼、還需要什麼才能接著做。
- 把 log 當第一等公民,可靠度與擴充都變簡單:process 死掉不會弄丟正在等待的 permission prompt,因為新的 worker 能照 log 重建狀態接手;一個 process 能同時推進上千個 agent,分享 agent 也不必複製貼上對話紀錄,直接授權讀寫同一份 log 就好,換 model provider 也只是換一種讀 log 的轉接器。
- 最深的鎖定是 log 鎖定:講者認為 model 和 API 都能替換或包一層,真正難擺脫的是 log 被平台掌握;log 一旦被平台拿走,等於整個 agent 被拿走,而 agent 往往裝著使用者最私密的資料,這也是 Omnara 打造開源 managed agents 平台的理由。
時間軸15 段
| 00:00 | 開場 | Ishaan Sehgal(Omnara CEO)開場破題:多數人把 agent 等同 model 或執行環境,他認為這個預設本身就是錯的,身分其實藏在 log 裡。 |
| 00:17 | Skyrim 類比 | 講者以玩了 100 小時的 Skyrim 角色為例:角色不是主機、不是手把,而是可以下載、復原的存檔資料,agent 的身分也是同一套道理。 |
| 01:39 | log 的定義 | log 是 append-only 的事件歷史,記下每一次 user input、model output、tool call、tool result、permission 與 failure,agent 每個狀態轉換都寫進這份紀錄。 |
| 02:21 | 簡化成讀寫迴圈 | 把 agent 定義成 log 之後,系統簡化成不斷讀寫同一份紀錄的迴圈:model 讀 log 決定下一步,tool runner 執行後把結果寫回去。 |
| 03:13 | loop 本身可拋棄 | 重點不是這個迴圈多複雜,而是迴圈本身可以拋棄:一個 worker 讀 log、推進一步、寫回結果就能消失,換另一個 worker 接手也沒差,講者類比資料庫當年從表格轉向以 log 為核心的演進。 |
| 04:23 | 質疑一:compaction | context window 有限,log 遲早要壓縮,但壓縮出來的摘要一定是有損的,無法完整還原原始狀態;只要保留原始 log,還是能重新產生新的投影。 |
| 05:31 | 質疑二:log 之外 | agent 能做的事(改檔案、開 issue、寄信)會在 log 之外留下痕跡,回溯 log 沒辦法讓外部世界跟著倒轉;log 的職責只是忠實記下 agent 看到與做過的部分。 |
| 06:58 | 可靠度:prompt 不遺失 | 講者舉例,現在用 Claude Code 時如果在 permission prompt 卡住、process 就掛掉,恢復後 prompt 會不見;若 log 才是 agent 本體,新的 worker 接手也能看到 prompt 還在原處。 |
| 07:46 | 規模化到千個 agent | 多數 harness 是一個 process 對一個 agent,agent 因此被綁在特定機器上;把 log 當狀態之後,一個 process 可以同時推進上千個 agent,不需要 sticky session 或狀態搬遷。 |
| 08:20 | forking 與多人協作 | log 可以在任一時點分支,一條讓 Claude 跑,另一條讓 GPT 或其他開源 model 跑;分享 agent 也不必複製貼上對話紀錄,直接授權讀寫同一份 log 就好。 |
| 09:29 | 跨 provider 遷移 | 若 agent 身分被綁死在特定 provider 的 thread 與記憶格式裡,換 provider 會很痛苦;log 為核心時,換 provider 只是換一種讀寫轉接器,agent 可以從 Claude 開始、換到 GPT、再由 Qwen 完成而不失去自己。 |
| 10:03 | 現有工具的問題 | 講者點名 Claude Code、Codex 把 log 寫成本地 JSONL 檔且是 fire-and-forget,寫入失敗資料就沒了;OpenCode 用 SQLite 儲存,也有不少關於資料損毀、跨 session 難查詢的回報。 |
| 11:11 | 最深的鎖定 | model 和 API 都能替換或包一層,真正難以擺脫的是 log 被平台掌握;log 一旦被平台拿走,平台等於拿走了整個 agent,而 agent 往往裝著使用者最私密的資料。 |
| 12:25 | Omnara 的架構 | Omnara 把 agent 執行拆成一組圍繞 log 協調的元件:worker 負責推進迴圈但本身不是 agent,呼叫 model、分派 tool、寫回 log,半路掛掉也能換別的 worker 接手。 |
| 13:43 | 結語:即將開源 | 講者總結 agent 不只是一次 model call、不是 prompt、loop 或 sandbox,而是持續累積的工作歷史,也就是 log;並預告 Omnara 即將開源以 session log 為核心、使用者可完全擁有與檢視的 managed agents 平台。 |
值得記的話5 句
I think that the thing that actually gives an agent its identity is its log, and that's what I'm going to be arguing today.
我認為真正賦予 agent 身分的是它的 log,這也是我今天想主張的論點00:17The important insight is not that this loop is complicated. The important insight is that the loop is disposable.
重點不在於這個迴圈多複雜,而是這個迴圈可以隨時被丟棄02:56If you keep the raw log, you can always generate new projections from it. But if you throw away the raw log and keep only the compaction, you've effectively lost part of the agent.
只要留著原始 log,永遠能重新產生新的投影;但如果丟掉原始 log、只留壓縮版,等於真的失去了 agent 的一部分05:14And long term, the log is the valuable part because the model is replaceable, the runtime is replaceable, the machine is replaceable. The log is a thing that persists.
長期來看,log 才是真正有價值的部分,因為 model 能替換、runtime 能替換、機器也能替換,只有 log 會留下來11:31An agent is not just a model call, it's not just a prompt or a loop or a sandbox, it's not any of those things.
agent 不只是一次 model call,不是 prompt、loop,也不是 sandbox,都不是這些東西14:02
名詞與人物8 個
- Omnara
- 講者任職的新創公司,他是 CEO,正在打造以 session log 為核心的開源 managed agents 平台。
- log
- 這場的核心概念:append-only 的事件歷史,記下每一次 user input、model output、tool call、tool result、permission 與 failure,講者主張這才是 agent 的身分本體。
- projection(投影)
- 講者用來稱呼從 log 算出來的各種輸出,例如 context window、UI、除錯追蹤、稽核紀錄、compaction 都只是 log 的投影,log 本身才是原始紀錄。
- compaction
- 把過長的 log 壓縮成 model 能處理的較小表示法;講者強調這個過程是有損的,不會完整還原原始狀態。
- Skyrim
- 講者開場用來類比 agent 身分的電玩,重點是玩家角色的身分在存檔資料裡,不在主機或手把。
- Claude Code
- 講者舉的例子:目前若在 permission prompt 卡住時 process 死掉,恢復後 prompt 會消失,用來說明現有 harness 沒有把 log 當第一等公民。
- OpenCode
- 講者提到的另一個 agent harness,用 SQLite 儲存狀態,他指出社群回報不少資料損毀與跨 session 查詢困難的問題。
- log lock-in
- 講者提出的概念:比 model 或 API 鎖定更難擺脫的鎖定形式,log 一旦被平台掌握,平台就等於掌握了整個 agent。
提到但沒有展開
- 提到 Anthropic 有類似的 hosted managed agent 服務,並預告每個 managed provider 都會想擁有更多這個技術堆疊,但只是點名帶過,沒有細講實際功能。
- 提到部分平台用 durable objects 分片儲存 log,導致重建歷史、跨 session 查詢困難,但沒有點名是哪些平台。
- 提到 Omnara 的架構會呼叫 model provider、把 tool 分派到對應的執行環境完成後再寫回 log,但沒有說明 sandbox 或執行環境的實作細節。