理系学生日記

おまえはいつまで学生気分なのか

GitHub Copilot coding agentに放置できるタスクを任せて月額10ドルで元を取りたい

GitHub Copilotには「Local Agent」(VS Code。昔はagent modeと呼んでいたはずですが、最新ドキュメントを見るとLocal Agentと読んでいる?)と「coding agent」という、名前が似すぎている2つの機能があります。僕も最初は混乱しました。「どっちもagentって書いてあるけど、何が違うの?」と。Microsoftとややこしい製品名をつける競争でもしているんでしょうか。

ところが、この2つは課金モデルが全く違います。そして、この違いを理解していないと、プレミアムリクエストを無駄に消費してしまいます。

以前、Claude Code on the Webを使ってiPhoneからzettelを作成する仕組みについて書きました。これは確かに便利だったんですが、使用量制限という課題がありました。そこで最近、人間の介在が不要なタスクについては、GitHub Copilot coding agentに寄せはじめました。

zettel作成のような「タスクを投げたら基本的に人間は見てなくてよい」作業は、1セッション1プレミアムリクエストのcoding agentと相性が抜群に見えます。実際に運用してみると、これが思った以上にお得でした。

GitHub Copilot Local Agentとcoding agentという紛らわしすぎる名前

まず整理しましょう。GitHub Copilotには2つの「エージェント機能」があります。名前が似ているので混同しやすいですが、全く別物です。

1つ目は「Local Agent」です。これはVS Codeエディタ内で動作します。チャット形式で会話しながら、コードを書いたりリファクタリングしたりできます。エディタから離れることなく、対話的に開発を進められるのが特徴です。

Local Agent

2つ目は「coding agent」です。こちらはブラウザベースで、GitHubのIssueやPull Request上で動作します。Issueに@copilotをメンションすると、Copilotが内容を読んで実装を開始し、Pull Requestを作ってくれます。人間はレビューするだけで済みます。

Agent

どちらも「エージェント」という言葉が入っていますが、動作する場所も、課金の考え方も、使い方も違います。名前が紛らわしくてつらい。

セッション課金 vs プロンプト課金という決定的な違い

課金モデルの違いこそ、この2つのエージェントを理解する鍵です。

Local Agentは「プロンプト課金」です。チャットで1回質問を送るたびに、1プレミアムリクエストを消費します。短い質問でも、複雑な質問でも、1プロンプト1リクエストです。会話を重ねるほど、プレミアムリクエストが減っていきます。

Copilot Chat uses one premium request per user prompt, multiplied by the model's rate. This includes ask, edit, agent, and plan modes in Copilot Chat in an IDE.

Requests in GitHub Copilot - GitHub Docs

対してcoding agentは「セッション課金」です。1つのIssueに対応するのが1セッションで、これが1プレミアムリクエストを消費します。ここが重要なのですが、タスクがどれだけ複雑でも、1セッション1リクエストです。GitHubの公式Changelogにも「タスクの複雑さに関係なく1セッション」と明記されています。

The entire session—regardless of how many files are modified or how complex the task is—uses one premium request.

GitHub Copilot coding agent now uses one premium request per session - GitHub Changelog

Copilot coding agent uses one premium request per session, multiplied by the model's rate. A session begins when you ask Copilot to create a pull request or make one or more changes to an existing pull request. In addition, each real-time steering comment made during an active session uses one premium request per session, multiplied by the model's rate.

Requests in GitHub Copilot - GitHub Docs

ただし、ここで重要な注意点があります。どちらのエージェントでも、選択するモデルによってプレミアムリクエストの消費量が変わります。Claude Sonnetなら倍率1倍ですが、Claude Opusなら倍率10倍になります。つまり、Opusを使うと、同じ1プロンプトや1セッションでも、実質的には10プレミアムリクエストを消費することになります。

具体例で比較してみましょう。「ユーザー認証APIを実装してテストまで完成させる」というタスクがあるとします。

Local Agentで進める場合を考えてみましょう。「認証APIの設計を提案して」という質問で1リクエスト消費します。設計が決まったら「設計Aで実装して」と指示してまた1リクエスト。エラーが出れば「このエラーを修正して」でさらに1リクエスト。「テストを追加して」でもう1リクエスト。合計4リクエストです。

coding agentで同じタスクをやると、Issueに「ユーザー認証APIを実装してテストまで完成させる」と書いてアサインするだけです。Copilotが勝手に分析、実装、テスト作成、PR作成まで完走します。消費するのは1リクエストだけ。

この違いは大きいです。難しいタスクほど、IDE agent modeでは会話を重ねることになり、プレミアムリクエストがどんどん消費されます。一方、coding agentは何往復しようが1セッション1リクエストで済みます。もちろん、Copilotが精度を保てるだけのコンテキストエンジニアリングは必要ですが。

ただし、coding agentにも追加課金のポイントがあります。それが「steering comment」です。セッション実行中に人間が介入してコメントを入れると、1コメントにつき1プレミアムリクエストが追加で消費されます。とはいえ、適切にIssueを書けば、steering commentなしで完走できる…といいですね。

