记忆打标签策略
如何为记忆打标签以实现高效搜索与过滤 — 可扩展的标签体系。
记忆打标签策略
标签是可扩展记忆检索的秘诀。本指南展示如何为记忆打标签,让正确的记忆在正确的时间被找到。
为什么标签重要
没有标签,你只有扁平的全文搜索。有了标签,你就有结构化导航:
# 无标签:搜索一切
GET /memory/search?q=docker
# 有标签:按项目 + 技术过滤
GET /memory/search?q=deployment&tag=synapse&tag=docker标签带来:
- 快速过滤 —
GET /memory/by-tag?tag=production - 范围搜索 —
?q=auth&tag=project-x - 分组 — 找出某项目的所有 “mistake” 记忆
- 交叉引用 — 共享标签的记忆相互关联
标签体系
项目标签
用项目名作为标签:
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 个标签
太少 = 可发现性差。太多 = 噪声。
// 好:3 个相关标签
{ "tags": ["synapse", "deployment", "docker"] }
// 坏:1 个标签(太窄)
{ "tags": ["synapse"] }
// 坏:10 个标签(噪声)
{ "tags": ["synapse", "deployment", "docker", "vps1", "2026", "june", "ssh", "git", "main", "production"] }规则 2:小写、连字符
✅ ci-cd, api-key, mind-key
❌ CI-CD, APIKey, MindKey规则 3:使用一致的词汇
建立一套标签词汇并坚持使用:
# 项目词汇
synapse, synapse-mcp, synapse-chat
# 不要写成:synapse_project, synapseProject, SYNAPSE规则 4:按搜索意图打标签
问自己:“我以后会怎么搜这条记忆?”
// 存储部署决策
{
"content": "Decided to use Docker Swarm for Synapse deployment",
"tags": ["synapse", "deployment", "docker", "swarm", "decision"]
}
// 你可能会搜索:?q=docker+swarm 或 ?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:状态跟踪
// 活跃项目
{ "tags": ["synapse", "active"], "priority": "high" }
// 已完成项目
{ "tags": ["synapse-v1", "completed"], "priority": "low" }
// 阻塞中
{ "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"标签维护
定期审查
# 找出使用少的标签(清理候选)
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),合并它们:
# 找出所有带 "Docker" 标签的记忆
mems = requests.get(f"{URL}/memory/by-tag?tag=Docker",
headers={"Authorization": f"Bearer {KEY}"}).json()
# 把每条更新为 "docker"
for mem in mems["results"]:
tags = [t.lower() for t in mem["tags"]]
update_memory(mem["id"], tags=list(set(tags)))