Solo Harness: タスクを任せて寝て、朝に結果を確認する¶
Coding agent は短いタスクなら得意です。「このバグを直して」「この関数を書いて」「このファイルをリファクタリングして」— 数分で終わります。
でも、もっと大きな目標はどうでしょう。「auth モジュール全体をリファクタリングしてテストも書いて」。これは数時間かかります。ずっと見ているわけにはいきません。
Solo Harness は、大きなタスクを任せて、終わったら戻ってくる仕組みです。
以前のやり方 vs 今のやり方¶
以前: 長いタスクを実行して寝て、起きたら……何かがある。終わってるかもしれない。止まってるかもしれない。git 履歴がめちゃくちゃになってるかもしれない。何が起きたのか全くわかりません。
今: --worktree 付きで harness run を開始して寝て、朝には:
- run journal を確認して、何が起きたか正確に把握
- 構造化ステータス を確認して、完了したかどうかを確認
- 止まっていれば、止まった場所から resume
- 方向を間違えていれば、worktree を削除 — メインブランチには影響なし
仕組み¶
# 夜: 実行を開始
aios harness run \
--objective "auth モジュールをリファクタリングして統合テストを書く" \
--session nightly-auth \
--worktree
# 朝: 何が起きたか確認
aios harness status --session nightly-auth --json
# 完了していたら: 変更を確認
aios hud --session nightly-auth
# 止まっていたら: 問題を修正して再開
aios harness resume --session nightly-auth --max-iterations 10
--worktree が重要な理由¶
--worktree フラグは重要です。リポジトリの別コピーを作成し、agent が自由に変更を加えられるようにします。
- 良い結果? worktree をメインブランチにマージ
- 悪い結果? worktree を削除するだけ — コードへの影響はゼロ
git reset --hard は不要。リスキーなクリーンアップも不要。安全な隔離だけ。
何が記録されるか¶
各 harness run は journal を書き出します:
memory/context-db/sessions/<session-id>/artifacts/solo-harness/
├── objective.md # 依頼した内容
├── run-summary.json # 現在の状態と進捗
├── control.json # 停止要求とメモ
├── iteration-0001.json # 各イテレーションで何が起きたか
└── iteration-0001.log # 詳細ログ
これにより 読みやすい引き継ぎ記録 が手に入ります — 「agent がしばらく動いていた」ではなく、何をしたか、何が上手くいったか、何が上手くいかなかったかが正確にわかります。
Solo Harness を使うべきケース¶
使うべきケース: - 1つの明確な目的があり、時間がかかる - タスクを複数の agent に分割する必要がない - 見守るのではなく、結果が出たタイミングで確認したい
使わないべきケース: - タスクが独立した部分に分割できる(代わりに Agent Team を使ってください) - まだ要件を整理中(通常のセッションで始めてください) - 品質ゲート付きの段階的実行が必要(orchestrate を使ってください)
試してみる¶
# まず dry run でセットアップを確認
aios harness run \
--objective "payment モジュールの統合テストを書く" \
--session test-dry \
--worktree \
--dry-run --json
# 準備ができたら、本番実行
aios harness run \
--objective "payment モジュールの統合テストを書く" \
--session payment-tests \
--worktree \
--max-iterations 20
Solo Harness は AIOS 1.7 でリリースされました。ドキュメントを読むか、今夜試してみてください。