Resolve コマンド設計
目的
デフォルトブランチとのマージコンフリクトによってブロックされているプルリクエストに対して、メンテナーがトリガーできる @qwen-code /resolve コマンドを追加する。
対象範囲
最初のバージョンは意図的に保守的な設計としている:
- このコマンドは
QwenLM/qwen-codeでのみ実行される。 - リクエスト元には
write、maintain、またはadminの権限が必要である。 - 対象はオープン状態のプルリクエストでなければならない。
- プルリクエストのブランチはベースリポジトリ内に存在しなければならない。
- フォークからのプルリクエストは、プッシュされる代わりにサポート対象外として報告される。
- エージェントは GitHub トークンを受け取らない。ローカルでの編集とコミットのみが可能である。
- 別の publish ステップで
CI_DEV_BOT_PATを注入し、プッシュとコメントを行う。
ワークフロー
- 既存の PR コマンドワークフローが
issue_commentまたはworkflow_dispatchを処理し、対象のプルリクエストを解決する。 - 認可ジョブが
CI_BOT_PATを使用して、リクエスト元の共同作業者権限をチェックする。 - resolve ジョブは、コメントトリガーに対して
eyesリアクションで応答する。 - ジョブはプルリクエストのメタデータを読み取り、クローズ済み、ドラフト、コンフリクトなし、またはフォークからのプルリクエストを拒否する。
- 対象となるプルリクエストに対して、ジョブは永続化された認証情報を無効にしてプルリクエストのブランチをチェックアウトし、ベースブランチをフェッチして、ブランチがまだ期待される head SHA を指していることを検証する。
- Qwen Code は GitHub 認証情報なしで実行され、
origin/<base>をマージし、コンフリクトを解決して結果を検証し、コミットしてサマリーアーティファクトを書き出す。 - 決定論的な検証ステップは、未解決のコンフリクト、サマリーの欠落、またはチェックの失敗時に失敗する。
- publish ステップは、元の head SHA に対して
--force-with-leaseでプッシュし、コンフリクト解決のサマリーをコメントする。
対象外
- フォークからのプルリクエストへの自動プッシュ。
- 外部コントリビューターのための代替プルリクエストの作成。
- 古いコンフリクト済みプルリクエストの定期スキャン。
- 直接のマージコンフリクト以外のマージ不可能状態の解決。
Last updated on