驗證命令
本頁説明 Evolver 的命令驗證器,不適用於桌面端所有工具。驗證命令需要檢驗本次改動,並明確工作目錄、運行時間、文件範圍和秘密處理方式。該驗證器默認每條命令超時 60 秒,最高 120 秒。
命令要求
- 使用明確的可執行文件和參數,避免把不受信任文本拼接進 shell。
- 固定工作目錄,只讀取本次驗證需要的配置和依賴。
- 不在參數、輸出或診斷包中打印 token、私鑰和完整環境變量。
- 將退出狀態與關鍵斷言、文件差異或產物檢查一起保存。
- 對會寫數據庫、發佈產物或調用生產服務的“測試”單獨審批。
平台隔離差異
Linux 按宿主建立的隔離邊界執行,不是隻憑操作系統名稱決定。檢查結果中的 isolationTier:
| 返回值 | 實際邊界 |
|---|---|
read-only | 無網絡、隱藏主目錄、只讀根文件系統,並使用 cgroup 資源限制 |
no-network | 私有文件系統根、只讀工作副本、私有 HOME 與進程空間、無網絡;沒有聚合 cgroup 資源限制 |
none | 沒有 namespace 隔離,只使用進程與路徑加固 |
Windows 和 macOS 不具備這套 Linux namespace 邊界,命令仍能訪問網絡和用户主目錄。布爾字段 isolated 不能區分兩檔隔離強度;審核時保存 isolationTier。調用方要求隔離卻無法達到最低檔位時,驗證器會在啓動命令前拒絕。
驗證記錄
每次驗證至少保存以下記錄:
text
command / arguments
working directory
platform and versions
timeout
exit status
key assertions and redacted output
touched files or external effects
通過不等於已經驗證目標
該沙箱執行入口為兼容既有行為,將空命令列表返回為 passed: true;這隻表示沒有命令需要執行。不能據此宣稱測試通過或功能已經驗證。開始前檢查命令列表,完成後核對實際執行的 results、跳過項 skipped 和對應斷言。
腳本不存在、位於允許根目錄之外、經過符號鏈接或無法解析時,會留下跳過原因。需要證明的檢查被跳過,應先修復路徑或補齊腳本,不能把“沒有執行”算成覆蓋完成。沙箱建立或清理失敗也屬於失敗,即使命令本身退出為 0。
失敗處理
超時、信號終止或輸出缺失都應記為未通過,不能自動轉成成功。命令被脱敏流程修改後也不得繼續執行或用於晉級,因為實際驗證內容已經改變。
相關頁面
EvoX 文檔 · 安全 · 執行邊界