コーディングエージェント は何をしますか?
バックグラウンドでの機能構築、PRレビュー、大規模リファクタリング、Issue-to-PRループに使用します。単純な編集、読み取り専用の参照、ACPスレッドに拘束された作業、または~/.openclaw、$OPENCLAW_STATE_DIR、アクティブなOpenClaw状態ディレクトリ内での実行には使用しないでください。
ハードルール
- 常に
background:trueで起動する。 - CodexとOpenCode:
pty:trueを使用する。 - Codex:環境の
CODEX_HOMEやデフォルトの~/.codexを継承しない。個別に認証されたコーディングエージェントホームを使用し、各Codexコマンドにスコープを設定する。 - Claude Code:PTYは使用しない。
claude --permission-mode bypassPermissions --printを使用する。 - 起動前に、実際の通知ルートを取得する。
- ワーカーは、
openclaw message sendで完了/失敗を送信する必要がある。 - ハートビート、システムイベント、またはnotify-on-exitに依存しない。
processで監視する。理由なく遅いワーカーを強制終了しない。- ユーザーが特定のエージェントを要求した場合は、そのエージェントを使用する。
- ワーカーが失敗/ハングした場合は、再生成するか確認する。黙って手動でコーディングしない。
~/Projects/openclawでブランチをチェックアウトしたり、バックグラウンドコーディングエージェントを実行したりしない。隔離されたチェックアウトを使用する。- チェックアウトまたはワークツリー作成の前に、ソース参照を信頼済みまたは非信頼として分類する。コントリビューターが管理する参照を、リポジトリの承認された非信頼PRサンドボックス/レビューワークフローの外部で具体化しない。また、その中で権限バイパスワーカーを起動しない。
- Gitで管理されたプロジェクトを変更するタスクの場合は、起動前にGitワークツリーを準備して検証し、ワーカープロンプトに以下の正確なGit準備ブロックを含める。
必須のGit準備
Codex、Claude Code、またはOpenCodeを、Gitで管理されたプロジェクトを変更する作業のために起動する前:
- 対象のリポジトリを特定し、その正規リモートを選択する。それが存在しターゲットと一致する場合は
upstreamを優先する。それ以外の場合はoriginを確認する。選択したリモートのデフォルトブランチを動的に解決する。明示的なタスクブランチまたは信頼できる既存のPRメタデータからターゲットベースを決定する。他の共有ブランチの場合は、設定/追跡されたベースを証明するか、ユーザーに確認する。指定されたベースがない新しい作業には、正規のデフォルトのみを使用する。リポジトリ、リモート、またはターゲットベースを証明できない場合は停止する。 - チェックアウトまたはワークツリー作成の前に、ソース参照を信頼済みまたは非信頼として分類する。コントリビューターが管理する参照の場合は、リポジトリの承認された非信頼PRサンドボックス/レビューワークフローを使用する。このワークフローはサンドボックス内での参照の具体化を所有するか、停止する。残りの手順と起動形式は、信頼済み参照のみを対象とする。
- 信頼済みの新しい作業の場合、
<canonical>/<targetBaseBranch>から新しい隔離されたワークツリーとブランチを作成する直前に、git fetch --prune <canonical>を実行する。 - 信頼済みの新しい作業の場合、ワークツリーの初期
HEADが取得したターゲットベースのSHAと等しいことを確認する。正規リモート、正規デフォルトブランチ、ターゲットベースブランチ、ベースSHA、ワークツリーパス、ブランチを記録する。 - 信頼済みの既存のPRまたは共有ブランチの場合、取得したソースブランチから隔離されたワークツリーを作成する直前に、正規のターゲットベースとソースブランチをフェッチする。そのソース参照と開始SHAを記録し、更新されたターゲットベースからの分岐を報告する。共有履歴を自動的にリベース、マージ、リセット、force-push、またはその他の方法で書き換えない。
- プライマリチェックアウトではなく、隔離されたワークツリーでワーカーを起動する。OpenClawの場合、
~/Projects/openclaw下のプライマリチェックアウトは禁止されたままである。
Gitで管理されたプロジェクトを変更するタスクの場合は、実際の値を使用してこのブロックをワーカープロンプトに追加する:
Git準備(編集前に必須):
- 正規リモート:<canonicalRemote>
- 正規デフォルトブランチ:<canonicalDefaultBranch>
- ターゲットベースブランチ:<targetBaseBranch>
- 取得したターゲットベースSHA:<targetBaseSha>
- 準備モード:<new work | existing PR/shared branch>
- チェックアウトの信頼性:trusted
- 準備されたソース参照:<canonicalRemote/targetBaseBranch | fetched trusted source ref>
- 準備された開始SHA:<preparedStartSha>
- 隔離されたワークツリー:<worktreePath>
- 作業ブランチ:<branch>
- 準備証明書:<new work:`git fetch --prune <canonicalRemote>`を`<canonicalRemote>/<targetBaseBranch>`からの作成直前に実行 | existing branch:正規のターゲットベースと信頼済みソース参照が、`<preparedSourceRef>`にある`<preparedStartSha>`からワークツリーが作成される直前にフェッチされました>
編集前に、現在のディレクトリが隔離されたワークツリーであり、その初期HEADが<preparedStartSha>と等しいことを確認してください。新しい作業の場合、そのSHAは<targetBaseSha>と等しくなければなりません。プライマリチェックアウトを編集しないでください。既存のPR/共有ブランチの作業の場合は、分岐を報告し、明示的に要求されない限り、リベース、マージ、リセット、force-push、またはその他の方法で共有履歴を書き換えないでください。
新しく作成された作業の最終プッシュまたはPRの直前に、`git fetch --prune <canonicalRemote>`と`git merge-base --is-ancestor <canonicalRemote>/<targetBaseBranch> HEAD`を実行してください。祖先チェックが失敗した場合は、新しいブランチを最新のターゲットベースに更新し、関連する証明を再実行し、その後にforceせずにプッシュしてください。既存のPR/共有ブランチの作業の場合は、祖先チェックの失敗を報告し、リポジトリのワークフローに従ってブランチを書き換えないでください。
信頼済み参照の場合、ランチャーは編集ワーカーを起動する前にワークツリーを作成して検証する必要があります。ワークツリーの作成をそのワーカーに委任しないでください。承認された非信頼PRワークフローは、代わりにサンドボックス内でチェックアウトとワークツリーの具体化を所有する必要があります。~/Projects/openclawでワーカーを起動しないでください。読み取り専用タスクと非プロジェクトのスクラッチ作業には、Git準備ブロックは必要ありません。
通知ブロック
実際の値を使用して、この形をすべてのワーカープロンプトに追加する:
通知ルート:
- チャンネル:<notifyChannel>
- ターゲット:<notifyTarget>
- アカウント:<notifyAccount or omit>
- 返信先:<notifyReplyTo or omit>
- スレッドID:<notifyThreadId or omit>
終了したら、以下のコマンドを使用して完了メッセージまたは失敗メッセージを1つだけ送信します:
openclaw message send --channel <channel> --target '<target>' --message '<簡潔な結果>'
上記に存在する場合のみ、--account、--reply-to、または--thread-idを追加します。
openclaw system eventまたはheartbeatは使用しないでください。
信頼できるルートが存在しない場合は、完了の自動通知は利用できないと伝えてください。
起動形式
まずワーカープロンプトを一時ファイルに書き込みます。これにより、必要な通知ブロックに引用符や改行が含まれている場合のシェルの引用バグを回避できます。
PROMPT=$(mktemp -t openclaw-worker-prompt.XXXXXX)
cat >"$PROMPT" <<'EOF'
タスク。
<必須のGit準備ブロック>
<通知ブロック>
EOF
printf 'プロンプトファイル: %s\n' "$PROMPT"
同じシェル/セッションから起動する場合は$PROMPTを使用します。別のツールコールを使用する場合は、出力されたパスを代用します。以下の起動形式は信頼済みチェックアウト専用です。信頼されていないコントリビューター参照には、リポジトリの承認されたサンドボックス/レビューワークフローが必要です。
ホスト上の最初のCodexワーカーの前に、フォアグラウンドで専用の認証ホームを準備します。環境の~/.codexからauth.jsonやその他の認証情報をコピーしないでください。このホームを個別に認証してください。Codexは、ファイルとキーリングの両方の認証情報をCODEX_HOMEでスコープします。
CODEX_WORKER_HOME="$HOME/.codex-coding-agent"
mkdir -p "$CODEX_WORKER_HOME"
if ! env -u CODEX_API_KEY -u CODEX_ACCESS_TOKEN -u OPENAI_API_KEY \
CODEX_HOME="$CODEX_WORKER_HOME" codex login status >/dev/null 2>&1; then
printf 'Codexコーディングエージェントのログインが必要です: %s\n' "$CODEX_WORKER_HOME"
env -u CODEX_API_KEY -u CODEX_ACCESS_TOKEN -u OPENAI_API_KEY \
CODEX_HOME="$CODEX_WORKER_HOME" codex login --device-auth
fi
printf 'Codexワーカーホーム: %s\n' "$CODEX_WORKER_HOME"
ログインはインタラクティブなフォアグラウンド設定手順であり、バックグラウンドワーカーではありません。起動コマンドは、固定された引用符で囲まれたホームを繰り返し、環境のCodexおよびOpenAI認証オーバーライドを削除します。ワーカーホームをOpenClaw Gateway環境にエクスポートしないでください。
Codex:
bash pty:true background:true workdir:/path/to/isolated-worktree command:"env -u CODEX_API_KEY -u CODEX_ACCESS_TOKEN -u OPENAI_API_KEY CODEX_HOME=\"$HOME/.codex-coding-agent\" codex exec - < \"$PROMPT\""
Claude Code:
bash background:true workdir:/path/to/isolated-worktree command:"claude --permission-mode bypassPermissions --print < \"$PROMPT\""
OpenCode:
bash pty:true background:true workdir:/path/to/isolated-worktree command:"opencode run < \"$PROMPT\""
長いIssue-to-PR作業
- GitHub Issueを作成/再利用し、永続的な仕様とする。
- Issue URL、リポジトリ、正規リモート/デフォルトブランチ、ターゲットベースブランチ/SHA、隔離されたワークツリー、作業ブランチ、予想されるPR、証明、通知ルートを含める。
- 必須のGit準備ブロックを含め、ワーカーに実装、テスト、受け入れ可能なアクション可能な所見がなくなるまでレビューを実行、PRを開くように指示する。
- すぐにIssue URLと
sessionIdを返す。 processで監視する。タスクレジストリにミラーリングされている場合は、そこからキャンセルする。
スクラッチCodex
Codexには信頼できるgitリポジトリが必要です。この使い捨てスキャフォールドはプロジェクト作業ではなく、正規リモートもないため、Git準備ブロックは適用されません:
SCRATCH=$(mktemp -d)
git -C "$SCRATCH" init
PROMPT=$(mktemp -t openclaw-worker-prompt.XXXXXX)
cat >"$PROMPT" <<'EOF'
Xを構築する。
<通知ブロック>
EOF
printf 'プロンプトファイル: %s\n' "$PROMPT"
bash pty:true background:true workdir:$SCRATCH command:"env -u CODEX_API_KEY -u CODEX_ACCESS_TOKEN -u OPENAI_API_KEY CODEX_HOME=\"$HOME/.codex-coding-agent\" codex exec - < \"$PROMPT\""
プロセスアクション
list:実行中/最近のセッション。poll:ステータス。log:出力。submit:入力を送信してEnter。write:生のstdin。paste:テキストを貼り付け。kill:終了。
ユーザーへのステータス
- 何がどこで開始されたか、および
sessionIdを伝える。 - マイルストーン、ワーカーからの質問、エラー、ユーザーのアクションが必要な場合、または終了時にのみ更新する。
- 強制終了された場合は、理由を伝える。