X(Twitter) Zenn GitHub RSS 共有

Gemini Code Assist

作成日時:2025-07-15
更新日時:2025-07-15

概要

Gemini Code Assist | AI coding assistant

コンテキストウィンドウ

AIが対話の文脈を記憶しておくための領域。
チャットが長くなってコンテキストウィンドウがいっぱいになると、古い情報を消す(忘れる)。

この問題への対応は下記。

Agentモード

Gemini Code Assistの設定で、Agentic Codingも可能。
詳細は公式ドキュメントを参照すること。

Use agentic chat as a pair programmer  |  Gemini Code Assist

ルール

回答精度を上げるために、ルール(または文脈、コンテキスト)を読み込ませる。
事前にコンテキストやルールを記載した文書を準備しておく。

ルールの自動読み込み

現状、チャット開始時に特定のルールファイルを自動で読み込む公式機能はない。
(ただし、Geminiが「関連性が高い」と判断したファイルは自動で読み込むことがある)
明示的にルールを適用させたければ、チャット開始時にその文書を読むように依頼する。

ただし、Agentモードの場合、ワークスペースルートや各ディレクトリにあるGEMINI.mdファイルを自動的に探して読み込む。
.htaccessのように、階層的にルールを適用させることができる。

例えば、プロジェクトのルートに全体的なルールを記載したGEMINI.mdを配置し、
各サブディレクトリに固有のルールを記載したGEMINI.mdを置く、といった運用が可能。

個人的な運用例

私はこの機能を模倣し、プロジェクトルートの直下にGEMINI_ROOT.mdを作成した。
全体的なペルソナやルール、そして「各ディレクトリにGEMINI.mdが存在すれば、それを参照する」という指示を記述。

ルールの効果を高める

下記のように記載する。

Geminiに参照してほしくないファイルを指定

デフォルトでは、.aiexcludeファイルか.gitignoreファイルに記載されているパターンにマッチするファイルは参照されない。

VS Codeの設定(Ctrl + ,)からContext Exclusionで検索すると、関連設定が表示される。

.aiexclude.gitignoreの両方に設定がある場合、.aiexcludeが優先される。

これらに加えて、ルールファイルに「XXXは参照しないでください」と明示的に記載することも有効。

トラブルシューティング

VS Codeが重い

メモリは3GBくらい使われるし、CPUはたまに80%を超える。

これはGeminiがインデックス作成のために多くのファイルを監視することが一因と考えられる。
settings.jsonで下記のように監視対象から不要なディレクトリを除外することで、改善する場合がある。
対象フォルダーは適宜設定されたし。

"files.watcherExclude": {
  "**/.git/objects/**": true,
  "**/.git/subtree-cache/**": true,
  "**/node_modules/*/**": true,
  "**/.hg/store/**": true
},
"search.exclude": {
  "**/node_modules": true,
  "**/bower_components": true,
  "**/*.code-search": true
}

(WIP)Microsoft Defender Antivirus

たまにCPU使用率が跳ね上がる。

GeminiのプロセスとMicrosoft Defenderの「リアルタイムスキャン」が衝突している可能性がある。
対象フォルダーやプロセスを、Microsoft Defenderの監視対象外にすれば改善される可能性がある。
ただし、セキュリティリスクを伴う。

Gemini Code Assistの設定で、Local codebase awarenessをOFFにすれば改善される可能性がある。
ONだとローカルコードベースのファイルを監視して、インデックスを作成しているらしい。
この処理がMicrosoft Defenderと衝突している可能性があるので、OFFにすればこの問題は発生しない。
Gemini Code Assistの回答の精度は低くなる。
→ダメだった。Microsoft Defenderは動くし、回答の精度もかなり下がった。

WSL + Docker + VS Codeか。
ローカルフォルダーとはリンクさせず。
Gitを介してやり取りするか。

リンク