Skip to main content

datadata-memory

Manage AI persistent memory via the Datadata MCP Server — add, search, update, and delete memories, with semantic search and multi-dimensional filtering. Use when the user wants the AI to remember information, recall previous conversations, or manage persistent knowledge. Triggers: remember, memory, recall, don't forget, note this down, previously mentioned, search memory, delete memory.

Informations de source

Dépôt
datadata-team/datadata-skills
Dernière activité de la source
30 juin 2026 à 08:06
Langue détectée de SKILL.md
chinois
Étoiles
0
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
2 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
datadata-memory
description
Manage AI persistent memory via the Datadata MCP Server — add, search, update, and delete memories, with semantic search and multi-dimensional filtering. Use when the user wants the AI to remember information, recall previous conversations, or manage persistent knowledge. Triggers: remember, memory, recall, don't forget, note this down, previously mentioned, search memory, delete memory.
## 功能概览 本 skill 通过 **Datadata MCP Server** 的记忆工具管理 AI 持久化记忆。记忆是跨会话保留的原子事实、偏好或知识点,Agent 可在后续对话中检索使用。 - **添加记忆** — 存储原子事实,支持标签、分类、元数据(异步索引) - **搜索记忆** — 关键词或语义搜索,支持按时间、分类、Agent、会话等多维度过滤 - **更新记忆** — 修正或补充已有记忆内容 - **合并压缩** — 检测相似记忆并合并为一条,消除冗余 - **冲突合并** — 发现信息冲突时保留最新、记录历史 - **删除记忆** — 按 ID 移除过时或错误的记忆 ## MCP 工具速查 | 工具 | 用途 | 关键参数 | | ------------------ | -------------------- | ----------------------------------------------------------------------------------------------- | | `memory_add` | 添加新记忆(异步) | `content`(必填), `category`, `tags`, `agentId`, `metadata` | | `memory_search` | 搜索记忆 | `search`(必填), `limit`, `offset`, `agentId`, `category`, `sessionId`, `startTime`, `endTime` | | `memory_update` | 更新已有记忆(异步) | `id`(必填), `content`(必填), `tags`, `category`, `agentId`, `metadata` | | `memory_delete` | 删除记忆 | `id`(必填) | | `memory_task_wait` | 等待异步任务完成 | `taskId`(必填), `timeout`(秒,默认 60) | > **注意**:所有工具名前缀为 `mcp_datadata_`,如 `mcp_datadata_memory_add`。文档中省略前缀以保持简洁。 ## 概念 ### 记忆范围(Scope) | 范围 | 说明 | 使用场景 | | ---------- | ----------------------------------- | ---------------------------- | | 用户全局 | 不指定 `agentId`,跨所有 Agent 可见 | 用户偏好、通用知识、项目约定 | | Agent 专属 | 指定 `agentId`,仅特定 Agent 可检索 | Agent 专属上下文、任务状态 | ### 记忆属性 | 属性 | 说明 | 示例 | | ---------- | ---------------------------- | ---------------------------------- | | `content` | 原子事实或偏好,一句话说清楚 | "用户偏好使用中文提交信息" | | `category` | 自定义分类,用于组织和过滤 | `"preferences"`, `"project-notes"` | | `tags` | 可搜索标签数组 | `["git", "convention"]` | | `metadata` | 键值对附加信息 | `{"project": "datadata-skills"}` | ### 异步索引 `memory_add` 和 `memory_update` 是**异步操作**。调用后返回 `taskId`,记忆进入索引队列。在索引完成前,新添加的记忆**不会出现在搜索结果中**。 > 绝大多数情况下索引在毫秒级完成,无需显式等待。`memory_task_wait` 仅作为**保险措施**,在以下场景才需要调用: > > - 添加/更新后**立即**要在同一轮对话中搜索该记忆 > - 合并压缩/冲突合并后需要验证结果 > > 日常添加/更新操作直接调用 `memory_add` / `memory_update` 即可,不必跟 `memory_task_wait`。 ## 工作流 ### 添加记忆 ``` 用户要求记住某事 → memory_add → 确认完成 ``` > 如需立即检索刚添加的记忆,可在 `memory_add` 后调用 `memory_task_wait` 确保索引完成。 **示例**: ``` 用户:"记住我喜欢用中文写 commit message" → memory_add(content="用户偏好使用中文编写 Git 提交信息", category="preferences", tags=["git", "commit", "chinese"]) → 确认:"已记住。" ``` **原则**: - 每条记忆应为**单一原子事实**,不要塞多个不相关信息 - 添加前先 `memory_search` 检查是否已有类似记忆,避免重复 - 选择合适的 `category` 便于后续过滤 ### 搜索记忆 ``` 用户询问过去信息 → memory_search → 返回相关记忆 ``` **搜索策略**: | 场景 | 方法 | | ---------------- | -------------------------------------------------- | | 关键词精确匹配 | `search="关键词"` | | 语义相关 | 使用自然语言描述,如 `search="用户的编码偏好"` | | 限定分类 | 加 `category="preferences"` | | 限定时间范围 | 加 `startTime` / `endTime`(RFC3339 格式) | | 首次对话了解用户 | `memory_search(search="用户偏好和习惯", limit=10)` | **优先级**:搜索记忆应在新对话开始时进行,以获取用户上下文。Agent 应在处理用户请求前检查相关记忆。 ### 更新记忆 ``` 用户纠正或补充信息 → memory_update(id=<记忆ID>, content="修正后的内容") → 确认完成 ``` > 如需立即检索更新后的记忆,可调用 `memory_task_wait` 确保索引完成。 **何时更新**: - 用户明确纠正之前的说法:"不对,我之前说的..." - 信息已过时需要刷新 - 补充更多细节 ### 合并压缩 当添加新记忆时,搜索发现存在**语义相似**的已有记忆,应将两者合并为一条,避免信息碎片化。 **触发条件**:`memory_add` 前的 `memory_search` 返回高度相关的结果(语义相似度 > 80%) **流程**: ``` memory_search(新内容摘要) → 发现相似记忆 ↓ 合并内容(保留所有不重复信息)→ memory_update(已有记忆ID, 合并后内容) ↓ (可选)memory_task_wait → 确认合并完成 ``` **合并原则**: | 场景 | 处理方式 | | ---------------------- | ---------------------------------- | | 新信息是已有信息的子集 | 不操作,已有记忆已覆盖 | | 新信息是已有信息的超集 | `memory_update` 替换为更完整的版本 | | 新信息与已有信息互补 | 合并为一条,用分号或编号整合 | | 新信息与已有信息重复 | 不操作,跳过添加 | **示例**: ``` 已有:"用户偏好使用中文编写 Git 提交信息" 新增:"用户用 AngularJS 风格写 commit,类型有 feat/fix/docs 等" → 合并为:"用户偏好使用中文编写 Git 提交信息,遵循 AngularJS 风格(feat/fix/docs/chore 等)" ``` ### 冲突合并 当新信息与已有记忆**矛盾**(如用户先说电话是 1111,后又说电话是 2222),应以最新信息为准,同时保留变更历史。 **触发条件**:`memory_add` 前搜索发现语义相似但**内容矛盾**的记忆 **流程**: ``` memory_search → 发现冲突记忆 ↓ 将旧值写入 metadata.history,用新值更新 content ↓ memory_update(id, content="最新值", metadata={..., "history": [{"value": "旧值", "updatedAt": "..."}]}) ↓ (可选)memory_task_wait → 确认 ``` **metadata.history 格式**: ```json { "history": [ { "value": "电话: 1111", "updatedAt": "2026-06-01T10:00:00Z" }, { "value": "电话: 2222", "updatedAt": "2026-06-10T14:00:00Z" } ] } ``` > `history` 数组按时间倒序,最新在前。每次冲突合并时追加一条记录。 **判定冲突的标准**: - 同一主题下的事实性信息不一致(电话号码、地址、版本号等) - 用户明确说"不对,我之前说的..."或"改一下,应该是..." - 偏好或习惯发生明确变化("我现在不用 VS Code 了,改用 Fleet") **不是冲突的情况**(应合并压缩而非冲突合并): - 对同一主题的补充说明(不矛盾) - 不同上下文的不同选择("项目 A 用 pnpm,项目 B 用 yarn") ### 删除记忆 ``` 用户要求忘记某事 / 记忆明显错误 → memory_delete(id=<记忆ID>) ``` 删除是**同步操作**,无需等待索引。不可逆,执行前应确认。 ## 规则 ### 🟡 添加前先搜索,避免重复 调用 `memory_add` 前应先 `memory_search` 检查是否已有相似记忆。若存在相关记忆,优先 `memory_update` 更新而非重复添加。 ### 🟡 仅在需要时等待索引 `memory_add` 和 `memory_update` 的索引通常在毫秒级完成,**无需每次都调用 `memory_task_wait`**。仅当需要在同一轮对话中**立即检索**刚添加/更新的记忆时才调用,作为保险措施。 ### 🟡 记忆内容应原子化 每条记忆只包含一个独立事实。反面示例: ``` ❌ "用户偏好中文 commit、喜欢用 VS Code、项目使用 TypeScript" ✅ "用户偏好使用中文编写 Git 提交信息" ✅ "用户使用 VS Code 作为主力编辑器" ✅ "项目 datadata-skills 使用 TypeScript" ``` ### 🟡 搜索优先于猜测 当用户问"我之前说过..."或需要上下文时,**必须先搜索记忆**,不要凭当前对话猜测。 ### 🟡 删除需确认 在 `memory_delete` 前,向用户展示要删除的记忆内容并请求确认。记忆删除不可逆。 ## 常见问题 ### Q: 添加记忆后搜索不到? 索引通常在毫秒级完成,极少数情况下可能需要几秒。若添加后立即搜索不到,可调用 `memory_task_wait` 等待索引完成后再试。 ### Q: 搜索返回太多结果? 使用过滤参数缩小范围:`category`、`agentId`、`startTime`/`endTime`、或减小 `limit`。 ### Q: 如何区分 tags 和 metadata? - `tags`:用于搜索过滤的简短标签,会建立索引 - `metadata`:附加键值对,用于存储不参与搜索过滤的补充信息 ### Q: 记忆和 session memory 有什么区别? - **Datadata 记忆**(本 skill):持久化存储,跨会话、跨 Agent 保留 - **Session memory**(`/memories/session/`):仅当前会话有效,会话结束后清除 ## References | 文档 | 说明 | | ------------------------------------------------------------ | -------------------------------- | | [./references/memory-guide.md](./references/memory-guide.md) | 搜索策略、索引机制、最佳实践详解 |
Voir sur GitHub