跳至主要内容
此為機器初翻,尚待母語審閱 (draft — pending native review)
在動作之前做出決策,而不是事後才發出警示

在 AI 代理動手之前,決定它可以做什麼。

Agent Assembly 會針對你導流經過它的動作,依你的政策加以評估、拒絕,或在決策做出前先行阻擋,並記錄它所做的決定。未經你導流的動作不會被檢查 — 而記錄會如實說明這一點。

問題所在

代理行動的速度,快過任何人來得及審查的速度。

監控是在事後回答問題。真正關鍵的決策發生在更早的那一刻 — 動作還來得及被拒絕的時候。

一個編碼代理決定把它正在處理的儲存庫,上傳到一個沒有任何人核准過的端點。由於該代理是透過 Agent Assembly 針對 Claude Code 的受管啟動方式啟動的,這條連線依團隊所設定的目的地清單被評估,並在代理伺服器撥號之前就遭到拒絕。

此說法的適用範圍。 這適用於你導流經過 Agent Assembly 的連線 — 目前是透過針對 Claude Code 的受管啟動方式 — 且主機上已安裝代理伺服器:Linux 上是已發行的執行檔,macOS 上則透過 cargo install aa-proxy。在 Windows 上沒有任何本機中介。它是針對你所設定的已核准目的地清單生效。你未曾導流的代理不會被檢查,而記錄會如實說明這一點。只有在代理伺服器的稽核路徑已設定的情況下,這次拒絕才會留下持久的本機記錄。

提示詞裡的一把金鑰

一個代理把一把有效的 API 金鑰貼進了送往模型供應商的請求裡。在 Agent Assembly 會檢查的供應商主機上,這把金鑰被辨識出來,並在請求被轉發之前移除。偵測能力受限於它已知的樣式集合,而預設行為是遮蔽後轉發,並非阻擋。

一次針對正式環境的工具呼叫

一個代理呼叫了一個會刪除正式環境資料表的工具。這次呼叫依你的政策被評估,並在代理伺服器轉發之前遭到拒絕。此範圍涵蓋以一般 HTTP POST 送出的 MCP 工具呼叫;你以 stdio(最常見的設定方式)、SSE 或 Streamable HTTP 執行的工具伺服器並不在這條路徑上。

一個不斷重試、不斷花錢的迴圈

一個陷入重試迴圈的代理,達到了其團隊所宣告的花費上限,下一次呼叫因政策決策而遭到拒絕。上限只有在政策宣告時才存在,而這次拒絕只有在該呼叫前方有元件等待該答案時,才會真的擋下它。

每個情境的決策者、預設狀態與已知繞道方式 →

運作方式

導流、決策、呈現。

三個步驟,依照它們實際發生的順序。要看懂它們不需要任何產品術語,而三者都不能略過 — 第一步正是讓另外兩步成為可能的前提。

1 · 導流一個代理之所以位於受治理路徑上,是因為你把它放上去了:透過 aasm run 啟動、由會將代理伺服器設定寫入工具自身組態的開發工具整合啟動,或由 SDK 呼叫政策檢查點。導流是你要親自去做的動作,每個代理、每次啟動都要做一次。你未曾導流的代理就不在這條路徑上 — 而且並非每個工具都提供受管啟動方式。
2 · 決策在動作生效之前,路徑上會有某個元件決定它是否可以繼續 — 而究竟是哪一個元件,取決於路徑本身。對於連線階段的對外流量以及模型供應商主機,代理伺服器是依它自己的本機組態做出拒絕。控制平面回答政策、預算與核准方面的問題,而它不持有任何流量:它的答案只有在該動作前方有元件等待時,才會真的擋下這個動作。
3 · 呈現決策會寫入雜湊鏈接的稽核日誌,你可以用 aasm audit verify-chain 自行驗證,該指令隨開放原始碼版本一併提供。在沒有任何元件檢查過某個動作的情況下,規則是記錄應標示為未經檢查,而不是標示為已允許。寫出是盡力而為的 — 決策可能已經做出,但它的記錄卻遺失了 — 所以這份日誌記錄的是成功寫入的內容,而不是實際發生過的全部內容。而什麼會進到日誌裡,也取決於你在步驟 1 選擇的路徑:SDK 檢查點會回答問題,但被拒絕的 SDK 呼叫不會寫出任何稽核記錄,三個 SDK 都是如此。該項寫出屬於已規劃 — 已決定,但尚未建置 — 所以走 SDK 這條路徑,你會得到決策,卻沒有決策的證據(AAASM-5665)。

