概要
全文検索結果をLLMプロンプト向けに最適化した軽量フォーマット --format compact を追加する。
背景・課題
search "fullscreen" はuseFullscreen.tsやMarkdownEditor.tsx等、Issue #301に必要なファイルを正しく発見している。検索機能自体は有効。
しかし --format json の出力が16KBに達し、LLMプロンプトに渡すと逆効果(P6で変更0件の主因)。
現在の出力(1件あたり)
{
"body": "/**\n * useFullscreen Hook\n *\n * Provides fullscreen functionality with Fullscreen API support\n * and CSS fallback for browsers without API support (e.g., iOS Safari).\n * ...(数百行)",
"heading": null,
"kind": "code",
"metadata": {"language": "typescript", "symbols": [...]},
"path": "src/hooks/useFullscreen.ts",
"score": 42.5,
"section_range": {"end": 328, "start": 1},
"snippet": "..."
}
問題:
body にファイル全文が含まれる(数百行)
metadata, section_range, score 等のメタデータがLLMには不要
- 5件でも16KB、20件なら82KBに膨張
既存フォーマットとの比較
| フォーマット |
内容 |
LLM向け適性 |
--format json |
全メタデータ+全文 |
冗長すぎる |
--format path |
ファイルパスのみ |
情報不足(中身がない) |
--format human |
人間向け表示 |
構造化されていない |
--format compact |
パス:行番号 + 該当行 |
LLMに最適 |
提案
commandindexdev search "fullscreen" --format compact --limit 5
期待される出力:
src/hooks/useFullscreen.ts:185 export function useFullscreen(options: UseFullscreenOptions)
src/components/worktree/MarkdownEditor.tsx:42 const { isFullscreen, toggleFullscreen } = useFullscreen({
src/config/z-index.ts:18 MAXIMIZED_EDITOR: 55,
src/hooks/useSwipeGesture.ts:95 export function useSwipeGesture(options: UseSwipeGestureOptions)
tests/unit/hooks/useFullscreen.test.ts:12 import { useFullscreen } from '@/hooks/useFullscreen';
設計方針
- 1行1結果:
パス:行番号\tマッチ行の内容
- grepライクなシンプル出力
- JSONメタデータなし
- snippet-linesオプションで前後N行を表示可能
- 推定サイズ: 5件で500バイト程度(jsonの1/30以下)
期待効果
- 検索結果のプロンプトサイズを16KB → 数百バイトに削減
- searchの有用性(正しいファイル発見力)を維持しつつ、LLMコンテキストの圧迫を回避
--format path(パスのみ)と --format json(全情報)の中間を提供
優先度
中(実装難度: 低、期待効果: 中)
関連
概要
全文検索結果をLLMプロンプト向けに最適化した軽量フォーマット
--format compactを追加する。背景・課題
search "fullscreen"はuseFullscreen.tsやMarkdownEditor.tsx等、Issue #301に必要なファイルを正しく発見している。検索機能自体は有効。しかし
--format jsonの出力が16KBに達し、LLMプロンプトに渡すと逆効果(P6で変更0件の主因)。現在の出力(1件あたり)
{ "body": "/**\n * useFullscreen Hook\n *\n * Provides fullscreen functionality with Fullscreen API support\n * and CSS fallback for browsers without API support (e.g., iOS Safari).\n * ...(数百行)", "heading": null, "kind": "code", "metadata": {"language": "typescript", "symbols": [...]}, "path": "src/hooks/useFullscreen.ts", "score": 42.5, "section_range": {"end": 328, "start": 1}, "snippet": "..." }問題:
bodyにファイル全文が含まれる(数百行)metadata,section_range,score等のメタデータがLLMには不要既存フォーマットとの比較
--format json--format path--format human--format compact提案
commandindexdev search "fullscreen" --format compact --limit 5期待される出力:
設計方針
パス:行番号\tマッチ行の内容期待効果
--format path(パスのみ)と--format json(全情報)の中間を提供優先度
中(実装難度: 低、期待効果: 中)
関連