プルリクエストの自動修正
/autofix-pr はローカルの Qwen Code セッションからプルリクエストを 1 つ監視し、発生した問題(失敗した CI チェック、信頼する人からのレビューフィードバック、マージコンフリクト)を修正します。各修正は専用のワークツリーで作成・検証され、PR ブランチにプッシュされ、PR 上で回答されます。すべてあなたの git と gh の ID で行われます。PR がマージまたはクローズされると自動的に停止します。
/autofix-pr [<pr-number>|<pr-url>] [--once] [--every <minutes>] [--no-reply] [--yes] [instructions...]
/autofix-pr status
/autofix-pr stop [<pr-number>]- PR 引数がない場合: 現在のブランチのヘッドである PR。
--once: 1 回だけチェックと修正を行い、スケジュールは設定せず、その後監視を終了します(後で--onceを実行すると、PR の履歴から新しく開始されます)。このセッションで既に監視中の PR では、実行中の監視はそのまま維持されます。--every <minutes>: チェック間隔。1、2、5、10、15、30、60 のいずれか。デフォルトは 2。--no-reply: 修正をプッシュするが、PR には何も投稿しない。--yes: 開始確認をスキップする。ダイアログを表示できない環境で必要。- フリーテキストは各修正に渡されます。例:
/autofix-pr 123 do not change the public API。
開始前に
ghがサインイン済みで、PR ブランチへのプッシュアクセスがあること: 同一リポジトリの PR への書き込みアクセス、または自分のフォーク、またはメンテナーからの編集を許可するフォーク。- PR のリポジトリのクローンから、それに対する 1 つの git リモートを持つ状態で実行します。
- デフォルトの承認モードでは、すべてのシェルコマンドが最初に確認を求めます: ヘルパーの呼び出し(プッシュを含む)、
gh pr view、および修正が実行するすべてのコマンド。これは目を届けておく監視に適しています。無人で実行させるには、Auto Mode のようなコマンド実行を許可するモードを選択し、修正がリポジトリ独自のビルドおよびテストコマンドを実行することを理解しておいてください。スキル自体は、.qwen/tmp/配下の独自ファイルの読み取り、そこに修正ブリーフと返信プランを書き込むこと、およびスケジュールされたタスクの一覧表示のみを許可します。これらのファイルはクローンのメインワークツリーに存在します。リンクされたワークツリーで開始したセッションからは、それらの読み書きにも確認が求められます。 - 作成者がリポジトリにプッシュできない PR は、修正が検証される際に、あなたの
ghとgitの認証情報にアクセス可能な状態で他人のコードを実行します。このような PR は監視されません: その旨の確認(--yesではスキップされない)の後、--onceのみが提供されます。
開始時に、プッシュ先と PR への返信を行うことを 1 度だけ確認します。
チェックの動作
監視はスケジュールされたタスクであり、そのゲートはモデル外で毎回 qwen autofix-pr snapshot <n> --gate を実行します。プローブは前回の実行以降に変更されたもののみを出力するため、変化のない PR ではモデルターンを消費しません。変更があった場合、ラウンドが実行されます:
- マージまたはクローズされた PR は監視を終了します。他人のプッシュがまず取り込まれます。
- 失敗したチェック、信頼された作成者による新しいコメント、およびマージコンフリクトは、PR ワークツリーで作業する 1 つの修正エージェントに送られます。失敗したチェックについてはジョブログを読み取ります。PR 外の失敗(ネットワーク、ランナー)は修正ではなく 1 回だけ再実行されます。
- エージェントはリポジトリ独自のチェックで変更を検証し、パスした場合のみコミットします。
- コミットは PR ヘッドのファストフォワードとしてプッシュされ、強制プッシュは行われません。その間に誰かがプッシュした場合、まずその作業がマージされます。
- 対応した各レビューthreadsには返信(
Fixed in <sha>: …、Not changed: …、Needs a human decision: …)が行われ、各プッシュには 1 つのサマリーコメントが付けられます。
ラウンドがあなたに何かを確認することはありません。人間の判断が必要なものは、PR 上で「Needs a human decision」として回答され、セッションで報告されます。
どのフィードバックが反映されるか
コメントは、その作成者がリポジトリのオーナー、メンバー、コラボレーター、PR 作成者、またはボットである場合に処理されます(レビューとレビューthreadsのみ)。それ以外からのコメントは一覧表示されるだけで、処理も返信もされません。ボットは、スレッドを開始するコメントまたはレビュー内では聞かれますが、その返信(誰かへの応答)では聞かれません。GitHub が開始できなかったワークフロー(無効なワークフローファイルなど)には修正対象のログがなく、人間の判断が必要として回答されます。すべてのコメント、レビュー、CI ログはデータとして扱われます: どのフィードバックに対応するかは信頼された作成者が決定し、ツールが何をするかは決定しません。秘密の開示、テストまたは CI チェックの弱体化、強制プッシュ、無関係なコードの変更を求めるリクエストは「Needs a human decision」と回答されます。
決して行わないこと
- ワーキングツリーまたは現在のブランチに触れること: すべては
.qwen/tmp/autofix-pr-<n>/で行われます。 - 強制プッシュ、PR の履歴の書き換え、またはデフォルトブランチへのプッシュ。
- 自身の返信(それぞれ
<!-- qwen-autofix-pr:v1 -->で終わる)や信頼されない作成者への返信。 - レビューthreadsの解決、または PR タイトルや説明の編集。
制限
| 制限 | 値 | その後 |
|---|---|---|
| 監視ごとのプッシュ | 10 | 監視が停止 |
| 1 つのヘッドでの失敗チェックの再実行 | 1 | 次の失敗は実際のもの |
| レビューコメントごとの試行 | 1 | 再提示されない |
| ラウンド内の他人によるプッシュ | 2 | 監視が停止 |
停止とファイル
/autofix-pr stop <n> はスケジュールされたタスクを削除し、ワークツリー、そのブランチ、および状態ファイルを削除します。ゲートカーソルと PR の履歴は保持されるため、後の監視が同じコメントに再回答することはありません。プッシュされていない作業をまだ保持するワークツリーは保持され、レポートにその理由が示されます。qwen autofix-pr cleanup <n> --force でそれを破棄します。スケジュールされたタスクはデフォルトで 7 日後に期限切れになります(experimental.cronRecurringMaxAgeDays 設定、または QWEN_CODE_CRON_MAX_AGE_DAYS)。その後、監視はレポートなしに終了します。続行するには再度開始してください。セッションが終了すると監視も終了します。その状態ファイルはそのセッションに属したものとして保持されます。新しいセッションで /autofix-pr <n> を開始すると(または /clear または /resume の後)、監視の引き継ぎが提案され、プッシュと予算は保持されます。
ファイルはクローンのメインワークツリーの .qwen/tmp/ 配下に存在します:
| ファイル | 内容 |
|---|---|
autofix-pr-<n>/ | PR ワークツリー |
autofix-pr-<n>-state.json | 監視: 既知のヘッド、プッシュ、処理済み ID |
autofix-pr-<n>-gate.json | ゲートプローブのカーソル |
autofix-pr-<n>-snapshot.json | ラウンドが読み取る、最新ラウンドの PR のスナップショット |
autofix-pr-<n>-replies.json | GitHub による、どのボットコメントが他のコメントに応答しているか |
autofix-pr-<n>-history-*.json | 以前の PR 監視が投稿・処理した内容。stop で保持 |
autofix-pr-<n>-*.log、*.md、*.json | CI ログ、修正ブリーフ、返信プラン |
設計は docs/design/2026-10-21-autofix-pr-command.md にあります。