同樣這三個步驟,在評估者與工程層級的說明 →

已支援的結果

一項決策可能是什麼 — 以及是哪個元件做出的

這不是同一個裁決的四個分支。每一項都有不同的決策者、不同的預設值與不同的觸及範圍,而把正確的保證歸給錯誤的元件,本身就是一種錯誤。特別是遮蔽,它是獨立的一個階段,在連線決策之後才套用。

執行前拒絕

在它執行之前就被拒絕

在你導流經過 Agent Assembly 的路徑上所建立的連線,會依你所設定的目的地清單進行檢查,並在代理伺服器撥號之前遭到拒絕。

這次拒絕出自代理伺服器自身的本機對外流量組態,而非控制平面的決策;目的地清單預設為空 — 這次拒絕之所以存在,是因為有維運者設定了它。有一項對外流量控制預設開啟且無法透過任何組態放寬:送往回送位址、私有位址、鏈路本機位址及相關位址空間的請求一律被拒絕,包含公開主機名稱解析到這些位址的情況。

已遮蔽

在轉發之前就被移除

在 Agent Assembly 會檢查的模型供應商主機上,被辨識出來的憑證會在請求被轉發之前從中移除。

共三個內建主機,因為承載內容的檢查預設僅限於模型供應商主機。預設行為是遮蔽後轉發,而非拒絕。偵測涵蓋率受限於樣式集合,且該路徑上的模型回應不會被掃描。這並不能讓憑證不出現在代理自己的行程之中。

已評估

依你的政策被評估

MCP 工具呼叫可以由控制平面依你的政策進行檢查,並在代理伺服器轉發之前遭到拒絕。透過受包裝框架接縫進行的工具呼叫,會在工具本體執行之前被檢查。

MCP 這條路徑是本產品中唯一一個由控制平面決定、且發生在撥號之前的拒絕,而它預設關閉;以 stdio 執行的工具伺服器(最常見的設定方式)、SSE 與 WebSocket 都沒有攔截機制。SDK 依設計即為建議性質,是縱深防禦的一環而非權威閘門:不呼叫它的代理等於根本沒有發問,而 Node SDK 的預設模式完全不會產生任何拒絕。

需要核准

在決策做出前先行阻擋

政策規則可以先擱置一個動作,而不是直接回答它。這種擱置是真實存在的,而且失效時封閉:檢查會被阻擋,逾時則會轉為拒絕。

這裡把它寫成一項尚未完成的能力,因為它確實如此。目前沒有任何已出貨的維運者介面能夠回應該擱置所等待的佇列,所以實際上它會先阻擋,然後在逾時後拒絕,全程沒有任何人參與。目前還不要把人工審核納入規劃 — 追蹤於 AAASM-5657。

信任邊界,以及已列舉的繞道方式 →

佐證

五件你不必聽信我們、可以自己查證的事

看見一個動作被拒絕,以及它沒有造成的效果

一次被記錄下來的執行:一個代理工具呼叫在其函式主體執行前就被拒絕,而該主體會寫入的檔案,事後由一個未參與該決策的獨立行程確認並不存在。旁邊還有兩次對照執行 — 一次允許同一個呼叫,一次移除強制點 — 兩次都寫出了檔案。這是一個工具、一條路徑、一個版本上的結果,該頁也如此說明。

被拒絕動作的證明 →

自行驗證稽核鏈

