概要
context コマンドの出力にファイル内容(コード本体)を含めるオプションを追加する。
背景・課題
現在の context コマンドは依存関係のメタデータ(パス、シンボル名、スコア)のみを出力し、ファイルの中身は含まれない。
現在の出力(推定トークン119)
{
"target_files": ["src/components/worktree/TerminalDisplay.tsx"],
"context": [
{"path": "@/hooks/useTerminalScroll", "relation": "import_dependency", "score": 0.9, "symbols": ["useTerminalScroll"]}
],
"summary": {"estimated_tokens": 119}
}
問題
- メタデータだけでは「useFullscreenをどう使うか」「MarkdownEditorがフルスクリーンをどう実装しているか」がわからない
- LLMは結局
file.read で全てのファイルを読みに行く必要がある
- contextがfile.readの代替にならないため、ツール呼び出し回数の削減効果がない
検証データ
8パターンのテストで、CommandIndex contextを提供したP2でもfile.readが13回発行された。contextが提供したメタデータ119トークンではfile.readの代替にならず、LLMは全ファイルを自分で読みに行った。
提案
commandindexdev context src/hooks/useFullscreen.ts --include-content --max-tokens 4000
期待される出力:
{
"target_files": ["src/hooks/useFullscreen.ts"],
"content": "export function useFullscreen({ elementRef, onEnter, onExit }) {\n const [isFullscreen, setIsFullscreen] = useState(false);\n ...\n}",
"context": [
{
"path": "src/components/worktree/MarkdownEditor.tsx",
"relation": "importer",
"content_snippet": "const { isFullscreen, toggleFullscreen } = useFullscreen({ elementRef: editorRef, ... });"
}
],
"summary": {"estimated_tokens": 3200}
}
ポイント
- ターゲットファイルのコード本体を含む
- 関連ファイル(importerを含む)の該当箇所のスニペットを含む
--max-tokens でトークン量を制御(関連度順に切り詰め)
- これにより、LLMが
file.read を発行する必要が大幅に減る
期待効果
- LLMの
file.read 回数を実質的に削減(現在は代替にならない)
- LLMプロンプトにコード本体を含めることで、file.editの
old_string精度が向上
- 「contextを使う意味」が初めて生まれる
優先度
高(実装難度: 中、期待効果: 高)
関連
概要
contextコマンドの出力にファイル内容(コード本体)を含めるオプションを追加する。背景・課題
現在の
contextコマンドは依存関係のメタデータ(パス、シンボル名、スコア)のみを出力し、ファイルの中身は含まれない。現在の出力(推定トークン119)
{ "target_files": ["src/components/worktree/TerminalDisplay.tsx"], "context": [ {"path": "@/hooks/useTerminalScroll", "relation": "import_dependency", "score": 0.9, "symbols": ["useTerminalScroll"]} ], "summary": {"estimated_tokens": 119} }問題
file.readで全てのファイルを読みに行く必要がある検証データ
8パターンのテストで、CommandIndex contextを提供したP2でもfile.readが13回発行された。contextが提供したメタデータ119トークンではfile.readの代替にならず、LLMは全ファイルを自分で読みに行った。
提案
期待される出力:
{ "target_files": ["src/hooks/useFullscreen.ts"], "content": "export function useFullscreen({ elementRef, onEnter, onExit }) {\n const [isFullscreen, setIsFullscreen] = useState(false);\n ...\n}", "context": [ { "path": "src/components/worktree/MarkdownEditor.tsx", "relation": "importer", "content_snippet": "const { isFullscreen, toggleFullscreen } = useFullscreen({ elementRef: editorRef, ... });" } ], "summary": {"estimated_tokens": 3200} }ポイント
--max-tokensでトークン量を制御(関連度順に切り詰め)file.readを発行する必要が大幅に減る期待効果
file.read回数を実質的に削減(現在は代替にならない)old_string精度が向上優先度
高(実装難度: 中、期待効果: 高)
関連
--max-tokensの実効化と連動