コンテキストメンション(Context mentions)
@メンションを使用してプロジェクトの特定の要素をBobの会話内で直接参照し、正確でコンテキストに応じた支援を受けられます。
メンションの種類
コンテキストメンションを使用すると、プロジェクトのさまざまな要素を参照できます:
| メンションの種類 | 形式 | 説明 | 使用例 |
|---|---|---|---|
| ファイル | @/path/to/file.ts | リクエストのコンテキストにファイル内容を含めます | Explain the function in @/src/utils.ts |
| フォルダ | @/path/to/folder | フォルダ直下のすべてのファイルの内容を含めます(非再帰的) | Analyze the code in @/src/components |
| Problems | @problems | IBM Bob の「問題(Problems)」パネルの診断内容を含めます | @problems Fix all errors in my code |
| ターミナル | @terminal | 最近のターミナルコマンドとその出力を含めます | Fix the errors shown in @terminal |
| Gitコミット | @a1b2c3d | ハッシュで特定のコミットを参照します | What changed in commit @a1b2c3d? |
| Gitの変更 | @git-changes | コミットされていない変更を表示します | Suggest a message for @git-changes |
| URL | @https://example.com | ウェブサイトのコンテンツを取り込みます | Summarize @https://docusaurus.io/ |
ファイルメンション
ファイルメンションは最も一般的に使用されるタイプで、特定のファイルの内容をBobとの会話に含めることができます。
| 機能 | 詳細 |
|---|---|
| 形式 | @/path/to/file.ts(ワークスペースのルートから常に / で始めます) |
| 提供するもの | 行番号付きの完全なファイル内容 |
| 対応ファイル | テキストファイル、PDF、およびDOCXファイル(テキスト抽出あり) |
| 対応場所 | 初期リクエスト、フィードバックへの応答、およびフォローアップメッセージ |
| 制限事項 | 非常に大きなファイルは切り捨てられる場合があります。バイナリファイルはサポートされていません |
大きなファイルの場合は、ファイルのパスの後に行番号を続けることで、特定のセクションをメンションできます。例えば @/src/app.js:10-20 と指定すると、10〜20行目のみを含めることができます。
フォルダメンション
フォルダメンションを使用すると、一度に複数のファイルを参照でき、ディレクトリからより広いコンテキストを提供できます。
| 機能 | 詳細 |
|---|---|
| 形式 | @/path/to/folder(末尾のスラッシュなし) |
| 提供するもの | ディレクトリ内のすべてのファイルの完全な内容 |
| 含まれるもの | フォルダ直下の非バイナリテキストファイルの内容(非再帰的) |
| 最適な用途 | ディレクトリ内の複数のファイルからコンテキストを提供する場合 |
| ヒント | 大きなディレクトリをメンションする際は、context window の制限に注意してください |
フォルダメンションは非再帰的です。つまり、指定されたフォルダの直下にあるファイルのみが含まれ、サブフォルダ内のファイルは含まれません。
Problemsメンション
Problemsメンションは、IBM Bobの「問題」パネルから診断情報を取り込み、複数の問題を一度に解決するのに役立ちます。
| 機能 | 詳細 |
|---|---|
| 形式 | @problems |
| 提供するもの | IBM Bob の「問題」パネルからのすべてのエラーと警告 |
| 含まれるもの | ファイルパス、行番号、および診断メッセージ |
| グループ化 | 分かりやすくするために、ファイルごとに整理された問題 |
| 最適な用途 | 手動でコピーすることなくエラーを修正する場合 |
使用例: @problems Can you help me fix all these issues?
ターミナルメンション
ターミナルメンションは最近のコマンド出力をキャプチャし、ビルドエラーのデバッグやコマンド結果の分析をサポートします。
| 機能 | 詳細 |
|---|---|
| 形式 | @terminal |
| キャプチャするもの | 最後のコマンドとその完全な出力 |
| 保持するもの | ターミナルの状態(ターミナルはクリアされません) |
| 制限事項 | 表示可能なターミナルバッファの内容に制限されます |
| 最適な用途 | ビルドエラーのデバッグやコマンド出力の分析 |
ビルドの失敗をトラブルシューティングするときは、
What is wrong with @terminal? と入力してみることで、手動で出力をコピーすることなく、エラーに関する即座の洞察を得ることができます。
Gitメンション
Gitメンションは、コミットや変更を参照することで、バージョン管理の作業をサポートします。
| タイプ | 形式 | 提供するもの | 制限事項 |
|---|---|---|---|
| コミット | @a1b2c3d | コミットメッセージ、作成者、日付、および完全な diff | Gitリポジトリ内でのみ機能します |
| 作業中の変更 | @git-changes | git status の出力とコミットされていない変更の diff | Gitリポジトリ内でのみ機能します |
使用例: What's the purpose of @a1b2c3d? または Suggest a commit message for @git-changes
URLメンション
URLメンションを使用すると、Bobとの会話で外部のウェブコンテンツを参照できます。
| 機能 | 詳細 |
|---|---|
| 形式 | @https://example.com |
| 処理 | ヘッドレブラウザを使用してコンテンツを取得します |
| クリーンアップ | スクリプト、スタイル、およびナビゲーション要素を削除します |
| 出力 | 読みやすさのためにコンテンツを Markdown に変換します |
| 制限事項 | 複雑なページは完全に変換されない場合があります |
URLメンションはドキュメントを参照するのに便利です。
Can you explain @https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise を試して、公式ドキュメントをコンテキストとして使用して概念の理解を深めてみてください。
コンテキストメンションの使用方法
チャット入力欄に @ と入力して、提案 dropdown を表示させます。
入力を続けて提案をフィルタリングするか、矢印キーを使用して移動します。
Enter キーまたはマウスのクリックで選択します。
1つのリクエストで複数のメンションを組み合わせる:「Fix @problems in @/src/component.ts」
テキストを選択した状態でキーボードショートカット ⌘ + L を使用すると、それをチャットに追加できます。
dropdown には以下が自動的に提案されます:
- 最近開いたファイル
- 表示されているフォルダ
- 最近の Git コミット
- 特別なキーワード(
problems、terminal、git-changes) - 現在開いているすべてのファイル(除外設定やディレクトリフィルタに関係なく)
dropdown はノイズを減らすために、node_modules、.git、dist、out などの一般的なディレクトリを自動的に除外します。ただし、手動で入力した場合はその内容を含めることができます。
1つのリクエストで複数のメンションを組み合わせることができます。Compare @/src/v1/api.js with @/src/v2/api.js and explain the differences を試してみてください。
重要な挙動
除外ファイルとの相互作用
コンテキストメンションは、除外されたファイルと相互作用する際に特定の挙動を示します:
| 挙動 | 説明 |
|---|---|
.bobignore のバイパス | ファイルおよびフォルダの @mentions は、コンテキストのコンテンツを取得する際に .bobignore のチェックをバイパスします。直接メンションされた場合は、除外されたファイルの内容も含まれます。 |
.gitignore のバイパス | 同様に、ファイルおよびフォルダの @mentions は、コンテンツを取得する際に .gitignore ルールを考慮しません。 |
| Gitコマンドの尊重 | Git関連のメンション(@git-changes、@commit-hash)は、Gitコマンドに依存しているため、.gitignore を尊重します。 |
コンテキストメンションは除外ルールをバイパスするため、通常はBobやGitによって無視される特定のファイルを参照できます。この機能は、生成されたファイルや、通常無視されるその他のコンテンツについて議論する必要がある場合に特に便利です。
まとめ
コンテキストメンションは、プロジェクトの要素を正確に参照できるようにすることで、Bobとのやり取りを強化します。コードをコピー&ペーストしたり、ファイルの場所を説明したりする代わりに、議論している内容を直接参照できます。
異なるメンションタイプの効果的な組み合わせ:
Fix @problems in @/src/components and explain what was wrongReview @git-changes and suggest improvementsCompare @/v1/api.js with @https://api-docs.example.com and check for inconsistencies
コンテキストメンションを効果的に使用することで、Bobとより正確にコミュニケーションをとり、より的を絞った支援を受けることができます。