aasm audit verify-chain 隨開放原始碼版本一併提供。它證明的是現存項目之間的完整性 — 而不是這份日誌本身沒有缺漏。這條鏈可察覺竄改,但未經簽章:它是對 JSONL 輸出檔所做的無金鑰摘要鏈,所以一份被清空的日誌驗證起來也會是乾淨的,並以零狀態碼結束。

驗證能證明什麼、又不能證明什麼 →

讀一讀產生該決策的那份政策

政策是納入版本控管的 YAML 或 JSON,你可以用既有的 Git 流程審閱它。欄位參考文件已公開,所以本站向你展示的規則,你都可以自己查得到。

政策欄位參考 →

把本頁任何一句話追溯到它的界限

本頁每一句能力陳述,都是共用主張登錄表十六筆項目之一,皆為原句引用而非改寫。每一筆項目都載明它所達到的用語、隨之而行的界限,以及背後的證據列 — 包含登錄表記為未量測的那兩個主題。

主張登錄表 →

讀一讀做出決策的那套執行環境

閘道、代理伺服器、CLI 與各 SDK 都以 Apache-2.0 授權公開於 GitHub,連同用來鎖定本頁所述各項行為的測試。哪些是開放原始碼、哪些不是,都明白寫出而非暗示。

開放核心的界線 →

以及三件本頁目前還不會主張的事

  • 每一項決策都會進到日誌裡。寫出是盡力而為的:鏈首會在送出之前就先推進,而被丟棄的項目與被刪除的項目無從分辨。在有嘗試寫出記錄的情況下,它是否持久地抵達,屬於未量測。SDK 這條路徑並不屬於這種情況,這個詞也涵蓋不到它:被拒絕的 SDK 呼叫根本不會寫出任何東西,這是量測到的結果,而不是未知(AAASM-5665)。
  • 已驗證的代理身分。代理會提出一組身分與持有證明,但代理平面依設計即接受未經驗證的呼叫者,作為啟動引導路徑。請把代理識別碼視為聲稱的,而非已確立的。
  • 任何涵蓋率數字 — 百分比、受治理動作的計數,或橫跨一組機器的數值。沒有任何東西可以據以計算,而某個元件回報自己可用,並不能證明它真的看到了什麼。
目前狀態

開箱即開啟的有哪些,沒開啟的又有哪些

一項存在但預設關閉的能力,跟一項預設開啟的能力,是兩種不同的產品,所以這裡列出你動手設定之前的預設狀態。請雙向閱讀 — 底下有兩列比評估者通常預期的還要強。

開箱狀態預設
在沒有政策的情況下啟動工作階段拒絕。當無法解析出有效政策時,aasm run 不會啟動工具;政策可以解析但未宣告任何規則時,它同樣不會啟動。沒有政策不等於獲得許可。
送往私有位址的對外流量一律拒絕。這道防護會在撥號之前重新檢查每一個解析出來的位址,所以解析到私有位址空間的公開主機名稱同樣會被拒絕。沒有任何組態或環境變數可以放寬它。
你自己的允許與拒絕清單空的。由你逐一針對目的地設定。
承載內容檢查範圍很窄。預設檢查三個內建的模型供應商主機。其他任何主機都會在不檢查承載內容的情況下建立通道:連線本身已被觀測,承載內容則沒有。
被辨識出來的憑證遮蔽後轉發。偵測到憑證即行阻擋屬於選擇性啟用。模型回應不會被掃描。
SDK 強制執行預設模式下關閉。只有在具檢查能力的模式下,政策拒絕才會擋下被包裝的工具;在未啟用該模式時要求強制執行,會在初始化時明確報錯,而不是無聲地放行。
未命中任何規則的動作允許。政策之內預設放行,但「是否具備政策」這件事預設拒絕 — 兩半都要講,否則這組說法會誤導人。
花費上限除非政策宣告,否則沒有上限;未宣告的預算等於沒有上限。已宣告的上限是否真的在決策路徑中被檢查,屬於未量測,而損毀的預算儲存區會無聲地把上限重設。
作業系統層級的控制未部署即為關閉,而且它不是決策點。在 Linux 上,核心探針會回報 TLS 明文、行程執行與檔案活動;這類訊號都不參與任何允許或拒絕的決策,而檔案 I/O 探針僅支援 x86_64。macOS 沒有對應的轉接器 — 但它同時也是唯一一個真的能觸及主機層強制執行等級的平台,途徑是一次選擇性啟用、經授權的設定寫入。Windows 兩者皆無。
稽核開啟,盡力而為。雜湊鏈接的 JSONL,可在開放原始碼版本中驗證。寫出並無保證,所以這份日誌記錄的是成功寫入的內容,而不是實際發生過的全部內容。

