瀏覽 1.1.1 文件
1.1.1

系統架構與授權邊界

看清外部 coding client、原生繫結、ait-native 核心、Task worktree、Binary DB、伺服器與 runner 如何跨本地與可選遠端授權連線。

適用對象: 開發者、整合方與維運人員

按邊界來讀這套系統#

ait-native 只有一個原生工作流程核心,外加兩條明確的執行路徑。常走的 是本地這條:外部 coding client或嵌入式宿主呼叫原生介面,實作發生在 Task 繫結的 worktree 裡,再由一個 Snapshot 把結果記進本地的 Binary DB 權威。遠端基礎設施是可選的,而且只能透過明確的操作,去 擴充套件已經記錄下來的狀態。

目前 1.0.0 架構一個原生核心,兩條明確的執行路徑

本地開發是主路徑。遠端基礎設施是可選的,透過有界的原生介面補上共享權威、異地留存和 CI。

主路徑

本地開發與已記錄的權威

Snapshot 把可變的工作記錄進本地權威。

  1. 接觸面外部編碼客戶端或嵌入式宿主ait-native 之外的互動式開發者,或行程內的呼叫方。
  2. 介面ait 命令列或原生繫結命令列或行程內的入口 surface。
  3. 核心ait 原生核心工作流程、協議與儲存語義。
  4. 執行繫結 Task 的工作區隔離的、可寫的實作工作區。
  5. 權威本地 Binary DB已記錄的 Plan、Task、Snapshot 與 Line 權威。
可選路徑

遠端權威、留存與 CI

已記錄的狀態進入伺服器,有界的證據再回到伺服器。

  1. 權威ait-server已記錄狀態的遠端權威與異地留存。
  2. 佇列Worker Job由伺服器權威持有的、帶型別的持久請求。
  3. 執行ait-runner還原出確切的 Snapshot 內容並執行 Repository CI。
  4. 證據CI 證據回到所屬伺服器 Repository 的有界結果。
只有已記錄的 AIT 狀態會跨越權威邊界。沒進 Snapshot 的工作區改動,以及 runner 的執行暫存,都留在持久的 Repository 權威之外。

元件與權威對照#

元件邊界它擁有什麼,又不擁有什麼
外部 coding client與 Python/Node 宿主負責 ait-native 之外的互動式或嵌入式使用體驗。它們呼叫 AIT 介面,但不會取代原生的工作流程或儲存語義。
ait CLI、原生繫結與原生核心負責命令接納、工作流程狀態遷移、協議行為,以及對已記錄權威的訪問。Python 和 Node 是在行程內進入同一個核心,而不是另實作一套工作流程。
Task 繫結的 worktree 與本地 Binary DBworktree 是一個隔離的、可變的實作工作區。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 給這份工作 提供的是穩定的儲存庫身份,和一條隔離的變更邊界:

  1. 客戶端透過 CLI 或受支援的原生繫結呼叫 ait
  2. 原生核心解析出確切的 Repository、Plan 條目、Task、Change 和 Task 繫結的 worktree。
  3. 在建立 Snapshot 之前,程式碼改動一直是那個 worktree 裡的可變 狀態。
  4. 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-pythonait-node 在行程內載入已接納的原生執行時。它們給 應用提供針對業務的入口,但不會另起一個工作流程引擎,也不會重新定義 儲存庫權威。嵌入式應用同樣得選定確切的 Repository 上下文,並遵守和 CLI 一樣的 Task、Snapshot、遠端和策略邊界。

這張圖有意只畫到目前 1.1.1 的產品邊界。Release 家族的元件、版本 證據和包的構成,仍然由 分發與發布 定義。

版本權威

對照 1.1.1 原始碼逐條核對

這一頁是公開文件,不是第二份產品契約。要確認發布權威,請以確切的原始碼和分發契約為準。

所屬元件 Snapshot
  • ait-coreSNP-ED7593DBF982
  • ait-serverSNP-0CCD7DD2A077
  • ait-runnerSNP-35C9C133D2EE
  • ait-pythonSNP-756C731A4CC0
  • ait-nodeSNP-55E90D0A81F1