產品接入層
三種接入形態的強制程度不同。`vacant run` 以「行程結束」為交付點,圍牆用 bwrap 建立獨立命名空間,出口用 release/publish 能力分離。代理可以刪掉自己的掛鉤——所以掛鉤只是增強,不是信任根。
#三種接入形態
| 形態 | 強制性 | 說明 |
|---|---|---|
| 函式庫/MCP 工具 | 自願 | 代理在自己的設定註冊 Vacant 的 MCP 伺服器,可以呼叫 delegate 等工具。代理不呼叫,Vacant 也無從介入。 |
| 控制器 | 只對親手啟動的子行程 | 先委派、驗收、再啟動下游代理。保證只涵蓋透過這個控制器啟動的行程;同一 OS 使用者可以直接繞過它執行代理。 |
| 擁有迴圈的執行框架 | 完全強制 | 生成、驗收、出貨都由它控制。增益實驗的 runner 屬於這一類。 |
控制器的原始碼註解寫明了這條邊界:保證只涵蓋透過本控制器啟動的子行程。
#vacant run:以行程結束作為交付點
2026-09-18 加入。建立在一個觀察上:
若只是要攔下交付,觸發點不在網路協定上,而在代理行程結束的那一刻。
這個訊號完全可靠、不需要任何協定知識、不耗 token,而且跨所有框架成立。
#流程
- 啟動本機代理伺服器,依一份名單設定代理的 base URL 環境變數;把真實上游位址與金鑰從代理的環境中移除,只留在代理伺服器行程。
- 記錄工作區的樹雜湊。
- 啟動代理並等待結束;結束後終止整個行程群組,以防孫行程在凍結後寫入。
- 在凍結的工作區快照上執行可見驗收,並再量一次樹雜湊;不相等則標為基礎設施失敗。
- 簽下每次嘗試與每格裁決,以退出碼反映裁決。
| 退出碼 | 意義 |
|---|---|
0 | 交付 |
20 | 拒交 |
22 | 基礎設施失敗(樹雜湊對不上) |
#兩條硬規則
#代理伺服器只記錄、不注入
所有請求與回應的原始位元組逐字落盤,開關兩臂的請求位元組逐位元相同。
專案刻意不在對話中注入任何訊息,理由是:注入等於偽造模型或使用者的發言,會傷害「紀錄忠實」這個立論根基。
#圍牆、掛鉤與出口
#圍牆
以 bwrap 建立獨立的網路與掛載命名空間,唯一的出口是主機上一個路徑型 Unix socket,由常駐代理伺服器把守,非模型的路徑一律拒絕。
實測:bwrap 擋掉除閘門以外的一切;負控制 7/7。
#掛鉤
五種代理的框架掛鉤都能攔下 shell 指令。
#出口:能力分離
「判定拒絕」不等於「不可能發布」。出口的問題以能力分離處理:
release模組只在通過時鑄造放行憑證(結構取自 SLSA 的驗證摘要證明)。publish模組是唯一有對外寫入能力的元件。它驗證憑證的簽章、產物雜湊、判決、有效期與涵蓋範圍。publish不讀退出碼,也刻意沒有強制發布的選項。
#那次讓我們改掉用詞的稽核
2026-09-20 的 ABPI 稽核(391 格):
| 檢查 | 結果 |
|---|---|
| 伺服器端對話有沒有缺口 | 沒有,2,755 輪全部對得上 |
| 收據鏈 | 195 / 195 驗得過 |
| 收據等級 | 全部是 C 級(沒有沙箱、沒有掛鉤) |
| 「擋在出口」是否成立 | 不成立 |
這一條直接導致了 五層語彙 的改寫。
#五種代理的實測
| 代理 | 版本 | 結果 |
|---|---|---|
| pi | 0.85.1 | 20 格全部符合判準 |
| OpenCode | 1.18.31 | 同上 |
| Claude Code | 2.1.278 | 同上 |
| Codex | 0.147.0 | 同上 |
| Hermes | 0.19.0 | 同上 |
合計 20 條收據鏈 / 40 筆。但三家對同一題的判斷並不一致——公開題庫閘門(10 題 × 3 助手 × 兩批)跑出「三個助手只在 4/10 題上一致」。
#vacant on 與 agentlane
#vacant on
讓使用者在終端機輸入 vacant,從選單挑選本機實際存在的命令列代理,在中介之下啟動。它把 base URL 寫進「這一次執行自己的」暫存設定目錄,不改動使用者的常駐設定檔。
選單上會標出每一種代理的通道驗證到什麼程度,例如「通道已驗」或「通道沒量過,跑完請看 requests_seen」。
#agentlane
長時間執行 vacant on 的量測工具。一格通過需要三個獨立來源對得上:
requests_seen ≥ 1- 代理伺服器的索引行數 ==
requests_seen - 代理的退出碼有值
每一輪都跑負控制(上游指向關閉的埠)。負控制沒過的那一輪,正控制也不算數。
交付是否被接受刻意不列為判準,以區分通道與模型能力。
第一輪冒煙測試就抓到一個漏洞:OpenCode 忽略指定的工作目錄,把交付寫到別處,導致中介全數通過但每一格都被拒交。另外 OPENCODE_CONFIG_CONTENT 會清掉使用者的 MCP 設定。
#數位分身展件
54 格、630 次真實模型呼叫的展場實驗,提供了一個關於「介面給不給資訊」的直接對照:
| 條件 | 接受 |
|---|---|
| 介面不提供必要資訊 | 0 / 27 |
| 介面提供必要資訊 | 24 / 27 |
同時:重來迴圈救回 0 / 30。另有 82 次代理宣告成功但可見檢查失敗,以及 8 次逾時被殺。

