Skip to content

contextコマンドにナレッジグラフのエッジを統合する #171

@Kewton

Description

@Kewton

概要

contextコマンドにはナレッジグラフ統合が既に実装されている(score_knowledge_graph()find_knowledge_related())が、以下の改善点が残っている:

  1. 重みの最適化: KNOWLEDGE_GRAPH_WEIGHT: 0.8 が低く、--max-files の枠内でimport依存に埋もれる可能性
  2. スニペット品質: 現在は本文の単純切り詰めであり、設計判断の要約になっていない
  3. リレーション優先度: relation_to_string()KnowledgeGraph が最低優先度のため、複合リレーション時に隠れる

現状(実装済み機能)

// related.rs - ナレッジグラフスコアリング(実装済み)
KNOWLEDGE_GRAPH_WEIGHT: 0.8
score_knowledge_graph() → store.find_knowledge_related(target)

// context.rs - エンリッチメント(実装済み)
has_knowledge_graph → heading + snippet 付与
relation_to_string()"knowledge_graph"

現在の課題

  1. KnowledgeGraph の重みが 0.8 で、MarkdownLink(1.0) や ImportDependency(0.9) より低い
  2. スニペットは truncate_body() による機械的な切り詰めのみで、設計判断の要約にならない
  3. relation_to_string()KnowledgeGraph が最低優先度(6番目)

期待される改善結果

{
  "context": [
    {"path": "tests/unit/config/z-index.test.ts", "relation": "import_dependency", "score": 2.2},
    {"path": "dev-reports/design/issue-299-ipad-layout-fix-design-policy.md", "relation": "knowledge_graph", "score": 3.0,
     "snippet": "z-index指定方式をinline style方式で統一"},
    {"path": "src/components/ui/Modal.tsx", "relation": "import_dependency", "score": 2.1}
  ]
}

import依存(コード構造)とナレッジグラフ(設計文脈)が統合されて初めて、AIエージェントに必要な「文脈パック」になる。

対象バリュー

  • 文脈先回り: contextがコード構造だけでなく設計意図を含めば、AIが1回のcontext取得で全体像を把握できる

影響範囲

共有インフラへの影響

related.rs のスコアリング重みと relation_to_string() は以下の4コマンドで共有:

  • context (対象コマンド)
  • suggest (サジェスト機能)
  • why (理由説明機能)
  • before-change (変更前チェック)

重み変更は全4コマンドのランキング結果に影響するため、クロスコマンドのリグレッションテストが必須。

リスク軽減策

  • 重みの調整は保守的に行う(KNOWLEDGE_GRAPH_WEIGHTMarkdownLink(1.0) 以下に抑える)
  • relation_to_string() の優先度変更は全呼び出し元を監査してから実施
  • スニペット改善は既存の出力契約(JSON形式)を維持

実装案

  1. 重みの調整: KNOWLEDGE_GRAPH_WEIGHT を 0.8 → 0.95 に引き上げ(MarkdownLink 1.0以下で保守的に)
  2. スニペット改善: knowledge_edgesmetadata にsummaryがあれば優先利用、なければ見出し直後の1〜2文を抽出
  3. リレーション優先度: KnowledgeGraphImportDependency の次(3番目)に引き上げ

受け入れ基準

  • KGエッジを持つファイルに対して context コマンドを実行した際、relation: "knowledge_graph" のエントリが出力に含まれること
  • KGエントリのスニペットに設計判断の要約が含まれること(単純切り詰めではなく意味のある内容)
  • --max-files 枠内でimport依存とKGがスコア順でマージされ、KGエントリが埋もれないこと
  • suggest, why, before-change コマンドが重み変更後も正常動作すること
  • 既存のテストが全パスすること
  • 新規テストでKG統合の動作を検証すること

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions