Clownfish Cloud PR
ユーザーがCodexに対して、Issue/PR参照とカスタムプロンプトからClownfishにクラウド上でPRを作成するよう依頼した場合に、このスキルを使用します。
開始
cd ~/Projects/clownfish
git status --short --branch
gh variable list --repo openclaw/clownfish --json name,value \
--jq 'map(select(.name|test("^CLOWNFISH_"))) | sort_by(.name) | .[] | {name,value}'
Peterが明示的に開放しない限り、マージはゲート付きのままにします。リポジトリ変数が文字通り 1 でない限り、実行/修正ゲートは閉じたままにします。通常の修正PR作業には、意図的な実行ウィンドウが必要です。
gh variable set CLOWNFISH_ALLOW_EXECUTE --repo openclaw/clownfish --body 1
gh variable set CLOWNFISH_ALLOW_FIX_PR --repo openclaw/clownfish --body 1
gh variable set CLOWNFISH_ALLOW_MERGE --repo openclaw/clownfish --body 0
gh variable set CLOWNFISH_ALLOW_AUTOMERGE --repo openclaw/clownfish --body 0
ウィンドウの後は、CLOWNFISH_ALLOW_EXECUTE=0 および CLOWNFISH_ALLOW_FIX_PR=0 にリセットします。これらの変数が存在しないか、1 でない場合、実行/自律ワークフローは計画のみ/変更なしの状態で実行されます。
ジョブを1つ作成する
参照とカスタムプロンプトから作成する場合:
npm run create-job -- \
--repo openclaw/openclaw \
--refs 123,456 \
--prompt-file /tmp/clownfish-prompt.md
ClawSweeperレポートから作成する場合:
npm run create-job -- \
--from-report ../clawsweeper/records/openclaw-openclaw/items/123.md
このスクリプトは、重複ジョブを書き込む前に、既存のオープンPR/ボディの一致と、clownfish/<cluster-id> という名前のリモートブランチをチェックします。--dry-run を使用して正確なジョブボディを検査し、重複チェックが古いと判断した場合にのみ --force を使用します。
置換PRを依頼する
このスキルは、通常の create-job および dispatch パスを通じて、置換PRの作成をトリガーできます。メンテナの判断をプロンプトに記述します。
#123 を有用なソース作業として扱います。ソースブランチが安全に更新できない場合(編集不可、古い、ドラフトのみ、マージ不可、または安全でない)は、待機する代わりに狭いClownfish置換PRを作成します。ソースPRの作成者を共同作成者として保持し、ソースPRを置換PRボディにクレジットし、置換PRがオープンされた後にのみそのソースPRをクローズします。
ワーカーは repair_strategy=replace_uneditable_branch を出力し、source_prs にソースPRのURLをリストする必要があります。決定論的実行ツールは、clownfish/<cluster-id> を開くか更新し、非ボットのソースPR作成者を Co-authored-by トレーラーに追加し、置換PRが存在した後にのみ、置き換えられたソースPRをクローズします。新しい置換PRは、タッチされた領域にすでに CLOWNFISH_MAX_ACTIVE_PRS_PER_AREA 個のオープンClownfish PRがある場合、ブロックされます。
検証とディスパッチ
npm run validate:job -- jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md
npm run render -- jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md --mode autonomous >/tmp/clownfish-rendered-prompt.md
git add jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md
git commit -m "chore: add ClawSweeper promoted job"
git push origin main
npm run dispatch -- jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md \
--mode autonomous \
--runner blacksmith-4vcpu-ubuntu-2404 \
--execution-runner blacksmith-16vcpu-ubuntu-2404 \
--model gpt-5.5
ジョブがコミットされプッシュされるまでは --dispatch を使用しないでください。ワークフローはGitHubからジョブパスを読み取ります。
メンテナーコメントコマンド
Clownfishは、ターゲットリポジトリのコメントからも呼び出すことができますが、メンテナーのみ可能です。/clownfish ... または @openclaw-clownfish ... を使用してください。@clownfish は別のGitHubユーザーであるため、使用しないでください。
サポートされているコマンド:
/clownfish status
/clownfish fix ci
/clownfish address review
/clownfish rebase
/clownfish automerge
/clownfish explain
/clownfish stop
@openclaw-clownfish fix ci
ルーターはデフォルトで OWNER、MEMBER、COLLABORATOR のコメントを受け入れます。コントリビューターのコメントは返信なしで無視されます。修復コマンドは、clownfish ラベルまたは clownfish/* ブランチが付いた既存のClownfish PRに対してのみ cluster-worker.yml をディスパッチします。
npm run comment-router -- --repo openclaw/openclaw --lookback-minutes 180
npm run comment-router -- --repo openclaw/openclaw --execute --wait-for-capacity
スケジュールされたルーティングは、openclaw/clownfish リポジトリ変数に CLOWNFISH_COMMENT_ROUTER_EXECUTE=1 が設定されるまで、ドライラン状態を維持します。
制限付きClawSweeperレビュー自動マージ
これは、clownfish/* ブランチとジョブファイルにマッピングされる既存のClownfish PRにのみ使用します。
/clownfish automerge
ルーターは、コメント投稿者がメンテナーであることを確認し、clownfish:automerge を追加し、現在のPRヘッドに対してClawSweeperをディスパッチし、信頼されたClawSweeperマーカーを待ちます。needs-changes / fix-required は通常の修復ワーカーをディスパッチします。pass、approved、no-changes は、マーカーSHAが現在のPRヘッドと一致し、チェックがグリーンで、GitHubがPRがマージ可能と判断し、clownfish:human-review ラベルがなく、両方のマージゲートが開いている場合にのみマージできます。
gh variable set CLOWNFISH_ALLOW_MERGE --repo openclaw/clownfish --body 1
gh variable set CLOWNFISH_ALLOW_AUTOMERGE --repo openclaw/clownfish --body 1
実際のマージコマンドは、GitHubのヘッド一致ガードで固定されているため、ClawSweeperがレビューした後にブランチがプッシュされても、未レビューのヘッドをマージすることはできません。ClawSweeperがパスしたときにいずれかのマージゲートが閉じている場合、Clownfishは準備チェックがすべてパスした後にのみ、PRに clownfish:merge-ready ラベルを付けます。チェックの失敗、古いヘッド、競合、ドラフト状態、または human-review ラベルがある場合は、そのラベルを付けてはいけません。/clownfish stop で一時停止します。これにより clownfish:human-review が追加されます。
修復ループは、CLOWNFISH_CLAWSWEEPER_MAX_REPAIRS_PER_PR(デフォルト 5)および CLOWNFISH_CLAWSWEEPER_MAX_REPAIRS_PER_HEAD(デフォルト 1)によって制限されます。
ガードレール
- 1つのクラスター、1つのブランチ、1つのPR:
clownfish/<cluster-id>。 - セキュリティに敏感な作業は行いません。
- 新しい置換PRは、タッチされた領域ごとに
CLOWNFISH_MAX_ACTIVE_PRS_PER_AREAによって制限されます。 - Peterが明示的に依頼しない限り、Clownfishからマージしないでください。
- Peterが自動マージウィンドウを明示的に依頼しない限り、
CLOWNFISH_ALLOW_AUTOMERGEを開かないでください。 - 修正PRパスが存在するか、ランディングされるか、不要であることが証明されるまでは、重複をクローズしないでください。
- CodexワーカーはGitHubトークンを取得しません。決定論的スクリプトが書き込みを所有します。