第十三節 工具權限與簽核
AVL Code 通過工具權限政策對每一次工具呼叫做精細化管控。
13.1 三態權限
每個工具都可以設定為:
- 啟用:直接放行。
- 詢問:每次呼叫前彈窗簽核。
- 停用:直接拒絕。
可按工作模式獨立配置;常見做法:execute 模式啟用寫工具,plan 模式停用所有寫工具。三態對子代理同樣生效(停用的工具在子代理側一並拿不到),外掛 / 外部服務解除安裝後殘留的工具配置會被自動清理。
13.2 呼叫前簽核
當一個被標記為「詢問」的工具即將執行時:
- 桌面端彈出簽核彈窗,展示工具名、入參與影響範圍。
- 你可以選擇:
- 允許(僅本次)
- 始終允許:把"工具+參數模式"加入白名單。
- 拒絕
- 彈窗帶 30 秒倒數計時,超時未回應按「拒絕」處理。
13.2.1 無限制模式(進階)
輸入區模式滑塊右側有一個盾牌開關,專給清楚自己在做什麼的進階使用者用。啟用前先過一道風險確認彈窗(含 5 秒冷靜期 — 確認按鈕先停用並倒數計時「請仔細閱讀風險提示 5s…」,歸零才能點,期間按 Enter 也不觸發),啟用後紅色危險態常駐提醒,關閉即時生效。
作用域:按會話獨立、純記憶體、重新啟動即清,不會悄悄留着。
啟用後解除三類日常摩擦:
| 摩擦 | 啟用後 |
|---|---|
| 工具批准 | 跳過批准彈窗(不再逐個 ask / 拒絕 / 延後),工具直接執行 |
| 命令白名單 | fs.exec 不再受命令白名單限制,任意命令可執行 |
| 網路存取 | web.fetch / web.bing 不再過濾內網 / 環回 / 鏈路本機地址 |
始終保留的硬底線(不受開關影響):
samples/沙箱隔離rm -rf等破壞性命令的參數校驗- 危險注入黑名單(fork 炸彈 / 寫
/etc/curl|sh/eval) http(s)協議白名單
斜槓命令快捷開關 — 也可在輸入框直接敲:
/unrestricted(或中文別名/無限)— 切換當前會話的無限制模式。啟用時同樣過 5 秒冷靜期的風險確認彈窗,關閉即時生效。中文別名在命令選單與/help裡隱藏(避免重復行),但鍵入回車仍可執行。
無護欄區間的訊息標記:無限制模式期間產生的連續訊息會以淺色邊框整體圈出,起止一目了然,事後回看能一眼分辨哪些內容是在無護欄狀態下生成的;關閉開關後邊框當場收口,模式未結束時不會提前打「結束」界標。子代理可按需遞歸繼承該模式,繼承產生的訊息同樣帶標記。
13.2.2 本機模式:一鍵斷掉內置連網工具
與無限制模式正好相反的方向 —— 本機模式把這個會話的內置連網能力一次關掉,適合處理不宜外發的資料、或者本來就沒網的環境。
開關位置:輸入區的連網開關。預設是「連網工具已啟用」,點擊後彈確認框「停用連網工具?」,確認即生效。
關掉的是哪些:
- 網頁抓取與搜尋
- GitHub 檢索
- VirusTotal / GTI 威脅情報雲查
- 漏洞庫線上同步
不受影響的(這點很重要,別誤以為"全斷網了"):
- shell 命令(比如
curl)的網路存取 —— 本開關不攔 - 外接 MCP 工具的網路存取
- 與模型服務本身的通訊
對模型選擇的影響:本機模式下,這個會話的資料只發給它自己所用的模型 ——
code.ask、sec.decompile、記憶自動提煉不再按路由策略選瀾砥模型,一律用當前會話的模型;- 子任務一律用主會話的模型(忽略子任務的路由策略與子代理定義裡的模型);
- Hook 用觸發它的會話自己的模型;確定不了時跳過這次 Hook 的模型呼叫,不改用別的會話的模型;
- 發往本機模式會話的例行程序用該會話的模型。
作用域:按會話生效,重新啟動後自動復原連網;子代理同樣受限。啟用期間相依連網檢索的任務(查資料、雲端威脅分析、拉最新漏洞資料)效果會明顯受限,這是預期內的。
斜槓命令快捷開關:輸入框直接敲 /local 即可切換。
13.3 白名單匹配
「始終允許」的匹配粒度可在 設定 → Hooks → 自動批准 中調整:
- 僅本次(最嚴)
- 同工具同參數
- 同工具任何參數
- 整個工作區放行(最松)
13.4 多端簽核
同一條簽核請求會同時出現在桌面彈窗與已綁定的遠端通道(如微信);首個應答生效,其餘端的後續回覆會被提示已應答。另有一條容易混淆的規則:拒絕 > 掛起 > 詢問 > 允許 的優先級排序屬於 Hook 層 — 同一次評估中多個 Hook 傳回的權限決策按它合併,與多端應答無關。
13.5 遠端簽核
如果你已綁定微信通道,所有 詢問 類簽核都會同步推播到對應聊天,你可以在微信裡用一行命令完成簽核:
/approve <簽核號> # 允許本次
/always <簽核號> # 始終允許
/deny <簽核號> # 拒絕
桌面側彈窗會同步消失,整條任務自動續跑。
13.6 留痕
簽核決策不落獨立稽核儲存:僅「始終允許」寫入工作區級授權檔案 hook-approvals.yaml(記錄授權指紋與決策時間),可在 設定 → Hooks 檢視與撤銷;「僅本次允許」與「拒絕」只作用於當次呼叫,不留存記錄。
