ASTER ACP / 16
无人值守任务
执行预算、自动交互策略、目标续跑和结果原因。
适用场景
--unattended 适用于明确没有用户在端的测试或批量任务。它仍然提供 ACP stdio 服务,需要客户端提交任务;启动参数不是直接运行自然语言任务的命令。
./target/debug/aster-acp --unattended --cwd /absolute/disposable-workspace --config /absolute/host.acl --max-execution-ms 840000 --result-file /absolute/evidence/result.json
使用独立练习工作区,证据文件放在受测工作区之外。不要把交互模式的权限面板当作无人值守时仍会有人处理。
与交互模式的区别
无人值守宿主策略会自行处理确认,并对业务问题回答“无人可用,按任务要求判断”。这是一项明确的执行授权选择。实际限制仍来自工作区范围、显式 deny、沙箱与宿主准入。只有已授权的任务才应进入这个模式。
默认执行预算 840,000 ms、reasoning effort 为 max、工程策略为 engineering-v1,默认使用目标续跑。预算必须大于零。--no-goal-continuation 显式关闭该续跑路线;不要通过配置拼写错误意外改变模式。
当前实现还限制单次工具轮数、续跑轮数、空闲尝试和无证明停止次数。这些是代理的编译期边界,不能把它们当成任意可调的运行配置。模型生成了工具调用不代表评测要求已经通过。
读取结果记录
结果 schema 为 aster.code.terminal-bench-result.v1,记录以下字段:outcome、reason、terminalEvent、exitCode、durationMs、turns、toolCalls、successfulToolCalls、artifactEvidenceCount、errorCount。
reason 区分 agent_end、stream_closed_without_terminal_event、worker_exited_without_terminal_event、worker_join_failed、startup_failed、execution_failed、evidence_missing、provider_rejected、provider_exhausted、deadline_exceeded。
不要只看进程 exit code 或最后一句文本。明确终态、证据存在、当前源绑定与外部 grader 是不同判断。宿主 admission bind 只重新开放完成门,不代表 grader 通过。
失败与重试
没有新变更、没有终态和 provider 失败有各自的处理规则。结果未知的外部操作先核实,不重发整段带写入的任务。期限到达应取消并结算资源,失败原因写入有界记录。
结果文件缺失或无法解析时按证据缺失处理,不能沿用上一次同名文件。运行前分配独立证据位置,记录构建身份和任务 ID。
验收
先用固定 provider 模拟成功、无终态、超时和拒绝,再单独做真实 provider 验收。记录这次实际执行的版本与工作树,不能把历史 Terminal-Bench 成绩当作当前构建的测试结果。
实现依据
看清无人值守的执行链
- 01启动前固定边界
宿主选择任务、截止时间和结果文件。
- 02沿原路径有界执行
目标与 Run 使用现有准入和权限。
- 03按实际证据写结果
缺少动作证据或结果写入失败时,流程保留失败。
unattended_turn.rsL30 ↗
目标与无人值守内部逐项解释动作证据与结果字段。