memory-integration について
memory-integrationは、会話履歴の検索と構造化ナレッジグラフを使い、セッションをまたいでプロジェクトの文脈を保つエージェントスキルです。検索や記録のタイミング、過去の決定や学びをもとに作業を再開する手順を示します。
主な機能
- 01会話履歴の意味検索と概念検索
- 02検索結果から会話全体を参照
- 03エンティティ、観察記録、関係の保存
- 04セッション開始・作業中・終了のチェックリスト
活用シーン
- 01課題に着手する前に過去の作業を確認
- 02変更計画時に過去の決定を参照
- 03解決策や成果を後続セッション向けに記録
MCP 対応
episodic-memoryの検索・読み取りにMCPツールを使い、mcp__memoryのナレッジグラフで構造化された文脈を保存・取得する方法を示します。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ troykelly/ claude-skills --skill memory-integrationインストール後、Claude Code で/memory-integrationを入力して読み込まれたか確認します。
詳細
メモリー統合
概要
両方のメモリーシステムを使用して、セッションをまたいでコンテキストを維持します。
基本原則: セッション間で記憶は保持されません。これらのツールを使って記憶を保存してください。
システム:
- エピソード記憶 - 会話履歴の検索
- ナレッジグラフ (mcp__memory) - 構造化された事実と関係
メモリーを使用するタイミング
| タイミング | メモリー操作 |
|---|---|
| セッション開始時 | 関連するコンテキストを検索する |
| 課題に取り組む前 | 過去の作業を検索する |
| 判断を下すとき | 過去の判断を確認する |
| 作業完了時 | 重要な学びを保存する |
| セッション終了時 | 重要な成果を保存する |
エピソード記憶
保存される内容
- 会話履歴全体
- 下した判断
- 解決した問題
- 試したアプローチ
- 得られた教訓
エピソード記憶の検索
エピソード記憶スキルまたは MCP ツールを使用します。
Search for:
- Issue number: "issue 123", "#123"
- Feature name: "authentication", "user login"
- Problem type: "TypeScript error", "build failure"
- Project name: repository name
セマンティック検索(単一クエリ)
// Search with natural language
mcp__plugin_episodic-memory_episodic-memory__search({
query: "user authentication implementation decisions"
})
精密検索(複数の概念)
// Search for intersection of concepts
mcp__plugin_episodic-memory_episodic-memory__search({
query: ["authentication", "session", "JWT"]
})
会話全体を読む
関連する結果が見つかったら、次のようにします。
// Read the full conversation
mcp__plugin_episodic-memory_episodic-memory__read({
path: "/path/to/conversation.jsonl"
})
検索対象
| 状況 | 検索語 |
|---|---|
| 課題 #123 に取り組む | 「issue 123」、「#123」 |
| 認証に取り組む | 「authentication」、「login」、「session」 |
| TypeScript の問題 | 「TypeScript」、「type error」、具体的なエラーメッセージ |
| 類似機能 | 機能名、関連する概念 |
ナレッジグラフ(mcp__memory)
保存される内容
- エンティティ(プロジェクト、課題、判断、パターン)
- エンティティ間の関係
- エンティティに関する観察事項
エンティティの作成
重要な事実を保存します。
// Create an entity for a project decision
mcp__memory__create_entities({
entities: [{
name: "Decision: Use JWT for Auth",
entityType: "Decision",
observations: [
"Decided on 2024-12-01",
"JWT chosen over sessions for API statelessness",
"Related to issue #123",
"Implementation in src/auth/jwt.ts"
]
}]
})
関係の作成
エンティティを相互に関連付けます。
// Create relationships
mcp__memory__create_relations({
relations: [
{
from: "Project: MyApp",
to: "Decision: Use JWT for Auth",
relationType: "has_decision"
},
{
from: "Issue #123",
to: "Decision: Use JWT for Auth",
relationType: "resulted_in"
}
]
})
グラフの検索
// Search for relevant nodes
mcp__memory__search_nodes({
query: "authentication"
})
// Open specific nodes
mcp__memory__open_nodes({
names: ["Decision: Use JWT for Auth"]
})
// Read entire graph (for small graphs)
mcp__memory__read_graph({})
メモリープロトコル
セッション開始時
-
エピソード記憶を検索して、次の情報を確認します。
- 現在の課題番号
- プロジェクト/リポジトリ名
- 取り組み中のアクティブな機能
-
ナレッジグラフを検索して、次の情報を確認します。
- プロジェクトのエンティティ
- 関連する判断
- 既知のパターン
-
作業を進める前に、コンテキストを統合します。
作業中
作業を進めながら保存します。
| イベント | 保存先 |
|---|---|
| 重要な判断 | ナレッジグラフのエンティティ |
| 問題の解決 | 課題のエンティティに観察事項を追加 |
| パターンの発見 | ナレッジグラフのエンティティ |
| 教訓を得た | 観察事項を追加 |
セッション終了時
-
ナレッジグラフを更新して、次の内容を記録します。
- 新たに下した判断
- 解決した問題
- 発見したパターン
-
既存のエンティティに観察事項を追加します。
- 課題の進捗
- 学び
- 次のステップ
エンティティタイプ
ナレッジグラフで推奨されるエンティティタイプ:
| タイプ | 用途 | 例 |
|---|---|---|
| プロジェクト | リポジトリ/コードベース | 「Project: MyApp」 |
| 課題 | GitHub の課題 | 「Issue #123: Auth」 |
| 判断 | アーキテクチャ上の判断 | 「Decision: Use JWT」 |
| パターン | コードパターン | 「Pattern: Repository Layer」 |
| 問題 | 既知の問題 | 「Problem: Race Condition in X」 |
| 人物 | 共同作業者 | 「Person: Alice (maintainer)」 |
例:課題のメモリーフロー
セッション 1:課題への着手
// Search for any previous context
const episodic = await search("issue 456 user profile");
const graph = await search_nodes("user profile");
// If nothing found, create fresh entity
await create_entities({
entities: [{
name: "Issue #456: User Profile Page",
entityType: "Issue",
observations: [
"Started: 2024-12-01",
"Scope: Profile display, edit, avatar upload"
]
}]
});
セッション 1:作業中の判断
// Store a decision made
await add_observations({
observations: [{
entityName: "Issue #456: User Profile Page",
contents: [
"Decision: Using react-image-crop for avatar cropping",
"Reason: Best mobile support, active maintenance"
]
}]
});
セッション 2:作業の再開
// Search for context
const results = await search("issue 456");
// Read: "Using react-image-crop for avatar cropping"
// Continue with context maintained
保存する内容
必ず保存する内容
- 根拠を含むアーキテクチャ上の判断
- 自明ではない問題の解決策
- 発見した重要な制約
- コンポーネント間の依存関係
保存しない内容
- 些細な実装の詳細
- コードから明らかな内容
- 一時的なデバッグメモ
- 結論の出ていない推測
チェックリスト
セッション開始時:
- 課題/プロジェクトについてエピソード記憶を検索する
- コンテキストについてナレッジグラフを検索する
- 関連する調査結果を記録する
作業中:
- 重要な判断を保存する
- 問題の解決策を記録する
- 発見したパターンを記録する
セッション終了時:
- 進捗をエンティティに反映する
- 新たな学びを追加する
- 次のステップを記録する
統合
このスキルは次から呼び出されます。
session-start- 初期コンテキストの収集issue-driven-development- ステップ 4
このスキルは次を支援します。
- セッションをまたいだ継続性
- 判断の記録
- パターンの発見
コメント
Markdown 対応