一段 JSON 先擋在門口:AMP 給 AI 記憶裝上的收據,是一頁排好欄位的介面
從掘金一篇 300 行程式碼的 AMP 協議實作看起,觀察 AI 記憶如何在欄位、雜湊鏈與墓碑機制之間被排成一頁可驗證的介面。
科技 設計評論 約 4 分鐘閱讀
2026 年 10 月 18 日,掘金作者 doujiaozh 發布了一篇題為「從 0 到 1:我用 300 行代碼給 AI 記憶加上了不可篡改的收據」的文章,分享了一個名為 AMP(Attestation Memory Protocol)的開源協議與其 Node.js 參考實作。文章不長,讀完約三分鐘,但其中最值得停下來看的,是幾段被排得整整齊齊的 JSON。
先從最小的細節看起。AMP 規定,任何一條要寫進系統的記憶,都必須攜帶一個叫 Attestation 的結構:source 標明這條記憶由誰產生(user、app、model 或 import),method 記錄取得方式,confidence 是一個 0 到 1 的置信度,limitations 列出明確不知道的事,capturedAt 是採集時間戳。少了這個結構,系統直接回傳 400 invalid_attestation,拒收。
這個設計的關鍵在於順序。大多數記憶系統先收資料、再考慮來源;AMP 把來源做成了前置欄位,寫在資料之前。這與我們先前分析的rea 把「模型別瞎編」做成協議是同一個方向:把對資料品質的要求,從開發者的自覺下沉為介面層的硬性契約。差別在於,rea 管的是模型輸出,AMP 管的是記憶讀寫的每一筆痕跡。
第二個值得看的細節是 Event 的雜湊鏈。每一次讀、寫、授權、撤銷,都會追加一條紀錄,並以 hash = sha256(seq|id|actor|action|target|payloadHash|at|prevHash) 串起前後。作者在瀏覽器打開 /v1/events 端點,看到的是一條完整的 JSON 鏈,任何人拿到這份資料,都能獨立驗證這幾萬條日誌有沒有被中途改動。換句話說,這不是一個功能,而是一種可被外部檢查的排版:把信任攤開在一份可下載的文件裡。
刪除的處理更能看出品味。使用者要求刪除記憶時,AMP 不物理刪行,而是把 content 清空、保留 contentHash,形成一條所謂的 Tombstone(墓碑)。墓碑本身證明了「這條資料確實已被刪除」。與一般產品直接把刪除做成一個無回音的按鈕相比,這裡的刪除留下了一個形狀。它與Anthropic 文本水印五小時被拆掉的對照也頗有意思:水印證明來源,墓碑證明離開,兩者都在處理同一件事,如何讓「存在過」變成可驗證的事實。
第四個物件是 Grant:使用者可以把特定範圍的記憶授權給特定應用,例如只開放工作區記憶給 Cursor 讀取、七天過期、可隨時撤銷。授權從帳號層級的「全部同意」被切成了範圍、期限與撤銷三個可組合的維度。
為了證明協議可行,作者用 Node.js 寫了一個無外部依賴、只使用 http 與 crypto 兩個內建模組的單檔參考實作 daemon.js,並附上一套一致性測試,八個用例全數通過,從無證據寫入被拒、授權後可讀、撤銷後禁止讀取,到最後的鏈驗證。專案以 Apache-2.0 開源,作者在文末徵求第二個能通過測試套件的實作。
作為觀察,AMP 的價值不在那 300 行程式碼,而在它示範了一種介面姿態:記憶系統的第一公民是證據,資料只是證據的乘載物。目前各家 AI 應用各自建庫、資料無法遷移、權限無法追溯,使用者也確實無從回答「它憑什麼知道、真刪乾淨了嗎」。AMP 還只有一個實作者,能不能長成真正的協議尚未可知,但那個 400 invalid_attestation 的拒絕訊息已經說明了立場:沒有來源的記憶,連被儲存的資格都沒有。