AI Agent如何連續工作數週?Addy Osmani給出答案:記憶外化加檢查點
整理版優先睇
長程Agent嘅核心:記憶外化加檢查點,將AI變成持續上班嘅數字員工
呢篇文章係關於Addy Osmani大神嘅博客《Long-running Agents》,講點樣令AI Agent可以長時間運行,而唔係得幾分鐘壽命。作者墨問作為AI工程化學徒,整理咗核心思路同自己嘅體會。問題係而家嘅Agent好多都係短跑選手,一遇到上下文爆或者中間出錯就要從頭嚟過,根本做唔到有價值嘅長任務。
Addy提出嘅核心方案係將記憶外化——唔係塞曬入prompt,而係寫入文件、數據庫、結構化工件。咁樣Agent就可以跨越上下文窗口同沙箱,從故障中恢復,仲可以留低結構化產出。即係LLM係CPU,上下文係內存,工件係硬盤。呢套思路令Agent可以持續運行幾小時、幾日甚至幾星期。
作者體會到,做Agent系統本質係工程問題,唔係淨係調prompt。關鍵係狀態管理、檢查點、沙箱編排、工件存儲呢啲後端熟悉嘅嘢。總括嚟講,模型負責思考,工程負責堅持。
- 長程Agent能持續運行數小時至數週,跨上下文窗口同沙箱,並能從故障恢復。
- 核心方法係記憶外化:將活躍資料放上下文,其餘存喺結構化工件,似虛擬內存。
- 必須設計檢查點,崩潰後可從最近穩定狀態繼續,唔使從頭嚟過。
- 善用多個沙箱做並行執行同接力,每個沙箱只係臨時工位。
- 輸出要結構化,機器同人都可讀,可以版本化、diff、回滾,提升可控性。
Long-running Agents 原文
Addy Osmani 嘅博客,講述長程Agent嘅設計思路同實踐。
短跑Agent嘅死穴
諗下呢個場景:你叫AI Agent去重構一個老項目,佢跑咗兩個鐘,差唔多搞掂——但係<p>上下文爆咗</p>。或者中間有步驟報錯,成個過程要從頭嚟過。呢個就係而家大多數Agent嘅致命問題:佢哋都係<p>短跑選手</p>,跑唔到長途。
上下文爆咗
短跑選手
但有價值嘅任務,例如調研、遷移、監控、跨日研究,冇一個係幾分鐘搞得掂嘅。所以長程Agent先至係真正實用嘅方向。
記憶外化:將大腦搬出prompt
Addy比喻得好:LLM係<p>CPU</p>,上下文係<p>內存</p>,工件係<p>硬盤</p>。呢套<p>虛擬內存</p>嘅概念令Agent可以無限擴展。
CPU
內存
硬盤
虛擬內存
短跑Agent好似說書人,一斷就故事完;長程Agent似寫日記嘅人,每日進展落喺紙上,邊個接手都得。
崩潰?有檢查點就得
- 長跑過程中崩潰係必然,網絡、API限流、模型抽風、沙箱被回收都可能會出事。
- Agent要假設自己隨時會掛,每一步關鍵操作都要有<p>檢查點</p>,崩咗之後可以從最近嘅穩定狀態繼續。
- 就好似打機之前要<p>存檔</p>,Agent系統都要有「存檔點」。
檢查點
存檔點
呢個係工程化嘅基本操作,將容錯機制融入Agent設計。
沙箱係工具,唔係屋企
長程Agent經常要<p>跨多個沙箱</p>工作,因為單個沙箱有資源上限同生命週期。Agent要喺沙箱A做完一段,落盤,然後轉去沙箱B繼續。
跨多個沙箱
仲有一個好處:可以<p>並行</p>。將大任務拆開丟入多個沙箱同時跑,最後彙總,效率更高。
並行
- 1 資源上限:一個沙箱未必夠做曬所有步驟。
- 2 生命週期:沙箱隨時被清,所以要預先安排轉移。
- 3 並行能力:將任務拆解,多沙箱一齊跑,快好多。
沙箱對Agent嚟講只係<p>臨時工位</p>,唔係自己屋企。
臨時工位
結構化工件:Agent嘅產出物
短跑Agent輸出係一段對話,長程Agent嘅輸出必須係<p>結構化工件</p>——報告、PR、配置、快照。點解一定要結構化?因為機器可讀,下一輪Agent可以直接用,唔使再解釋token;人也可讀,方便審查;仲可以<p>版本化</p>、<p>diff</p>、<p>回滾</p>。
結構化工件
版本化
diff
回滾
作者仲話:上下文窗口唔係越大越好,關鍵係識得<p>換入換出</p>。呢個先係真正嘅學問。
換入換出
🌟星標 + 👆關注,第一時間知道最新、最有用的AI編程技巧
《賈傑的AI編程秘笈》付費合集,總共10篇,已經完結。30蚊交個朋友,學唔到真嘢揾我退錢;)
以及我最新嘅付費合集《又100個思維碎片》墨問,把我返一日工,AI自己喺屋企寫一日code嘅焚訣,分享俾你
寫喺前面
最近讀到 Addy Osmani 大神嘅一篇博客《Long-running Agents》,講點樣令 AI Agent 可以“長跑”。
唔係跑幾分鐘就喘氣嗰種,而係可以跨越幾個鐘、幾日、甚至幾星期持續做嘢嘅真傢伙。
讀完幾有感受,作為一個仲摸索緊 AI 工程化嘅學徒,我將核心思路整理成筆記。原文連結放喺最後,強烈推薦睇原版。
P.S. 呢篇筆記入面嘅觀點大部分來自 Addy,我只係搬運 + 加啲自己嘅理解。
嗰個糟糕嘅場景
我哋先諗下:讓 AI Agent 去重構一個舊項目,跑咗兩個鐘,眼睇就快得——上下文爆咗。
或者中間某一步報錯死咗。
然後呢?然後唯有由頭再嚟。
呢個就係而家大多數 Agent 致命的問題:全部係短跑選手。
但現實入面有價值嘅工作,調研、遷移、監控、跨日嘅研究,冇一個係幾分鐘搞得掂嘅。
長程 Agent 係咩嘢
Addy 畀咗一個好靚嘅定義:
長程 Agent 可以喺幾個鐘、幾日、幾星期裏面持續推進任務。佢可以跨越好多個上下文窗口同沙箱,從故障中恢復,留低結構化嘅工件,並從中斷嘅地方繼續。
打個比方。短跑 Agent 好似說書人,收口或者忘記台詞,故事就斷咗。
長程 Agent 好似寫日記嘅人,每日嘅進展都寫低喺紙上,邊個接力寫都得。
將記憶從大腦搬出嚟
上下文窗口係有限嘅(再大都有一個上限),所有嘢都塞入 prompt 入面,遲早爆。
長程 Agent 嘅核心思路係:將記憶外化,寫入文件、數據庫、結構化嘅工件入面。
係咪好耳熟?冇錯,呢個就係操作系統入面嘅虛擬內存:活躍嘅工作集放喺內存,剩下嘅換去磁盤,要用再換返嚟。
LLM 係 CPU,上下文係內存,工件係硬盤。成個思路一下就通曬。
死機唔可怕,起唔返身先可怕
長跑過程中死機幾乎係必然事件。網絡唔穩定、API限流、模型發神經、沙箱被回收,總有一款啱你。
所以 Agent 唔可以假設“自己永遠在線”,要假設“自己隨時會死”。
每一步關鍵操作都要有檢查點。死機之後下次啟動讀檢查點,從最近嘅穩定狀態繼續。
講白咗就係 Agent 系統都要有“存檔點”。遊戲打 Boss 之前都知道存檔,Agent 點解唔存?
沙箱係工具,唔係屋企
Addy 仲提到一個有意思嘅點:長程 Agent 經常需要跨多個沙箱工作。
點解?單個沙箱有資源上限、有生命週期、隨時可能被清除。指望一個沙箱陪你跑一個星期,唔現實。
所以佢要能夠喺沙箱 A 入面做完一段,落盤,然後換去沙箱 B 入面加載繼續做。
沙箱對佢嚟講係臨時工位,不是自己家。
順便仲有個好處:可以並行。一個大任務拆成幾塊,掉落多個沙箱同時跑,最後匯總。一個人長跑就變成咗一支隊伍接力。
結構化工件:Agent 嘅“產出物”
呢點特別值得講。
短跑 Agent 嘅輸出就係一段對話、一個回答。長程 Agent 嘅輸出要係結構化工件——一份報告、一個 PR、一組配置、一份快照。
點解一定要“結構化”?
機器可以讀,下一輪 Agent 直接消費,唔使令 LLM 重新理解一次自然語言(每次解釋都燒 token,仲容易走歪)。
人都可以讀,方便我哋隨時介入、審查、改錯。
仲可以版本化、可以 diff、可以回滾,長跑過程嘅可控性全靠佢。
工件唔只係“結果”,佢同時係 Agent 嘅記憶和通信協議。
幾點學習體會
最大嘅感受係:做 Agent 系統,本質係工程,唔係調整 prompt。
模型再強都只係其中一個零件。真正決定 Agent 能唔能夠跑落去嘅,係圍住模型搭起嗰一套——狀態管理、檢查點、沙箱編排、工件存儲、錯誤恢復。
呢啲嘢傳統後端開發都唔陌生,只係搬到 Agent 場景重新組合一下。
另一個感受:上下文窗口唔係越大越好,關鍵係識用。就算你有 200 萬 token,塞滿咗照樣爆。識得換入換出,比起堆 token 重要好多。
總結
長程 Agent 想做嘅嘢,係將 AI 從“一次性嘅智力閃光”,變成“可以持續返工嘅數字員工”。
要做到呢點,離唔開幾樣:記憶外化成工件、設計檢查點可以從故障恢復、跨沙箱接力、將成個流程當分佈式系統嚟做工程化。
一句話:模型負責思考,工程負責堅持。
參考資料
Addy Osmani 原文:Long-running Agents
堅持創作唔容易,求個一鍵三連,多謝你~❤️
以及「AI Coding技術交流羣」,聯繫 ayqywx 我拉你入羣,共同交流學習~
🌟星標 + 👆關注,第一時間知道最新、最有用的AI編程姿勢
《賈傑的AI編程秘籍》付費合集,共10篇,現已完結。30元交個朋友,學不到真東西找我退錢;)
以及我最新的付費合集《又100個思維碎片》墨問,把我上一天班,AI自己在家寫一天代碼的焚訣,分享給你
寫在前面
最近讀到 Addy Osmani 大神的一篇博客《Long-running Agents》,講怎麼讓 AI Agent 能“長跑”。
不是跑幾分鐘就喘的那種,而是能跨越數小時、數天、甚至數週持續幹活的真傢伙。
讀完挺有感觸,作為一個還在摸索 AI 工程化的學徒,我把核心思路整理成筆記。原文連結放在最後,強烈推薦讀原版。
P.S. 這篇筆記裏的觀點大部分來自 Addy,我只是搬運 + 加點自己的理解。
那個糟糕的場景
我們先想一下:讓 AI Agent 去重構一個老項目,跑了兩小時,眼看快成了——上下文爆了。
或者中間某一步報錯掛掉了。
然後呢?然後只能從頭再來。
這就是當下大多數 Agent 致命的問題:都是短跑選手。
可現實裏有價值的活兒,調研、遷移、監控、跨日的研究,沒一個是幾分鐘能搞完的。
長程 Agent 是個啥
Addy 給了一個很漂亮的定義:
長程 Agent 能在數小時、數天、數週裏持續推進任務。它能跨越多個上下文窗口和沙箱,從故障中恢復,留下結構化的工件,並從中斷處繼續。
打個比方。短跑 Agent 像說書人,閉嘴或忘詞,故事就斷了。
長程 Agent 像寫日記的人,每天的進展都落在紙上,誰來接着寫都行。
把記憶從大腦裏搬出來
上下文窗口是有限的(再大也有上限),所有東西都塞 prompt 裏,遲早爆。
長程 Agent 的核心思路是:把記憶外化,寫到文件、數據庫、結構化工件裏去。
是不是很耳熟?沒錯,這就是操作系統裏的虛擬內存:活躍的工作集放內存,剩下的換到磁盤,要用再換回來。
LLM 是 CPU,上下文是內存,工件是硬盤。整套思路一下就通了。
崩不可怕,爬不起來才可怕
長跑過程中崩潰幾乎是必然事件。網絡抖、API 限流、模型抽風、沙箱被回收,總有一款適合你。
所以 Agent 不能假設“自己永遠在線”,得假設“自己隨時會掛”。
每一步關鍵操作都要有檢查點。崩了之後下次啓動讀檢查點,從最近的穩定狀態繼續。
說白了就是 Agent 系統也得有“存檔點”。遊戲打 Boss 之前都知道存盤,Agent 憑什麼不存?
沙箱是工具,不是家
Addy 還提到一個有意思的點:長程 Agent 經常需要跨多個沙箱工作。
為什麼?單個沙箱有資源上限、有生命週期、隨時可能被清掉。指望一個沙箱陪你跑一週,不現實。
所以它得能在沙箱 A 裏幹完一段,落盤,然後換到沙箱 B 里加載繼續幹。
沙箱對它來說是臨時工位,不是自己家。
順帶還有個好處:可以並行。一個大任務拆成幾塊,丟進多個沙箱同時跑,最後彙總。一個人長跑就變成了一支隊伍接力。
結構化工件:Agent 的"產出物"
這點特別值得說。
短跑 Agent 的輸出就是一段對話、一個回答。長程 Agent 的輸出得是結構化工件——一份報告、一個 PR、一組配置、一份快照。
為什麼非得“結構化”?
機器可讀,下一輪 Agent 直接消費,不用讓 LLM 重新理解一遍自然語言(每解釋一次都燒 token,還容易跑偏)。
人也可讀,方便我們隨時介入、審查、改錯。
還能版本化、能 diff、能回滾,長跑過程的可控性全靠它。
工件不只是“結果”,它同時是 Agent 的記憶和通信協議。
幾點學習體會
最大的感受是:做 Agent 系統,本質是工程,不是調 prompt。
模型再強也只是其中一個零件。真正決定 Agent 能不能跑下來的,是圍着模型搭起來的那一套——狀態管理、檢查點、沙箱編排、工件存儲、錯誤恢復。
這些東西傳統後端開發都不陌生,只是搬到 Agent 場景重新組合一下。
另一個感受:上下文窗口不是越大越好,關鍵是會用。哪怕你有 200 萬 token,塞滿了照樣爆。會換入換出,比堆 token 重要得多。
總結
長程 Agent 想做的事,是把 AI 從“一次性的智力閃光”,變成“能持續上班的數字員工”。
要做到這點,離不開幾樣:記憶外化成工件、設計檢查點能從故障恢復、跨沙箱接力、把整套流程當分佈式系統來做工程化。
一句話:模型負責思考,工程負責堅持。
參考資料
Addy Osmani 原文:Long-running Agents
堅持創作不易,求個一鍵三連,謝謝你~❤️
以及「AI Coding技術交流羣」,聯繫 ayqywx 我拉你進羣,共同交流學習~