系統架構與授權邊界
看清外部 coding client、原生繫結、ait-native 核心、Task worktree、Binary DB、伺服器與 runner 如何跨本地與可選遠端授權連線。
適用對象: 開發者、整合方與維運人員
按邊界來讀這套系統#
ait-native 只有一個原生工作流程核心,外加兩條明確的執行路徑。常走的 是本地這條:外部 coding client或嵌入式宿主呼叫原生介面,實作發生在 Task 繫結的 worktree 裡,再由一個 Snapshot 把結果記進本地的 Binary DB 權威。遠端基礎設施是可選的,而且只能透過明確的操作,去 擴充套件已經記錄下來的狀態。
本地開發是主路徑。遠端基礎設施是可選的,透過有界的原生介面補上共享權威、異地留存和 CI。
本地開發與已記錄的權威
Snapshot 把可變的工作記錄進本地權威。
- 接觸面外部編碼客戶端或嵌入式宿主ait-native 之外的互動式開發者,或行程內的呼叫方。
- 介面ait 命令列或原生繫結命令列或行程內的入口 surface。
- 核心ait 原生核心工作流程、協議與儲存語義。
- 執行繫結 Task 的工作區隔離的、可寫的實作工作區。
遠端權威、留存與 CI
已記錄的狀態進入伺服器,有界的證據再回到伺服器。
- 佇列Worker Job由伺服器權威持有的、帶型別的持久請求。
- 執行ait-runner還原出確切的 Snapshot 內容並執行 Repository CI。
- 證據CI 證據回到所屬伺服器 Repository 的有界結果。
元件與權威對照#
| 元件邊界 | 它擁有什麼,又不擁有什麼 |
|---|---|
| 外部 coding client與 Python/Node 宿主 | 負責 ait-native 之外的互動式或嵌入式使用體驗。它們呼叫 AIT 介面,但不會取代原生的工作流程或儲存語義。 |
ait CLI、原生繫結與原生核心 | 負責命令接納、工作流程狀態遷移、協議行為,以及對已記錄權威的訪問。Python 和 Node 是在行程內進入同一個核心,而不是另實作一套工作流程。 |
| Task 繫結的 worktree 與本地 Binary DB | worktree 是一個隔離的、可變的實作工作區。Binary DB 擁有記錄下來的 Plan、Task、Change、Snapshot、Line 和相關本地狀態。Snapshot 就是可變編輯與持久 AIT 歷史之間的那條界線。 |
ait-server | 擁有已註冊的遠端 Repository 權威、共享的遠端工作流程狀態、帶型別的 Worker Job、證據,以及對送達服務端的記錄狀態做異地儲存。它不儲存沒進過 Snapshot 的本地改動。 |
ait-runner | 認領一個相容的 Worker Job,物化出確切的 Snapshot 內容,在隔離的一次嘗試中執行 Repository 宣告的 CI 入口,然後傳回有界的證據。它永遠不會變成 Repository 權威。 |
主要的本地編寫路徑#
理解需求、寫出實作,這些仍然是 coding client的事。AIT 給這份工作 提供的是穩定的儲存庫身份,和一條隔離的變更邊界:
- 客戶端透過 CLI 或受支援的原生繫結呼叫
ait。 - 原生核心解析出確切的 Repository、Plan 條目、Task、Change 和 Task 繫結的 worktree。
- 在建立 Snapshot 之前,程式碼改動一直是那個 worktree 裡的可變 狀態。
- Snapshot 和工作流程記錄進入本地 Binary DB 權威;設定好的收尾路徑 隨後就能基於這份記錄狀態做判斷。
多個 agent 之間互不干擾,因為每個活動的 Task 各佔一個 worktree 和 一把命令鎖。AIT_RAM 可以加快放置速度,但它不改變權威邊界:沒進 Snapshot 的髒檔案屬於工作區狀態,已記錄的 Snapshot 才是可恢復的 AIT 狀態。參見 並行 Task 隔離。
可選的遠端權威與 CI 路徑#
本地記錄下來的狀態,只有透過明確設定的遠端操作才會到達 ait-server。一旦收下,服務端就擁有遠端的 Repository 副本、共享的 工作流程狀態、證據和 Worker Job 佇列。這樣就能遠端管理,也能對送達 服務端的那份確切狀態做異地恢復。
要跑 CI,服務端會提交一個帶型別的 Worker Job。ait-runner 認領這個 job,把它引用的 Snapshot 物化到隔離的嘗試儲存裡,執行 Repository 宣告的入口,然後傳回有界的結果。服務端記錄由此產生的證據;runner 的嘗試目錄用完即棄,不構成第二個權威。
遠端儲存不等於自動故障切換,也沒法還原那些從未被捕獲、從未傳出去的 髒檔案或未跟蹤檔案。參見 遠端基礎設施 和 `ait-runner`:原生 CI 執行面。
一個核心,透過原生嵌入複用#
ait-python 和 ait-node 在行程內載入已接納的原生執行時。它們給 應用提供針對業務的入口,但不會另起一個工作流程引擎,也不會重新定義 儲存庫權威。嵌入式應用同樣得選定確切的 Repository 上下文,並遵守和 CLI 一樣的 Task、Snapshot、遠端和策略邊界。
這張圖有意只畫到目前 1.1.1 的產品邊界。Release 家族的元件、版本 證據和包的構成,仍然由 分發與發布 定義。