💎

Gemini CLIのソースコードをClaude Codeに入れてC#にポーティングした話

に公開

はじめに

先週リリースされたGemini CLIはオープンソースの自律型コード生成AIです。オープンソースでソースコードが読めるということは、自律型のAIエージェントがどのように作られているのかを学ぶことができるということです。自律型のAIエージェントがどのように実装されているか、いまいちピンときていなかったため、先週はClaude Codeに手伝ってもらいながら読んでみました。

https://github.com/google-gemini/gemini-cli

ホロラボではいわゆるXRや空間コンピューティングを軸にしており、開発環境はUnityというゲームエンジンを利用することが多いです。Unityは独自の開発環境のため、今のところコード生成AIの恩恵を他の開発環境と比較すると多く受けることができません。そのため、独自のMCPを開発したり、Unity自体が開発用のAIを準備していたりといった状況です。

ふとソースコードがあるなら、Unityで主に利用するC#に変換できるのではないか、C#に変換したらUnityのEditor拡張などと合わせて、より密に連携できるのではないか。と思い立ち、Claude CodeにGemini CLIのソースコードを入れて、これのC#版を作ってと依頼したところ、1時間半ほどで動作するものが出来上がってきました。

C#版については、セキュリティ周りの実装などしていないので、今のところ公開する予定はありませんが、Claude Codeで同じようにできるので手元でやってみてください。Gemini CLIの無料版でもできるのかも。

できたもの

Xの投稿にあげたような形で動作します。ぱっと見Gemini CLIのように見えますが起動がdotnetとなっています。
作り始めたのがXの記録で2025年6月29日 午後3:59、動き始めたのが2025年6月29日 午後5:30なのでちょうど1時間半ですね。

https://x.com/kaorun55/status/1939239946327658797

もちろん全ての機能ではなく、ユーザーからの依頼に対して、Geminiが回答をファイルに書き込むところまでです。ただ、ここまで動くと自律型AIの最低限の機能としては実装され、あとはツール類を増やす、機能を増やすといった実装になります。

ソースコードの分析とプロンプト

参考に。ということで、ソースコードの分析とプロンプトをアップしています。

分析についてもClaude Codeに読み解いてまとめてもらい、自分が知りたいところを追加で質問してまとめにも追記しています。

基本的にはユーザーの入力をGeminiが解析し、必要であればツール類(ファイルI/Oや検索など)をFunction Calingで実行しながら、実現していく形になっています。

https://gist.github.com/kaorun55/bbc146a7999b8f9568b804cffa607d26

プロンプトは/packages/core/src/core/prompts.ts に記載されています。これを抜き出したものと、その日本語訳をgistにあげています。

https://gist.github.com/kaorun55/929c869cd42bf5f59b09ab9fed425aa5

リモートMCPの実装

MCPについてもGemini CLIで実装されているため、そのままC#版にも移植してもらいました。特に最近ではローカルで動作するMCPの他に、リモートで動作するMCPも増えてきたので、その実装を入れてもらっています。なお、リモートMCPの実装はClaude Codeも難儀していたので、その記録は別途公開しようと思います。最終的にはRoo Codeのリポジトリからソースを読ませて、curlで動作確認をしながら実装完了しています。

リモートMCPサーバーの一覧。

リモートMCPを使って情報を集めた様子。

おまけ

移植状況および移植進捗率は下記のようです。機能実装の他に、セキュリティ関連、配布関連が未実装となっています。

移植進捗率

  • Core機能: 約40% 完了
  • CLIアプリケーション: 約60% 完了
  • ツール実装: 約30% 完了
  • 全体: 約45% 完了

移植状況

✅ 実装済み

Core機能

  • Gemini APIクライアント(ストリーミング対応)
  • ツールシステム基盤(ITool, BaseTool, ToolRegistry)
  • 基本的なファイルシステムツール
    • ReadFile(ファイル読み取り)
    • WriteFile(ファイル書き込み)
    • EditFile(ファイル編集)
  • MCPサーバー統合
  • 設定管理システム(GeminiConfig)
  • エラーハンドリングとロギング

CLIアプリケーション

  • コマンドライン引数処理(System.CommandLine)
  • インタラクティブモード
  • 単一メッセージモード
  • 会話管理(ConversationManager)
  • コマンド体系
    • config(設定管理)
    • tools(ツール一覧)
  • カラフルなターミナルUI(Spectre.Console)

🚧 開発中・未実装

Core機能

  • 認証システム
    • OAuth2フロー
    • APIキー管理の高度化
    • トークンキャッシング
  • 追加ツール
    • Glob(ファイルパターンマッチング)
    • Grep(ファイル内容検索)
    • Shell(シェルコマンド実行)
    • WebSearch(Google検索統合)
    • WebFetch(Webコンテンツ取得)
    • MemoryTool(セッション間メモリ)
  • プロンプトテンプレートシステム

CLIアプリケーション

  • 履歴管理(永続化)
  • プラグインシステム
  • 非同期ストリーミング表示の最適化
  • マルチターン会話の高度な制御
  • エクスポート機能(Markdown、JSON)

インフラ・配布

  • NuGetパッケージング
  • グローバルツールとしての配布
  • GitHub Actions CI/CD
  • クロスプラットフォームビルド
  • Unityパッケージ対応
ホロラボのテックブログ

Discussion