mcpField
C
context-retrieval

context-retrieval

github.com/d-o-hubエージェントワークフロー1344 回インストール今日更新
リポジトリ

context-retrieval について

エージェントの判断に過去のタスク経験を活用するため、メモリから関連するエピソード情報を取得するスキルです。セマンティック検索とキーワード検索への切り替えに対応し、領域、タスク種別、期間で絞り込めます。

主な機能

  1. 01セマンティック検索を優先
  2. 02埋め込みがない場合はキーワード検索
  3. 03redb キャッシュの後に Turso を検索
  4. 04関連度または新しさで順位付け
  5. 05領域、タスク種別、日付で絞り込み

活用シーン

  1. 01類似する実装タスクの検索
  2. 02よく使うツール手順の再確認
  3. 03領域ごとの最近の経験の取得
  4. 04判断前に関連する過去の文脈を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/d-o-hub/rust-self-learning-memory --skill context-retrieval

インストール後、Claude Code で/context-retrievalを入力して読み込まれたか確認します。

詳細

コンテキストの取得

十分な情報に基づいた意思決定のため、メモリから関連するエピソードコンテキストを取得します。

取得方法

セマンティック検索(推奨)

埋め込みが利用可能な場合:

let context = memory
    .retrieve_relevant_context(
        "implement async batch updates",
        task_context,
        limit: 5
    )
    .await?;

利点:意味的に類似したタスクを見つけ、意図を捉えます

キーワード検索(代替手段)
// SQL index-based search
SELECT * FROM episodes
WHERE task_type = ? AND tags LIKE ?
ORDER BY timestamp DESC
LIMIT ?;

利点:高速で、埋め込みの計算が不要で、決定論的です

取得戦略

  1. クエリを解析します(重要な語句、分野、タスクの種類)
  2. 埋め込みが利用可能か確認します
  3. まずキャッシュ(redb)を検索し、見つからない場合はTursoを検索します
  4. 関連性または新しさに基づいて順位付けします
  5. 結果を絞り込み、件数を制限します
  6. コンテキストの構造を整えます

コンテキストのフィルタリング

// By domain
TaskContext { domain: "storage".to_string(), .. }

// By task type
task_type_filter: Some("implementation")

// By recency (last 30 days)
since: Some(now - Duration::days(30))

// By success only
verdict: Some(Verdict::Success)

応答形式

pub struct RetrievedContext {
    pub episodes: Vec<EpisodeSummary>,
    pub patterns: Vec<Pattern>,
    pub heuristics: Vec<Heuristic>,
    pub relevance_scores: Vec<f32>,
}

pub struct EpisodeSummary {
    pub id: String,
    pub task_description: String,
    pub verdict: Verdict,
    pub key_steps: Vec<String>,
    pub reflection: String,
    pub relevance: f32,
}

使用例

// Find similar implementation tasks
let retrieved = memory
    .retrieve_relevant_context(query, context, 10)
    .await?;

// Find common tool sequences
let patterns = memory
    .get_patterns_by_type("ToolSequence")
    .filter(|p| p.success_rate > 0.8)
    .await?;

// Find error resolutions
let solutions = memory
    .retrieve_error_resolutions("borrow checker error", 5)
    .await?;

トラブルシューティング

問題解決策
再現率が低い埋め込みを確認し、タグを増やし、上限を引き上げます
取得が遅いキャッシュを確認し、インデックスを検証し、結果セットを減らします
関連性が低いセマンティック検索を使い、クエリを改善し、分野で絞り込みます

コメント