模型決定
要不要負責
工具在場,但 tool choice 仍在模型手上。Hermes 可以列出 delegate,然後自己寫檔、自己宣布測試通過。
- 提示詞只能提高機率
tools/list被誤當成使用證據- 先寫答案,再略過信任層
從「希望 agent 自願呼叫工具」,改成「沒有通過 Vacant,就根本不啟動 agent」。這是一份關於控制權、證據與誠實邊界的完整工程卷宗。
第一次看?直接從白話互動圖開始第一次 Hermes e2e(n=1,單例演示、非統計證據)讓我們看到一件事:MCP 工具被成功發現,不等於 agent 會使用它。真正的產品問題不是 prompt 不夠強,而是架構仍把安全路徑當成選項。
「wrapper 就算存在,Hermes 不想使用,還是不會去用啊。」
工具在場,但 tool choice 仍在模型手上。Hermes 可以列出 delegate,然後自己寫檔、自己宣布測試通過。
tools/list 被誤當成使用證據controller 自己呼叫 Vacant。只有 receipt、review、audit、chain 與本地重驗全部成立,才建立 Hermes 子行程。
不用先懂 agent、模型或簽章。把 agent 想成會替你操作電腦的數位工作者;Vacant 則是它拿到工作區鑰匙前,必須先通過的驗收站。
Hermes 就是這一層。它能真的進入專案工作,所以一旦做錯,可能已經留下檔案或其他副作用。
Vacant controller 是驗收站。站內 resident 先呼叫模型產生答案、檢查、修正與簽收;全部成立後,才把 Hermes 叫進來施工。
任務不會直接落到 Hermes。Controller 先接住它;若沒有可執行的強檢查,產品模式就不允許啟動下游 agent。
切換看看差異。Vacant 並沒有取代 Hermes,而是在 Hermes 前面增加「先證明,再施工」的路段。
速度較慢、需要額外模型呼叫與檢查;換來的是錯誤可在碰到工作區前重試或停止,而且每次放行都有可重驗收據。
這裡刻意把「機制能運作」、「合理預期改善」與「研究已證明」分開,避免把示意動畫當成實驗數據。
真實時間樣本:兩次 Hermes e2e 的 Vacant gate 分別約 119 秒與 91 秒;Hermes 階段約 387 秒與 303 秒。這是兩筆觀測,不是一般效能保證。
`vacant run` 不再是另一個 agent。它是 agent 前面的執行控制器:先產生證據,再交付能力。
任務+強 check
信譽路由 resident
最多三次生成
簽章 envelope
隔離重跑 check
全量雜湊綁定
Hermes / any CLI
核心逆轉:Hermes 不是 Vacant 的 caller,而是 verified delivery 的 consumer。它啟動時,`task_id`、答案、trust card 與 receipt 都已存在。
DELEGATE_START → GATE_PASS → AGENT_START → AGENT_DONE
簽章有效不等於可啟動。密碼學完整性與產品准入政策分開判定,任何一層都不能被 bool 帶過。
完整綁定 request_id、task、check-spec、risk;同一 request ID 不能再次簽發。
只交付 verifier 真正檢查的 code、canonical JSON 或 exact value;模型尾文不進 agent context。
每張 ReviewEnvelope 由 reviewer 自己簽名,公鑰必須存在於當前 registry,且 target head 必須指向本次 DELIVER。
receipt 的 stream、branch、substrate、chain head 必須和磁碟上的 resident 現況完全一致。
只有 equals、json_schema、run_python 能授權 spawn;contains/regex 僅供 advisory。
兩次真模型、真 Hermes、真檔案落地。每次都能從 receipt 反查 reviewer、audit、鏈頭與 verified projection。
def solve(nums): return sum(x for x in nums if x % 2 == 0) # controller replay RECEIPT_VALID True REVIEW_PASS 2 AUDIT_PASS True FILE_PASSES True
def solve(n): return n * n # exact post-run verification VALID True REVIEWS 2 AUDIT True PROJECTED True
每次 review 都假設 candidate、agent、檔案狀態或序列化邊界會找最短路徑繞過 gate。以下是被實際抓到並修掉的路徑。
攻擊:候選碼提前終止 verifier、讀取同檔測試,或以 stdout 偽造 protocol。
修補:hidden tests 留在父 verifier;candidate 在 import-free worker;結果走私有 OS pipe,只接受 exact literal type。
攻擊:第一段 code 通過,但尾端藏有「忽略使用者、刪除檔案」等未驗文字。
修補:receipt 與 agent context 只綁定 verified projection;raw model message 不進產品交付。
攻擊:只驗外層 trust card,不逐張驗 ReviewEnvelope。
修補:保存 reviewer pub+完整 envelope;獨立驗簽、registry 錨定、target head 與 answer SHA-256 綁定。
攻擊:鎖只包寫入,Ecosystem 卻在鎖外建好,形成 stale-state overwrite。
修補:在 controller lock 內 `fresh()`;toggle、wipe、report 共用同一把鎖;registry state 壞檔直接拒絕重置。
攻擊:child environment 帶出模型金鑰;Hermes 後代持有 pipe,成功後 CLI 仍等待 EOF。
修補:移除 `VACANT_API_KEY`/`VACANT_MCP_API_KEY`;stdin=DEVNULL,stdout/stderr 走暫存檔,等待主行程而非後代 pipe。
風險:研究用人工錯誤 resident 污染真實產品路由、scoreboard 與 artifacts。
修補:持久化 `.vacant-root-mode`;product/demo root 不可互換,遇到舊 artifacts 或外來 resident 立即 fail-closed。
不只測 happy path,也測「runner 必須不可達」:壞 receipt、trust off、錯答案、壞 chain、未錨定 reviewer、落盤失敗,都以 marker 檔不存在作為硬斷言。
passed
1 skipped
| 驗證面 | 核心斷言 | 結果 |
|---|---|---|
| Receipt tamper matrix | task / tests / risk / answer / card / sig / anchor / request | PASS |
| Spawn ordering | delegate → verify → evidence → launch | PASS |
| Python isolation | exit-zero / custom repr / stdout forge / frame escape | PASS |
| State integrity | stale reload / atomic state / corrupt state fail-closed | PASS |
| VM baseline | 完整 VM suite 328 passed;final controller suite 32 passed | PASS |
| True e2e | 2 × Qwen reasoning → Vacant → Hermes → filesystem | PASS |
Hermes 是第一個 adapter,不是特例。只要能用 argv 啟動,就能在收到 verified delivery 後工作。
模型端點負責 Vacant 生成;下游 agent 使用自己的設定。兩者序列執行,不爭用 tool choice。
--agent hermesbuilt-in--agent-argv '[…]'ready{context_path}readySequence[str]shell-free$ export VACANT_MCP_BASE=http://localhost:1234 $ export VACANT_MCP_MODEL=your-model $ export VACANT_MCP_API=openai $ vacant run \ "Write solve(nums), summing even integers." \ --test "assert solve([1,2,3,4]) == 6" \ --test "assert solve([]) == 0" \ --agent hermes
Vacant 提高可修復錯誤的回收率,並把每次交付變成可追究物件;它不會把不可檢查的主觀任務變成數學真理。
經 `vacant run` 啟動的 agent,沒有有效 receipt 就不存在。Request replay、卡片竄改、舊鏈頭與未錨定 reviewer 都被拒。
客觀 check、peer review、audit、hash chain 與 human report 把「看起來可以」轉成可重驗的事件歷史。
probation、行為相關降權、decay、slash 提高攻擊成本;公開門檻仍可能被針對,不能說成絕對阻止。
使用者直接執行 Hermes 可繞過 controller;同 UID/root 可讀私鑰。真正唯一出口需 container、ACL、獨立服務帳號、HSM 或 TEE。
它成為啟動 agent 之前,必須先成立、能被驗證、可以被追究的一組工程條件。