zettel作成をClaude Codeに任せていた頃の話

以前、Obsidian GitとClaude Code on the Webを組み合わせて、iPhoneからでもzettelを作れる仕組みを作りました。

AIとの壁打ち結果をClaude Code on the Webに投げると、記事を分析して複数のzettelを抽出し、Pull Requestとして提案してくれます。iPhoneでレビューして、良ければマージ。これでzettelが完成します。

この仕組み、確かに便利でした。満員電車の中で技術記事を読んでいて「これzettelにしたいな」と思ったら、その場でiPhoneから指示を出せます。PCを開く必要がありません。

だけど、問題がありました。Claude Codeには使用量制限があります。5時間ごとにリセットされる制限で、使いすぎるとしばらく待たなければなりませんし、本来の開発にClaude Codeが使えなくなってしまう。

そして気づいたんです。zettel作成って、タスクを投げたら基本的に人間は見てなくてよいタスクだと。

記事のURLを渡して「この記事からzettelを抽出して」と指示します。あとは放置です。コーヒーを淹れに行ってもいいし、別のタスクをやってもいい。戻ってきたらzettelができています。最後に軽くレビューして、PRをマージするだけ。このタイプのタスクこそ、coding agentに最適っぽく感じます。

タスクを投げたら人間は基本見てなくてよい、という判断基準

どのようなタスクがcoding agentに向いているか。それは「人間の介在が最小限で済むタスク」です。ポイントはたぶん途中の判断をAIに任せられることです。「この概念は1つのzettelにまとめるべきか、2つに分けるべきか」といった判断を、人間がいちいち確認しなくても大丈夫。最終的なレビューだけすればよい。

僕のzettel作成ワークフローは、こんな感じです。GitHubのIssueに生成AIとの壁打ち結果とかを貼り付けて、「この記事からzettelを抽出してください」と書きます。@copilotをメンションしてアサイン。あとは放置。数十分後、Pull Requestが作られています。iPhoneでPRを開いて、内容を確認。問題なければマージ。これでzettelがObsidianに同期されます。

人間がやることは、Issue作成とPRレビューだけ。実装部分には一切関与しません。これが「放置できるタスク」の本質です。

逆に、頻繁に人間の判断・HITLを必要とするタスクは向いていません。「設計の方向性を決める」「複数の選択肢から選ぶ」「途中経過を見て軌道修正する」といったタスクは、Local AgentやClaude Codeの方が適しています。

coding agentが実際にこなしたタスク量を見ると1プレミアムリクエストが安く感じる

実際にcoding agentでzettel作成をやってみると、そのコストパフォーマンスの良さに驚きます。

実際の例

上記は実際に壁打ち結果を複数のzettelにまとめ直してもらったときのcoding agentのログですが、1回のセッションで、多くのツール利用・推論を行なっていることがわかります。12分45秒。記事の内容によっては、もっと多いこともあります。各zettelにはタイトル、タグ、本文、関連ノートへのリンクがあり、Obsidianのフォーマットに従っています。

これが1プレミアムリクエストです。

GitHub Copilot Proプランは月額10ドルで、300プレミアムリクエストが使えます。仮に1日に5回、zettel作成にcoding agentを使うとします。月30回で150リクエスト消費。全然余裕じゃん。

Claude Codeと比較すると、さらに違いが際立ちます。Claude Codeはトークン量による制限で、5時間ごとのリセット制限があり、使いすぎると待たなければなりません。今回、Web上のエントリを貼り付けてzettel化してもらったら、コストが$0.86かかった。それだけトークン使っている。そうすると、やっぱりGitHub Copilot coding agentのコスパは悪くない。

Claude Code

もちろん、モデル倍率という要素もあります。Copilotでは使用するモデルによって、プレミアムリクエストの消費量が変わります。Sonnetなら倍率1倍、Opusなら倍率10倍です。僕はzettel作成にはSonnetを使っています。タスクが定型的なので、Opusの高性能は不要です。これでコストをさらに抑えられます。

zettel作成に限らず、「放置できるタスク」を見つけて、どんどんcoding agentに任せていけば、月額10ドルで結構な仕事量をこなせそうです。

最後に

GitHub Copilotの「agent mode」と「coding agent」は、名前が似ているけれど課金モデルが全く違います。IDE agent modeはプロンプトごと、coding agentはセッションごとの課金です。

セッション課金のcoding agentは、「放置できるタスク」に最適です。zettel作成のような、タスクを投げたら人間は基本見てなくてよい作業こそ、1プレミアムリクエストで完結するcoding agentに任せるべきです。

実際に運用してみると、1セッションでこれだけの成果物が生まれるのかと驚きます。月額10ドルで300リクエスト。週に数回使うだけで、十分に元が取れます。

今後も、「人間が見てなくても大丈夫」なタスクを見つけたら、coding agentに任せていこうと思います。