单 Agent 夜跑¶
Solo Harness 是 RexCLI 里专门给单个 agent 长任务准备的执行通道。
当你想让一个 provider 围绕一个目标夜里持续推进,同时保留可读的 run journal、明确的 stop/resume 控制、以及可选的 git worktree 隔离时,就用它。
什么时候该用 Solo Harness¶
适合用:
- 目标很明确,比如“整理明早交接清单”或“补完发布检查表”。
- 任务不值得拆成多个并行 worker。
- 你想要可恢复的 operator loop,而不是一次性命令。
- 你希望夜跑改动尽量不污染主工作区。
- 你希望按需启用 lifecycle hooks 证据(
--hooks/--no-hooks)。
不适合用:
- 任务可以拆成多个独立模块并行推进 -> 用 多 Agent 实战。
- 你需要带 preflight gate 的阶段式 DAG -> 用
aios orchestrate ...。 - 需求还不清楚 -> 先用普通交互式
codex/claude做分析。
快速开始¶
# 在隔离 worktree 里启动夜跑
aios harness run --objective "整理明早交接清单" --session nightly-demo --worktree --max-iterations 20
# 查看结构化状态
aios harness status --session nightly-demo --json
# 在 HUD 里看同一个 session
aios hud --session nightly-demo --json
# 请求它在安全边界停下
aios harness stop --session nightly-demo --reason "白天人工接手"
# 后面继续同一个 session
aios harness resume --session nightly-demo --max-iterations 10
包装客户端里的 Agent 自触发¶
启用 shell 包装后,交互式 codex / claude / gemini / opencode 会收到 AIOS 路由提示。默认仍然是 single;只有明确的长任务、过夜任务、可恢复任务、checkpoint 密集目标,才应该让 agent 自己选择 harness。
这类任务注入的命令形态是:
node <AIOS_ROOT>/scripts/aios.mjs harness run \
--objective "<task>" \
--provider codex \
--max-iterations 8 \
--worktree \
--workspace <project-root>
可用下面变量调整注入的 provider 和循环预算:
export CTXDB_HARNESS_PROVIDER=claude
export CTXDB_HARNESS_MAX_ITERATIONS=12
如果完全不想注入路由提示,设置 CTXDB_INTERACTIVE_AUTO_ROUTE=0。
先 dry-run 再 live¶
如果你想先确认 artifact 结构,不想马上消耗 token:
aios harness run --objective "整理明早交接清单" --session nightly-demo --worktree --max-iterations 3 --dry-run --json
dry-run 会创建 session journal,但不会真的调用 provider。
Hooks 开关¶
run 与 resume 支持显式 hooks 开关:
aios harness run --objective "整理明早交接清单" --session nightly-demo --hooks
aios harness resume --session nightly-demo --no-hooks
- 默认是
--hooks(开启),会记录 lifecycle hook 证据。 - 如果你想要更低噪声的执行循环,可用
--no-hooks关闭。
迭代预算与工作区控制¶
--max-iterations <n>控制run/resume的循环预算;CLI 默认是20,包装客户端自触发提示默认注入8。--workspace <path>强制把 ContextDB session artifact 写进指定项目根目录。适合从包装器、外部 checkout 或父目录触发 AIOS 时使用。--provider <codex|claude|gemini|opencode>选择循环底层调用的本地 CLI。
Solo Harness 会写哪些文件¶
artifact 统一落在:
memory/context-db/sessions/<session-id>/artifacts/solo-harness/
核心文件:
objective.md:标准化后的目标描述。run-summary.json:当前状态、迭代次数、backoff、worktree 信息。control.json:停止请求和 operator 备注。hook-events.jsonl:hooks 启用时的生命周期证据记录。iteration-0001.json:每轮归一化后的结果。iteration-0001.log.jsonl:每轮的原始日志流,方便排查。
推荐的 operator 操作链路¶
一个实用的夜跑链路通常是:
- 用
aios harness run --worktree启动。 - 离开前先跑一次
aios harness status --session <id> --json。 - 需要人工查看时用
aios hud --session <id>。 - 想让它在下一个安全边界停下时,用
aios harness stop --session <id>。 - 第二天或人工修完问题后,用
aios harness resume --session <id>接着跑。
Worktree 隔离怎么理解¶
夜跑场景强烈建议带 --worktree。
它会为当前 harness session 建一个隔离的 git worktree,避免 agent 直接改你的主工作区。如果这次运行没有产出有效结果,临时 worktree 可以自动清理;如果产生了值得保留的改动,run summary 会保留对应 metadata 供人工接手。
这套流程不会依赖粗暴的 git reset --hard 来恢复现场。
Provider 和运行时说明¶
live 模式复用现有一次性 scripts/ctx-agent.mjs provider 调用链路。
也就是说,本机仍然需要安装并能直接运行对应 CLI:
codexclaudegeminiopencode
如果 provider CLI 还没准备好,先用 dry-run,再去修 readiness。
Solo Harness 和 Agent Team 怎么选¶
| 需求 | 更适合 |
|---|---|
| 单目标、单 provider、可恢复的过夜执行 | aios harness ... |
| 明确可拆分的并行多 worker 协作 | aios team ... |
| 带 preflight gate 的阶段式编排 | aios orchestrate ... |