Skip to main content

记忆打标签策略

如何为记忆打标签以实现高效搜索与过滤 — 可扩展的标签体系。


记忆打标签策略

标签是可扩展记忆检索的秘诀。本指南展示如何为记忆打标签,让正确的记忆在正确的时间被找到。

为什么标签重要

没有标签,你只有扁平的全文搜索。有了标签,你就有结构化导航:

# 无标签:搜索一切
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)")

合并标签

如果有不一致的标签(dockerDocker),合并它们:

# 找出所有带 "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)))

最佳实践

下一步