# 規範

> 規範草案 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