平台。 交付上述多數能力的代理伺服器,在 Linux 上是已發行的執行檔;在 macOS 上則是 cargo install aa-proxy。在 Windows 上沒有任何形式的本機中介。UDP、QUIC 與 HTTP/3 不在支援的傳輸協定範圍內。

成熟度。 開放原始碼的執行環境尚未達到 1.0,是以預先發行系列的形式釋出。託管服務屬於已規劃 — 已決定,但尚未建置 — 所以本站沒有任何內容構成對推出日期、地區、服務等級協議或法規遵循狀態的承諾。

各整合的已知限制 → · 各領域的發行狀態 →

接下來往哪走

從你的工作真正要做出的那個決定開始

五種讀者,五個不同的起始頁面。底下每一條路線的終點都是一個決定,而不是更多的閱讀。

正在評估這個產品

你已經在對的頁面上了。剩下的是產品本身的樣貌 — 它決定什麼、決策在哪裡生效,以及它刻意不做什麼。

終點:啟動一次試用,或留下一個不採用的明確理由

這個產品是什麼

資安與風險

直接走到邊界的盡頭:已列舉的繞道方式、每項控制的失效行為(包含那些失效時開放的),以及雙向陳述的平台對照表。

終點:對某一次部署做出核准或否決

安全模型

平台與 SRE

要先學會的一件事是:導流是逐一代理、逐次啟動的 — 沒有人導流的代理就在這一切之外。接著才是:裝哪個產物、在哪個平台上、從哪個通路取得。

終點:在一台主機上完成一次受治理的啟動

安裝並導流一個代理

工程開發

用 Python、Node 或 Go 加上政策檢查點 — 並在清楚知道預設為建議性質、且未經轉接的框架不在包裝範圍內的前提下,選擇 SDK 模式。

終點:能實際執行並得到決策的程式碼

SDK 與框架範例

產品、QA 與品質保證

拿一則已公開的主張,找到支撐它的東西。情境頁面記錄了每一項判定、它依據什麼,以及哪些用語在佐證程序實際執行之前先行保留。

終點:一筆被引用的證據列,或一個被記錄下來的缺口

各項主張與其判定

上面那四條角色路線 — 資安、平台、工程開發與產品 — 各自都有一份更完整的簡報:今天出了什麼問題、有哪些是已支援的、每個答案能走多遠、它不涵蓋什麼,以及接下來該讀什麼。 閱讀評估者簡報 →

以託管服務的方式使用它是第五條路徑,而它目前尚未推出 — 控制平面處於早期存取階段,僅開放給設計夥伴。 申請 Cloud 早期存取 →

Install the OSS runtime

Start self-hosting the way you already work

The open-source runtime self-hosts a limited-function stack for local evaluation and development — full functionality runs in the managed cloud. Pick your install path; each command is real, with no placeholder URLs, and pre-launch tabs are labeled honestly.

macOS and Linux. The script is served from agent-assembly.com/install.sh — review it before piping to sh if you prefer.

curl -fsSL https://agent-assembly.com/install.sh | sh
部落格文章

建置筆記、工程與安全技術文章

為什麼執行期邊界很重要,以及我們如何打造它。

把決策放到動作之前。

導流一個代理,拒絕一次它本不該發出的呼叫,然後讀一讀它留下的記錄。