メモリタグ付け戦略
効果的な検索とフィルタリングのためのメモリのタグ付け方法 — スケールするタグ付けシステム。
メモリタグ付け戦略
タグはスケーラブルなメモリ取得の秘訣です。本ガイドは、適切なタイミングで適切なメモリが戻ってくるようにメモリにタグを付ける方法を示します。
タグが重要な理由
タグがない場合、フラットな全文検索しかありません。タグがあれば、構造化されたナビゲーションが可能になります。
# Without tags: search everything
GET /memory/search?q=docker
# With tags: filter by project + technology
GET /memory/search?q=deployment&tag=synapse&tag=dockerタグによって可能になること:
- 高速なフィルタリング —
GET /memory/by-tag?tag=production - スコープ付き検索 —
?q=auth&tag=project-x - グループ化 — あるプロジェクトのすべての「失敗」メモリを見つける
- 相互参照 — タグを共有するメモリは関連している
タグ付けスキーマ
プロジェクトタグ
プロジェクト名をタグとして使用します:
synapse, synapse-mcp, synapse-chat, synapse-sdkテクノロジータグ
テクノロジー名を使用します:
docker, kubernetes, postgres, fastify, react, typescriptトピックタグ
トピックカテゴリを使用します:
deployment, ci-cd, auth, database, frontend, backend, securityステータスタグ
ステータス指標を使用します:
active, completed, blocked, deprecatedタイプタグ
タイプ指標を使用します:
decision, mistake, pattern, reference, todoタグ付けルール
ルール 1:メモリあたり 2〜5 個のタグ
少なすぎると発見性が低くなり、多すぎるとノイズになります。
// Good: 3 relevant tags
{ "tags": ["synapse", "deployment", "docker"] }
// Bad: 1 tag (too narrow)
{ "tags": ["synapse"] }
// Bad: 10 tags (noise)
{ "tags": ["synapse", "deployment", "docker", "vps1", "2026", "june", "ssh", "git", "main", "production"] }ルール 2:小文字、ハイフン区切り
✅ ci-cd, api-key, mind-key
❌ CI-CD, APIKey, MindKeyルール 3:一貫した語彙を使用
タグ付けの語彙を確立し、それに従ってください:
# Project vocabulary
synapse, synapse-mcp, synapse-chat
# NOT: synapse_project, synapseProject, SYNAPSEルール 4:検索意図でタグ付け
「このメモリをどうやって検索するか?」を自問してください。
// Storing a deployment decision
{
"content": "Decided to use Docker Swarm for Synapse deployment",
"tags": ["synapse", "deployment", "docker", "swarm", "decision"]
}
// You'll likely search: ?q=docker+swarm or ?tag=deploymentパターン
パターン 1:プロジェクト + トピック
{ "tags": ["synapse", "deployment"] }
{ "tags": ["synapse", "auth"] }
{ "tags": ["synapse-mcp", "tools"] }検索:?tag=synapse(Synapse プロジェクトのすべてのメモリ)
検索:?tag=synapse&q=deployment(Synapse 内のデプロイ関連メモリ)
パターン 2:タイプ + ドメイン
{ "tags": ["mistake", "deployment"] }
{ "tags": ["decision", "database"] }
{ "tags": ["pattern", "auth"] }検索:?tag=mistake(すべての失敗)
検索:?tag=mistake&q=deployment(デプロイ関連の失敗)
パターン 3:階層型
プロジェクト内のサブプロジェクト用:
{ "tags": ["synapse", "synapse-docs", "markdown"] }
{ "tags": ["synapse", "synapse-mcp", "mcp"] }
{ "tags": ["synapse", "synapse-admin", "ui"] }検索:?tag=synapse(Synapse 全体)
検索:?tag=synapse-docs(docs サブプロジェクトのみ)
パターン 4:ステータス追跡
// Active project
{ "tags": ["synapse", "active"], "priority": "high" }
// Completed project
{ "tags": ["synapse-v1", "completed"], "priority": "low" }
// Blocked
{ "tags": ["synapse-v2", "blocked"], "priority": "high" }よくあるユースケース
プロジェクトに関するすべての決定を見つける
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=decision&tag=synapse"ドメイン内のすべての失敗を見つける
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=mistake&tag=deployment"アクティブな作業を見つける
curl -H "Authorization: Bearer $KEY" \
".../memory/by-tag?tag=active"技術に関するメモリを見つける
curl -H "Authorization: Bearer $KEY" \
".../memory/search?q=postgres+performance&tag=database"タグのメンテナンス
定期的なレビュー
# Find rarely-used tags (candidates for cleanup)
tags = requests.get(f"{URL}/memory/tags",
headers={"Authorization": f"Bearer {KEY}"}).json()
for tag, count in tags.items():
if count < 2:
print(f"Rare tag: {tag} ({count} memories)")タグの統合
タグに一貫性がない場合(docker と Docker)は統合してください:
# Find all memories with "Docker" tag
mems = requests.get(f"{URL}/memory/by-tag?tag=Docker",
headers={"Authorization": f"Bearer {KEY}"}).json()
# Update each to use "docker" instead
for mem in mems["results"]:
tags = [t.lower() for t in mem["tags"]]
update_memory(mem["id"], tags=list(set(tags)))