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 配置,即使名称巧合匹配。
显式解析可执行文件路径;不要假设存在统一的安装路径。POSIX Shell:
if [ -n "${ARGUS_BIN:-}" ]; then
: # operator supplied an executable path
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 "Set ARGUS_BIN or 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 "Set ARGUS_BIN or ARGUS_INSTALL"
}
下面的命令示例使用 POSIX "$ARGUS_BIN" ... 语法。在 PowerShell 中,使用 & $ArgusBin ... 调用解析后的路径。
对于源码检出,ARGUS_INSTALL="$HOME/src/Argus" 仅作示例,并非可移植的默认值。记录解析后的绝对可执行文件路径。切勿静默下载、重新安装、更改 Argus 的内部模型/提供者配置或扩宽权限。
核心操作流程
- 选择一个专属的工作目录和真实的安全边界。 为每个 Argus 项目使用一个专用的绝对目录。切勿与另一个活动的 Argus 项目目录层次重叠。当其守护进程处于活动状态时,不要移动、删除或共享写入该目录。真正的并行工作需要独立项目。工作目录是所有权边界,而非沙盒。
ARGUS_SKILL_SAFE_MODE=1增加了安全护栏,但其本身并非针对每个后端的隔离措施。在准备敏感输入之前,要求为所选后端验证沙盒,或在适当隔离的操作系统/容器边界内运行 Argus。默认的无人值守模式可能会授予内部代理超出工作目录的访问权限。 - 准备有边界的输入。 仅复制与任务相关、可披露的输入到
inputs/下。编写OBJECTIVE.md,包含目标、非目标、输出路径、验收标准、权限限制以及审查/引用要求。不要包含对话历史记录、凭据或无关的私人数据。 - 从确切的工作目录进行预检。 运行
"$ARGUS_BIN" doctor,然后探测"$ARGUS_BIN" --status。仅当必须验证后端认证时才使用doctor --deep;不要在每次常规预检中都增加网络/认证延迟。深度医生并非普遍的活动认证证明:当它报告未检查的令牌、离线能力或不可达路由时,在分派前使用该后端文档化的非变更性活动就绪性探测。仅在必要检查通过、识别出预期项目/工作目录、不存在所有权冲突,并且任何操作所需的内部模型/提供者选择已安装并认证后才继续。外部操作器可在此处授权的情况下选择或验证 Argus 配置,但不得将其视为另一个操作方。当前 Argus 顶级帮助有意简洁,可能省略支持的自动化标志;在针对其他版本使用--notify、daemon、bounded 或 API 接口之前,从该版本的文档/解析器或安全探测中验证它们。请参阅references/argus-runtime-surfaces.md。 - 仅在需要时显式指定内部执行配置。 优先使用 Argus 已配置、安装并认证的内部模型/提供者。在 Argus 要求的地方限定提供者名称。在就绪性检查失败后不要静默更改配置;先进行诊断,并在更改超出委托权限时获得批准。
- 分派一个独立的任务。 在工作目录中,为 Argus 提供一个自包含的目标,命名已准备的输入和输出。请求检查 → 执行 → 验证 → 修复 → 最终工件的闭环。委托 Argus 的原生风险/垂直审查策略;仅在任务合同或重大风险要求时显式要求独立审查。每个任务保持一个有限的交付物。对于一次性的有限任务,如果不需要可重用的学习且部署策略允许,设置
ARGUS_SKILL_REQUIRE_POST_TASK_LEARNING=0以避免默认的任务后学习模型调用;否则保留配置的学习策略。在可用时使用交互式驾驶舱;对于分离式执行,使用 Argus 文档化的 daemon/bounded 接口,而非即兴的 shell 循环。 - 在 Argus 内部保留证据边界。 Argus 可以在内部分离规划、工程和审查。要求决策规模的任务和带证据的工件变更。当 Argus 的策略要求独立审查时,它必须检查实际工件、限制、引用和完成情况。这些是内部责任,而非外部操作模型中的额外方。每个声明优选一个决定性的检查;避免重复的证据或额外的模型轮次。
- 使用最强可用的主机能力进行监控。 遵循
references/adapters/中的选定适配器。主机后台/进程 API 改进了观察,但并非真相来源:可靠的 Argus 项目状态才是。仅在活动环境保留主机进程的地方使用 Argus 的分离式守护进程。否则保存确切的 workdir/项目身份,并在后续轮次中重新启动 Argus 针对该状态。如果不允许分离式启动,保持前台驾驶舱或要求用户保持其运行;切勿声称无人值守的监控。 - 在每个边界运行待处理问题循环。 在分派时、每次有意义的检查状态后、在受阻/暂停/重新规划结果后、在离开运行无人值守前、在回答问题后以及结案前检查
"$ARGUS_BIN" --status。waiting on you : N unanswered question(s)是一个停止信号。可用时,同时检查驾驶舱/Web 界面的 需要你 提示。在已验证的 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-only,或放在受信任的 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仅当恰好有一个问题待处理时才由管理器路由;当存在多个问题时,请处理特定的卡片/项目。"$ARGUS_BIN" --notify '<answer>'将指导加入队列,并且仅当恰好有一个问题待处理时才能由管理器绑定;队列确认不是解决。在其他版本上对非驾驶舱路由进行特性检测。切勿代表用户猜测。 - 验证记录,然后继续。 在已验证的版本上,要求
resolved: true(如果界面返回)。确认旧的pending_question已清除并且记录了一个解决方案。当类型化的决策卡片存在时,还要求该卡片变为resolved;遗留的未类型化问题可能没有卡片或resolution_id。观察其在实际待处理、运行中、已完成或已停止状态下的继续,而不是要求它在检查时仍然活跃。stop决策转而中止项目,保留工作,禁用连续模式,并且不创建继续。重新运行状态并验证执行已按预期继续、完成或停止。如果标记仍然存在,澄清或升级;不要发送重复的猜测。 - 在不引入轨迹的情况下进行检查。 使用状态/驾驶舱获取当前任务、角色、阶段、backlog、结果、最新验证的位置和需要你。将 backlog 加上最新验证的证据视为前沿。将原始转录、守护进程日志、代理 I/O、使用日志和私有账本保留在本地。
- 检索和验证工件。 读取命名的输出路径。检查存在性、请求的范围和决定性的测试。将每个实质性引用解析到已准备的源;拒绝虚构的、过时-当前的或声称不匹配的引用。切勿从进度消息推断成功。
- 从持久状态恢复。 通过要求 Argus 从持久状态恢复并使用自包含的恢复目标(而非内联聊天回复)来恢复暂停的写入/执行工作。如果内部执行线程无法恢复,使用 Argus 的检查点/胶囊。在更改 Argus 配置或目标之前,诊断未解决的问题、所有权、内部模型/提供者就绪性、预算/冷却和基础设施。
- 仅在证据下结案。 当有界目标已满足、工件和决定性检查通过、所需的审查者裁决为
done,并且没有待处理的问题/卡片时,结案。continue、replan_requested、blocked、研究暂停或未回复的 Needs you 不是完成。区分任务完成与项目/阶段完成。使用references/closeout-checklist.md。
能力降级策略
- 无原生技能发现: 提供完整包或明确指示主机读取此文件和匹配的适配器;不要声称自动激活。
- 无 Shell: 主机无法直接操作本地 Argus。使用经批准的远程 shell/终端集成或移交确切的操作器步骤;将执行标记为受阻,而不是模拟。
- 有 Shell 但无进程 API: 仅当环境保留进程时优先使用 Argus
--daemon;始终持久化 project/workdir 身份并通过状态/驾驶舱重新进入。不要使用脆弱的&、nohup或 sleep/poll 循环进行后台运行,除非主机文档化的环境将其作为唯一批准的路径。 - 有进程 API 但跨主机会话不持久: 仅将其用于实时日志;持久的 Argus 项目状态仍然是恢复锚点,并且守护进程可能需要重新启动。
- 无 HTTP/API 客户端: 使用终端/Web 驾驶舱和
--status。切勿要求问题循环使用 API 访问。 - 无交互式审批路由: 在审批门控操作上失败关闭。将安全的预检与变更性启动分离,或要求人工通过该主机支持的 UI 进行审批。切勿仅仅为了无人值守运行而绕过审批/沙盒标志。
- 不允许无人值守执行: 保持交互式会话打开,或使用精确的恢复指令和未解决的状态停止。将监控报告为有条件的,而非活动的。
隐私、权限与返回
准备最小化数据。保持 Web UI loopback-only,除非用户批准受保护的远程访问。当前用户指令和新鲜证据覆盖先前的计划或运行时建议。
仅返回给调用的界面:workdir/项目身份、紧凑结果/前沿、审查者裁决、工件路径、决定性验证、引用例外、
…
[因翻译而截断]