AN-02 L0 符合性等級: Files 概念組: 工作

Agent Branch 智能體分支

每次執行在寫時複製的分支裡工作,經審閱的合併才進入主線。

定義

Agent Branch(智能體分支) 讓每次執行在寫時複製的分支裡工作;變更只有透過一次經審閱的合併(Agent PR)才能進入受保護的主線;隨時可以打檢查點並恢復。

v0.2 規範草案 更新於

要解決的問題

智能體以機器的速度犯錯,而共享資料沒有「試一試、看差異、審閱、撤銷」的機制。並行的智能體還會互相踩踏。

2026 年 4 月的一次事故裡,一個智能體用一枚權限過寬的權杖,在 9 秒內刪除了生產卷和同卷的備份。如果它只能寫一個分支,如果刪除是軟刪除,如果快照不在它的權限之內,這件事會小得多。

工作方式

  • 分支建立廉價(取決於引擎,理想情況接近 O(1))。租約只授予分支內的寫入,以及向目標的 propose。
  • 受保護樹。 主線只能經合併更新:即使憑據洩露,也不能直接寫。
  • Agent PR。 差異、意圖、來源(讀清單摘要)、檢查結果與標籤摘要。檢查通過且策略允許時自動合併,否則交給 Human Gate。
  • 軟刪除。 受保護樹中的刪除進入回收區,預設保留 7 天;快照由所有者持有,不在任何租約的權限之內。
  • 檢查點。 命名的快照;restore 把檔案回退到檢查點。
  • 合併。 文本用三方合併,其他檔案按檔案粒度。有衝突就停下,絕不靜默覆蓋;結構化資料需要註冊的合併器,或者交給人。
  • TTL 與配額, 防止「分支炸彈」。
  • 並行嘗試。 同一個任務可以開 N 個分支,擇優合併,其餘回收。

從小處開始

  • Git 分支加 worktree,再加上 Forgejo、Gitea 或 GitHub 的受保護 main。
  • 大目錄用 btrfs 或 ZFS 的快照與複製;物件儲存可以用 Tigris 或 lakeFS 的分叉。
  • 先把「刪除進回收區」和「快照歸所有者」做對。這兩條最便宜,也最能防住事故。

介面草圖

僅作示意。欄位名在規範 v0.3 之前可能調整。

nas cli
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 <path>

規範的要求

  • 受保護樹必須只能經合併更新,任何憑據都不能直接寫入。
  • 合併必須產生帶來源(執行、租約、主體)的提交。
  • 任何租約不得允許刪除快照或備份。
  • 受保護樹中的刪除必須是軟刪除,並在配置的視窗內(預設 7 天)可恢復。
  • 衝突不得被靜默解決;合併必須停止並報告。
  • 分支必須有 TTL 與配額。

借鑑與區別

下面這些都是現成的做法。真正新的部分: 把分支綁定到執行與租約,讓分支成為授權的單位,合併成為審閱的單位。分支和快照本身並不新。

坦誠的侷限

  • 分支只保護 NAS 裡的資料,不會撤銷外部副作用:已經發出的郵件、已經呼叫的介面。
  • 大型二進位檔檔案和資料庫檔案很難合併。
  • 審閱疲勞仍可能發生,所以低風險的路徑允許自動合併,並度量批准率。

開放問題

  • 語義合併器如何註冊並被信任?
  • 二進位檔衝突的互動應當怎麼做?

常見問題

這和 Git 分支有什麼不同?

機制上並不神奇:在 Git 上就能搭出來。不同的是它把分支與一次執行、一張租約綁在一起,讓「只能寫自己的分支」成為授權規則,而合併成為唯一的審閱點。

分支能防住所有事故嗎?

不能。它只保護 NAS 裡的資料:智能體已經發出的郵件、已經呼叫的外部介面,不會因為回滾分支而撤銷。這類動作應當經過租約裡的 egress 和 Human Gate。

每次合併都要人批准嗎?

不是。檢查通過、沒有讀過外部內容、不涉及刪除或共享的合併可以自動進行;需要人的只有少數情形,見 Human Gate。

引用本頁

為讀者、搜尋引擎和智能體提供穩定的網址與建議的引用格式。

建議引用格式
Agent NAS project. “Agent Branch (智能體分支).” agentnas.com, 2026-11-11. https://agentnas.com/zh-tw/concepts/agent-branch/