feat: Reranking実装 (#65)#72
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…63-semantic-search
`commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。 Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。 - --rerank フラグでCross-Encoderによる再順位付けを有効化 - --rerank-top で候補数を指定(CLI > config.toml > デフォルト20) - RerankProvider トレイト + OllamaRerankProvider 実装 - Graceful Degradation(接続不可時は元結果返却+警告) - 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字) - --symbol, --related, --semantic との排他制約 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…eranking # Conflicts: # src/cli/search.rs # src/embedding/mod.rs # src/main.rs # src/output/human.rs # tests/cli_args.rs
Kewton
added a commit
that referenced
this pull request
Mar 22, 2026
…65 #66) (#74) * feat(cli): searchスニペット表示行数・文字数のCLIオプション追加 (#44) (#67) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) (#68) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(indexer): Embeddingストレージ追加 (#62) (#69) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Semantic Search実装 (#63) (#70) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Hybrid Retrieval実装 (#64) (#71) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Reranking実装 (#65) (#72) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Reranking実装 (#65) ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。 Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。 - --rerank フラグでCross-Encoderによる再順位付けを有効化 - --rerank-top で候補数を指定(CLI > config.toml > デフォルト20) - RerankProvider トレイト + OllamaRerankProvider 実装 - Graceful Degradation(接続不可時は元結果返却+警告) - 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字) - --symbol, --related, --semantic との排他制約 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 5 E2E統合テスト (#66) (#73) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Reranking実装 (#65) ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。 Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。 - --rerank フラグでCross-Encoderによる再順位付けを有効化 - --rerank-top で候補数を指定(CLI > config.toml > デフォルト20) - RerankProvider トレイト + OllamaRerankProvider 実装 - Graceful Degradation(接続不可時は元結果返却+警告) - 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字) - --symbol, --related, --semantic との排他制約 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 5 E2E統合テスト追加 (#66) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style: cargo fmtによるフォーマット修正 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: Phase 4/5 UAT結果・オーケストレーション記録追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Kewton
added a commit
that referenced
this pull request
Mar 22, 2026
* feat(cli): searchスニペット表示行数・文字数のCLIオプション追加 (#44) (#67) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) (#68) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(indexer): Embeddingストレージ追加 (#62) (#69) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Semantic Search実装 (#63) (#70) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Hybrid Retrieval実装 (#64) (#71) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Reranking実装 (#65) (#72) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Reranking実装 (#65) ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。 Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。 - --rerank フラグでCross-Encoderによる再順位付けを有効化 - --rerank-top で候補数を指定(CLI > config.toml > デフォルト20) - RerankProvider トレイト + OllamaRerankProvider 実装 - Graceful Degradation(接続不可時は元結果返却+警告) - 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字) - --symbol, --related, --semantic との排他制約 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 5 E2E統合テスト (#66) (#73) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Reranking実装 (#65) ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。 Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。 - --rerank フラグでCross-Encoderによる再順位付けを有効化 - --rerank-top で候補数を指定(CLI > config.toml > デフォルト20) - RerankProvider トレイト + OllamaRerankProvider 実装 - Graceful Degradation(接続不可時は元結果返却+警告) - 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字) - --symbol, --related, --semantic との排他制約 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 5 E2E統合テスト追加 (#66) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style: cargo fmtによるフォーマット修正 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: Phase 4/5 UAT結果・オーケストレーション記録追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: チーム共有設定ファイル実装 (#76) (#81) * feat(config): チーム共有設定ファイル実装 (#76) チームで共有可能な commandindex.toml をリポジトリルートに配置し、 インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。 主な変更: - config モジュール新規作成(src/config/mod.rs) - 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト - フィールドレベルマージによる設定統合 - config show / config path CLIサブコマンド追加 - 既存 embedding::Config を config::load_config() に移行 - 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション - 旧 .commandindex/config.toml の deprecated fallback 対応 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76) - config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示 - main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79) (#82) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: インデックス共有モード実装 (#77) (#83) * feat(config): チーム共有設定ファイル実装 (#76) チームで共有可能な commandindex.toml をリポジトリルートに配置し、 インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。 主な変更: - config モジュール新規作成(src/config/mod.rs) - 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト - フィールドレベルマージによる設定統合 - config show / config path CLIサブコマンド追加 - 既存 embedding::Config を config::load_config() に移行 - 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション - 旧 .commandindex/config.toml の deprecated fallback 対応 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): インデックス共有モード実装 (#77) export/import サブコマンドと status --verify オプションを追加。 CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。 - commandindex export: tar.gz形式でインデックスをエクスポート - commandindex import: tar.gzからインデックスをインポート(--force対応) - commandindex status --verify: インデックス整合性チェック - セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策 - 一時ディレクトリへの展開後にアトミックスワップ(データ保護) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: マルチリポジトリ横断検索実装 (#78) (#84) * feat(config): チーム共有設定ファイル実装 (#76) チームで共有可能な commandindex.toml をリポジトリルートに配置し、 インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。 主な変更: - config モジュール新規作成(src/config/mod.rs) - 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト - フィールドレベルマージによる設定統合 - config show / config path CLIサブコマンド追加 - 既存 embedding::Config を config::load_config() に移行 - 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション - 旧 .commandindex/config.toml の deprecated fallback 対応 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): マルチリポジトリ横断検索実装 (#78) ワークスペース設定ファイルによる複数リポジトリの横断検索機能を実装。 --workspace/--repo CLIオプション、SearchContext導入、rrf_merge_multiple 汎用化、WorkspaceSearchResult compositionパターンを採用。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 6 E2E統合テスト (#80) (#85) * feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(config): チーム共有設定ファイル実装 (#76) チームで共有可能な commandindex.toml をリポジトリルートに配置し、 インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。 主な変更: - config モジュール新規作成(src/config/mod.rs) - 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト - フィールドレベルマージによる設定統合 - config show / config path CLIサブコマンド追加 - 既存 embedding::Config を config::load_config() に移行 - 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション - 旧 .commandindex/config.toml の deprecated fallback 対応 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76) - config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示 - main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): インデックス共有モード実装 (#77) export/import サブコマンドと status --verify オプションを追加。 CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。 - commandindex export: tar.gz形式でインデックスをエクスポート - commandindex import: tar.gzからインデックスをインポート(--force対応) - commandindex status --verify: インデックス整合性チェック - セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策 - 一時ディレクトリへの展開後にアトミックスワップ(データ保護) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 6 E2E統合テスト追加 (#80) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style: cargo fmtによるフォーマット修正 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: Phase 6 UAT結果・オーケストレーション記録追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Kewton
added a commit
that referenced
this pull request
Mar 23, 2026
* feat(cli): searchスニペット表示行数・文字数のCLIオプション追加 (#44) (#67) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) (#68) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(indexer): Embeddingストレージ追加 (#62) (#69) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Semantic Search実装 (#63) (#70) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Hybrid Retrieval実装 (#64) (#71) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: Reranking実装 (#65) (#72) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Reranking実装 (#65) ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。 Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。 - --rerank フラグでCross-Encoderによる再順位付けを有効化 - --rerank-top で候補数を指定(CLI > config.toml > デフォルト20) - RerankProvider トレイト + OllamaRerankProvider 実装 - Graceful Degradation(接続不可時は元結果返却+警告) - 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字) - --symbol, --related, --semantic との排他制約 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 5 E2E統合テスト (#66) (#73) * feat(indexer): Embeddingストレージ追加 (#62) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(embedding): Embedding生成基盤追加 (#61) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Semantic Search実装 (#63) `commandindex search --semantic <query>` オプションを追加し、 Embeddingベースの意味検索機能を実装。 - CLIに--semanticオプション追加(--symbol/--related/query/--headingと排他) - run_semantic_search(): Config読み込み→ベクトル化→コサイン類似度検索→メタデータ取得→フィルタ→出力 - enrich_with_metadata(): file_pathグルーピング+section_heading照合 - apply_semantic_filters(): tag/path/typeポストフィルタ - SemanticSearchResult構造体+human/json/path出力対応 - SearchErrorにEmbedding/NoEmbeddingsバリアント追加 - SymbolStoreにcount_embeddings()追加 - matches_file_type() pub(crate)化でDRY - CLIテスト5件追加(排他制御+受付) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Hybrid Retrieval実装 (#64) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): Reranking実装 (#65) ハイブリッド検索結果に対してCross-Encoder方式で再順位付けを行うReranking機能を追加。 Ollama /api/generate ベースのプロンプトスコアリングで関連度を再評価する。 - --rerank フラグでCross-Encoderによる再順位付けを有効化 - --rerank-top で候補数を指定(CLI > config.toml > デフォルト20) - RerankProvider トレイト + OllamaRerankProvider 実装 - Graceful Degradation(接続不可時は元結果返却+警告) - 全体タイムアウト30秒、UTF-8安全なdocument_text切り詰め(4096文字) - --symbol, --related, --semantic との排他制約 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 5 E2E統合テスト追加 (#66) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style: cargo fmtによるフォーマット修正 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: Phase 4/5 UAT結果・オーケストレーション記録追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: チーム共有設定ファイル実装 (#76) (#81) * feat(config): チーム共有設定ファイル実装 (#76) チームで共有可能な commandindex.toml をリポジトリルートに配置し、 インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。 主な変更: - config モジュール新規作成(src/config/mod.rs) - 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト - フィールドレベルマージによる設定統合 - config show / config path CLIサブコマンド追加 - 既存 embedding::Config を config::load_config() に移行 - 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション - 旧 .commandindex/config.toml の deprecated fallback 対応 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76) - config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示 - main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79) (#82) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: インデックス共有モード実装 (#77) (#83) * feat(config): チーム共有設定ファイル実装 (#76) チームで共有可能な commandindex.toml をリポジトリルートに配置し、 インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。 主な変更: - config モジュール新規作成(src/config/mod.rs) - 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト - フィールドレベルマージによる設定統合 - config show / config path CLIサブコマンド追加 - 既存 embedding::Config を config::load_config() に移行 - 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション - 旧 .commandindex/config.toml の deprecated fallback 対応 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): インデックス共有モード実装 (#77) export/import サブコマンドと status --verify オプションを追加。 CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。 - commandindex export: tar.gz形式でインデックスをエクスポート - commandindex import: tar.gzからインデックスをインポート(--force対応) - commandindex status --verify: インデックス整合性チェック - セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策 - 一時ディレクトリへの展開後にアトミックスワップ(データ保護) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: マルチリポジトリ横断検索実装 (#78) (#84) * feat(config): チーム共有設定ファイル実装 (#76) チームで共有可能な commandindex.toml をリポジトリルートに配置し、 インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。 主な変更: - config モジュール新規作成(src/config/mod.rs) - 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト - フィールドレベルマージによる設定統合 - config show / config path CLIサブコマンド追加 - 既存 embedding::Config を config::load_config() に移行 - 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション - 旧 .commandindex/config.toml の deprecated fallback 対応 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): マルチリポジトリ横断検索実装 (#78) ワークスペース設定ファイルによる複数リポジトリの横断検索機能を実装。 --workspace/--repo CLIオプション、SearchContext導入、rrf_merge_multiple 汎用化、WorkspaceSearchResult compositionパターンを採用。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 6 E2E統合テスト (#80) (#85) * feat(cli): statusコマンド拡張(--detail/--coverage/--format json) (#79) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(config): チーム共有設定ファイル実装 (#76) チームで共有可能な commandindex.toml をリポジトリルートに配置し、 インデックス設定やEmbeddingプロバイダー設定をチーム全体で統一できるようにする。 主な変更: - config モジュール新規作成(src/config/mod.rs) - 設定ファイル優先順位: env > config.local.toml > commandindex.toml > 旧config.toml > デフォルト - フィールドレベルマージによる設定統合 - config show / config path CLIサブコマンド追加 - 既存 embedding::Config を config::load_config() に移行 - 秘匿値(api_key)のマスク表示とチーム設定での api_key 禁止バリデーション - 旧 .commandindex/config.toml の deprecated fallback 対応 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(config): Codexレビュー指摘対応 - 環境変数api_key表示と設定エラー警告 (#76) - config show で環境変数 COMMANDINDEX_OPENAI_API_KEY も考慮してマスク表示 - main.rs の設定エラー時に警告メッセージを stderr に出力(握り潰し防止) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): インデックス共有モード実装 (#77) export/import サブコマンドと status --verify オプションを追加。 CI/CDパイプラインでインデックスを事前生成し、チーム共有可能に。 - commandindex export: tar.gz形式でインデックスをエクスポート - commandindex import: tar.gzからインデックスをインポート(--force対応) - commandindex status --verify: インデックス整合性チェック - セキュリティ: パストラバーサル防止、シンボリックリンク拒否、圧縮爆弾対策 - 一時ディレクトリへの展開後にアトミックスワップ(データ保護) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: Phase 6 E2E統合テスト追加 (#80) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * style: cargo fmtによるフォーマット修正 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: Phase 6 UAT結果・オーケストレーション記録追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): --related 複数ファイル対応 (#87) (#95) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): diff サブコマンド実装 (#92) (#98) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): --index-path オプション実装 (#88) (#96) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(watch): add file change monitoring with auto-update (#93) (#94) Add `commandindex watch` subcommand that monitors filesystem changes and automatically runs incremental index updates with debouncing. - notify crate for cross-platform FS event monitoring - Debouncer with configurable interval and starvation prevention - Extension filtering (md/ts/tsx/py) and .commandindex/ exclusion - Graceful shutdown via ctrlc + AtomicBool - Recoverable/fatal error classification for resilient operation - Watcher error propagation and overflow-safe max_wait calculation - 29 unit tests + 4 CLI parse tests, all existing tests unaffected Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): stdin パイプ入力対応 (#89) (#97) - impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析) - search --related-stdin オプション追加(stdin からの複数ファイル関連検索) - cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除) - human/json/path 3形式の出力サポート - エッジケース対応(TTYエラー、空stdin、不正パス warning) - E2Eテスト・CLI排他テスト・出力フォーマットテスト追加 Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: impact サブコマンド実装 (#90) (#99) * feat(search): --related 複数ファイル対応 (#87) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): stdin パイプ入力対応 (#89) - impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析) - search --related-stdin オプション追加(stdin からの複数ファイル関連検索) - cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除) - human/json/path 3形式の出力サポート - エッジケース対応(TTYエラー、空stdin、不正パス warning) - E2Eテスト・CLI排他テスト・出力フォーマットテスト追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): impact サブコマンド実装 (#90) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: --changed-since オプション実装 (#91) (#100) * feat(search): --related 複数ファイル対応 (#87) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): stdin パイプ入力対応 (#89) - impact サブコマンド新規追加(stdin/引数からファイルリスト入力、関連ファイル集約分析) - search --related-stdin オプション追加(stdin からの複数ファイル関連検索) - cli/stdin.rs 共通ユーティリティ(TTY検出、パスバリデーション、正規化、重複排除) - human/json/path 3形式の出力サポート - エッジケース対応(TTYエラー、空stdin、不正パス warning) - E2Eテスト・CLI排他テスト・出力フォーマットテスト追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): impact サブコマンド実装 (#90) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(search): --changed-since オプション実装 (#91) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): impact/diff/changed-since/related-stdinのインデックスパス検出修正 impact, diff, --changed-since, --related-stdin がハードコードの Path::new(".") を使用していたため、テスト環境やサブディレクトリから 実行した際にインデックスが見つからないバグを修正。 resolve_index_path() を使用して config/CLI/デフォルトの優先順位で インデックスパスを解決するように統一。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: v0.1.0シナリオ分析・UAT結果・オーケストレーション記録追加 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #65
🤖 Generated with Claude Code