Was macht Clownfish Cloud PR?
Verwenden Sie diese Fähigkeit, wenn der Benutzer möchte, dass Codex Clownfish auffordert, einen PR in der Cloud aus Issue/PR-Referenzen und einer benutzerdefinierten Eingabeaufforderung zu erstellen.
Start
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}'
Merge-Gatter bleiben geschlossen, es sei denn, Peter öffnet sie explizit. Execute/Fix-Gatter sind geschlossen, es sei denn, die Repository-Variablen sind buchstäblich 1; normale Fix-PR-Arbeiten benötigen ein absichtliches Ausführungsfenster:
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
Setzen Sie CLOWNFISH_ALLOW_EXECUTE=0 und CLOWNFISH_ALLOW_FIX_PR=0 nach dem Fenster zurück. Wenn diese Variablen fehlen oder nicht 1 sind, bleiben Ausführungs-/autonome Workflow-Läufe nur Plan/Mutation-frei.
Einen Job erstellen
Aus Referenzen und einer benutzerdefinierten Eingabeaufforderung:
npm run create-job -- \
--repo openclaw/openclaw \
--refs 123,456 \
--prompt-file /tmp/clownfish-prompt.md
Aus einem ClawSweeper-Bericht:
npm run create-job -- \
--from-report ../clawsweeper/records/openclaw-openclaw/items/123.md
Das Skript prüft auf einen vorhandenen offenen PR/Übereinstimmung des Bodys und einen Remote-Zweig mit dem Namen clownfish/<cluster-id>, bevor es einen doppelten Job schreibt. Verwenden Sie --dry-run, um den genauen Job-Body zu überprüfen, und --force nur, nachdem Sie entschieden haben, dass die Duplikatsprüfung veraltet ist.
Einen Ersatz-PR anfordern
Die Fähigkeit kann das Schreiben eines Ersatz-PRs über den normalen create-job- und dispatch-Pfad auslösen. Fügen Sie die Maintainer-Entscheidung in die Eingabeaufforderung ein:
Behandle #123 als nützliche Quellarbeit. Wenn der Quell-Zweig nicht sicher aktualisiert werden kann, weil er nicht bearbeitbar, veraltet, nur als Entwurf, nicht mergebar oder unsicher ist, erstelle stattdessen einen engen Clownfish-Ersatz-PR und warte nicht. Erhalte den Autor des Quell-PRs als Co-Autor, erwähne den Quell-PR im Body des Ersatz-PRs und schließe nur diesen Quell-PR, nachdem der Ersatz-PR geöffnet wurde.
Der Worker sollte repair_strategy=replace_uneditable_branch ausgeben und die Quell-PR-URL in source_prs auflisten. Der deterministische Ausführer öffnet oder aktualisiert clownfish/<cluster-id>, fügt Nicht-Bot-Quell-PR-Autoren als Co-authored-by-Trailer hinzu und schließt den ersetzten Quell-PR erst, nachdem der Ersatz-PR existiert. Neue Ersatz-PRs werden blockiert, wenn der berührte Bereich bereits CLOWNFISH_MAX_ACTIVE_PRS_PER_AREA offene Clownfish-PRs hat.
Validiere und dispatch
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
Verwenden Sie --dispatch erst, wenn der Job committet und gepusht ist; der Workflow liest den Job-Pfad von GitHub.
Maintainer-Kommentarbefehle
Clownfish kann auch über Kommentare im Ziel-Repository angefragt werden, jedoch nur von Maintainern. Verwenden Sie /clownfish ... oder @openclaw-clownfish ...; verwenden Sie nicht @clownfish, da dies ein separater GitHub-Benutzer ist.
Unterstützte Befehle:
/clownfish status
/clownfish fix ci
/clownfish address review
/clownfish rebase
/clownfish automerge
/clownfish explain
/clownfish stop
@openclaw-clownfish fix ci
Der Router akzeptiert standardmäßig Kommentare von OWNER, MEMBER und COLLABORATOR. Kommentare von Mitwirkenden werden ignoriert, ohne Antwort. Reparaturbefehle senden cluster-worker.yml nur für bestehende Clownfish-PRs mit dem Label clownfish oder dem Zweig clownfish/*.
npm run comment-router -- --repo openclaw/openclaw --lookback-minutes 180
npm run comment-router -- --repo openclaw/openclaw --execute --wait-for-capacity
Geplante Weiterleitung bleibt trocken, bis CLOWNFISH_COMMENT_ROUTER_EXECUTE=1 in den Repository-Variablen von openclaw/clownfish gesetzt ist.
Gebündelter ClawSweeper-geprüfter Automerge
Verwenden Sie dies nur für einen bestehenden Clownfish-PR, der auf einen clownfish/*-Zweig und eine Job-Datei zurückgeführt werden kann:
/clownfish automerge
Der Router überprüft, ob der Kommentator ein Maintainer ist, fügt clownfish:automerge hinzu, sendet ClawSweeper für den aktuellen PR-Head und wartet auf vertrauenswürdige ClawSweeper-Markierungen. needs-changes / fix-required sendet den normalen Reparatur-Worker. pass, approved oder no-changes dürfen nur mergen, wenn der Marker-SHA mit dem aktuellen PR-Head übereinstimmt, die Prüfungen grün sind, GitHub sagt, der PR ist mergebar, kein Label clownfish:human-review vorhanden ist und beide Merge-Gatter geöffnet sind:
gh variable set CLOWNFISH_ALLOW_MERGE --repo openclaw/clownfish --body 1
gh variable set CLOWNFISH_ALLOW_AUTOMERGE --repo openclaw/clownfish --body 1
Der tatsächliche Merge-Befehl ist mit GitHub's Head-Match-Guard gesichert, sodass ein Branch-Push nach der ClawSweeper-Überprüfung keinen ungeprüften Head mergen kann. Wenn eines der Merge-Gatter geschlossen ist, während ClawSweeper besteht, labelt Clownfish den PR nur mit clownfish:merge-ready, nachdem alle Bereitschaftsprüfungen bestanden wurden; fehlgeschlagene Prüfungen, veraltete Heads, Konflikte, Entwurfsstatus oder Human-Review-Labels dürfen dieses Label nicht erhalten. Pausieren mit /clownfish stop, was clownfish:human-review hinzufügt.
Die Reparaturschleife ist durch CLOWNFISH_CLAWSWEEPER_MAX_REPAIRS_PER_PR (Standard 5) und CLOWNFISH_CLAWSWEEPER_MAX_REPAIRS_PER_HEAD (Standard 1) begrenzt.
Leitplanken
- Ein Cluster, ein Zweig, ein PR:
clownfish/<cluster-id>. - Keine sicherheitsrelevanten Arbeiten.
- Neue Ersatz-PRs sind pro berührtem Bereich durch
CLOWNFISH_MAX_ACTIVE_PRS_PER_AREAbegrenzt. - Nicht von Clownfish mergen, es sei denn, Peter bittet ausdrücklich darum.
- Nicht
CLOWNFISH_ALLOW_AUTOMERGEöffnen, es sei denn, Peter bittet ausdrücklich um ein Automerge-Fenster. - Duplikate nicht schließen, bevor der Fix-PR-Pfad existiert, landet oder sich als unnötig erwiesen hat.
- Codex-Worker erhalten keine GitHub-Token; deterministische Skripte besitzen die Schreibrechte.