# Agent NAS: 完整文件 > Agent NAS 是圍繞「一次執行」設計的網路附加儲存:智能體的每次執行都在隔離的分支裡工作,憑一張短時、窄域的租約存取資料;每個改動都能追溯、能撤銷;記憶是帶來源的普通檔案。對外,它說智能體早已會說的話:檔案、Git、S3 和 MCP。 狀態:概念與規範草案 v0.2,2026 年 11 月。尚無參考實作。 內容採用 CC BY 4.0 許可。 --- # Agent NAS:為 AI 智能體而生的網路附加儲存 > Agent NAS 是圍繞「一次執行」設計的網路附加儲存:智能體的每次執行都在隔離的分支裡工作,憑一張短時、窄域的租約存取資料;每個改動都能追溯、能撤銷;記憶是帶來源的普通檔案。對外,它說智能體早已會說的話:檔案、Git、S3 和 MCP。 **智能體在這裡工作,你始終掌控。** 一台把「執行」當作基本單位的 NAS:每次執行有自己的分支和租約,每個改動可追溯、可撤銷,記憶是你能讀、能改、能帶走的筆記。 ## 一覽 - **類別**: 為 AI 智能體而生的網路附加儲存,也稱智能體原生儲存(agent-native storage)。 - **核心理念**: 存取的單位是**執行**,不是帳號:執行在分支上工作,憑租約存取,留下記錄。 - **四個承諾**: 有界、可恢復、可追責、可檢視。 - **核心名詞**: Tree、Commit、Principal、Run、Lease 和 Record。 - **概念**: 九個命名概念,分為三組:工作、權限與知識。 - **介面**: 資料面:掛載、Git、S3、WebDAV;控制面:MCP、HTTP、CLI。 - **規範**: 草案 v0.2,符合性等級從 L0 Files 到 L4 Sync,每一級都有可執行的驗收測試。 - **狀態**: 概念與規範階段,尚無參考實作。L0 與 L1 可以用現成零件今天搭出來。 - **許可**: 內容採用 CC BY 4.0。 ## 為什麼是現在 過去一年裡,四件事已經發生。 - **智能體在檔案裡工作。** [AGENTS.md](https://agents.md)、[Agent Skills](https://agentskills.io/specification)、以 Git 為後端的記憶([Letta Context Repositories](https://www.letta.com/blog/context-repositories/)),以及把長輸出寫成檔案的[動態上下文發現](https://cursor.com/blog/dynamic-context-discovery),讓檔案成了智能體的工作介質。 - **錯誤來得又快又貴。** 2026 年 4 月,一個編碼智能體用在無關檔案裡翻到的、權限過寬的權杖,[9 秒內刪掉了一家公司的生產資料庫和同卷備份](https://www.theregister.com/software/2026/04/27/cursor-opus-agent-snuffs-out-startups-production-database/5224442)。 - **人審不了每一步。** Anthropic 披露,使用者批准了 [93% 到 97% 的權限提示](https://claude.com/resources/articles/auto-mode-default-in-claude-code);在它的受控實驗裡,人只攔住了 13.6% 被植入的危險命令。 - **記憶成了攻擊面。** 2026 年的[多項研究](https://arxiv.org/abs/2606.04329)表明,惡意指令一旦寫進持久記憶就能跨工作階段存活,只在輸入或檢索處設防,效果有限。 儲存廠商也動了:[QNAP QuAgent](https://www.qnap.com/en/software/quagent)、[Synology DSM Agent](https://www.synology.com/en-us/beta/2026_DSM_Agent_1_0_Beta/release_note) 和 [TrueNAS MCP](https://truenas.github.io/truenas-research-labs/) 都讓智能體來管理這臺盒子。可是別的智能體怎樣在盒子裡的資料上安全地工作,據我們所見還沒有一份自託管、開放、可驗收的契約。參見 [Agent NAS 與現有做法的比較](https://agentnas.com/zh-tw/compare/)。 ## 四個承諾 | 承諾 | 含義 | 由哪些概念兌現 | | --- | --- | --- | | 有界 | 一次執行只能碰租約點名的資料,到點即失效;讀過不可信內容的工作階段,不能同時再擁有敏感資料與對外通道。 | [Capability Lease](https://agentnas.com/zh-tw/concepts/capability-lease/)、[Trust Labels](https://agentnas.com/zh-tw/concepts/trust-labels/) | | 可恢復 | 寫入先落在分支;受保護的資料只能經審閱的合併更新;刪除是軟刪除;快照不在任何租約的權限之內。 | [Agent Branch](https://agentnas.com/zh-tw/concepts/agent-branch/)、[Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/) | | 可追責 | 每個改動都能回答:誰做的、代表誰、憑哪張租約、讀過什麼。 | [Flight Recorder](https://agentnas.com/zh-tw/concepts/flight-recorder/) | | 可檢視 | 記憶是帶來源的普通筆記,索引隨時可以丟棄重建;全部資料都可以匯出帶走。 | [Agent Home](https://agentnas.com/zh-tw/concepts/agent-home/)、[Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/)、[Budgeted Reads](https://agentnas.com/zh-tw/concepts/budgeted-reads/)、[Cascade Forget](https://agentnas.com/zh-tw/concepts/cascade-forget/) | ## 九個概念,三個問題 Agent NAS 提出九個命名概念。每個概念都有獨立頁面:一句可以直接引用的定義、一套機制、一條「從小處開始」的路徑、一份介面草圖、規範對它提出的要求,以及它坦誠的侷限。 ### 工作 工作在哪裡進行,發生了什麼? - AN-01 [Agent Home (智能體之家)](https://agentnas.com/zh-tw/concepts/agent-home/): 按角色劃分、帶歷史的目錄,全是普通檔案,可以帶走。 - AN-02 [Agent Branch (智能體分支)](https://agentnas.com/zh-tw/concepts/agent-branch/): 每次執行在寫時複製的分支裡工作,經審閱的合併才進入主線。 - AN-03 [Flight Recorder (飛行記錄器)](https://agentnas.com/zh-tw/concepts/flight-recorder/): 以執行為單位、雜湊連結的記錄,包括這次執行讀過什麼。 ### 權限 誰可以做什麼,憑誰的許可? - AN-04 [Capability Lease (能力租約)](https://agentnas.com/zh-tw/concepts/capability-lease/): 發給一次執行的、有期限與預算的窄域授權;子租約只能更窄。 - AN-05 [Human Gate (人類閘門)](https://agentnas.com/zh-tw/concepts/human-gate/): 只在不可逆、對外或提權的動作之前出現,展示真實的差異。 - AN-06 [Trust Labels (信任標籤)](https://agentnas.com/zh-tw/concepts/trust-labels/): 來源與敏感度兩個小標籤,加上工作階段污點,強制執行 Rule of Two。 ### 知識 智能體知道什麼,怎樣讀,怎樣忘? - AN-07 [Agent Memory (智能體記憶)](https://agentnas.com/zh-tw/concepts/agent-memory/): 筆記是你能讀能改的真相,索引只是可以丟棄的快取。 - AN-08 [Budgeted Reads (預算化讀取)](https://agentnas.com/zh-tw/concepts/budgeted-reads/): 同一個檔案可以用輪廓、章節、行範圍或全文來讀,按預算降級。 - AN-09 [Cascade Forget (級聯遺忘)](https://agentnas.com/zh-tw/concepts/cascade-forget/): 沿血緣刪除派生物,按保留類處理歷史,並如實報告做不到的部分。 ## 四層,六個名詞 Store 層直接使用成熟的儲存。其餘各層都可以從它重建,核心只有六個名詞:Tree、Commit、Principal、Run、Lease 和 Record。我們不發明儲存引擎,創新放在契約上。 - **Interface(介面)**: 把能力投影成智能體、人和工具已經會用的介面。閘道器無狀態,從不決定誰可以做什麼。 (掛載(POSIX), Git, S3, WebDAV/SMB, MCP, HTTP, CLI, A2A(可選)) - **Trust(信任)**: 唯一的授權點。確定性的策略,決策環節沒有模型參與。 (主體與執行, Capability Lease, 策略引擎, Human Gate, Trust Labels, Credential Broker, Flight Recorder) - **Memory(記憶)**: 把筆記變成可檢索的知識。全部可以從下一層重建。 (Agent Memory, Budgeted Reads, Cascade Forget, 索引, 維護作業, 血緣) - **Store(儲存)**: 帶歷史的樹,用現成的檔案系統快照、Git 或版本化物件儲存。 (Tree, Commit, Agent Branch, 檔案系統快照, Git, 物件儲存) - **Sync(同步,可選)**: 節點之間的複製與共享。放在最後:先把單節點做對。 (Git 遠端, 快照傳輸, 租約連結, 交接包) [閱讀架構](https://agentnas.com/zh-tw/architecture/)。 ## 一次執行的旅程 1. **申請租約。** 研究智能體 Cleo 的編排器為這次執行申請一張 [Capability Lease(能力租約)](https://agentnas.com/zh-tw/concepts/capability-lease/):讀取 `/shared/launch`、提議修改、有效四小時。所有者預先設定的策略包絡自動批准了這次申請。 2. **開工。** NAS 建立這次執行和它的分支 `cleo/run_91ab`;沙箱把分支當作普通目錄掛載。Cleo 從自己的 [Agent Home(智能體之家)](https://agentnas.com/zh-tw/concepts/agent-home/)讀到 `AGENTS.md` 和已審閱的記憶。 3. **在預算內閱讀。** 它用 [Budgeted Reads(預算化讀取)](https://agentnas.com/zh-tw/concepts/budgeted-reads/)讀一份長報告:先看 400 token 的輪廓,再按需讀具體的行範圍。每次讀取都記進這次執行的讀清單。 4. **在分支上工作。** 修改落在 [Agent Branch(智能體分支)](https://agentnas.com/zh-tw/concepts/agent-branch/)上。共享的 `main` 此刻沒有任何變化。 5. **遇到閘門。** Cleo 讀過一個網頁,所以 [Trust Labels(信任標籤)](https://agentnas.com/zh-tw/concepts/trust-labels/)讓它的工作階段帶上 `external` 污點。向 `main` 提議合併時,策略要求經過 [Human Gate(人類閘門)](https://agentnas.com/zh-tw/concepts/human-gate/):所有者在手機上看到由 NAS 計算的真實差異和不可信的來源,然後批准。 6. **留下記錄。** 合併產生一個帶來源的提交。讀過什麼、寫過什麼、誰批准了什麼,都寫進 [Flight Recorder(飛行記錄器)](https://agentnas.com/zh-tw/concepts/flight-recorder/),以雜湊串聯。 7. **沉澱記憶。** Cleo 順手記下幾條新事實。因為這次工作階段讀過外部內容,這些 [Agent Memory(智能體記憶)](https://agentnas.com/zh-tw/concepts/agent-memory/)筆記先進入隔離區:可以被召回,但在人審閱之前不會自動載入。 8. **遺忘。** 幾週後,一位客戶要求被遺忘。[Cascade Forget(級聯遺忘)](https://agentnas.com/zh-tw/concepts/cascade-forget/)沿血緣刪除相關的摘要與索引,並出具一份寫明覆蓋不到範圍的報告。 ## 它說智能體早已會說的語言 起步不需要新的 SDK。只要智能體能讀寫檔案、用 Git 或 S3,或者呼叫 MCP 工具,就能使用 Agent NAS。下面這段工作階段只是對計劃中命令列的示意。 *示意工作階段* ```bash $ nas lease create --role cleo --paths "/shared/launch/**" --actions read,write,propose --ttl 4h lease lse_7Qk3 · run run_91ab · branch cleo/run_91ab · expires 16:00 $ nas mount --lease lse_7Qk3 ~/work # plain files, on a branch $ ./draft-release-notes.sh # the agent works with ordinary tools $ nas propose --into main gate gt_2Mx4 waiting for approval: merge cleo/run_91ab into main (4 files) $ nas gate approve gt_2Mx4 # the owner, from another terminal or a phone merged · commit 91ce3a7 · record 18211 ``` [檢視全部介面](https://agentnas.com/zh-tw/interfaces/)。 ## 我們押注什麼 一份希望幾年後仍然成立的設計,應當說明自己押注了什麼,以及押錯時會怎樣。 - **智能體會繼續把檔案系統和 Git 當作主要的工作介質。** 如果不是,Agent Home 退化為一種匯出格式,其餘概念仍然成立。 - **「一次執行」仍是自然的授權與追責單位。** 如果出現長期常駐的自治行程,租約就改為滾動續期加預算。 - **提示詞注入在可預見的將來不會在模型層被根除。** 如果被根除了,Trust Labels 就成為縱深防禦裡便宜的一層。 - **人的注意力仍然稀缺。** 如果全自動足夠可靠,Human Gate 由策略預授權取代,稽核仍然保留。 全部七個賭注見[設計原則](https://agentnas.com/zh-tw/principles/)。 ## 本站同樣可以被智能體讀取 每個頁面都有 Markdown 孿生版本,本站釋出 `llms.txt`,並執行一個小型的只讀 MCP 伺服器。在終端裡試試: *終端* ```bash curl -H "Accept: text/markdown" https://agentnas.com/what-is-agent-nas/ curl https://agentnas.com/llms.txt curl -X POST https://agentnas.com/api/search \ -H "content-type: application/json" \ -d '{"query": "capability lease", "limit": 5}' ``` 把文件伺服器加入 MCP 用戶端: *mcp.json* ```json { "mcpServers": { "agentnas-docs": { "url": "https://agentnas.com/mcp" } } } ``` ## 人們最先會問的問題 ### 用一句話說,Agent NAS 是什麼? 圍繞「一次執行」設計的網路附加儲存:智能體的每次執行都在隔離的分支裡工作,憑一張短時、窄域的租約存取資料;每個改動都能追溯、能撤銷;記憶是帶來源的普通檔案。 ### 有可以下載的軟體嗎? 還沒有。Agent NAS 目前是一個概念和一份規範草案(v0.2)。L0 與 L1 可以用 Git、檔案系統快照和一個小閘道器今天搭出來;參考實作 v0 的目標是 2027 年上半年,見[路線圖](https://agentnas.com/zh-tw/roadmap/)。 ### 它和 NAS 廠商推出的 AI 智能體有什麼不同? 那些智能體用來管理這臺盒子。Agent NAS 規定的是別的智能體怎樣在盒子裡的資料上工作:分支、租約、記憶與遺忘。兩者互補,廠商的盒子可以成為 Overlay 形態的底座。 ### 它會取代我現有的儲存嗎? 不會。Overlay 部署形態架在現有的 NAS、物件儲存或 Git 託管之前,只管理其中的一個目錄或桶。 ### 它能防住提示詞注入嗎? 不能。它限制注入之後的後果,並讓後果可見、可撤銷。坦誠的侷限見[安全](https://agentnas.com/zh-tw/security/)。 ### 我可以隨時離開嗎? 隨時可以。所有內容都能匯出為普通檔案和 Git 歷史。這是設計上的保證,而不是可選功能。 [全部問答](https://agentnas.com/zh-tw/faq/)。 ## 目前進展 > **狀態.** Agent NAS 處於概念與規範草案階段(v0.2,2026 年 11 月)。v0.2 是一次落地修訂:十三個概念收斂為九個,每個概念都寫明瞭「從小處開始」和「坦誠的侷限」。目前還沒有參考實作。 - [規範草案](https://agentnas.com/zh-tw/spec/): 符合性等級與可執行的驗收測試。 - [路線圖](https://agentnas.com/zh-tw/roadmap/): 現在、下一步、以後,以及不做什麼。 - [關於本專案](https://agentnas.com/zh-tw/about/): 許可、如何引用,以及如何參與。 --- 標準網址: https://agentnas.com/zh-tw/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 什麼是 Agent NAS? > Agent NAS 是圍繞「一次執行」設計的網路附加儲存:智能體的每次執行都在隔離的分支裡工作,憑一張短時、窄域的租約存取資料;每個改動都能追溯、能撤銷;記憶是帶來源的普通檔案。對外,它說智能體早已會說的話:檔案、Git、S3 和 MCP。 ## 一段話說清 Agent NAS 存放智能體長期工作所需的一切:指令、技能、記憶、進行中的工作和歷史。它回答傳統 NAS 不關心的幾個問題:這次執行能碰什麼,改錯了能不能撤銷,誰批准了什麼,記憶來自哪裡。它不是新的儲存引擎,而是搭在成熟儲存(檔案系統、Git、物件儲存)之上的一份**契約**:規定智能體與資料之間的權限、隔離、追溯與記憶應當如何運作,以及怎樣驗收。 ## 拆開讀這個名字 - **Agent(智能體)**: 代表某人行事的 AI 系統:它在多個步驟裡閱讀、決策並使用工具。在 Agent NAS 裡,智能體屬於一個**角色**,每一次工作則是一次**執行**。 - **Network-attached(網路附加)**: 透過網路被許多用戶端同時存取,無論是家庭區域網、團隊伺服器還是雲區域。不綁定某一個沙箱或某一台機器。 - **Storage(儲存)**: 持久、帶歷史、可匯出。儲存是真相的來源,一切「智能」的東西都由它派生,並且可以丟棄重建。 ## 怎樣才算 Agent NAS 1. **存取的單位是執行。** 每次執行擁有自己的[租約](https://agentnas.com/zh-tw/concepts/capability-lease/),而不是共享金鑰或人類帳號。 2. **預設隔離、可撤銷。** 寫入先落在[分支](https://agentnas.com/zh-tw/concepts/agent-branch/);受保護的資料只經合併更新;刪除是軟刪除。 3. **每個改動可追溯。** 誰做的、代表誰、憑哪張租約、讀過什麼([Flight Recorder](https://agentnas.com/zh-tw/concepts/flight-recorder/))。 4. **記憶是帶來源的檔案,索引可丟棄**([Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/))。 5. **透過已有的介面服務:** 掛載、Git、S3、MCP,而不是一套新協定。 6. **去掉 AI 層後,它仍是一台合格的通用 NAS,** 全部資料可以完整匯出。 ## 它不是什麼 - **不是新的儲存引擎、檔案系統或向量資料庫。** 它們都以現成零件的形式被使用。 - **不是沙箱。** 它不隔離計算,只約束智能體與資料之間的關係;應當與沙箱一起使用。 - **不是提示詞注入的解藥。** 它限制後果,不阻止注入發生。參見[安全](https://agentnas.com/zh-tw/security/)。 - **不是智能體框架。** 它不規定智能體怎樣推理、規劃或呼叫模型。 ## 適合誰,誰不需要它 - **已經在用 `AGENTS.md` 加 Git 的開發者:** 想要受保護的主線、可撤銷的執行,以及一份可追溯的記錄。 - **執行多個智能體的團隊:** 需要共享的樹、對智能體改動的審閱,以及「它到底讀過什麼」的答案。 - **擁有個人智能體的個人:** 希望這份記憶留在自己手裡,可以讀、可以改、可以帶走。 - **處理客戶資料的組織:** 需要把保留與遺忘當作寫入時的顯式選擇,並拿到一份誠實的遺忘報告。 > **誰不需要它.** 如果你只有一個智能體、一份可以隨意重來的資料,**不需要** Agent NAS:一個 Git 儲存庫加 `AGENTS.md` 就夠了。當資料開始值錢、智能體開始變多、你開始想知道「它到底讀過什麼、改過什麼」時,才是它的位置。更多情形見[用例](https://agentnas.com/zh-tw/use-cases/)。 ## Agent NAS 與廠商的管理智能體 | 問題 | NAS 廠商的管理智能體 | Agent NAS | | --- | --- | --- | | 智能體做什麼? | 用自然語言管理這臺 NAS,把對話變成操作。 | 在盒子裡的資料上工作:讀、寫、記憶,並留下記錄。 | | 如何授予存取權? | 沿用使用者的權限,危險操作二次確認。 | 綁定一次執行的短時租約:路徑、動作、期限、預算。 | | 出錯怎麼辦? | 依靠確認和日誌。 | 寫入先落在分支;刪除是軟刪除;快照不在任何租約之內。 | | 記憶放在哪裡? | 助手或廠商的伺服器端。 | 作為帶來源的筆記放在智能體的 Home 裡,索引可以丟棄。 | | 不可信的內容? | 像其他文本一樣進入模型。 | 帶 `external` 標籤;讀過之後,有後果的動作要過閘門。 | | 想離開怎麼辦? | 取決於廠商。 | 一切都能匯出為普通檔案和 Git 歷史。 | ## 接下來讀什麼 - [九個概念](https://agentnas.com/zh-tw/concepts/): 每個概念各有一頁,寫明從小處怎麼開始。 - [架構](https://agentnas.com/zh-tw/architecture/): 四層、六個名詞與一次執行的旅程。 - [安全](https://agentnas.com/zh-tw/security/): 威脅模型、控制措施與坦誠的侷限。 - [常見問題](https://agentnas.com/zh-tw/faq/): 常見問題的簡短回答。 --- 標準網址: https://agentnas.com/zh-tw/what-is-agent-nas/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 九個概念 > Agent NAS 建立在九個命名概念之上。它們回答三個問題:工作在哪裡進行、發生了什麼;誰可以做什麼、憑誰的許可;智能體知道什麼、怎樣讀、怎樣忘。 概念名稱是自造術語,在所有語言中都保持英文,並在中文版裡附上釋義。每個頁面開頭都是一句可以單獨引用的定義,隨後依次說明要解決的問題、機制、從小處開始的做法、介面草圖、規範的要求,以及借鑑與區別和坦誠的侷限。符合性等級表示實作方應當在何時支援該概念;參見[規範](https://agentnas.com/zh-tw/spec/)。 > **關於「新」.** 九個概念裡,多數是把成熟的零件組合起來。每個概念頁都寫明瞭借鑑了什麼,以及真正新的部分是什麼。彙總的清單見[比較](https://agentnas.com/zh-tw/compare/)。 ## 三個概念組 ### 工作 工作在哪裡進行,發生了什麼? - AN-01 [Agent Home (智能體之家)](https://agentnas.com/zh-tw/concepts/agent-home/): 按角色劃分、帶歷史的目錄,全是普通檔案,可以帶走。 - AN-02 [Agent Branch (智能體分支)](https://agentnas.com/zh-tw/concepts/agent-branch/): 每次執行在寫時複製的分支裡工作,經審閱的合併才進入主線。 - AN-03 [Flight Recorder (飛行記錄器)](https://agentnas.com/zh-tw/concepts/flight-recorder/): 以執行為單位、雜湊連結的記錄,包括這次執行讀過什麼。 ### 權限 誰可以做什麼,憑誰的許可? - AN-04 [Capability Lease (能力租約)](https://agentnas.com/zh-tw/concepts/capability-lease/): 發給一次執行的、有期限與預算的窄域授權;子租約只能更窄。 - AN-05 [Human Gate (人類閘門)](https://agentnas.com/zh-tw/concepts/human-gate/): 只在不可逆、對外或提權的動作之前出現,展示真實的差異。 - AN-06 [Trust Labels (信任標籤)](https://agentnas.com/zh-tw/concepts/trust-labels/): 來源與敏感度兩個小標籤,加上工作階段污點,強制執行 Rule of Two。 ### 知識 智能體知道什麼,怎樣讀,怎樣忘? - AN-07 [Agent Memory (智能體記憶)](https://agentnas.com/zh-tw/concepts/agent-memory/): 筆記是你能讀能改的真相,索引只是可以丟棄的快取。 - AN-08 [Budgeted Reads (預算化讀取)](https://agentnas.com/zh-tw/concepts/budgeted-reads/): 同一個檔案可以用輪廓、章節、行範圍或全文來讀,按預算降級。 - AN-09 [Cascade Forget (級聯遺忘)](https://agentnas.com/zh-tw/concepts/cascade-forget/): 沿血緣刪除派生物,按保留類處理歷史,並如實報告做不到的部分。 --- 標準網址: https://agentnas.com/zh-tw/concepts/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 架構 > Agent NAS 分為四層加一個可選的同步層:Interface 把能力投影成已有的介面,Trust 是唯一的授權點,Memory 把筆記變成可檢索的知識,Store 儲存帶歷史的樹。Memory 層可以整體刪除再重建,Store 則直接使用成熟的儲存。 ## 四層與可選的同步 - **Interface(介面)**: 把能力投影成智能體、人和工具已經會用的介面。閘道器無狀態,從不決定誰可以做什麼。 (掛載(FUSE、NFS、SMB), Git, S3 相容, WebDAV, MCP, HTTP API, CLI, A2A(可選)) - **Trust(信任)**: 唯一的授權點。確定性的策略引擎,決策環節沒有模型參與;先記錄,後生效。 (主體與執行, Capability Lease, 策略引擎, Human Gate, Trust Labels, Credential Broker, Flight Recorder) - **Memory(記憶)**: 把筆記變成可檢索、可預算讀取的知識。全部可以從下一層重建。 (筆記約定, 索引(全文、向量、圖), Budgeted Reads, 維護作業, 血緣, Cascade Forget) - **Store(儲存)**: 帶歷史的樹:用現成的檔案系統快照、Git 或版本化物件儲存。它不理解記憶與標籤的語義。 (Tree, Commit, Agent Branch, 檔案系統快照, Git, 物件儲存) - **Sync(同步,可選)**: 節點之間的複製與共享,放在最後:先把單節點做對。 (Git 遠端, 快照傳輸, 租約連結, 交接包) - **Memory 層可重建。** 刪掉全部索引再重建,Store 裡的筆記依然完整可讀。 - **閘道器無狀態。** 持久狀態都在 Store 與 Trust 的記錄裡;閘道器可以隨意重啟,也可以水平擴充套件。 - **Trust 是唯一的授權點。** 包括 NAS 自己的後台作業(索引、維護):它們也以 `svc:*` 主體的身份持租約執行。 - **Store 不理解記憶與標籤的語義。** 它只儲存帶後設資料的樹。 - **先記錄,後生效。** 有後果的操作必須先寫入意圖記錄。 ## 窄腰:六個名詞 整套設計只依賴六個名詞;標籤、閘門、記憶和讀清單都是建立在它們之上的約定。 | 名詞 | 含義 | 關鍵不變數 | | --- | --- | --- | | Tree | 帶歷史的目錄樹。 | 任一提交可以重現;有內容雜湊或等價的變更檢測。 | | Commit | 一次不可變的變更。 | 帶來源後設資料:`principal`、`on_behalf_of`、`run`、`lease`。 | | Principal | 可被認證、可被追責的實體。 | 型別為 `human`、`agent`、`service`、`node`;`agent` 屬於某個角色,而不是某一次執行。 | | Run | 一次執行:有開始、結束、目的和責任人。 | 持有一張根租約;擁有一個分支。 | | Lease | 執行的授權。 | 有到期時間;只能收窄;可撤銷;含預算。 | | Record | 只追加的記錄。 | 雜湊連結;先記錄,後生效。 | ## Store 層:契約與可選引擎 Store 契約由引擎提供,或者由閘道器模擬。一個實作可以組合多種引擎,例如文本走 Git,大檔案走快照;契約不規定引擎、雜湊函式或磁碟格式。 1. 原子提交。 2. 廉價分叉:理想情況接近 O(1);最差退化為複製,此時必須有配額與 TTL。 3. 不可變的快照。 4. 變更檢測:內容雜湊或等價的手段。 5. 兩個提交之間的差異。 6. 完整匯出,使用標準格式:目錄、Git 歷史和 `.nas/` 文本後設資料。 | 引擎 | 適合 | 分叉成本 | 注意 | | --- | --- | --- | --- | | Git(含 worktree) | 文本、記憶、技能、小型程式碼庫 | 低 | 大檔案需要 LFS 或外接;二進位檔合併差。 | | 檔案系統快照與複製(ZFS、btrfs、APFS) | 大目錄、混合檔案 | 近似 O(1) | 依賴檔案系統;跨機器複製要用 send/receive。 | | 版本化物件儲存(Tigris 分叉、lakeFS、S3 加清單) | 資料集、大檔案 | 近似 O(1) | 需要閘道器提供檔案視圖。 | | 普通目錄加複製 | Lite 的起步 | O(n) | 只適合小資料;必須有配額與 TTL。 | > **恢復路徑在爆炸半徑之外.** 快照與備份由所有者主體持有,任何租約都不能包含「刪除快照」或「刪除備份」。這是 2026 年 4 月那次事故給出的最直接的教訓:恢復路徑必須在被保護物件的爆炸半徑之外。 - 靜態加密由底層提供;`sensitive` 保留類使用獨立的金鑰域,所以可以透過銷燬金鑰來粉碎。 - 去重與粉碎互相沖突:`sensitive` 類不跨金鑰域去重。 ## 一次執行的旅程 1. **申請。** 編排器(或所有者)為一次執行申請租約:路徑、動作、期限、目的。在**策略包絡**內自動發放;超出則交給 Human Gate。 2. **開工。** NAS 建立 `run` 與分支 `/`,把租約交給執行;沙箱掛載該分支(或 `git clone`)。 3. **工作。** 智能體用普通的檔案工具讀寫。讀取累積成**讀清單**,工作階段污點隨之更新;越權存取被拒絕並記錄。 4. **提交。** 變更自動(防抖)或顯式提交,每個提交都帶來源後設資料。 5. **提議。** `propose` 生成 **Agent PR**:差異、意圖、讀清單摘要、檢查結果與標籤摘要。 6. **裁決。** 策略引擎判斷:檢查通過且低風險就自動合併;涉及受保護資料、對外動作或違反 Rule of Two 就交給 Human Gate;明顯違規就拒絕。 7. **合併與記錄。** 合併產生一個帶來源的提交,並寫入 Record。 8. **收尾。** 租約到期;分支在 TTL 之後回收;讀清單與 Record 按保留策略保留。 **讀路徑:** 請求、租約校驗、標籤檢查(當前工作階段污點是否允許這次讀取)、預算計數、讀 Store、記入讀清單、返回內容與證據指標。 > **先記錄,後生效.** 有後果的操作(合併、刪除、共享、出口、租約變更)必須先寫入意圖記錄;寫不進去,操作就失敗(fail closed)。讀操作進入讀清單,批次落盤,不要求逐條同步。 ## 部署形態 | 形態 | 說明 | 適合 | | --- | --- | --- | | Lite | 單機、單使用者:一個閘道器行程加本地儲存(Git 或檔案系統快照);L0 到 L1。 | 個人與開發者,先試用。 | | Overlay | 不動現有的 NAS 或物件儲存:在前面放一個閘道器,只管理其中的一個目錄或桶;掛載與 S3 視圖經閘道器出入。 | **最現實的起點:** 已經有一台盒子的人。 | | Team | 多使用者、多智能體,一台伺服器或小叢集;L0 到 L3;閘門通知與控制室。 | 小團隊。 | | Cloud | 託管的多租戶服務,強隔離;L0 到 L3。 | 沒有自有硬體的人。 | 原則:不要求專用硬體,任何常開的機器都可以;推理加速器是可選的,嵌入與摘要用小模型即可,也可以呼叫外部服務。 ## 用現成零件搭一個 v0 | 能力 | 今天就能用的零件 | | --- | --- | | Store 與分支 | Git 與 worktree;btrfs 或 ZFS 的快照;或者 Tigris、lakeFS(物件儲存)。 | | 受保護的主線 | Forgejo、Gitea、GitHub 的分支保護;或者 lakeFS 的受保護分支。 | | 租約 | OAuth 授權伺服器(例如 Keycloak)加權杖交換,資源伺服器按路徑字首與動作校驗;或者一個幾百行的簽發服務。 | | 記錄 | 追加寫的 SQLite 表加每日雜湊;提交裡的 Git trailer;OpenTelemetry 匯出。 | | 閘門 | PR 審閱加一條推送通知;CLI 的 `nas gate approve`。 | | 記憶 | `memory/` 下的 Markdown 加 SQLite FTS5;向量庫以後再加。 | | 標籤 | 匯入目錄自動標記為 `external`;執行級的工作階段污點放在閘道器裡。 | | 介面 | NFS、SMB 或 FUSE 掛載;Git over SSH 或 HTTPS;S3 閘道器;一個小型 MCP 伺服器。 | 這張表想說的是:**L0 與 L1 不需要任何新發明。** 新的是把它們組合起來的契約,以及驗收它的測試,見[規範](https://agentnas.com/zh-tw/spec/)。 ## 維運 - **備份:** 3-2-1;快照與備份屬於所有者主體,任何租約都不能觸及;每季度做一次恢復演練並留下記錄。 - **升級:** 閘道器無狀態,可以滾動升級;Store 格式變更必須附帶遷移與回滾方案;Memory 層可以整體重建。 - **監控:** 租約發放與拒絕率;閘門佇列長度與批准率(批准率長期高於 95%,說明閘門太頻繁,該合併或收緊策略);分支數量與年齡;索引新鮮度;記錄鏈校驗;配額。 - **容量:** 分支有 TTL 與配額;回收區有保留期;派生資料有預算。 ## 控制室 給人使用的介面,可以是網頁、CLI 或聊天機器人。它不是必需品:L0 到 L1 完全可以只用 CLI 和現有的 Git 平臺。 - **活動時間線:** 按執行聚合,誰做了什麼、讀了什麼。 - **閘門收件箱:** 待批准的動作,顯示 Gate Card。 - **角色目錄:** 每個角色的 Home、租約、預算與近期執行。 - **記憶瀏覽器:** 筆記與來源、未審閱的隔離區、維護提案。 - **分支與 PR:** 未合併的分支、回收區。 - **遺忘控制台:** 請求、血緣預覽、報告。 人也可以直接用 SMB 或 WebDAV 檢視:`/humans//Agent Activity/` 是一個只讀的活動視圖,裡面都是普通檔案。 --- 標準網址: https://agentnas.com/zh-tw/architecture/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 介面 > Agent NAS 的資料面用檔案,控制面用工具:位元組走掛載、Git 和 S3;授權、審批、記憶、搜尋與解釋走 MCP、HTTP 和 CLI。每個介面都是同一份資料的投影,語義差異用明確的錯誤表達,而不是假裝不存在。 ## 準則 1. **資料面用檔案,控制面用工具。** 位元組走掛載、Git、S3;授權、審批、記憶、搜尋與解釋走 MCP、HTTP 與 CLI。 2. **閘道器無狀態。** 授權只發生在 Trust 層的一個點上。 3. **每個介面都是投影。** 語義差異用明確的錯誤對映表達(例如「閘門待處理」對映成一個帶說明檔案的 `EACCES`),不假裝 S3 有分支。 4. **窄工具面。** 面向智能體的 MCP 工具不超過 10 個;人與運營者的動作放在單獨的操作員介面裡。 5. **轉接器隔離協定變化。** MCP、A2A 的版本演進隻影響轉接器。 ## 介面矩陣 | 介面 | 面 | 面向 | 對映 | 等級 | | --- | --- | --- | --- | --- | | 掛載(FUSE、NFS、SMB) | 資料 | 智能體、人、任何程式 | 分支視圖;錯誤對映見下文 | L0 | | Git(SSH、HTTPS) | 資料 | 智能體、人、CI | 執行分支即 Git 分支;Agent PR 即合併請求 | L0 | | S3 相容 | 資料 | 資料管線、批處理 | 桶對應某棵樹的某個分支視圖;版本 ID 即提交 | L0(可選) | | WebDAV | 資料 | 人(Finder、資源管理器) | 只讀的活動視圖 | L0(可選) | | CLI `nas` | 控制 | 人、指令碼 | 與 HTTP API 一一對應 | L0 | | HTTP API | 控制 | 編排器、控制室 | 全部 `POST` 加 JSON;欄位使用 `snake_case` | L1 | | MCP | 控制 | 智能體 | 九個工具(見下文) | L1、L2 | | A2A | 控制 | 其他智能體 | 任務對應 `inbox/` 與 `outbox/` | L4(可選) | ## MCP 工具面 面向智能體的只有九個工具: | 工具 | 作用 | 所需的租約動作 | 備註 | | --- | --- | --- | --- | | `nas_list` | 列目錄,含標籤與審閱狀態 | `list` | 租約之外的路徑不可見。 | | `nas_read` | 預算化讀取:視圖、範圍、預算 | `read` | [Budgeted Reads](https://agentnas.com/zh-tw/concepts/budgeted-reads/) | | `nas_search` | 搜尋(全文,可選向量),返回片段與指標 | `read` | 預設不返回隔離區。 | | `nas_write` | 寫入分支內的檔案,可附 `intent` | `write` | 多數執行環境直接用掛載,不需要它。 | | `nas_branch` | 建立、檢查點、恢復、列出分支 | `write` | [Agent Branch](https://agentnas.com/zh-tw/concepts/agent-branch/) | | `nas_propose` | 生成 Agent PR | `propose` | 可能觸發閘門。 | | `nas_lease` | 申請更窄的子租約;查詢當前租約與預算;請求擴權(走閘門) | 無 | [Capability Lease](https://agentnas.com/zh-tw/concepts/capability-lease/) | | `nas_remember` | 寫入筆記,含來源與型別 | `write` | [Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/) | | `nas_recall` | 召回筆記:預算化,含來源與審閱狀態 | `read` | [Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/) | > **只面向人與運營者的操作.** `explain`、`gate approve/deny`、`forget`、`trash restore`、`label admin`、`lease revoke` 和 `policy edit` **不暴露**給智能體。這些動作改變的是保證本身,不應該由被約束者來呼叫。智能體可以**請求**其中一部分(擴權、遺忘),但不能執行。 ## 掛載語義 - 掛載綁定**一個分支和一張租約**;租約到期後掛載變為只讀,隨後解除安裝。 - 自動提交(防抖,例如靜默 5 秒);`fsync` 會觸發一次提交。 - 租約之外的路徑**不出現在目錄列表裡**:這減少資訊洩露,也縮小了提示注入的攻擊面。 - 對沙箱友好:不需要 root;FUSE 與 NFS 二選一,不需要核心模組;可以只讀掛載。 | 情況 | POSIX 錯誤 | 說明 | | --- | --- | --- | | 租約之外的路徑 | `ENOENT`(可見但被拒時為 `EACCES`) | 拒絕被記錄。 | | 配額或預算用盡 | `EDQUOT` | 執行可以據此自我節制。 | | 閘門待處理 | `EACCES`,並在 `/.nas/pending` 給出說明 | 避免智能體無限重試。 | | 租約過期 | `ESTALE`,隨後只讀 | 分支保留到它自己的 TTL 到期。 | ## Git - 執行分支名為 `/`;`main` 是受保護的,伺服器端的 `pre-receive` 鉤子會拒絕直接推送。 - `nas propose` 建立 Agent PR。 - 提交自動附帶 `Run:`、`Lease:`、`Principal:` 等 trailer。 ## S3 - 一個桶對應一棵樹的某個分支視圖;物件版本 ID 即提交。 - 分支這類 S3 沒有的語義,用桶字首或請求頭(`x-nas-branch`)表達。這是一種**降級的投影**:資料管線能讀寫,但拿不到完整的分支體驗。 - 租約透過 STS 風格的臨時憑據傳遞。 ## A2A(可選) - 收到的任務落在 `inbox/` 裡的任務檔案;產物放進 `outbox/`。 - Agent Card 宣告角色的技能與所需的租約。 - **NAS 不是 A2A 的參與者,** 代表角色的執行環境才是。NAS 只負責任務與產物的存放、交接包與租約。 ## HTTP API 約定 - **全部介面使用 `POST`,引數放在 JSON 請求體裡;** 回應欄位一律 `snake_case`。 - 路徑帶版本:`/v1/...`。 - 冪等:寫操作接受 `idempotency_key`。 - 分頁:`cursor` 加 `limit`。 - 預算與限流透過回應標頭回饋(剩餘位元組、剩餘請求數),便於執行環境自我節制。 預算化讀取的請求與回應大致如下: *預算化讀取* ```http POST /v1/files/read { "path": "/agents/cleo/memory/notes/customer-acme.md", "view": "outline", "budget_tokens": 400 } 200 OK { "view": "outline", "tokens": 212, "generated": false, "truncated": false, "content": "# Acme\n## Renewal (L12-L18)\n## Contacts (L19-L31)\n## Open issues (L32-L40)", "evidence": [ { "pointer": "nas://home-box/agents/cleo/memory/notes/customer-acme.md@9f2c1de#L1-L40" } ] } ``` 錯誤使用統一的結構: *錯誤回應* ```json { "error": { "code": "gate_required", "message": "This merge requires human approval.", "retryable": false, "request_id": "req_01JB7W2X4N", "details": { "gate_id": "gt_2Mx4" } } } ``` ## 發現 - 機器可讀的入口與本站相同:`/.well-known/ai-catalog.json`、MCP Server Card、`llms.txt`。 - `nas://` 證據指標的解析與校驗端點。 - MCP 的 `server/discover`。 --- 標準網址: https://agentnas.com/zh-tw/interfaces/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 安全 > Agent NAS 不阻止提示詞注入,它限制注入之後的後果:用窄域租約限定一次執行能碰什麼,用分支讓錯誤可撤銷,用 Rule of Two 阻止讀過不可信內容的工作階段再同時擁有敏感資料與對外通道,並留下可追溯的記錄。 ## 範圍與信任假設 - **我們保護:** NAS 裡的資料與歷史;授權的邊界;記錄的完整性;記憶的可追溯性。 - **我們不保護:** 智能體在 NAS 之外的行為;執行計算本身的隔離(那是沙箱的工作);模型提供商那一側發生的事。 - **信任假設:** 可信計算基(TCB)是 NAS 閘道器、策略引擎與記錄服務;主機沒有被攻陷;沙箱負責隔離計算。TCB 被攻陷,本頁的保證就失效。 ## Rule of Two:工作階段不變數 三個性質:**[A]** 工作階段讀過不可信內容,**[B]** 租約允許讀敏感資料,**[C]** 租約允許改變受保護的狀態或對外通訊。同一工作階段裡三者同時成立時,觸發 C 的那次呼叫不會被自動放行。 | 場景 | A | B | C | 結果 | | --- | --- | --- | --- | --- | | 總結一個網頁,寫成分支裡的筆記 | 是 | 是 | 否(只寫分支) | 自動:分支內的寫入不算 C。 | | 讀過網頁之後,向 `main` 提議合併 | 是 | 是 | 是 | Human Gate。 | | 只讀公開資料,寫臨時區 | 是 | 否 | 否 | 自動。 | | 讀過外部郵件之後發出郵件(出口) | 是 | 是 | 是 | 閘門;涉及 `secret` 則拒絕。 | 這是 Meta 的 [Agents Rule of Two](https://ai.meta.com/blog/practical-ai-agent-security/) 在**儲存邊界**上的實作。Meta 自己強調,它是減輕風險的啟發式,不是終點,也不替代最小權限;我們的用法也是如此。機制見 [Trust Labels](https://agentnas.com/zh-tw/concepts/trust-labels/)。 ## 威脅模型 | 威脅 | NAS 能強制的 | NAS 做不到的 | 殘餘風險 | | --- | --- | --- | --- | | T1 間接提示注入(經檔案、網頁、郵件) | Rule of Two;租約限定;分支;閘門。 | 阻止注入發生;阻止注入之後在租約內的惡意行為。 | 租約之內的誤用。 | | T2 憑據洩露(智能體讀到長期金鑰) | 長期憑據不在執行手裡;金鑰掃描器標記 `secret`;短 TTL。 | 防止智能體把租約內的資料發往已授權的出口。 | 租約內的資料外發。 | | T3 過寬權限與誤操作 | 窄域租約;分支;軟刪除;快照不在任何租約之內。 | 撤銷外部副作用。 | NAS 之外的後果。 | | T4 記憶投毒(含跨角色傳播) | 來源與污點;隔離區;已審閱才自動載入;回滾。 | 識別「看起來合理」的錯誤事實。 | 被審閱者放過的投毒。 | | T5 租約被竊取或重放 | 短 TTL;可撤銷;可選的持有者綁定(DPoP、mTLS)。 | 阻止 TTL 內的濫用。 | TTL 視窗。 | | T6 審批疲勞與橡皮圖章 | 閘門稀少;NAS 渲染差異;批准綁定摘要;監控批准率。 | 讓人認真看。 | 人為失誤。 | | T7 日誌篡改 | 雜湊鏈;可選的外部錨定。 | 沒有錨定時,防止 root 毀掉日誌。 | 惡意的管理員。 | | T8 資料外洩(出口、共享、搜尋結果) | 出口需要租約動作與閘門;`secret` 禁止出口;派生物繼承標籤。 | 防止人批准之後的洩露;隱蔽通道。 | 批准後的洩露。 | | T9 供應鏈(技能、MCP 伺服器、外掛、模型) | 技能與外部 MCP 的內容視為 `external`;技能目錄可以固定到某個提交;執行環境清單寫入記錄。 | 保證第三方程式碼無害。 | 被固定下來的惡意版本。 | | T10 資源耗盡(分支炸彈、預算耗盡、迴圈讀取) | 配額;TTL;預算;熔斷。 | 區分合法的大任務與失控。 | 區域性的拒絕服務。 | ## 控制措施 - **策略引擎:** 確定性(Cedar 或 Rego 風格),預設拒絕,拒絕時給出可讀的原因與命中的規則;**不呼叫 LLM**。 - **憑據代理:** 長期金鑰只在代理手裡;僅在獲批的出口動作裡為執行鑄造短時的下游權杖。 - **隔離與金鑰:** 每個角色一個 Home 與路徑空間;`sensitive` 保留類使用單獨的金鑰域。 - **供應鏈:** 技能、MCP 伺服器與外掛的內容視為 `external`;執行開始時,把使用的技能與版本寫入記錄。 ## 坦誠的侷限 1. 這**不是**提示詞注入的防禦。它限制後果,並讓後果可見。 2. 租約之內的合法權限仍可能被誤用。 3. 對 NAS 之外的副作用無能為力:已經發出的郵件、已經呼叫的介面。 4. 隱蔽通道與側通道不在範圍內。 5. TCB 被攻陷,則保證失效。 6. 人會犯錯:閘門降低但不能消除這種風險。 7. 污點是保守的,會帶來摩擦與誤報;需要調參,也需要可見的拒絕原因。 8. 加密粉碎只保護我們能控制的副本。 ## 事件應對 - **熔斷:** `revoke_run` 與 `revoke_role` 立即撤銷租約並凍結分支。 - **回滾:** 把受影響的樹恢復到某個提交。 - **溯源:** 用讀清單和記錄鏈找出「這次執行讀過什麼、寫過什麼、影響了哪些筆記」。 - **清理:** 用 [Cascade Forget](https://agentnas.com/zh-tw/concepts/cascade-forget/) 刪除受影響的派生物,並出具報告。 ## 可觀測性與稽核 - **三類資料:** 記錄(事件)、讀清單(輸入集合)、指標與 trace。 - **`explain(commit)`:** 返回這個提交由哪次執行、哪張租約產生,經過了哪些閘門,讀過什麼,以及依賴的輸入。 - **與現有觀測棧整合:** 一次執行對應一個 OpenTelemetry GenAI span,租約與閘門以事件的形式掛在上面;記錄可以匯出為 JSON Lines,或接入 SIEM。 - **指標:** 租約發放與拒絕率;閘門佇列長度、批准率與批准耗時;分支數量與年齡;索引新鮮度;預算消耗;記錄鏈校驗結果。 - **隱私與保留:** 預設只記後設資料,不記內容;記錄的保留與內容的刪除各自獨立;讀取記錄本身也需要租約。 --- 標準網址: https://agentnas.com/zh-tw/security/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 用例 > 這些場景都從「已經有人這樣做」出發,說明 Agent NAS 在哪一步改變了結果、需要哪一級符合性,以及今天就能用什麼搭出來。 ## 夜間執行的智能體 睡前,你給智能體一個任務:整理釋出說明。它在自己的分支裡工作;早上,你在手機上看到一張 Gate Card:4 個檔案、真實的差異、它讀過的來源。批准就合併;拒絕就丟棄分支,主線毫髮無損。 - **用到的概念:** [Agent Branch](https://agentnas.com/zh-tw/concepts/agent-branch/)、[Capability Lease](https://agentnas.com/zh-tw/concepts/capability-lease/)、[Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/)。 - **符合性:** L0 到 L1。 - **今天就能搭:** Git worktree、受保護的 `main` 和一條推送通知。 ## 換框架,不丟記憶 你把智能體從一個執行環境遷到另一個。Home 是遵循開放約定的目錄:`AGENTS.md`、`skills/`、`memory/notes/`。新的執行環境讀同一個目錄;對映有損的部分,在匯入時標記為未審閱。 - **用到的概念:** [Agent Home](https://agentnas.com/zh-tw/concepts/agent-home/)、[Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/)。 - **符合性:** L0 到 L2。 - **今天就能搭:** 一個帶 `AGENTS.md` 的 Git 目錄。 ## 一個團隊,多個智能體,一份共享知識 三個智能體寫同一個知識庫。每個都在自己的分支裡工作,合併經過審閱;讀過外部網頁的執行寫下的筆記進入隔離區,不會被別的智能體自動載入。共享的是筆記,不是索引。 - **用到的概念:** [Trust Labels](https://agentnas.com/zh-tw/concepts/trust-labels/)、[Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/)、[Agent Branch](https://agentnas.com/zh-tw/concepts/agent-branch/)。 - **符合性:** L0 到 L3。 - **今天就能搭:** 受保護的主線,加匯入目錄的 `external` 標記,加一個只自動載入已審閱筆記的規則。 ## 事故復盤 一次合併之後,你發現某頁內容不對勁。`explain(commit)` 告訴你是哪次執行、哪張租約、哪個閘門決定;讀清單顯示那次執行讀過一個外部網頁。你順著來源找到受影響的筆記,回滾,並把它們隔離。 - **用到的概念:** [Flight Recorder](https://agentnas.com/zh-tw/concepts/flight-recorder/)、[Agent Branch](https://agentnas.com/zh-tw/concepts/agent-branch/)。 - **符合性:** L1。 - **今天就能搭:** 提交裡的 Git trailer,加一張追加寫的 SQLite 表。 ## 客戶要求被遺忘 客戶的資料在寫入時就被標為 `sensitive` 保留類。收到請求後,Cascade Forget 沿血緣找到摘要、嵌入與引用它的筆記,銷燬該金鑰域,並出具報告:做了什麼,哪些做不到(NAS 之外的副本、模型提供商的日誌、模型權重)。 - **用到的概念:** [Cascade Forget](https://agentnas.com/zh-tw/concepts/cascade-forget/)、[Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/)。 - **符合性:** L3。 - **今天就能搭:** 保留類、軟刪除,以及為每個派生物記錄輸入。 ## 給已有的盒子加一道門 你已經有一台 NAS。Overlay 形態在它前面放一個閘道器,只管理其中的一個目錄。智能體透過掛載或 S3 視圖進出;所有者的備份和快照仍在智能體夠不著的地方。 - **用到的概念:** [Capability Lease](https://agentnas.com/zh-tw/concepts/capability-lease/)、[Agent Branch](https://agentnas.com/zh-tw/concepts/agent-branch/)。 - **符合性:** L0 到 L1。 - **今天就能搭:** NFS 或 SMB 加一個小閘道器,按路徑字首與動作校驗權杖。 ## 什麼時候不該用 Agent NAS | 你的情況 | 更簡單的做法 | | --- | --- | | 一個智能體,資料可以隨意重來 | 一個 Git 儲存庫加 `AGENTS.md`。 | | 只想讓智能體幫你管理 NAS | 廠商自帶的管理智能體。 | | 只需要可分叉的資料集 | lakeFS 或 Tigris。 | | 只需要記憶檢索 | 任何一個記憶庫。 | | 需要隔離計算 | 沙箱。 | --- 標準網址: https://agentnas.com/zh-tw/use-cases/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 比較 > Agent NAS 不是要取代這些方案。多數相鄰的做法在各自的位置上做得很好,可以直接成為它的零件。我們儘量誠實地列出借鑑了什麼,以及真正新的只有哪幾點。 ## 現狀地圖 | 類別 | 代表 | 已經做到 | 止步之處 | | --- | --- | --- | --- | | NAS 廠商的管理智能體 | QNAP QuAgent、Synology DSM Agent、TrueNAS MCP | 用自然語言管理盒子;沿用使用者權限;危險操作二次確認;日誌。 | 面向「管理」而不是「在資料裡工作」;沒有執行級租約、分支與記憶契約。 | | 智能體檔案系統與 Git | Turso AgentFS、Letta Context Repositories、Cloudflare Artifacts、Redis Agent Filesystem | 把檔案、狀態與工具呼叫稽核放進可移植的儲存;用 Git 做版本化記憶;面向智能體的 Git。 | 各自綁定一個執行環境或平臺;授權、審批、污點、遺忘大多在其外。 | | 可分叉物件儲存與資料版本控制 | Tigris Agent Kit、lakeFS | 寫時複製的分叉、檢查點、受保護分支、限域憑據、合併前鉤子。 | 面向資料湖與雲物件儲存;不規定記憶和租約的語義,也沒有人的審批體驗。 | | 記憶框架 | Letta、Mem0、Zep/Graphiti、OpenClaw 記憶架構 | 檢索、整合、時間圖;OpenClaw 已經有來源標籤與隔離。 | 多數綁在某個框架裡;索引與真相不分;遷移與刪除困難。 | | 沙箱與執行環境 | E2B、Daytona、Vercel Sandbox | 隔離的計算與快照。 | 儲存不是重點;狀態隨沙箱消失。 | | 通用儲存 | S3 與 S3 Files、NFS、SMB、Git | 耐久、成熟、生態完整。 | 不認識「執行」「租約」「污點」。 | **空白。** 每個部件都有人做出來了。我們沒有看到的是:把它們編成一份**自託管、開放、可驗收**的契約,以執行為單位,把分支、租約、審批、記錄、記憶與遺忘綁在一起,並附帶符合性測試。我們不聲稱沒有人做過其中任何一件事;這正是我們大量借鑑的原因。 ## 與相鄰方案的關係 | 方案 | 擅長 | 與 Agent NAS 的關係 | | --- | --- | --- | | QNAP QuAgent、Synology DSM Agent、TrueNAS MCP | 用自然語言管理 NAS | 互補;它們的盒子可以成為 Overlay 的底座。 | | Turso AgentFS、Redis Agent Filesystem、LayerFS | 智能體檔案系統 | 可以作為 Store 引擎;Agent NAS 在上面加契約。 | | Letta Context Repositories | Git 支撐的記憶 | Agent Home 沿用其佈局思想;Letta 可以是 Agent Memory 的執行環境。 | | Cloudflare Artifacts、Tigris、lakeFS | 可分叉、可版本化的儲存 | 可以直接作為 Store 引擎。 | | Mem0、Zep/Graphiti | 記憶檢索與整合 | 可以作為索引器,即派生物的生產者。 | | OpenClaw 記憶架構 | 來源標籤與隔離 | 先行者;我們把同樣的想法放到共享的儲存層。 | | S3、S3 Files、NFS、SMB | 通用儲存 | 可以作為 Store;它們不認識執行、租約與污點。 | | E2B、Daytona、Vercel Sandbox | 隔離的計算 | 互補;應當一起使用。 | ## 我們借鑑了什麼 - 從 **Git 與 lakeFS**:分支、受保護分支、合併前鉤子。 - 從 **Letta 與 Cursor**:檔案是智能體最熟悉的介面,上下文要漸進披露。 - 從 **OpenClaw 與記憶安全研究**:來源不可偽造,不可信的記憶要隔離。 - 從 **Meta 的 Rule of Two、CaMeL 與 Fides**:在模型之外限定後果。 - 從 **OAuth(RFC 8693、RFC 9396)、Biscuit 與 UCAN**:權杖交換與衰減式授權。 - 從 **OpenTelemetry 與 Certificate Transparency**:可匯出的追蹤與可發現的篡改。 - 從 **Anthropic 的自動模式研究**:審批要少,要放在計劃與合併上。 ## 真正新的東西 我們儘量誠實地列出來。這份清單很短: 1. 以**執行**為單位,把分支、租約、預算與記錄綁在一起。 2. **讀清單**與工作階段污點:在儲存邊界執行 Rule of Two。 3. 記憶寫入的**來源與污點**,以及「已審閱才自動載入」的信任邊界。 4. **保留類**:把「可恢復」與「可遺忘」變成顯式的選擇。 5. **符合性階梯與可執行的驗收測試。** > **一個需要被證明的判斷.** 其餘的一切,包括分支、權杖、日誌和檢索,都是已有技術的組合。我們認為,把它們組合成一份開放、可驗收的契約,本身就有價值;但這是一個**需要被證明的判斷**,不是已經成立的事實。 --- 標準網址: https://agentnas.com/zh-tw/compare/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 規範 > 規範草案 v0.2 定義五個累積的符合性等級,從 L0 Files 到 L4 Sync。每一級都對應一組概念和一組可執行的驗收測試;沒有 `conformance.json` 的「相容」宣告不被接受。 > **草案.** 目前沒有參考實作,也沒有可執行的符合性測試套件。下面的驗收測試是規範的一部分:它們的作用,是讓「相容」這個詞可以被檢驗。 ## 規範的組成 | 元件 | 內容 | 目標版本 | | --- | --- | --- | | Core | 六個名詞、Store 契約、分支與受保護樹、合併、軟刪除。 | v0.3 草案 | | Lease & Record | 租約格式(`authorization_details` 檔案)、記錄與讀清單的格式、`explain`。 | v0.3 草案 | | Interfaces | 掛載語義、Git 與 S3 的投影、HTTP API、MCP 工具面。 | v0.4 草案 | | Memory | 筆記約定、派生物與配方、預算讀取、證據指標。 | v0.4 草案 | | Guard | 標籤、工作階段污點、策略檔案、Gate Card、遺忘報告。 | v0.5 草案 | | Sync | 交接包、標籤門檻、墓碑。 | 之後 | | Conformance Suite | 每個等級的可執行驗收測試。 | 與各版本同步 | ## 符合性等級 等級是累積的:宣告 L2,就必須同時滿足 L0 和 L1。 | 等級 | 名稱 | 覆蓋的概念 | 一句話 | | --- | --- | --- | --- | | L0 | Files | Agent Home、Agent Branch | 帶歷史的目錄。 | | L1 | Authority | Flight Recorder、Capability Lease、Human Gate | 誰、憑什麼、做了什麼。 | | L2 | Memory | Agent Memory、Budgeted Reads | 記憶可讀、可遷移。 | | L3 | Guard | Trust Labels、Cascade Forget | 限制後果。 | | L4 | Sync | 無(可選) | 多節點。 | ## L0 Files:帶歷史的目錄 1. 在執行分支裡改檔案,受保護的主線保持不變。 2. 直接寫受保護樹(即使憑據有效)被拒絕。 3. 刪除受保護樹裡的檔案之後,可以從回收區恢復。 4. 匯出再匯入,得到位元組一致的樹與歷史。 5. 至少提供兩種標準視圖:掛載與 Git,或者其中一種加 S3。 ## L1 Authority:誰、憑什麼、做了什麼 1. 沒有租約的請求被拒絕,並且拒絕被記錄。 2. 申請超出父租約的子租約被拒絕。 3. 租約到期後掛載變為只讀;撤銷在實作所宣告的時限內生效。 4. 沒有任何租約能刪除快照。 5. 任一提交都可以 `explain` 到執行、租約與讀清單。 6. 記錄鏈校驗通過;篡改一條記錄後,校驗失敗。 7. 合併進受保護樹時,Gate Card 展示由 NAS 計算的差異,且批准綁定摘要:差異一改,批准即失效。 ## L2 Memory:記憶可讀、可遷移 1. 刪除全部索引並重建後,黃金召回測試通過。 2. 不經 Memory 層,筆記就可以被讀取。 3. 每個派生物都帶配方與輸入。 4. 預算讀取在預算不足時降級,並宣告實際的視圖。 5. 證據指標可以校驗:提交變化後,指標仍然指向原來的內容。 ## L3 Guard:限制後果 1. 在具備 B 與 C 的租約下,讀過 `external` 的工作階段觸發 C 類動作時,被拒絕或轉交閘門。 2. 派生物繼承其輸入標籤的並集。 3. 受污染工作階段寫入的筆記不會被自動載入。 4. 遺忘請求產出含「覆蓋不到的範圍」的報告;法律保留能阻止遺忘。 5. 策略求值不呼叫 LLM:策略引擎沒有對模型的出站呼叫,可以稽核。 ## L4 Sync:多節點 1. 兩個節點同步之後,樹一致。 2. 不向許可級別更低的節點傳送高敏感的物件。 3. 遺忘的墓碑傳播到對端。 4. 交接包可以在對端被執行,並且租約只會更窄。 ## 宣告格式 實作必須釋出一個 `conformance.json`:宣告符合的等級、各項測試的結果與已知的偏差。沒有這份檔案的「相容」宣告不被接受。 *conformance.json* ```json { "implementation": "example-nas", "version": "0.1.0", "spec": "0.2", "level": "L1", "tests": { "L0.1": "pass", "L0.2": "pass", "L0.3": "pass", "L0.4": "pass", "L0.5": "pass", "L1.1": "pass", "L1.2": "pass", "L1.3": "pass", "L1.4": "pass", "L1.5": "pass", "L1.6": "pass", "L1.7": "pass" }, "deviations": ["L1.3: revocation takes effect within 60 seconds"] } ``` ## 版本與相容 - 語義化版本。0.x 期間不保證相容。 - 新增欄位向後相容。 - 廢棄的欄位至少保留一個版本的警告期。 ## 規範暫不規定 傳輸協定的版本細節、具體的策略語言、權杖的簽名演算法、具體的儲存引擎,以及使用者介面。 --- 標準網址: https://agentnas.com/zh-tw/spec/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 路線圖 > 路線圖按「現在、下一步、以後、不做」排列,不寫具體年份的承諾:一份在 2026 年寫下的三年時間表,大機率會在第一年就被事實改寫。 ## 現在、下一步、以後 - **現在(2026 年第四季度)** · 進行中 · **概念、規範草案與官網**: 概念與規範草案 v0.2,官網(8 種語言)。收集回饋:找 3 到 5 位已經在用 `AGENTS.md` 加 Git 的真實使用者做訪談,驗證賭注 B1 到 B7。 - **下一步(目標:2027 年上半年)** · 下一步 · **參考實作 v0 與規範 v0.3**: 參考實作 v0(Lite 與 Overlay):Git 與檔案系統快照後端、租約簽發、記錄與讀清單、CLI,以及 L0 到 L1 的符合性測試套件;規範 v0.3(Core、Lease & Record)。一個可演示的場景:夜間執行的智能體在分支裡工作,早上在 Gate Card 上批准合併。 - **以後(視回饋而定)** · 之後 · **Memory、Guard、控制室與 Sync**: Memory 層與 MCP 工具面(L2);Guard:標籤、污點、級聯遺忘(L3);控制室;Team 與 Cloud 形態;Sync(L4)。 > **不具約束力.** 這是意圖,而不是承諾。定義「相容」含義的是符合性等級,而不是日曆。 ## 階段門檻(證偽條件) 「下一步」完成的標準**不是**功能清單,而是:在至少三個真實工作流裡連續執行一週;閘門的批准率低於 95%;至少攔下過一次真實的問題。做不到,就回頭修改概念,而不是繼續往前堆功能。 ## 不做 - 自研儲存引擎。 - 自研向量資料庫。 - 模型託管。 - 技能市場。 - 代幣與區塊鏈。 - 專用硬體。 ## 有意留白的問題 - 租約裡自由文本的 `purpose`,如何走向可以被機器檢查的結構化意圖? - 語義合併器如何註冊並被信任? - 標籤的粒度應當是檔案,還是段落? - 多租戶場景下,標籤詞彙表如何治理? - 撤銷在多節點之間的傳播延遲,如何對外表述? - 如何度量記憶品質?模型或嵌入變化時,迴歸的標準是什麼? - 對由多個來源混合推斷出的事實,Cascade Forget 如何界定受影響的範圍? - 高吞吐下,讀清單的儲存成本與粒度如何取捨? - 批次與分級審閱的最佳介面是什麼?自動合併的門檻如何度量與調整? - 跨組織的信任根如何分發與撤銷? --- 標準網址: https://agentnas.com/zh-tw/roadmap/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 設計原則 > 八個論點指導 Agent NAS 的每一項取捨;七個賭注說明它押了什麼、押錯了會怎樣。一份希望幾年後仍然成立的設計,應當說明自己什麼時候會錯。 ## 1. 存取的單位是執行,不是帳號 現在的做法是給智能體一個長期權杖,或者一個人類帳號:2026 年 4 月那次事故裡的權杖,「為管理域名而建,卻能做任何事」。一次執行有開始、結束、目的和責任人,是天然的授權與追責單位。 *排除:* 共享金鑰、長期權杖和借來的人類帳號。 ## 2. 撤銷比預防便宜 預防(審批、分類器、提示裡的規則)一定會漏:分類器有漏報,人更差,模型也會違背寫在提示裡的原則。讓錯誤**可撤銷**(分支、軟刪除、快照),比讓每個動作都正確容易得多,也更容易驗證。附帶一條:**恢復路徑必須在被保護物件的爆炸半徑之外**,所以快照由所有者持有,不在任何租約的權限之內。 *排除:* 把「在提示裡寫一句要人確認」當作控制措施。 ## 3. 權限按任務出借,不按身份授予 一次執行拿到的是一張窄域、有期限、有預算的租約;長期鑰匙只留在編排器或所有者手裡,模型永遠看不到。 *排除:* 長期、寬泛、常駐的權限。 ## 4. 筆記是真相,智能是快取 記憶應當是人能讀能改的檔案;索引、嵌入和摘要都是可丟棄、可重建的派生物。這樣檢索演算法可以換,記憶不會丟;投毒與刪除也變得可以處理。 *排除:* 無法檢查、無法遷移的不透明記憶庫。 ## 5. 來源是貫穿一切的主線 每條記憶、每個派生物、每次合併,都能回答「它從哪來、被什麼影響過」。來源既是稽核的基礎,也是投毒治理、信任標籤和遺忘的基礎。 *排除:* 沒有來源的記憶。 ## 6. 策略是確定性的,模型只能收緊 授權決定由程式碼做出,不由模型的「意見」做出。分類器或 LLM 可以建議「這一步需要審批」,但永遠不能批准。 *排除:* 讓模型自己判斷某件事能否放行。 ## 7. 儲存保持無聊,創新放在契約上 不造引擎;檔案優先,因為模型最熟悉的介面就是檔案;協定會換,六個名詞不會。 *排除:* 以 AI 為由發明新的儲存引擎。 ## 8. 稀缺的是 token 與人的注意力 讀取要有預算;審批要少而具體,並放在人真會判斷的地方:計劃與合併,而不是每個動作。 *排除:* 預設返回整個檔案;每個動作彈一次窗。 ## 七個賭注與證偽 一份希望幾年後仍然成立的設計,應當說明自己押注了什麼、什麼情況下會錯。 | 賭注 | 依據 | 如果錯了 | | --- | --- | --- | | B1 智能體會繼續把檔案系統與 Git 當作主要的工作介質 | 多個主流執行環境已經轉向檔案。 | 若轉向專用的「記憶 API」,Agent Home 退化為匯出格式;其餘概念不依賴檔案,仍然成立。 | | B2 「一次執行」仍是自然的授權與追責單位 | 編排器普遍按任務或工作階段啟動沙箱。 | 若出現長期常駐的自治行程,租約改為滾動續期加預算,概念保留。 | | B3 提示詞注入在可預見的將來不會在模型層被根除 | Meta 的表述;分類器的漏報率;多項攻擊研究。 | 若被根除,Trust Labels 變成縱深防禦裡的一層,成本很低。 | | B4 人的注意力仍是稀缺資源 | Anthropic 披露的資料。 | 若全自動足夠可靠,Human Gate 由策略預授權取代,稽核仍然保留。 | | B5 儲存層是執行來源與污點的合適位置 | 記憶安全研究強調寫入時的來源;OpenClaw 在執行環境內部做過同樣的事。 | 若各執行環境都自己做好,NAS 只需儲存標籤,角色變薄。 | | B6 跨執行環境、跨智能體共享的記憶會成為真實需求 | 多智能體協作;框架遷移的成本。 | 若記憶繼續是各框架的私有功能,Agent Memory 的價值主要在個人與小團隊的可遷移性。 | | B7 協定會換,但「檔案加工具」兩個口會穩定 | MCP 的版本遷移;A2A 1.0。 | 換轉接器即可;這也是轉接器隔離的原因。 | ## 預期保持穩定的,與預期會變的 | 預期保持穩定 | 預期會變化 | | --- | --- | | 六個名詞 | 具體的協定與傳輸 | | Home 的目錄約定 | 嵌入模型與檢索演算法 | | 四個承諾 | 權杖格式 | | 「匯出即退出」的保證 | 智能體框架與人機互動介面 | --- 標準網址: https://agentnas.com/zh-tw/principles/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 常見問題 > 回答人們對 Agent NAS 最先會問的問題:它是什麼,與現有的儲存和記憶工具有何不同,如何處理安全與隱私,以及專案進展到哪裡。 ## 基礎問題 ### Agent NAS 是什麼? Agent NAS 是圍繞「一次執行」設計的網路附加儲存:智能體的每次執行都在隔離的分支裡工作,憑一張短時、窄域的租約存取資料;每個改動都能追溯、能撤銷;記憶是帶來源的普通檔案。它透過掛載、Git、S3 和 MCP 提供服務。 ### Agent NAS 是可以購買或下載的產品嗎? 還不是。它目前是一個帶規範草案的概念(v0.2,2026 年 11 月)。L0 與 L1 可以用現成零件今天搭出來;參考實作 v0 的目標是 2027 年上半年,之後的安排見[路線圖](https://agentnas.com/zh-tw/roadmap/)。 ### 它和 NAS 廠商推出的 AI 智能體有什麼不同? QNAP、Synology 和 TrueNAS 等廠商推出的智能體,用來管理這臺盒子。Agent NAS 規定的是別的智能體怎樣在盒子裡的資料上工作:分支、租約、記憶與遺忘。兩者互補,參見[比較](https://agentnas.com/zh-tw/compare/)。 ### 它和向量資料庫或記憶框架有什麼不同? 它們是檢索與整合的工具,而 Agent NAS 的真相是帶來源的普通筆記。向量庫和記憶框架可以作為索引器掛在 [Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/) 之下,索引隨時可以丟棄重建。 ### 它是開源的嗎? 規範和本站內容採用 CC BY 4.0 許可。參考實作計劃以 Apache-2.0 開源。 ## 設計與安全 ### 為什麼用檔案和 Git,而不是資料庫? 智能體正在向檔案收斂:指令在 `AGENTS.md` 裡,技能在 `SKILL.md` 裡,記憶是 Markdown,歷史在 Git 裡。檔案任何工具、任何模型都能讀,容易對比,也容易帶走。資料庫和索引仍然會用,但它們是可以重建的派生層。 ### 一次執行出了錯,最壞會怎樣? 最壞的情況是丟掉一個可丟棄的分支:受保護的主線只能經審閱的合併更新,刪除是軟刪除,快照不在任何租約之內。前提是錯誤發生在 NAS 之內;已經發出的郵件和已經呼叫的外部介面,NAS 無法撤銷。 ### 租約和 OAuth 權杖是什麼關係? 租約就是一枚 OAuth 存取權杖:靠權杖交換(RFC 8693)申請,用富授權請求(RFC 9396)描述路徑與動作。Agent NAS 補上的是以執行為單位的約定,包括分支、預算與 Rule of Two 屬性。詳見 [Capability Lease](https://agentnas.com/zh-tw/concepts/capability-lease/)。 ### 為什麼說記憶是「筆記加快取」? 這樣它才能被檢視、更正、遷移和遺忘。筆記是檔案;索引、嵌入和摘要都由它們按記錄在案的配方計算而來。換嵌入模型,系統就在後台重算。受污染工作階段寫的筆記先進入隔離區,在審閱之前不會自動載入。 ### Agent NAS 能阻止提示詞注入嗎? 不能。模型之外的任何東西都無法完全阻止它。Agent NAS 限制的是被注入的智能體能做什麼:[Trust Labels](https://agentnas.com/zh-tw/concepts/trust-labels/) 讓讀過外部內容的工作階段,無法再同時擁有敏感資料與對外通道,有後果的動作需要 [Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/)。坦誠的侷限見[安全](https://agentnas.com/zh-tw/security/)。 ### 它如何處理「被遺忘權」? 透過 [Cascade Forget](https://agentnas.com/zh-tw/concepts/cascade-forget/):沿血緣刪除由來源派生的摘要、嵌入與筆記,按保留類處理歷史,並對 `sensitive` 類銷燬金鑰(加密粉碎)。它出具的報告會明確列出覆蓋不到的範圍:NAS 之外的副本、模型提供商的日誌、模型權重。它無法讓模型忘記任何東西。 ### 我必須使用 MCP 嗎? 不必。MCP 只是控制面的介面之一,檔案、Git 和 S3 不需要它;協定層本來就設計為可以替換。 ## 採用與未來 ### 它會取代我現有的 NAS 或雲端儲存嗎? 不會。Overlay 部署形態在現有的 NAS、物件儲存或 Git 託管之前放一個閘道器,只管理其中的一個目錄或桶。雲端儲存也可以充當 Store。 ### 哪些智能體框架和執行環境可以配合使用? 任何能掛載目錄,或者會用 Git、S3 或 MCP 的執行環境。Agent Home 的佈局遵循開放約定(`AGENTS.md`、Agent Skills、帶 YAML frontmatter 的 Markdown),所以 Claude Code、Cursor、Codex、OpenHands、LangGraph 以及自研的框架都是候選。 ### 我可以隨時離開嗎? 隨時可以。所有內容都能匯出為普通檔案和 Git 歷史。這是四個承諾之一,而不是一個功能。 ### 什麼時候不該用 Agent NAS? 只有一個智能體、資料可以隨意重來的時候:一個 Git 儲存庫加 `AGENTS.md` 就夠了。更多情形見[用例](https://agentnas.com/zh-tw/use-cases/)。 ### 我怎樣引用或參與貢獻? 每個頁面都列出了標準網址和建議的引用格式。要參與貢獻,請在 GitHub 上提交 issue 或發起討論。詳情見[關於頁面](https://agentnas.com/zh-tw/about/)。 --- 標準網址: https://agentnas.com/zh-tw/faq/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 術語表 > 本術語表定義 Agent NAS 使用的每個術語:九個命名概念與配套詞彙。概念名稱是自造術語,在所有語言中都保持英文,並在中文版裡附上釋義。 ## 九個概念 - **[Agent Home (智能體之家)](https://agentnas.com/zh-tw/concepts/agent-home/)**: **Agent Home(智能體之家)** 是按角色劃分、帶歷史的目錄:指令、技能、記憶、日誌和工作區,全是普通檔案。任何執行環境都能進入,離開時可以整個帶走。 - **[Agent Branch (智能體分支)](https://agentnas.com/zh-tw/concepts/agent-branch/)**: **Agent Branch(智能體分支)** 讓每次執行在寫時複製的分支裡工作;變更只有透過一次經審閱的合併(Agent PR)才能進入受保護的主線;隨時可以打檢查點並恢復。 - **[Flight Recorder (飛行記錄器)](https://agentnas.com/zh-tw/concepts/flight-recorder/)**: **Flight Recorder(飛行記錄器)** 是以執行為單位、只追加、雜湊連結的記錄:這次執行讀了什麼(讀清單)、寫了什麼、被允許或拒絕了什麼、誰批准了什麼。它存放在資料旁邊,用來回答「這個改動可能受到了什麼影響」。 - **[Capability Lease (能力租約)](https://agentnas.com/zh-tw/concepts/capability-lease/)**: **Capability Lease(能力租約)** 是對特定資料、特定操作、有明確期限與預算的授權,發給**一次執行**,也是執行接觸 NAS 的唯一途徑。子租約只能比父租約更窄。 - **[Human Gate (人類閘門)](https://agentnas.com/zh-tw/concepts/human-gate/)**: **Human Gate(人類閘門)** 是由策略觸發的檢查點:在**不可逆、對外或提權**的動作生效之前,由人(或指定的審批主體)批准一個被完整渲染的具體動作。它被設計成稀少、具體、難以橡皮圖章。 - **[Trust Labels (信任標籤)](https://agentnas.com/zh-tw/concepts/trust-labels/)**: **Trust Labels(信任標籤)** 是附在資料上的兩個很小的標籤集,**來源**(`owner`、`agent`、`external`)與**敏感度**(`public`、`private`、`secret`),再加上**工作階段污點**。NAS 把 Rule of Two 當作工作階段不變數來強制:一次工作階段不能同時擁有 [A] 讀過外部內容、[B] 接觸敏感資料、[C] 改變受保護狀態或對外通訊;要補全第三項,就走 [Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/)。 - **[Agent Memory (智能體記憶)](https://agentnas.com/zh-tw/concepts/agent-memory/)**: **Agent Memory(智能體記憶)** = **你能讀、能改的筆記** + **可以隨時丟棄的索引**。每條筆記都引用它的來源;索引(全文、向量、圖、輪廓)只是筆記的派生物;後台維護作業只**提議**修改,絕不改寫原始日誌。 - **[Budgeted Reads (預算化讀取)](https://agentnas.com/zh-tw/concepts/budgeted-reads/)**: **Budgeted Reads(預算化讀取)** 是以 token 預算為單位的讀取:同一個檔案可以用不同的細節來讀,從輪廓、章節、行範圍到全文;智能體要的是「能裝進 N 個 token 的最佳視圖」,並附帶指回精確來源的證據指標。 - **[Cascade Forget (級聯遺忘)](https://agentnas.com/zh-tw/concepts/cascade-forget/)**: **Cascade Forget(級聯遺忘)** 是沿血緣的刪除:當一個來源被刪除,或有人要求被遺忘時,NAS 找出由它派生的一切,包括摘要、嵌入、引用它的筆記、快取和共享連結,刪除它們,或在不含該來源的情況下重新派生,並出具**報告**:做了什麼,哪些做不到。 ## 配套術語 - **Principal(主體)**: 可以被認證並被追責的實體:人、智能體、服務或節點。 - **Run(執行)**: 一次有開始、結束、目的和責任人的執行。一次執行持有一張根租約,並擁有一個分支。 - **Protected tree(受保護樹)**: 只能經審閱的合併更新、不接受直接寫入的樹,例如 `main`。 - **Read manifest(讀清單)**: 一次執行讀過的路徑、提交、範圍與內容雜湊的聚合記錄,不含內容本身。 - **Evidence pointer(證據指標)**: 形如 `nas:////@#L12-L18` 的可校驗引用,指向某個提交裡的確切行。 - **Derived data(派生資料)**: 由筆記按配方計算出來的資料,例如索引、嵌入或摘要。可以丟棄,也可以重建。 - **Recipe(配方)**: 產生一個派生物所需的全部引數:模型及其版本、切塊器和各項設定。 - **Lineage(血緣)**: 派生物與計算它們所用輸入之間的依賴關係圖。 - **Session taint(工作階段污點)**: 一次工作階段讀過的全部內容的標籤彙總。它在工作階段內只增不減,並決定工作階段接下來可以做什麼。 - **Rule of Two**: Meta 提出的啟發式:在注入問題被可靠解決之前,一次工作階段最多隻應同時具備三項中的兩項:[A] 處理不可信輸入,[B] 存取敏感資料,[C] 改變狀態或對外通訊。 - **Declassification(降級)**: 降低資料的敏感度,或抬高其來源的可信度。只能經 Human Gate,或經模式校驗的結構化交接。 - **Policy envelope(策略包絡)**: 所有者預先設定的、允許自動發放租約的範圍。超出範圍的申請交給 Human Gate。 - **Credential Broker(憑據代理)**: 保管長期金鑰,並且只為獲批的出口動作鑄造短時下游權杖的元件。模型和執行看不到長期金鑰。 - **Agent PR**: 把一個分支合併進目標的結構化提案,附帶差異、來源、檢查結果與標籤摘要。 - **Retention class(保留類)**: 寫入時指定的 `scratch`、`normal`、`sensitive` 三類之一,決定備份、歷史和能否粉碎。 - **Crypto-shredding(加密粉碎)**: 透過銷燬金鑰,讓所有用它加密的副本變得不可讀。 - **Conformance level(符合性等級)**: 從 L0 到 L4 的等級,每一級對應一組概念和一組可執行的驗收測試。 - **MCP**: Model Context Protocol:智能體與工具或資料來源之間的開放協定。 - **A2A**: Agent2Agent 協定:智能體之間進行任務協作的開放協定。 --- 標準網址: https://agentnas.com/zh-tw/glossary/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # 關於 > agentnas.com 是 Agent NAS 概念及其規範草案的家。這是一個開放專案,目標是給人和智能體一套共同的詞彙,以及一份可以讓多個獨立實作共同遵循、並且可以被驗收的契約。 ## 狀態 截至 2026 年 11 月,Agent NAS 是一個帶規範草案(v0.2)的概念。目前還沒有參考實作,也沒有可執行的符合性測試套件。v0.2 是一次落地修訂:十三個概念收斂為九個,每個概念都寫明瞭「從小處開始」和「坦誠的侷限」。本網站是專案釋出的第一件成品。計劃見[路線圖](https://agentnas.com/zh-tw/roadmap/)。 ## 許可 本站與規範的文字和圖示採用 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) 許可:只要署名,你就可以分享和改編。參考實作計劃以 Apache-2.0 釋出。 ## 如何引用 請引用你使用的那個頁面,並儘量逐字引用它的定義。每個頁面底部都有標準網址和建議的引用格式。引用整個專案時: *引用格式* ```text Agent NAS 專案。《Agent NAS:為 AI 智能體而生的網路附加儲存》。規範 v0.2(草案),2026 年 11 月。https://agentnas.com/zh-tw/what-is-agent-nas/ ``` *BibTeX* ```bibtex @misc{agentnas2026, title = {Agent NAS: network-attached storage for AI agents}, author = {{Agent NAS project}}, year = {2026}, howpublished = {Specification v0.2 (draft)}, url = {https://agentnas.com/what-is-agent-nas/} } ``` ## 治理 - **規範與實作分離。** 歡迎有許多實作;定義「相容」的是符合性測試和 `conformance.json`,而不是品牌。 - **過程。** 公開的提案(issue 與 PR);重大變更需要寫明動機、證據和反例。 - **命名。** 「Agent NAS」是描述性的概念名稱;宣告符合某一等級,需要釋出 `conformance.json`。 - **歡迎反駁。** 對任何論點的質疑都有價值,尤其是[七個賭注](https://agentnas.com/zh-tw/principles/)。 ## 參與 歡迎勘誤、批評和實作筆記。請在[專案儲存庫](https://github.com/xwzy/agentnas.com)中提交 issue 或發起討論。本站不公佈電子郵箱;關於規範的安全報告也走同一渠道。 ## 面向智能體與爬蟲 - 每個頁面都有 Markdown 孿生版本:在網址後加上 `index.md`,或傳送 `Accept: text/markdown`。 - [/zh-tw/llms.txt](https://agentnas.com/zh-tw/llms.txt) 是精選索引,[/zh-tw/llms-full.txt](https://agentnas.com/zh-tw/llms-full.txt) 是全文。 - 本文件的 MCP 伺服器執行在 `https://agentnas.com/mcp`,由它的[伺服器卡片](https://agentnas.com/mcp/server-card)描述。 - 搜尋端點 `POST /api/search` 在 [/openapi.json](https://agentnas.com/openapi.json) 中描述。 - [AI Catalog](https://agentnas.com/.well-known/ai-catalog.json) 和[站點地圖](https://agentnas.com/sitemap.xml)列出了全部內容。 - 內容可以自由索引、引用,並用作回答的輸入。參見 [/robots.txt](https://agentnas.com/robots.txt)。 --- 標準網址: https://agentnas.com/zh-tw/about/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Agent Home (智能體之家) *按角色劃分、帶歷史的目錄,全是普通檔案,可以帶走。* > **Agent Home(智能體之家)** 是按角色劃分、帶歷史的目錄:指令、技能、記憶、日誌和工作區,全是普通檔案。任何執行環境都能進入,離開時可以整個帶走。 **AN-01** · 符合性等級: L0 Files · 概念組: 工作 ## 要解決的問題 智能體的狀態散落在框架的資料庫、廠商託管的記憶介面和隨時會消失的沙箱磁碟裡。換一個框架或廠商,狀態就丟;出了問題,也沒有一個地方可以「看一眼它到底知道什麼」。 與此同時,主流智能體已經在向檔案收斂:`AGENTS.md`、Agent Skills、以 Git 為後端的記憶儲存庫。缺的不是新格式,而是一個**有歸屬、有歷史、有配額、可匯出**的地方來放它們。 ## 工作方式 - **佈局遵循開放約定。** `AGENTS.md`、Agent Skills 的 `SKILL.md`、帶 YAML frontmatter 的 Markdown,如下面的草圖所示。我們不發明新格式。 - **Home 屬於角色,不屬於某一次執行。** 執行透過[分支](https://agentnas.com/zh-tw/concepts/agent-branch/)使用它:改動先落在分支上,再經審閱合併回 Home。 - **帶歷史。** 每次改動都是一次提交。`nas export` 或 `git clone` 就能帶走整個 Home,包括 `.nas/` 裡的純文本後設資料。 - **啟動上下文就是讀幾個檔案:** `AGENTS.md`、`memory/MEMORY.md`、收件箱摘要。沒有專門的「醒來協定」;NAS 可以提供一個有 token 上限的 `briefing` 視圖作為便利,但不是必需。 - **已審閱才自動載入。** 只有被標記為 `reviewed` 的筆記才會進入 `MEMORY.md` 和自動載入的上下文,見 [Trust Labels](https://agentnas.com/zh-tw/concepts/trust-labels/) 與 [Agent Memory](https://agentnas.com/zh-tw/concepts/agent-memory/)。 - **生命週期。** 從模板建立、配額、歸檔、退役,退役時可以指定繼承者。 ## 從小處開始 - 建一個目錄,放 `AGENTS.md`、`skills/` 和 `memory/`,`git init`。用符號連結讓 `CLAUDE.md` 等檔案指向 `AGENTS.md`。 - 每次執行前執行 `git worktree add`,讓執行在自己的工作樹裡幹活。 - 這就是 L0:不需要任何 Agent NAS 軟體,你已經擁有一個帶歷史、可帶走的 Home。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *layout* ```text /agents/cleo/ # a role's Home: it belongs to the role, not to one run ├── AGENTS.md # instructions (open convention) ├── skills/ # Agent Skills: one directory per skill │ └── release-notes/SKILL.md ├── memory/ │ ├── MEMORY.md # reviewed core memory: auto-loaded, token-capped │ ├── notes/ # notes: Markdown + YAML frontmatter │ ├── journal/ # raw log: append-only │ └── quarantine/ # unreviewed notes: recallable, never auto-loaded ├── inbox/ # tasks and messages received ├── outbox/ # deliverables and replies ├── workspace/ # scratch space (retention class: scratch) └── .nas/ # plain-text metadata: role.yaml, limits.yaml, maintenance.yaml ``` ## 規範的要求 - Home **必須**僅憑 Store 就能重建;讀取它**不得**依賴任何派生資料。 - `.nas/` 後設資料**必須**是純文本,並隨 Home 一起匯出。 - 自動載入的上下文**必須**有 token 上限,並且**只能**來自已審閱的筆記。 - 佈局**應當**遵循開放約定:`AGENTS.md`、`SKILL.md`、帶 YAML frontmatter 的 Markdown。 - 執行**必須**透過分支使用 Home。 ## 借鑑與區別 下面這些都是現成的做法,**真正新的部分很少**:佈局和 Git 都已經存在。新的只是把 Home 當作帶配額、繼承者和匯出保證的一等物件,並規定「已審閱才自動載入」這條信任邊界。 - [AGENTS.md](https://agents.md) - [Agent Skills](https://agentskills.io/specification) - [Letta Context Repositories](https://www.letta.com/blog/context-repositories/) - [Turso AgentFS](https://github.com/tursodatabase/agentfs) - [Cloudflare Artifacts](https://blog.cloudflare.com/artifacts-git-for-agents-beta/) ## 坦誠的侷限 - 各框架的原生記憶格式並不一致,對映到 Home 的約定是有損的。 - 只有執行環境願意讀寫這些檔案才有用。 - 廠商側的隱藏狀態(例如雲端託管的記憶)無法納入。 ## 開放問題 - 各框架的格式如何雙向對映? - 一個很大的 Home 怎樣控制啟動時的載入量與延遲? ## 常見問題 ### Agent Home 只是一個 Git 儲存庫嗎? 大體上是,而且這是有意的:你可以直接 `git clone` 它。區別在於它還有歸屬(屬於一個角色)、配額、繼承者、匯出保證,以及「已審閱才自動載入」的規則;這些由 NAS 保證,而不只是約定。 ### 換一個智能體框架,記憶會丟嗎? 不會,只要新的執行環境願意讀這些檔案。Home 用的是開放約定,`AGENTS.md`、`SKILL.md` 與 Markdown 筆記不依賴任何一個框架。對映有損的部分,應當在匯入時標記為未審閱。 ### 我需要先裝 Agent NAS 才能用 Home 嗎? 不需要。一個帶 `AGENTS.md` 的 Git 目錄就是 L0 的 Home。NAS 提供的是配額、受保護的合併、租約與稽核,而不是檔案格式。 ## 相關概念 - [Agent Branch (智能體分支)](https://agentnas.com/zh-tw/concepts/agent-branch/): 每次執行在寫時複製的分支裡工作,經審閱的合併才進入主線。 - [Agent Memory (智能體記憶)](https://agentnas.com/zh-tw/concepts/agent-memory/): 筆記是你能讀能改的真相,索引只是可以丟棄的快取。 - [Capability Lease (能力租約)](https://agentnas.com/zh-tw/concepts/capability-lease/): 發給一次執行的、有期限與預算的窄域授權;子租約只能更窄。 --- 標準網址: https://agentnas.com/zh-tw/concepts/agent-home/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Agent Branch (智能體分支) *每次執行在寫時複製的分支裡工作,經審閱的合併才進入主線。* > **Agent Branch(智能體分支)** 讓每次執行在寫時複製的分支裡工作;變更只有透過一次經審閱的合併(Agent PR)才能進入受保護的主線;隨時可以打檢查點並恢復。 **AN-02** · 符合性等級: L0 Files · 概念組: 工作 ## 要解決的問題 智能體以機器的速度犯錯,而共享資料沒有「試一試、看差異、審閱、撤銷」的機制。並行的智能體還會互相踩踏。 2026 年 4 月的一次事故裡,一個智能體用一枚權限過寬的權杖,在 9 秒內刪除了生產卷和同卷的備份。如果它只能寫一個分支,如果刪除是軟刪除,如果快照不在它的權限之內,這件事會小得多。 ## 工作方式 - **分支建立廉價**(取決於引擎,理想情況接近 O(1))。租約只授予**分支內**的寫入,以及向目標的 `propose`。 - **受保護樹。** 主線只能經合併更新:即使憑據洩露,也不能直接寫。 - **Agent PR。** 差異、意圖、來源(讀清單摘要)、檢查結果與標籤摘要。檢查通過且策略允許時自動合併,否則交給 [Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/)。 - **軟刪除。** 受保護樹中的刪除進入回收區,預設保留 7 天;快照由所有者持有,**不在任何租約的權限之內**。 - **檢查點。** 命名的快照;`restore` 把檔案回退到檢查點。 - **合併。** 文本用三方合併,其他檔案按檔案粒度。有衝突就停下,**絕不靜默覆蓋**;結構化資料需要註冊的合併器,或者交給人。 - **TTL 與配額,** 防止「分支炸彈」。 - **並行嘗試。** 同一個任務可以開 N 個分支,擇優合併,其餘回收。 ## 從小處開始 - Git 分支加 worktree,再加上 Forgejo、Gitea 或 GitHub 的**受保護 main**。 - 大目錄用 btrfs 或 ZFS 的快照與複製;物件儲存可以用 Tigris 或 lakeFS 的分叉。 - 先把「刪除進回收區」和「快照歸所有者」做對。這兩條最便宜,也最能防住事故。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *nas cli* ```bash nas branch create cleo/release-notes --from main --ttl 48h nas checkpoint create before-refactor nas propose --into main --checks links,schema nas restore before-refactor nas trash list # recycle area, kept 7 days by default nas trash restore ``` ## 規範的要求 - 受保護樹**必須**只能經合併更新,任何憑據都不能直接寫入。 - 合併**必須**產生帶來源(執行、租約、主體)的提交。 - 任何租約**不得**允許刪除快照或備份。 - 受保護樹中的刪除**必須**是軟刪除,並在配置的視窗內(預設 7 天)可恢復。 - 衝突**不得**被靜默解決;合併**必須**停止並報告。 - 分支**必須**有 TTL 與配額。 ## 借鑑與區別 下面這些都是現成的做法。**真正新的部分:** 把分支綁定到**執行與租約**,讓分支成為授權的單位,合併成為審閱的單位。分支和快照本身並不新。 - [Git worktree](https://git-scm.com/docs/git-worktree) - [lakeFS for agents](https://lakefs.io/agentic-ai/) - [Tigris Agent Kit](https://www.tigrisdata.com/docs/ai/agent-kit/) - [Cloudflare Artifacts](https://blog.cloudflare.com/artifacts-git-for-agents-beta/) ## 坦誠的侷限 - 分支只保護 NAS 裡的資料,**不會撤銷外部副作用**:已經發出的郵件、已經呼叫的介面。 - 大型二進位檔檔案和資料庫檔案很難合併。 - 審閱疲勞仍可能發生,所以低風險的路徑允許自動合併,並度量批准率。 ## 開放問題 - 語義合併器如何註冊並被信任? - 二進位檔衝突的互動應當怎麼做? ## 常見問題 ### 這和 Git 分支有什麼不同? 機制上並不神奇:在 Git 上就能搭出來。不同的是它把分支與一次執行、一張租約綁在一起,讓「只能寫自己的分支」成為授權規則,而合併成為唯一的審閱點。 ### 分支能防住所有事故嗎? 不能。它只保護 NAS 裡的資料:智能體已經發出的郵件、已經呼叫的外部介面,不會因為回滾分支而撤銷。這類動作應當經過租約裡的 `egress` 和 Human Gate。 ### 每次合併都要人批准嗎? 不是。檢查通過、沒有讀過外部內容、不涉及刪除或共享的合併可以自動進行;需要人的只有少數情形,見 [Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/)。 ## 相關概念 - [Human Gate (人類閘門)](https://agentnas.com/zh-tw/concepts/human-gate/): 只在不可逆、對外或提權的動作之前出現,展示真實的差異。 - [Agent Home (智能體之家)](https://agentnas.com/zh-tw/concepts/agent-home/): 按角色劃分、帶歷史的目錄,全是普通檔案,可以帶走。 - [Flight Recorder (飛行記錄器)](https://agentnas.com/zh-tw/concepts/flight-recorder/): 以執行為單位、雜湊連結的記錄,包括這次執行讀過什麼。 --- 標準網址: https://agentnas.com/zh-tw/concepts/agent-branch/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Flight Recorder (飛行記錄器) *以執行為單位、雜湊連結的記錄,包括這次執行讀過什麼。* > **Flight Recorder(飛行記錄器)** 是以執行為單位、只追加、雜湊連結的記錄:這次執行讀了什麼(讀清單)、寫了什麼、被允許或拒絕了什麼、誰批准了什麼。它存放在資料旁邊,用來回答「這個改動可能受到了什麼影響」。 **AN-03** · 符合性等級: L1 Authority · 概念組: 工作 ## 要解決的問題 事故復盤時,日誌散落各處;「讀取」與隨後的動作之間沒有關聯;日誌可以被同一位管理員,甚至同一個智能體修改。 更根本的是:當一次合併或一條記憶被懷疑受到污染時,沒有辦法回答「那次執行讀過什麼」。 ## 工作方式 - **兩類內容。** *事件*逐條記錄:提交、租約簽發與撤銷、閘門請求與決定、策略拒絕、派生、遺忘。*讀清單*(read manifest)按執行聚合:讀過哪些路徑@提交、哪些範圍、內容雜湊;不記每一次讀取呼叫,也不記內容。 - **每個提交帶來源後設資料:** `principal`、`on_behalf_of`、`run`、`lease`、`purpose` 和讀清單引用。 - **雜湊鏈**(按天),可選簽名與外部錨定(第二個節點、帶物件鎖的桶)。目標是「**篡改可以被發現**」,而不是「無法篡改」。 - **匯出:** OpenTelemetry GenAI spans、JSON Lines,或接入 SIEM。 - **隱私:** 預設只記後設資料,不記內容;記錄的保留與內容的刪除互相獨立;記錄本身受存取控制。 - **`explain(commit)`:** 返回這次提交對應的執行、租約、閘門決定、讀清單與輸入。 - **先記錄,後生效:** 有後果的操作必須先寫入意圖記錄。 ## 從小處開始 - 一張追加寫的 SQLite 表,加上每日雜湊。 - 在每個提交資訊裡寫 `Run:`、`Lease:` 之類的 Git trailer。 - 匯出 OpenTelemetry spans,接入你已有的觀測棧。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *record.json* ```json { "seq": 18211, "time": "2026-11-12T09:14:22Z", "kind": "commit", "run": "run_91ab", "principal": "agt_cleo", "on_behalf_of": "usr_wei", "lease": "lse_7Qk3", "purpose": "Draft the Q4 release notes", "subject": { "path": "/shared/launch/notes.md", "commit": "91ce3a7" }, "read_manifest": "rm_5d2e", "decision": { "effect": "allow", "rule": "r-17" }, "taint": { "external": true, "sensitivity": "private" }, "prev_hash": "sha256:b3a0..." } ``` ## 規範的要求 - 有後果的操作**必須**在生效之前寫入意圖記錄;寫入失敗時,操作**必須**失敗。 - 每次執行**必須**有讀清單,記錄讀過的路徑、提交與範圍(不含內容)。 - 記錄**必須**雜湊連結,並且**必須**能用公開的命令校驗。 - `explain(commit)` **必須**返回執行、租約、閘門決定與讀清單引用。 - 記錄的保留**必須**獨立於內容的刪除。 ## 借鑑與區別 下面這些都是現成的零件。**真正新的部分是讀清單:** 把「讀」變成一個可追溯的輸入集合,使「被污染的合併」和「被投毒的記憶」可以復盤。 - [OpenTelemetry GenAI conventions](https://opentelemetry.io/docs/specs/semconv/gen-ai/) - [Certificate Transparency](https://certificate.transparency.dev) - [Sigstore Rekor](https://docs.sigstore.dev/logging/overview/) - [Git trailers](https://git-scm.com/docs/git-interpret-trailers) ## 坦誠的侷限 - 沒有外部錨定時,擁有 root 的管理員仍然可以毀掉日誌。 - 記錄本身含有敏感的後設資料,必須受控。 - 讀清單的粒度是儲存成本與可追溯性之間的折中。 ## 開放問題 - 高吞吐下讀清單的儲存成本如何控制? - 跨節點的記錄如何合併與校驗? ## 常見問題 ### 它會記錄智能體讀到的內容嗎? 預設不會。記錄裡只有路徑、提交、範圍與內容雜湊,足以指回原始資料,又不會把敏感內容複製進日誌。內容仍然在 Store 裡,受租約與標籤保護。 ### 「防篡改」是什麼意思? 我們只承諾**篡改可以被發現**:記錄是雜湊連結的,改一條就會讓鏈校驗失敗;配合外部錨定(第二個節點或帶物件鎖的桶),可以抵禦擁有 root 的管理員。沒有錨定時,管理員仍可整體銷燬日誌。 ### 為什麼要記「讀」? 因為風險常常來自讀取:一次讀了網頁的工作階段,隨後寫進的筆記就可能被污染。讀清單讓你事後能回答「這個改動受到了什麼影響」。 ## 相關概念 - [Capability Lease (能力租約)](https://agentnas.com/zh-tw/concepts/capability-lease/): 發給一次執行的、有期限與預算的窄域授權;子租約只能更窄。 - [Trust Labels (信任標籤)](https://agentnas.com/zh-tw/concepts/trust-labels/): 來源與敏感度兩個小標籤,加上工作階段污點,強制執行 Rule of Two。 - [Cascade Forget (級聯遺忘)](https://agentnas.com/zh-tw/concepts/cascade-forget/): 沿血緣刪除派生物,按保留類處理歷史,並如實報告做不到的部分。 --- 標準網址: https://agentnas.com/zh-tw/concepts/flight-recorder/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Capability Lease (能力租約) *發給一次執行的、有期限與預算的窄域授權;子租約只能更窄。* > **Capability Lease(能力租約)** 是對特定資料、特定操作、有明確期限與預算的授權,發給**一次執行**,也是執行接觸 NAS 的唯一途徑。子租約只能比父租約更窄。 **AN-04** · 符合性等級: L1 Authority · 概念組: 權限 ## 要解決的問題 RBAC 與 ACL 假設使用者長期穩定、權限寬而持久;智能體需要的是按任務裁剪、到點失效的權限。更糟的是,長期憑據常常放在智能體夠得著的地方:2026 年 4 月那次事故裡的權杖,就躺在一個無關的檔案裡,名義上用來管理域名,實際上能做任何事。 ## 工作方式 - **誰拿著鑰匙。** 長期憑據只在編排器或所有者手裡;執行拿到的是租約,不是鑰匙。模型永遠看不到長期憑據。 - **租約是一枚存取權杖,** 它的 `authorization_details`([RFC 9396](https://www.rfc-editor.org/rfc/rfc9396))描述路徑、動作與分支;由所有者或編排器透過[權杖交換(RFC 8693)](https://www.rfc-editor.org/rfc/rfc8693)申請,`act` 宣告記錄委託鏈;NAS 端儲存狀態,用於撤銷與預算計數。 - **只能收窄。** 子租約必須是父租約的子集,鑄造時由 NAS 校驗。 - **預算。** 讀寫位元組數、請求數,以及可選的出口位元組與花費上限,由閘道器計數。它是**熔斷器**,不是精確計費。 - **策略包絡(policy envelope)。** 所有者預先設定一個範圍,範圍內的租約自動發放,超出就交給 [Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/)。長期的存取用包絡表達,而不是做成長期租約。 - **顯式宣告 B 與 C。** 租約寫明最高敏感級別,以及是否允許受保護寫入或出口,它們是 [Trust Labels](https://agentnas.com/zh-tw/concepts/trust-labels/) 的輸入。 - **撤銷。** 短 TTL(預設 4 小時,上限 24 小時)加即時撤銷,撤銷會級聯到子租約。 - **`purpose` 只記錄,不強制:** 自由文本無法被機器檢查。 ## 從小處開始 - 寫一個 `nas lease create` 命令:為每個角色簽發一枚帶路徑字首、動作和 TTL 的權杖,用環境變數交給沙箱;NAS 一側按字首和動作強制。 - 這已經能擋住那類事故的前半段:權杖無法做租約之外的任何事。 - 預算、委託鏈與策略包絡可以以後再加。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *lease.json* ```json { "lease_id": "lse_7Qk3", "run": "run_91ab", "principal": "agt_cleo", "on_behalf_of": "usr_wei", "parent": null, "purpose": "Draft the Q4 release notes", "paths": ["/shared/launch/**", "/agents/cleo/workspace/**"], "actions": ["read", "write", "propose"], "branch": "cleo/run_91ab", "sensitivity_max": "private", "egress": false, "requires_gate": ["merge", "delete", "share"], "budgets": { "bytes_read": 200000000, "bytes_written": 5000000, "requests": 5000 }, "expires_at": "2026-11-12T16:00:00Z" } ``` ## 規範的要求 - 租約**必須**有到期時間,並且**不得**在最大 TTL 之後續期;續期需要新的發放。 - 子租約**必須**是父租約的子集,NAS **必須**在鑄造時校驗。 - 撤銷租約**必須**級聯撤銷它的全部子租約。 - 長期存取**必須**以策略包絡表達,**不得**做成長期租約。 - 租約**必須**宣告敏感級別上限,以及是否允許出口與受保護寫入。 - 長期憑據**不得**暴露給模型或執行。 ## 借鑑與區別 下面這些都是現成的部件。**真正新的部分:** 以**執行與任務的形狀**為單位,把分支、預算與 Rule of Two 的屬性放進同一張租約。權杖與能力模型本身都是現成的。 - [OAuth Token Exchange (RFC 8693)](https://www.rfc-editor.org/rfc/rfc8693) - [OAuth Rich Authorization Requests (RFC 9396)](https://www.rfc-editor.org/rfc/rfc9396) - [Biscuit](https://github.com/biscuit-auth/biscuit) - [UCAN](https://ucan.xyz/specification/) - [IETF attenuating agent tokens draft](https://datatracker.ietf.org/doc/draft-niyikiza-oauth-attenuating-agent-tokens/) ## 坦誠的侷限 - 只覆蓋 NAS 內的操作,管不到智能體在別處的行為。 - `purpose` 不可強制;預算是近似的。 - 租約不能阻止**合法權限之內**的誤用,那是分支和閘門的工作。 ## 開放問題 - `purpose` 如何從自由文本走向可機檢的結構化意圖? - 預算在聯邦下怎樣記帳? ## 常見問題 ### 租約和 API 金鑰有什麼不同? API 金鑰是長期共享的秘密,持有者能做帳號能做的一切。租約綁定一次執行,限定路徑、動作和期限,並且只能被收窄;到期即失效,可以隨時撤銷。 ### 為什麼不直接用 OAuth? 用的就是 OAuth:租約是存取權杖,靠權杖交換(RFC 8693)申請,用富授權請求(RFC 9396)描述範圍。Agent NAS 只補上 OAuth 沒有規定的部分:以執行為單位,把分支、預算與 Rule of Two 屬性放進同一張授權。 ### 租約過期後執行會怎樣? 掛載變為只讀並隨後解除安裝,新的請求被拒絕並記錄。分支保留到它自己的 TTL 到期,所以已完成的工作不會丟,仍然可以經審閱合併。 ## 相關概念 - [Human Gate (人類閘門)](https://agentnas.com/zh-tw/concepts/human-gate/): 只在不可逆、對外或提權的動作之前出現,展示真實的差異。 - [Trust Labels (信任標籤)](https://agentnas.com/zh-tw/concepts/trust-labels/): 來源與敏感度兩個小標籤,加上工作階段污點,強制執行 Rule of Two。 - [Flight Recorder (飛行記錄器)](https://agentnas.com/zh-tw/concepts/flight-recorder/): 以執行為單位、雜湊連結的記錄,包括這次執行讀過什麼。 --- 標準網址: https://agentnas.com/zh-tw/concepts/capability-lease/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Human Gate (人類閘門) *只在不可逆、對外或提權的動作之前出現,展示真實的差異。* > **Human Gate(人類閘門)** 是由策略觸發的檢查點:在**不可逆、對外或提權**的動作生效之前,由人(或指定的審批主體)批准一個被完整渲染的具體動作。它被設計成稀少、具體、難以橡皮圖章。 **AN-05** · 符合性等級: L1 Authority · 概念組: 權限 ## 要解決的問題 今天的「人在迴路」要麼是無休止的彈窗,要麼什麼都沒有。Anthropic 披露,Claude Code 使用者批准了 93%–97% 的權限提示;在它的受控實驗裡,人只攔住了 13.6% 被植入的危險命令,工作階段越長越差。這是廠商為推廣自動模式做的研究,測的是識別被植入的提示,不是生產事故率,但方向很清楚。 同一份資料裡還有另一個數字:使用者對「計劃」的拒絕率是 39%,對單個權限請求只有 3%。人會認真判斷的,是計劃和合並,不是每一次工具呼叫。 ## 工作方式 - **只在少數地方出現:** 合併進受保護樹、受保護樹中的刪除、對外共享或釋出、出口、租約擴權、標籤降級。分支上的寫入不需要審批。 - **粒度是計劃或合併。** 評審一個 PR,而不是五十個彈窗。 - **Gate Card 由 NAS 渲染:** 真實的差異、讀清單摘要、租約、工作階段污點,絕不使用智能體的自述。選項:批准、收窄後批准、拒絕;逾時預設拒絕。 - **批准綁定動作摘要:** 綁定差異雜湊與租約,不能重放。 - **交付:** 推送、聊天、郵件或 CLI;可以委派;passkey 作為可選的強認證。 - **只升不降。** 可選的風險分類器(包括 LLM)只能把動作**升級**到閘門,永遠不能**批准**。模型只能收緊,不能放寬。 - **疲勞度量:** 批准率與批准耗時;批准率異常高時,提示合併閘門或收緊策略。 ## 從小處開始 - 受保護 main 加 PR 審閱(任何 Git 平臺都行),再加一條推送通知。 - 或者一個 CLI:`nas gate approve `。 - 先把 Gate Card 做成「真實的差異」,別急著做花哨的介面。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *gate-card.json* ```json { "gate_id": "gt_2Mx4", "run": "run_91ab", "action": { "op": "merge", "from": "cleo/run_91ab", "into": "main", "files_changed": 4, "diff_sha256": "7d2a..." }, "why": "Release notes are ready for review", "risk": { "session_taint": ["external"], "sources": ["web:example.com/changelog"], "destructive": false, "egress": false }, "options": ["approve", "approve_narrowed", "deny"], "default": "deny", "expires_at": "2026-11-12T12:00:00Z" } ``` ## 規範的要求 - Gate Card **必須**展示由 NAS 計算出的真實差異,而不是智能體對它的描述。 - 批准**必須**綁定動作摘要與租約,**不得**可重放。 - 逾時的預設結果**必須**是拒絕。 - 分類器或 LLM **不得**授予批准;**可以**把動作升級到閘門。 - 合併進受保護樹、受保護樹中的刪除、對外共享、出口、租約擴權、標籤降級,**必須**經過閘門。 - NAS **應當**報告批准率與批准耗時。 ## 借鑑與區別 下面這些都是現成的做法。**真正新的部分:** 把審批錨定在**儲存層的合併**上,並由 NAS(而不是智能體)渲染內容。審批與 PR 本身都是現成的。 - [How we built Claude Code auto mode](https://www.anthropic.com/research/claude-code-auto-mode) - [Anthropic: approval data behind auto mode](https://claude.com/resources/articles/auto-mode-default-in-claude-code) - [CaMeL](https://arxiv.org/abs/2503.18813) - [WebAuthn](https://www.w3.org/TR/webauthn-3/) - [OpenID CIBA](https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0.html) ## 坦誠的侷限 - 人仍然可能批准錯誤的動作;成批的審閱也會疲勞。 - 通知渠道可能被釣魚。 - 審批無法阻止它**批准範圍之外**的事,那是租約的工作。 ## 開放問題 - 批次與分級審閱的最佳介面是什麼? - 自動合併的門檻如何度量與調整? ## 常見問題 ### 這不就是又一個「確認」彈窗嗎? 刻意不是。彈窗針對每次工具呼叫,人很快就會點「批准」。閘門只出現在少數不可逆或對外的動作前,展示 NAS 計算出的真實差異,批准還綁定了差異的雜湊:差異變了,批准即失效。 ### 可以讓 LLM 來決定要不要放行嗎? 可以讓它建議「這一步需要人看」,不能讓它批准。放行的決定必須是確定性的規則或人的批准。這條規則讓安全性不依賴某個模型的判斷。 ### 逾時會怎樣? 預設拒絕。執行會收到一個明確的被拒絕結果,可以改走別的路徑,或把提議留在分支裡等人處理。 ## 相關概念 - [Capability Lease (能力租約)](https://agentnas.com/zh-tw/concepts/capability-lease/): 發給一次執行的、有期限與預算的窄域授權;子租約只能更窄。 - [Trust Labels (信任標籤)](https://agentnas.com/zh-tw/concepts/trust-labels/): 來源與敏感度兩個小標籤,加上工作階段污點,強制執行 Rule of Two。 - [Agent Branch (智能體分支)](https://agentnas.com/zh-tw/concepts/agent-branch/): 每次執行在寫時複製的分支裡工作,經審閱的合併才進入主線。 --- 標準網址: https://agentnas.com/zh-tw/concepts/human-gate/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Trust Labels (信任標籤) *來源與敏感度兩個小標籤,加上工作階段污點,強制執行 Rule of Two。* > **Trust Labels(信任標籤)** 是附在資料上的兩個很小的標籤集,**來源**(`owner`、`agent`、`external`)與**敏感度**(`public`、`private`、`secret`),再加上**工作階段污點**。NAS 把 Rule of Two 當作工作階段不變數來強制:一次工作階段不能同時擁有 [A] 讀過外部內容、[B] 接觸敏感資料、[C] 改變受保護狀態或對外通訊;要補全第三項,就走 [Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/)。 **AN-06** · 符合性等級: L3 Guard · 概念組: 權限 ## 要解決的問題 提示詞注入之所以奏效,是因為模型分不清「指令」和「資料」。模型層的防禦(分類器、提示加固)會漏,攻擊者還可以自適應。Meta 在 2025 年 10 月底提出 [Agents Rule of Two](https://ai.meta.com/blog/practical-ai-agent-security/):在注入問題被可靠解決之前,一次工作階段最多隻應同時具備三個性質中的兩個。 更可靠的做法是在模型**之外**限定後果。儲存恰好是「讀」和「寫」的必經之地,所以適合把這條規則變成可以測試的不變數。 ## 工作方式 - **標籤。** 來源 3 檔、敏感度 3 檔,外加 `reviewed` 標記(由閘門批准設定)。匯入點(網頁、郵件、上傳)預設標為 `external`;金鑰掃描器發現憑據時,自動標為 `secret`。 - **工作階段污點。** 一次執行讀過的一切的彙總(來自讀清單);在一個工作階段內只增不減,新工作階段重置。 - **不變數。** A = 工作階段讀過 `external`;B = 租約允許讀 `private` 或以上(閾值可配置);C = 租約允許向受保護樹提議合併、共享、刪除或出口。三者在同一工作階段裡同時成立時,觸發 C 的那次呼叫被拒絕或轉交閘門。 - **實際效果:** 在同時具備 B 和 C 的租約下,工作階段一旦讀過外部內容,之後的 C 類動作都要經過人。想避免這種摩擦,就把「讀外部內容」放到另一個沒有 B 的工作階段裡,只透過結構化交接傳遞結果。 - **傳播。** NAS 自己的派生(索引、摘要)確定性地繼承輸入標籤的並集;執行寫入的檔案繼承該執行的工作階段污點(保守做法)。 - **降級。** 只能經由 Human Gate,或**結構化交接:** 把受污染工作階段的輸出限定為經 JSON Schema 校驗的欄位(列舉、ID、有界字串),校驗通過後才允許被特權工作階段讀取。能被確定性校驗的,才可能被信任。 - **強制點在閘道器與掛載層**(它們知道租約與工作階段),不在模型內部。 ## 從小處開始 - 只做兩件事:給匯入目錄裡的檔案打上 `external`;讀過 `external` 的執行預設沒有出口和受保護合併的權限,需要閘門。 - 策略用 Cedar 或 Rego 寫成確定性的規則,拒絕時給出可讀的原因。 - 先用「僅記錄」模式跑一週,看看會誤攔什麼,再開啟強制。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *policy.yaml* ```yaml # Deterministic policy (Cedar- or Rego-style rules can express the same thing) session_invariant: rule_of_two properties: A: session.read_origin includes "external" B: lease.sensitivity_max >= "private" C: lease allows propose_protected | share | delete | egress on_would_complete_ABC: gate # never "allow" rules: - id: r-merge-1 when: session.A and op == "merge" and target.protected then: gate - id: r-secret-1 when: session.read_sensitivity == "secret" and op == "egress" then: deny ``` ## 規範的要求 - 每個匯入點**必須**賦予預設標籤;外部內容**必須**標為 `external`。 - 工作階段污點**必須**在工作階段內只增不減。 - 策略求值**必須**是確定的,**不得**呼叫 LLM。 - 會讓同一工作階段補全 A+B+C 的呼叫**必須**被拒絕或轉交閘門。 - 降級**必須**經過閘門或經模式校驗的結構化交接。 - 派生資料**必須**繼承其輸入標籤的並集。 ## 借鑑與區別 下面這些都是現成的思路。**真正新的部分:** 在**儲存邊界**用讀清單實作工作階段污點,並把標籤用到記憶寫入和派生資料上。我們刻意把標籤格縮小到 3×3,因為細粒度的格在實踐中會導致標籤膨脹。OpenClaw 已經在單個執行環境裡做了來源標籤與隔離,我們的區別只是把它放到共享的儲存中。 - [Agents Rule of Two (Meta)](https://ai.meta.com/blog/practical-ai-agent-security/) - [The lethal trifecta](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/) - [CaMeL](https://arxiv.org/abs/2503.18813) - [Fides](https://arxiv.org/abs/2505.23643) - [Design Patterns for Securing LLM Agents against Prompt Injections](https://arxiv.org/abs/2506.08837) - [OpenClaw memory architecture](https://docs.openclaw.ai/concepts/memory-architecture) ## 坦誠的侷限 - 這**不是**提示詞注入的防禦,它限制的是後果。 - NAS 看不到它之外的工具(瀏覽器、郵件),需要執行環境配合。 - 污點是保守的,會帶來摩擦與誤報;結構化模式之外的自由文本仍然可以攜帶攻擊者的話。 - 隱蔽通道無法消除。 ## 開放問題 - 標籤的粒度應當是檔案還是段落? - 多租戶下標籤詞彙表如何治理? - 如何降低誤報? ## 常見問題 ### Rule of Two 能防住提示詞注入嗎? 不能阻止注入發生。它讓一次被注入的工作階段**無法同時**擁有「讀過不可信內容、接觸敏感資料、能改變受保護狀態或對外傳送」三項,從而限制後果。Meta 自己也強調它是減輕風險的啟發式,不替代最小權限。 ### 為什麼只有三個來源和三個敏感度? 因為細粒度的標籤格在實踐中會膨脹、會被關掉。3×3 足夠表達「誰寫的、有多敏感」,也容易讓人理解拒絕的原因。更細的分割槽可以靠路徑與租約來做。 ### 工作階段污點會不會讓智能體什麼都幹不了? 只會限制三類動作:改動受保護樹、共享或刪除、對外傳送。分支內的讀寫不受影響。需要避開摩擦時,可以把讀外部內容的工作放進一個沒有敏感資料的工作階段,只傳回經模式校驗的結果。 ## 相關概念 - [Human Gate (人類閘門)](https://agentnas.com/zh-tw/concepts/human-gate/): 只在不可逆、對外或提權的動作之前出現,展示真實的差異。 - [Agent Memory (智能體記憶)](https://agentnas.com/zh-tw/concepts/agent-memory/): 筆記是你能讀能改的真相,索引只是可以丟棄的快取。 - [Capability Lease (能力租約)](https://agentnas.com/zh-tw/concepts/capability-lease/): 發給一次執行的、有期限與預算的窄域授權;子租約只能更窄。 --- 標準網址: https://agentnas.com/zh-tw/concepts/trust-labels/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Agent Memory (智能體記憶) *筆記是你能讀能改的真相,索引只是可以丟棄的快取。* > **Agent Memory(智能體記憶)** = **你能讀、能改的筆記** + **可以隨時丟棄的索引**。每條筆記都引用它的來源;索引(全文、向量、圖、輪廓)只是筆記的派生物;後台維護作業只**提議**修改,絕不改寫原始日誌。 **AN-07** · 符合性等級: L2 Memory · 概念組: 知識 ## 要解決的問題 記憶框架把記憶放進不透明的資料庫:無法檢查、對比、遷移、糾正,也難以可靠刪除;索引和嵌入模型被綁死。而記憶本身就是攻擊面:2026 年的[一項研究](https://arxiv.org/abs/2606.04329)裡,持久記憶投毒在兩個智能體上的平均攻擊成功率達 50.46%;[另一項研究](https://arxiv.org/abs/2607.05189)用一封精心構造的郵件,在檔案系統和向量兩種記憶後端上都得了手。 同時,「哪種記憶架構最好」遠沒有定論:基準互相矛盾。一份不押注任何檢索演算法的設計,才扛得住三年的變化。 ## 工作方式 - **筆記是真相。** Markdown 加 YAML frontmatter:`kind`(情景、語義、程式、偏好)、`subject`、`sources`、`confidence`、`valid_from`、`valid_to`、`supersedes`、`origin`、`reviewed`。 - **更新而非覆蓋。** 新事實 `supersedes` 舊事實;區分有效時間與記錄時間,因為事實會變,而常見基準幾乎不測這一點。 - **索引是快取。** BM25(如 SQLite FTS5)、向量(可以多套並存)、可選的圖;每個派生物帶**配方**與**輸入**。換嵌入模型就是後台重算,舊索引保留到新索引的黃金召回測試達標為止。 - **兩類派生。** 確定性的(切塊、BM25、固定模型的嵌入)可重現;生成式的(LLM 摘要、抽取出的事實)只能「再生成並比對」,因此標記 `generated: true`,並且從不作為唯一副本。 - **寫入路徑。** `nas_remember` 把筆記(含來源)寫到當前分支;污點隨之繼承。來自 `external` 污點工作階段的筆記進入**隔離區**,標記為未審閱:可以被召回,但**不自動載入**,也不會進入 `MEMORY.md`。 - **讀取路徑。** `nas_recall` = 搜尋、候選、預算視圖加證據指標,並顯示筆記的來源與審閱狀態。 - **維護作業**(夜間或空閒時):去重、把情景整合成語義事實、標記矛盾、讓過期的事實失效、重建索引。作業在分支上產出提案,由人或智能體審閱;**絕不刪除原始日誌**;度量「後悔率」(被回滾的提案比例)。 - **黃金召回測試。** 每個 Home 一組「問題、期望筆記」,換模型或索引器時自動迴歸。 ## 從小處開始 - `memory/notes/*.md` 加 frontmatter;用 SQLite FTS5 做檢索。 - 在 CI 裡跑十條黃金問題。 - 向量索引和維護作業都可以以後再加;先把「來源」和「已審閱才自動載入」做對。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *memory/notes/customer-acme.md* ```markdown --- id: mem_4kq2 kind: semantic subject: customer/acme valid_from: 2026-10-02 valid_to: null confidence: 0.8 origin: agent reviewed: true sources: - nas://home-box/agents/cleo/journal/2026-10-02.md@9f2c1de#L12-L18 supersedes: [mem_1xa9] --- Acme renewed for 24 months; the champion moved from Dana to Luis. ``` ## 規範的要求 - 筆記**必須**能脫離 Memory 層被讀取(它們是 Store 裡的普通檔案)。 - 每個派生物**必須**帶配方與輸入;索引**必須**可丟棄並可重建。 - 由受污染工作階段寫入的筆記,在被審閱之前**不得**自動載入。 - 新事實**必須**以 `supersedes` 取代舊事實,而不是覆蓋。 - 維護作業**必須**在分支上工作並只提議;**不得**刪除原始日誌。 - 每個 Home **應當**帶黃金召回測試,在模型或索引器變化時執行。 ## 借鑑與區別 下面這些都是現成的思路,OpenClaw 的記憶架構已經做了來源標籤、按層隔離和整合時的污點傳播。**真正新的部分:** OpenClaw 在**單個執行環境內部**做;我們提議在**共享的儲存裡**做,讓任何執行環境都受益;並把索引降為可丟棄的快取,使檢索演算法可以更換而記憶不丟。 - [Letta Context Repositories](https://www.letta.com/blog/context-repositories/) - [Letta: is a filesystem all you need?](https://www.letta.com/blog/benchmarking-ai-agent-memory/) - [OpenClaw memory architecture](https://docs.openclaw.ai/concepts/memory-architecture) - [Long-term memory security survey](https://arxiv.org/abs/2604.16548) - [Graphiti](https://github.com/getzep/graphiti) - [MemGPT](https://arxiv.org/abs/2310.08560) ## 坦誠的侷限 - 生成式派生物不可能逐位重現。 - 維護作業可能把錯誤「固化」成事實,所以它只提議,不直接改。 - 哪種記憶架構最好,目前沒有定論。 ## 開放問題 - 何時由智能體自己寫,何時交給維護作業? - 跨模型版本的迴歸標準是什麼? ## 常見問題 ### 為什麼用檔案,不用向量資料庫? 檔案是你能讀、能改、能 diff、能帶走的真相;向量索引是它的派生快取,可以並存多套、隨時重建。Letta 的基準說明,只給智能體 `grep` 和檔案工具就有競爭力,但各家基準互相矛盾,所以設計不押注某一種檢索演算法。 ### 怎樣防止記憶被投毒? 無法保證絕不被寫入,但可以限制後果:外部來源的內容帶著 `external` 標籤;受污染工作階段寫的筆記進入隔離區,不自動載入;合併要經過審閱;出了問題可以順著來源鏈找到受影響的筆記並回滾。 ### 換嵌入模型要遷移記憶嗎? 不需要。筆記不變,只是在後台用新的配方重算索引;舊索引保留到新索引的黃金召回測試達標為止。 ## 相關概念 - [Budgeted Reads (預算化讀取)](https://agentnas.com/zh-tw/concepts/budgeted-reads/): 同一個檔案可以用輪廓、章節、行範圍或全文來讀,按預算降級。 - [Cascade Forget (級聯遺忘)](https://agentnas.com/zh-tw/concepts/cascade-forget/): 沿血緣刪除派生物,按保留類處理歷史,並如實報告做不到的部分。 - [Trust Labels (信任標籤)](https://agentnas.com/zh-tw/concepts/trust-labels/): 來源與敏感度兩個小標籤,加上工作階段污點,強制執行 Rule of Two。 --- 標準網址: https://agentnas.com/zh-tw/concepts/agent-memory/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Budgeted Reads (預算化讀取) *同一個檔案可以用輪廓、章節、行範圍或全文來讀,按預算降級。* > **Budgeted Reads(預算化讀取)** 是以 token 預算為單位的讀取:同一個檔案可以用不同的細節來讀,從輪廓、章節、行範圍到全文;智能體要的是「能裝進 N 個 token 的最佳視圖」,並附帶指回精確來源的證據指標。 **AN-08** · 符合性等級: L2 Memory · 概念組: 知識 ## 要解決的問題 智能體把上下文耗在整檔案和重複讀取上;樸素的 RAG 切塊會丟掉結構。而模型本來就很擅長 `grep`、`tail` 和按行讀取:Cursor 把過長的工具輸出寫成檔案讓智能體按需讀取,在呼叫了 MCP 工具的執行裡,[動態發現](https://cursor.com/blog/dynamic-context-discovery)工具描述讓總 token 下降了 46.9%。 所以問題不是「再造一個檢索系統」,而是在檔案之上給讀取一個**有預算、可核對**的契約。 ## 工作方式 - **檔案優先。** 標準讀取(含行範圍)永遠可用;Budgeted Reads 是它之上的可選擴充套件,不替代檔案系統。 - **確定性輪廓(免費):** Markdown 標題樹、程式碼符號(tree-sitter)、JSON 與 YAML 的鍵、CSV 的表頭與行數,不需要 LLM。 - **預算與降級。** 請求帶 `budget_tokens`;放不下就降級到更粗的視圖,**而不是靜默截斷**;回應宣告實際視圖、token 數,以及是否 `generated`。 - **搜尋返回片段加指標,** 而不是整個檔案。 - **證據指標:** `nas:////@#L12-L18`,針對某個提交穩定、可校驗;`dereference` 返回精確內容。 - **自上次以來的變化:** 返回兩個提交之間的差異,而不是整個檔案。 - **可選的 LLM 摘要層:** 作為快取,標記 `generated: true` 與陳舊標記。 ## 從小處開始 - 除了 `nas_read` 什麼都不加:讓智能體用 `rg`、`sed -n` 這樣的老辦法讀。 - 然後加一個針對 Markdown 與程式碼的小型輪廓工具。 - 證據指標先用「路徑@提交#行號」,不需要新的服務。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *POST /v1/files/read* ```http POST /v1/files/read { "path": "/agents/cleo/memory/notes/customer-acme.md", "view": "outline", "budget_tokens": 400 } 200 OK { "view": "outline", "tokens": 212, "generated": false, "truncated": false, "content": "# Acme\n## Renewal (L12-L18)\n## Contacts (L19-L31)\n## Open issues (L32-L40)", "evidence": [ { "pointer": "nas://home-box/agents/cleo/memory/notes/customer-acme.md@9f2c1de#L1-L40" } ] } ``` ## 規範的要求 - 回應**必須**宣告實際返回的視圖與 token 數;生成式視圖**必須**標註。 - 預算不足時,NAS **必須**降級到更粗的視圖,**不得**靜默截斷。 - 標準的檔案讀取(含範圍)**必須**保持可用。 - 證據指標**必須**可以對照提交校驗。 - 搜尋預設**必須**返回片段與指標,而不是整個檔案。 ## 借鑑與區別 漸進披露和 grep 本身都不新。**真正新的部分:** 把預算與證據指標做成**儲存層的讀取契約**,讓答案可以被核對:你能從一句話回到它來自哪個提交的哪幾行。 - [Cursor: dynamic context discovery](https://cursor.com/blog/dynamic-context-discovery) - [Agent Skills (progressive disclosure)](https://agentskills.io/specification) - [Letta Context Repositories](https://www.letta.com/blog/context-repositories/) - [RAPTOR](https://arxiv.org/abs/2401.18059) ## 坦誠的侷限 - 不同模型的分詞器不同,token 數只是估算。 - 只有用戶端採用才有效。 - 摘要會陳舊,也可能出錯,所以只作快取、一律標註。 ## 開放問題 - 跨模型分詞器的預算誤差怎麼處理? - 摘要品質如何評估? ## 常見問題 ### 它和 RAG 有什麼不同? RAG 返回與問題最接近的片段。Budgeted Reads 讓讀者對一個已知的物件選擇細節層級,預算不足就降級並如實宣告,並給出可校驗的指標。兩者可以疊加:搜尋結果也可以以預算視圖返回。 ### 必須用它才能讀檔案嗎? 不必。掛載與 Git 讀到的永遠是普通檔案;Budgeted Reads 是給在乎 token 的智能體用的可選讀取。 ### 證據指標能防止「編造出處」嗎? 它讓出處可以被核對:指標指向某個提交裡的具體行,可以校驗內容雜湊。它不會阻止模型編造,但讓「它引用的那一段是否真實存在」變成一次機器檢查。 ## 相關概念 - [Agent Memory (智能體記憶)](https://agentnas.com/zh-tw/concepts/agent-memory/): 筆記是你能讀能改的真相,索引只是可以丟棄的快取。 - [Agent Home (智能體之家)](https://agentnas.com/zh-tw/concepts/agent-home/): 按角色劃分、帶歷史的目錄,全是普通檔案,可以帶走。 - [Flight Recorder (飛行記錄器)](https://agentnas.com/zh-tw/concepts/flight-recorder/): 以執行為單位、雜湊連結的記錄,包括這次執行讀過什麼。 --- 標準網址: https://agentnas.com/zh-tw/concepts/budgeted-reads/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0 --- # Cascade Forget (級聯遺忘) *沿血緣刪除派生物,按保留類處理歷史,並如實報告做不到的部分。* > **Cascade Forget(級聯遺忘)** 是沿血緣的刪除:當一個來源被刪除,或有人要求被遺忘時,NAS 找出由它派生的一切,包括摘要、嵌入、引用它的筆記、快取和共享連結,刪除它們,或在不含該來源的情況下重新派生,並出具**報告**:做了什麼,哪些做不到。 **AN-09** · 符合性等級: L3 Guard · 概念組: 知識 ## 要解決的問題 刪除一個檔案,並不會刪除它的嵌入、摘要,或記憶裡據此推出的事實;快照與備份還在;版本歷史裡內容依然存在。 「可恢復」與「可遺忘」是同一條軸的兩端,多數系統沒有把這個選擇交給人。如果在寫入之後才想起要忘,通常已經太晚。 ## 工作方式 - **血緣。** 每個派生物記錄自己的輸入;反向索引回答「X 的所有依賴物」;筆記的 `sources` 欄位也是血緣。 - **保留類,在寫入時決定**(因為歷史無法事後改寫):`scratch`(短 TTL,不進備份,執行結束即可清理)、`normal`(版本化,可恢復)、`sensitive`(獨立金鑰域,可以透過銷燬金鑰來粉碎)。 - **恢復與遺忘的張力。** 軟刪除視窗內可恢復;視窗過後才硬刪除;遺忘請求可以跳過視窗。 - **流程。** 請求(由人或運營者發起;智能體只能提出請求,不能執行),血緣遍歷,刪除派生物並對混合來源的事實重新派生,對 `normal` 類重寫受影響路徑的歷史並清理快照,對 `sensitive` 類銷燬金鑰,最後出具報告。 - **報告:** 刪除的檔案數、被移除的派生物、歷史是否重寫、被銷燬的金鑰、尚未過期的快照,以及**明確列出覆蓋不到的範圍**:NAS 之外的副本、模型提供商的日誌、模型權重。 - 總是經過 [Human Gate](https://agentnas.com/zh-tw/concepts/human-gate/)(或策略預授權);**法律保留**會阻止遺忘並被記錄。 ## 從小處開始 - 先做保留類和軟刪除,併為每個派生物記錄它的輸入。 - 先做到「刪除原始檔時,列出並刪除它的全部派生物」。 - 加密粉碎留給 `sensitive` 類,不必一開始就全量做。 ## 介面草圖 僅作示意。欄位名在規範 v0.3 之前可能調整。 *forget-report.json* ```json { "forget_id": "fgt_3b7c", "selector": { "paths": ["/shared/crm/acme/**"], "subject": "customer/acme" }, "retention_class": "sensitive", "report": { "files_removed": 142, "derived_removed": { "embeddings": 3621, "summaries": 210, "notes_rewritten": 6 }, "history": "rewritten (3 commits)", "keys_destroyed": ["key_acme"], "snapshots_pending": ["nightly-2026-11-10 (expires 2026-11-17)"], "not_covered": ["copies outside the NAS", "model provider logs", "model weights"] }, "state": "pending_expiry" } ``` ## 規範的要求 - 遺忘**必須**沿血緣從來源傳播到每一個派生物。 - 保留類**必須**在寫入時指定(預設 `normal`)。 - 遺忘報告**必須**列出覆蓋不到的範圍:NAS 之外的副本、提供商日誌、模型權重。 - 法律保留**必須**阻止遺忘,並且**必須**被記錄。 - 智能體**可以**請求遺忘,但**不得**執行。 - 報告**不得**聲稱模型已經「遺忘」了什麼。 ## 借鑑與區別 下面這些都是現成的。**真正新的部分:** 把**保留類**當作儲存的顯式屬性,並承認「能恢復」與「能遺忘」是同一條軸上的取捨。 - [OpenLineage](https://openlineage.io) - [GDPR Article 17](https://gdpr-info.eu/art-17-gdpr/) - [Long-term memory security survey (forget and rollback)](https://arxiv.org/abs/2604.16548) ## 坦誠的侷限 - 備份、NAS 之外的副本、模型提供商的日誌都不在範圍內。 - 對由多個來源混合推斷出的事實,「受影響範圍」很難界定。 - 重寫歷史的代價很高,也有風險。 ## 開放問題 - 混合來源事實的受影響範圍怎麼界定? - 法律保留與遺忘請求衝突時,流程應當怎樣走? ## 常見問題 ### 它能讓模型忘記嗎? 不能,也不會這麼聲稱。它能做的是刪除 NAS 裡的檔案、派生物,以及(在 `sensitive` 類下)歷史與金鑰;模型提供商的日誌與模型權重不在範圍內,報告裡會明確列出來。 ### 為什麼要在寫入時選保留類? 因為歷史難以事後改寫:已經進了備份和歷史的內容,只能重寫或等過期。寫入時決定它是 `scratch`、`normal` 還是 `sensitive`,是之後能刪得乾淨的前提。 ### 智能體可以自己要求遺忘嗎? 可以提出請求,不能執行。遺忘不可逆,必須經過人或預授權的策略,而且法律保留會阻止它。 ## 相關概念 - [Agent Memory (智能體記憶)](https://agentnas.com/zh-tw/concepts/agent-memory/): 筆記是你能讀能改的真相,索引只是可以丟棄的快取。 - [Flight Recorder (飛行記錄器)](https://agentnas.com/zh-tw/concepts/flight-recorder/): 以執行為單位、雜湊連結的記錄,包括這次執行讀過什麼。 - [Agent Branch (智能體分支)](https://agentnas.com/zh-tw/concepts/agent-branch/): 每次執行在寫時複製的分支裡工作,經審閱的合併才進入主線。 --- 標準網址: https://agentnas.com/zh-tw/concepts/cascade-forget/ 更新於: 2026-11-11 · 規範草案 v0.2 · CC BY 4.0