agentsclimarketplace

Datadata memory

Skill datadata-team/datadata-skills/skills/datadata-memory

Agent skills for the Datadata analytics platform.

Install
npx -y skills add datadata-team/datadata-skills --skill datadata-memory

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

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.md

10.6 KB, ~3.2k tokens by cl100k_base, as published. Nobody here has run it

功能概览

本 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_addmemory_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 格式

{
  "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_addmemory_update 的索引通常在毫秒级完成,无需每次都调用 memory_task_wait。仅当需要在同一轮对话中立即检索刚添加/更新的记忆时才调用,作为保险措施。

🟡 记忆内容应原子化

每条记忆只包含一个独立事实。反面示例:

❌ "用户偏好中文 commit、喜欢用 VS Code、项目使用 TypeScript"
✅ "用户偏好使用中文编写 Git 提交信息"
✅ "用户使用 VS Code 作为主力编辑器"
✅ "项目 datadata-skills 使用 TypeScript"

🟡 搜索优先于猜测

当用户问"我之前说过..."或需要上下文时,必须先搜索记忆,不要凭当前对话猜测。

🟡 删除需确认

memory_delete 前,向用户展示要删除的记忆内容并请求确认。记忆删除不可逆。

常见问题

Q: 添加记忆后搜索不到?

索引通常在毫秒级完成,极少数情况下可能需要几秒。若添加后立即搜索不到,可调用 memory_task_wait 等待索引完成后再试。

Q: 搜索返回太多结果?

使用过滤参数缩小范围:categoryagentIdstartTime/endTime、或减小 limit

Q: 如何区分 tags 和 metadata?

  • tags:用于搜索过滤的简短标签,会建立索引
  • metadata:附加键值对,用于存储不参与搜索过滤的补充信息

Q: 记忆和 session memory 有什么区别?

  • Datadata 记忆(本 skill):持久化存储,跨会话、跨 Agent 保留
  • Session memory/memories/session/):仅当前会话有效,会话结束后清除

References

文档说明
./references/memory-guide.md搜索策略、索引机制、最佳实践详解

Gives 0 of the 12 instructions most memory context skills give in ~3.2k tokens

Counted across 674 of the 847 authors here whose files we hold, read 2026-08-06

  • inform the user when setup is completein 21 of 674, across 6 files
  • confirm the draft with the user before writingin 21 of 674, across 6 files
  • update the agent skills block in place if it existsin 21 of 674, across 6 files
  • present findings to the userin 20 of 674, across 5 files
  • write the three docs files from seed templatesin 20 of 674, across 5 files
  • ask the user about each decision one at a timein 19 of 674, across 4 files
  • edit CLAUDE.md if it existsin 18 of 674, across 3 files
  • explore current repo statein 18 of 674, across 3 files
  • do not overwrite user edits to surrounding sectionsin 18 of 674, across 3 files
  • back up the original file before overwritingin 16 of 674, across 8 files
  • keep the memory index under 200 linesin 15 of 674
  • Provide actionable steps and verificationin 13 of 674, across 2 files

Said here and by no other author read

  • wait for indexing only when immediately searching
  • keep memory content atomic
  • prioritize the latest information during conflicts
  • append old values to metadata history during conflicts
  • merge semantically similar memories

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.