存檔格式還在,讀檔的程式先走了:Letta Agent File 的一年半
Letta 以前的主庫 letta-ai/letta 有 24,968 顆星(2026-09-29 用 GitHub API 查)。它的 README 開頭第一段就在請你去別的地方:「The current source code lives in letta-ai/letta-code」。那個 repo 只有 3,479 顆星,2025 年 10 月 25 日才建立。
星星多的那個是過去,星星少的那個才是現在。這件事本身不稀奇,產品線換 repo 很常見。會讓人卡住的是夾在中間的第三個 repo:letta-ai/agent-file,1,202 顆星,一個號稱「開放標準」的檔案格式,副檔名 .af。
假設你花了幾個禮拜調一個有記憶的 agent。它記得使用者是誰、記得哪些工具要先呼叫、哪些不能連著用。現在你想把它備份起來,或整包交給同事,或搬到另一套框架。你會去找的,就是這種格式。
它身邊的東西,是一件一件走掉的。
先有伺服器,才有存檔
Letta 以前叫 MemGPT。主庫 letta-ai/letta 建立於 2023 年 10 月 11 日,做的是一台 API server,agent 的狀態住在伺服器裡:系統提示、可以編輯的記憶區塊、工具定義、對話紀錄。
狀態住在伺服器裡,麻煩就來了。你要怎麼把一個 agent「拿出來」?
.af 的 README 把動機講得很直接:AI 生態圈裡每個框架都在發明自己的儲存機制。它想解決的是四件事,搬遷部署、分享調好的 agent、保存設定、用標準格式做版本控管。
2025 年 3 月 23 日,agent-file 這個 repo 建立。
一個存檔裡裝了什麼
打個比方。.af 很像遊戲存檔。你玩了四十小時,角色等級、背包、支線進度全在那個檔案裡,拷到另一台主機上,接著玩。
README 裡那張表列出存檔的內容。模型設定:context window 上限、模型名稱、embedding 模型。完整的訊息紀錄,每則訊息帶一個 in_context 欄位,標出它現在還在不在上下文窗口裡。系統提示。記憶區塊,也就是人格設定跟使用者資訊這類可以被 agent 自己改寫的片段。工具規則,定義呼叫順序或限制。環境變數。還有工具本身,連原始碼帶 JSON schema 一起打包。
有兩個取捨值得注意。
一個是秘密。FAQ 寫得很清楚:「When you export agents with secrets, the secrets are set to null.」匯出時把敏感變數清空,檔案拿去分享才不會把金鑰一起送出去。代價是對方匯入之後,得自己把那些變數補回來,工具才會動。這個取捨我認為做對了,可以分享的存檔,本來就不該帶著你的 API key。
另一個是沒裝進去的東西。Letta 的 Archival Memory 由一種叫 Passages 的單位組成,.af 目前不支援,README 說「on the roadmap」。換句話說,agent 的長期檔案櫃留在原地,存檔帶走的是它的桌面。
「開放」的那一半
存檔的比方有個地方要改一下。遊戲存檔通常只有那款遊戲讀得懂,這點大家都接受。.af 的賣點偏偏是另一件事:它要能被別的框架讀。
FAQ 裡有一題就是在問這個,「Does .af work with frameworks other than Letta?」回答的第一個字是「Theoretically」。理論上可以,只要別的框架把狀態轉成自己的表示法。後面還補了一句更誠實的話:像 context window 裡那種可以編輯、可以在 agent 之間共用的記憶區塊,其他框架根本沒有對應的概念,得一家一家去改。
它裝的欄位,就是 Letta 自己的內部模型。記憶區塊、工具規則、in_context,每一項都是 Letta 的概念。README 自己也說,完整的 schema 要去 Letta 主庫裡一支叫 pydantic_agent_schema.py 的檔案看。一個格式的定義住在單一框架的原始碼裡,它能不能跨框架,全看有沒有第二家願意寫轉換器。
README 最下面的 Roadmap 列了六項,全部沒打勾:MCP servers 設定、archival memory passages、資料來源(檔案)、schema 變動之間的遷移、多 agent 的 .af 檔、跨框架的轉換器。最後一項,正好就是「開放」兩個字要兌現的地方。
接下來的一年半
Agent File 身邊的事
2023-10-11 letta-ai/letta 建立
MemGPT 時代的 API server,後來 .af 要對接的就是這台。
2025-03-23 letta-ai/agent-file 建立
規格、範例 agent 跟一個展示用的前端都放在這裡。
2025-06-25 schema 檔最後一次 commit
pydantic_agent_schema.py 在 archive 分支上的最後一筆紀錄停在這天。
2025-10-25 letta-ai/letta-code 建立
新的主產品,PyPI 上的 letta 套件現在描述是「Letta Code: stateful agents in your terminal」(版本 0.33.6)。
2026-03-24 agent-file 最後一次推送
從建立到這天,剛好一年又一天。之後這個 repo 就沒有新的推送了。
2026-09-10 PR #4354 合併
Letta Code 移除 AgentFile 的匯入與匯出指令。
中間那一格是我原本沒打算找的。
那個 schema 連結
我照 README 那句「You can view the entire schema of .af in the Letta repository here」,用 GitHub API 去拿它指的路徑 letta/serialize_schemas/pydantic_agent_schema.py,分支是 main。回來的是 404。
換成 archive 分支,檔案還在,3,171 bytes。
原因在 letta-ai/letta 現在的 README 裡:「The archive branch contains the retired Letta V1 API server.」主庫的 main 現在只剩 README、LICENSE、.github 跟幾份說明與政策文件(AGENTS.md、貢獻指南、安全與隱私政策、服務條款等),看不到任何程式碼目錄。舊的伺服器程式碼留在封存分支裡,官方用的字是 retired。repo 本身沒有封存,archived 欄位是 false,退休的是裡面那條產品線。
所以如果你今天照著 .af 的 README 走,會連續撞三面牆。schema 連結是 404,要去 archive 分支自己翻。README 教你匯入匯出時對接的那台 Letta server,官方已經標成退休。轉去現在的主產品 Letta Code,它的 README 有一節標題就叫「AgentFile deprecation」:
AgentFile (
.af) export and import are deprecated and have been removed from Letta Code. The/exportand/downloadslash commands and the--importand--from-afCLI flags are no longer supported, including imports from the agent registry.
對應的是 commit a1f9e04,訊息寫著「fix(cli): remove deprecated AgentFile import and export commands (#4354)」,時間是 2026-09-10T18:22:54Z,距離今天 19 天。
同一節最後還有一句,很容易跳過:「This does not affect memory import/export or conversation transcript export.」記憶可以匯出,對話紀錄可以匯出。拿掉的是把整個 agent 包成一個檔的那條路。回到存檔的比方,角色的日記跟對話截圖你還是能帶走,能直接讀檔接著玩的那個選單不見了。
PR 內文跟團隊有沒有公開說明原因,我沒有去讀,所以這篇不替他們猜。
我的判斷
規格 repo 還開著,Apache-2.0,沒有封存。可是它的 schema 住在一條退休的產品線裡,最後一次推送停在 2026 年 3 月 24 日,距今 6 個月又 5 天,而 Letta 自家現在的主產品在 19 天前親手拔掉了匯入匯出。
我現在不會把 .af 當成 agent 的搬家工具來規劃任何東西。手上已經有的 .af 檔,當成舊版 Letta server 的存檔保存就好,別預期新東西讀得懂它。要備份現在的 Letta Code agent,照它 README 說的,走還留著的記憶匯出跟對話紀錄匯出。
哪天我會回頭重看?看到有人寫出不是 Letta 出品、能真的讀進 .af 並跑起來的框架或轉換器,那就是 Roadmap 最後一格被填上了。或者 Letta 自己公布一個接手的完整狀態格式,把 .af 的欄位對過去。兩件事隨便發生一件,這個格式才算從「一家公司的存檔」變回 README 第一行說的那個開放標準。
三個 repo 的星數也別混著讀。24,968 是一條累積了快三年、已經退休的產品線,3,479 是查證當天(09-29)還有推送進來的產品,1,202 是規格 repo 的關注度,不代表世界上有多少 agent 真的用 .af 在流通。只看最大的那個數字,會把過去當成現在。
我沒有裝過 Letta,沒有匯出或匯入過任何 .af 檔。上面的時間點跟星數,是 2026-09-29 用 gh api 對三個 repo 查的,schema 路徑的 404 也是同一天查的;格式內容是讀 README 得來的。有沒有第三方框架已經在讀寫 .af,我沒查到,也不能說沒有。Letta Cloud 的網頁版或 REST API 是不是還保留匯入匯出,我也沒查證,這篇講的移除只到 Letta Code 的 CLI 與斜線指令這一層。
空著的那一格
Roadmap 最後一項「Converters between frameworks」,到今天還是一個沒打勾的方框。
原本最有理由去填它的人,是寫這個格式的那一家。現在,那一家的主產品已經不讀這個格式了。
如果以後還會有第二個程式去讀 .af,它會是誰寫的?
參考來源
- Agent File 規格與 README:https://github.com/letta-ai/agent-file
- Letta 主庫(README 的 Historical source 段落):https://github.com/letta-ai/letta
- Letta Code:https://github.com/letta-ai/letta-code
- 移除 AgentFile 的 commit:https://github.com/letta-ai/letta-code/commit/a1f9e04
- schema 檔(archive 分支):https://github.com/letta-ai/letta/blob/archive/letta/serialize_schemas/pydantic_agent_schema.py
- PyPI 套件:https://pypi.org/project/letta/










