Argus 執行環境協調 是做什麼的?
當任務需要持久狀態、工件、實驗、背景執行、獨立審查、暫停/恢復或跨越多個模型回合時使用。請勿用於快速解答、簡單的唯讀檢查,或當前主機可以安全完成並直接驗證的小型操作。
已知限制
- Argus 不提供一種通用可攜的推送/回呼機制,從「需要你」狀態進入每個外部操作者。外部操作者必須在有意義的邊界上主動檢查精簡的 Argus 狀態/輸出。當主機無法維持持久監控時,中斷檢測可能不是即時的,且此技能禁止在這種情況下聲稱無人監控。
- Hermes Agent 和 Claude Code 適配器目前僅通過文檔驗證,尚未在此主機上進行本地執行測試。
- 當前文檔中的某些 Copilot CLI 技能指令在本地測試的 1.0.39 版本中缺失,因此需要進行功能檢測。
雙方可操作模型與配置
恰好有兩個操作方:
- 外部操作者:遵循此技能的 OpenClaw、Hermes Agent、Claude Code、Codex CLI、Copilot CLI 或其他具備 shell 能力的代理。它負責準備任務、啟動並觀察 Argus、處理委派權限內的操作者問題、驗證工件,並回報精簡結果。
- Argus:持久化的監督系統,負責規劃、執行、審查、持久化狀態、提出問題,並產生證據和工件。
Argus 內部使用的任何模型/提供者 CLI(例如 codex、copilot、claude、pi、opencode 或 grok)都是 Argus 的配置和實作細節,在此程序中不是第三角色、對等參與者或獨立方。外部操作者可以在操作必要且獲得授權時,於預檢階段選擇或驗證 Argus 配置的內部模型/提供者;否則應將 Argus 視為一個統一的持久監督系統。即使名稱巧合地匹配,也不要從外部操作者身份推斷 Argus 的配置。
明確解析可執行檔案路徑;不要假設一個通用的安裝路徑。POSIX shell:
if [ -n "${ARGUS_BIN:-}" ]; then
: # 操作者提供了可執行檔案路徑
elif command -v argus >/dev/null 2>&1; then
ARGUS_BIN="$(command -v argus)"
elif [ -n "${ARGUS_INSTALL:-}" ]; then
ARGUS_BIN="$ARGUS_INSTALL/.venv/bin/argus"
else
echo "請設定 ARGUS_BIN 或 ARGUS_INSTALL" >&2; exit 2
fi
原生 PowerShell:
if ($env:ARGUS_BIN) {
$ArgusBin = $env:ARGUS_BIN
} elseif (Get-Command argus -ErrorAction SilentlyContinue) {
$ArgusBin = (Get-Command argus).Source
} elseif ($env:ARGUS_INSTALL) {
$ArgusBin = Join-Path $env:ARGUS_INSTALL ".venv\Scripts\argus.exe"
} else {
throw "請設定 ARGUS_BIN 或 ARGUS_INSTALL"
}
下面的指令範例使用 POSIX "$ARGUS_BIN" ... 語法。在 PowerShell 中,請使用 & $ArgusBin ... 來呼叫解析後的路徑。
對於原始碼檢出,ARGUS_INSTALL="$HOME/src/Argus" 僅為範例,並非可攜式預設值。請記錄解析後的絕對可執行檔案路徑。切勿在未經許可的情況下下載、重新安裝、更改 Argus 的內部模型/提供者配置,或放寬權限。
核心操作程序
- 選擇一個專屬工作目錄和真正的安全邊界。 對每個 Argus 專案使用專用的絕對目錄。切勿重疊另一個在線 Argus 專案的目錄層級。在其 daemon 處於活躍狀態時,不要移動、刪除或進行共享寫入。真正的平行工作需要獨立的專案。工作目錄是所有權邊界,而非沙箱。
ARGUS_SKILL_SAFE_MODE=1會增加護欄,但其本身並非對所有後端的隔離。在暫存敏感輸入之前,需要為選定的後端驗證沙箱機制,或在適當隔離的作業系統/容器邊界中執行 Argus。預設的無人值守模式可能允許內部代理存取工作目錄之外的內容。 - 暫存有邊界的輸入。 僅將與任務相關、可安全揭露的輸入複製到
inputs/目錄下。撰寫OBJECTIVE.md,包含預期結果、非目標、輸出路徑、驗收檢查、權限限制以及審查/引用要求。不要暫存對話歷史、憑證或無關的私人資料。 - 從確切的工作目錄進行預檢。 執行
"$ARGUS_BIN" doctor,然後探測"$ARGUS_BIN" --status。僅在需要驗證後端身份驗證時才使用doctor --deep;請勿為每個例行預檢增加網路/身份驗證延遲。深度醫生並非通用實時身份驗證證明:當其報告未檢查的令牌、離線功能或無法到達的路由時,請在分派任務前使用該後端文檔中記錄的非變更實時就緒探測。僅在所需檢查通過、確定了目標專案/工作目錄、不存在所有權衝突,並且任何操作所需的內部模型/提供者選擇已安裝並通過身份驗證時,才繼續進行。外部操作者可在授權下於此處選擇或驗證 Argus 配置,但不得將其視為另一個操作方。目前的 Argus 頂層幫助有意保持簡潔,可能省略支援的自動化標誌;在針對另一個版本使用--notify、daemon、有邊界或 API 功能之前,請通過該版本的文檔/解析器或安全探測進行驗證。請參閱references/argus-runtime-surfaces.md。 - 僅在必要時明確指定內部執行配置。 優先使用 Argus 已配置、已安裝、已通過身份驗證的內部模型/提供者。在 Argus 要求的地方限定提供者名稱。在失敗的就緒檢查後,不要靜默更改配置;應先進行診斷,並在變更超出委派權限時獲得批准。
- 分派一個獨立的任務。 從工作目錄開始,給予 Argus 一個自包含的目標,命名暫存的輸入和輸出。請求檢查 → 執行 → 驗證 → 修復 → 最終工件閉合。委託給 Argus 原生的風險/垂直審查政策;僅在任務合約或實質風險要求時,才明確要求獨立審查。每個任務保持一個有邊界 deliverables。對於一次性、有邊界且未要求可重複學習、且部署政策允許的任務,設定
ARGUS_SKILL_REQUIRE_POST_TASK_LEARNING=0以避免預設的任務後學習模型呼叫;否則維持配置的學習政策。當交互式儀表板可用時使用;對於分離執行,使用 Argus 文檔中記錄的 daemon/有邊界功能,而不是臨時的 shell 循環。 - 在 Argus 內部保留證據邊界。 Argus 可能在內部區分規劃、工程和審查。要求基於證據的決策任務和工件變更。當 Argus 的政策要求獨立審查時,它必須檢查實際工件、限制、引用和完成情況。這些是內部責任,不是外部操作模型中的額外方。優先對每個聲明進行一次決定性檢查;避免儀式性的重複證據或額外模型回合。
- 使用最強的主機能力進行監控。 遵循
references/adapters/中選擇的適配器。主機背景/程序 API 可以改善觀察,但並非真相來源:Argus 持久化專案狀態才是。僅在活躍環境保留主機程序時,才使用 Argus 的分離 daemon。否則,保存確切的工作目錄/專案身份,並在後續回合中重新啟動 Argus 針對該狀態。如果不允許分離啟動,則保持前檯儀表板或要求使用者讓其保持運行;切勿聲稱無人監控。 - 在每個邊界執行待處理問題循環。 在分派任務時、每次有意義的狀態檢查後、阻塞/暫停/重新規劃結果後、離開運行前、回答問題後以及結案前,檢查
"$ARGUS_BIN" --status。等待你:N 個未回答的問題是一個停止信號。當可用時,也檢查儀表板/Web UI 的「需要你」提示。在經過驗證的 Argus 0.1.1 版本上,具備 API 能力的操作者可以檢查GET /api/projects/{sid}/status或GET /api/projects/{sid}/snapshot?compact=true;兩者都暴露pending_questions,而完整快照則暴露backlog中的行。即使配置了ARGUS_SKILL_WEB_TOKEN,這些讀取路由可能仍保持未經身份驗證:請將它們限制在 loopback 上,或將其置於受信任的 VPN/身份驗證反向代理之後;切勿直接將其暴露給不受信任的網路。在其他版本上對這些路由進行功能檢測。僅靠進度文字是不夠的。 - 分類每個問題。 一個持久的未解決標記是 backlog 中
pending_question不為空的行;一個類型化的卡片還有operator_decision.status == "pending",以及id、question、reason、evidence和可選的options。這不是一個通知性聊天問題、目標文字、審查文字或普通的/ask。即使旁邊有failed、paused_operator或看似成功的文字,也要將此持久標記視為阻塞。除非出現的問題明顯屬於委派權限範圍,否則讓 Argus 保留可逆的技術路由。升級處理憑證/機密、支出、刪除/強制推送/發布/外部發送、不可逆或面向外部的操作、安全/信任邊界變更、法律/許可決策、實質範圍/驗收變更以及模糊的高影響力選擇。 - 通過權威介面回答問題。 優先使用終端/Web 儀表板中特定項目的「需要你」卡片。在經過驗證的 Argus 0.1.1 版本上,API 客戶端可以使用
POST /api/projects/{sid}/decisions/{decision_id}/resolve搭配{"option_id":"…","note":"…"},或舊版POST /api/projects/{sid}/backlog/{item_id}/answer搭配{"text":"…"}。僅當恰好有一個待處理問題時,普通的儀表板回覆或POST /api/projects/{sid}/message才能由 Manager 路由;當存在多個問題時,請處理特定的卡片/項目。"$ARGUS_BIN" --notify '<答案>'會排隊指引,且僅當恰好有一個待處理問題時才能由 Manager 綁定;排隊確認不等於解決。在其他版本上對非儀表板路由進行功能檢測。切勿代替使用者猜測。 - 驗證記錄,然後恢復。 在經過驗證的版本上,要求
resolved: true(如果該介面返回)。確認舊的pending_question已清除並記錄了解決方案。當存在類型化的決策卡片時,也要求該卡片變為resolved;舊版未類型化的問題可能沒有卡片或resolution_id。觀察其在實際的待處理、運行中、已完成或已停止狀態中的延續,而不是要求其在檢查時仍然活躍。stop決策會中止該項目、保留工作、停用連續模式,並且不建立延續。重新運行狀態並驗證執行已按預期恢復、完成或停止。如果標記仍然存在,則澄清或升級;不要發送重複的猜測。 - 在不匯入軌跡的情況下進行檢查。 使用狀態/儀表板來獲取當前任務、角色、階段、backlog、結果、最新驗證位置和「需要你」資訊。將 backlog 與最新驗證的證據視為前沿。保留原始對話記錄、daemon 日誌、代理 I/O、使用日誌和私人 Ledger 在本地。
- 檢索並驗證工件。 讀取指定的輸出路徑。檢查存在性、請求的範圍和決定性測試。將每個實質引用解析到暫存的來源;拒絕偽造的、過時的或聲稱不匹配的引用。切勿從進度訊息推斷成功。
- 從持久狀態恢復。 通過要求 Argus 從持久狀態恢復(包含一個自包含的恢復目標,而不是內聯聊天答案)來恢復暫停的寫入/執行工作。如果內部執行線程無法恢復,請使用 Argus 的檢查點/膠囊。在更改 Argus 配置或目標之前,診斷未解決的問題、所有權、內部模型/提供者就緒狀態、預算/冷卻時間和基礎設施。
- 僅在存在證據時結案。 當有邊界的目標已達成、工件和決定性檢查通過、所需的審查者判定為
done,並且不存在待處理的問題/卡片時,才能完成。continue、replan_requested、blocked、研究暫停或未回答的「需要你」不算是完成。區分任務完成與專案/階段完成。請使用references/closeout-checklist.md。
能力降級方案
- 無原生技能發現: 提供完整的技能包,或明確指示主機讀取此檔案和匹配的適配器;不要聲稱自動啟動。
- 無 Shell: 主機無法直接操作本地 Argus。使用經批准的遠端 Shell/終端機整合,或移交確切的操作者步驟;標記執行為阻塞,而不是模擬它。
- 有 Shell 但無程序 API: 僅在環境保留程序時,優先使用 Argus
--daemon;始終持久化專案/工作目錄身份,並使用狀態/儀表板重新進入。除非主機的文檔環境使其成為唯一批准的路徑,否則不要使用脆弱的&、nohup或 sleep/poll 循環將其置於背景。 - 有程序 API 但跨主機會話不持久: 僅將其用於即時日誌;持久的 Argus 專案狀態仍然是恢復錨點,且 daemon 可能需要重新啟動。
- 無 HTTP/API 客戶端: 使用終端/Web 儀表板和
--status。切勿要求問題循環具有 API 存取權限。 - 無交互式批准途徑: 對需批准的閘控操作採取失敗閉合態度。將安全的預檢與變更啟動分開,或要求人類通過該主機支援的 UI 進行批准。切勿僅為了無人值守運行而繞過批准/沙箱標誌。
- 不允許無人值守執行: 保持交互式會話開啟,或使用精確的恢復指示和未解決狀態停止。將監控報告為有條件的,而非活躍的。
隱私、權限與返回
暫存最少數據。除非使用者批准受保護的遠端存取,否則將 Web UI 限制為 loopback。當前使用者指令和新鮮證據優先於先前的計劃或執行階段建議。
僅返回給呼叫介面:工作目錄/專案身份、精簡結果/前沿、審查者判定、工件路徑、決定性驗證、引用例外、
…