Skill: qshfu/depth-memory (version 0.3.1)

--- name: deep-memory description: 深层记忆系统。处理知识积累、技能经验、长期档案类任务时触发。提供关键字检索、记忆存取、索引更新功能。 --- # Deep Memory（深层记忆） 分层记忆体系的第二层，负责结构化的知识与技能沉淀。日常高频信息存在 `memory/` 和 `MEMORY.md`，遇到需要长期记住的概念、用法、经验时使用本层。 ## 记忆层次决策树 > ⚠️ **区分 memory_search 和 deep-memory：** > `memory_search`（系统内置工具）只搜索 `MEMORY.md` 和 `memory/`（日常记忆层）。 > 查询技术/工具类内容（如 "@xxx 怎么用"）→ 走下面的决策树，先查 deep-memory。 > 不要用 `memory_search` 替代 deep-memory 查询流程。 ``` 用户问："我的 xxx 怎么用" / "之前那个 xxx 是在哪个文件" │ ├─→ 检查 MEMORY.md / memory/（日常记忆） │ └─→ 有 → 返回，无 → 继续 │ ├─→ 检查 DEEP-MEMORY.md 索引（关键字匹配） │ └─→ 命中 → 读取对应 deep-memory/*.md │ └─→ 互联网搜索 ``` **什么时候用 deep-memory：** - 用户明确提到某个库、框架、工具的名称 - 想把读过的文档、博客、论文精华存起来备用 - 教用户某个知识点后，希望自己也能记住 - 用户说"把这个存到深层记忆" **什么时候用 MEMORY/memory：** - 日常会话中的事实、决定、上下文 - 用户偏好、习惯、项目进展 - 工作进度、非结构化的临时笔记 ## 常见错误 **❌ 不要用 `memory_search` 查 deep-memory：** `memory_search` 是系统工具，只搜 `MEMORY.md` 和 `memory/`，不搜 `DEEP-MEMORY.md` 索引。 即使搜索结果为空，也不代表 deep-memory 里没有对应内容。 正确做法：手动读取 `DEEP-MEMORY.md`（索引表），匹配 keywords，再读对应文件。 **❌ 不要跳过索引表直接搜记忆文件：** `deep-memory/` 下的文件没有全文索引，必须通过 `DEEP-MEMORY.md` 索引表定位。直接遍历文件是无效的。 ## 安装与初始化 skill 安装后需要运行初始化脚本，才能在workspace创建 DEEP-MEMORY.md 和 deep-memory/ 目录： ```bash node skills/depth-memory/scripts/setup.mjs ``` 初始化脚本会自动： 1. 创建 `deep-memory/` 目录 2. 写入一条**验收测试记录**（用于验证系统是否正常） 3. 创建 `DEEP-MEMORY.md` 索引（若不存在） 4. 将测试记录写入索引 **验证：** 初始化完成后，搜索关键字 `深层记忆系统验收测试` 或 `验收测试`，应能命中测试记录。 --- ## 目录结构 ``` deep-memory/ ← 记忆文件目录（setup.mjs 创建） 2026-04-27 13_06_20.md ← 格式：YYYY-MM-DD HH_MM_SS.md 2026-04-27 16_10_30.md ... DEEP-MEMORY.md ← 索引文件（setup.mjs 创建） memory/ ← 日常记忆（第一层） YYYY-MM-DD.md ← 每日笔记 MEMORY.md ← 长期记忆索引（第一层） skills/depth-memory/ SKILL.md ← 本文件 scripts/ setup.mjs ← 安装后初始化脚本（首次安装必运行） query.mjs ← 关键字检索 add.mjs ← 新增记忆（交互式 / 命令行） ``` ## 工作流 ### 查询流程 ``` 1. 读取 DEEP-MEMORY.md（索引表） 2. 从用户输入中提取关键字（@库名、英文术语、中文关键词） 3. 遍历索引表格，匹配 Keywords 列： - 完全相等 → 优先 - 包含匹配 → 次之 - 反向包含（关键字 → 条目关键词）→ 兜底 4. 命中 → 读取对应 deep-memory/YYYY-MM-DD HH_MM_SS.md 5. 无命中 → 互联网搜索 ``` ### 新增流程 ``` 1. 确定主题和关键字 2. 将完整内容写入 deep-memory/YYYY-MM-DD HH_MM_SS.md （文件名用当前时间，格式固定） 3. 提取关键字更新 DEEP-MEMORY.md 索引表 （在表头分隔线后插入新行，保持按关键词字母序或时间倒序） 4. 可选：同步更新 memory/YYYY-MM-DD.md 记录本次操作 ``` ## 索引格式 `DEEP-MEMORY.md` 为 markdown 表格，三列：`Keywords` | `Description` | `File Path` ```markdown | Keywords | Description | File Path | | :--- | :--- | :--- | | @k3000/store, 结构化存储, 本地数据库, 二进制存储, 版本化存储 | 结构化本地存储库，二进制文件 + 加密索引，支持索引查询/范围查询/分页/联合查询 | `deep-memory/2026-05-05 17_49_00.md` | ``` **关键词提取原则：** - 必须包含库的正式名称（如 `@k3000/store`） - 必须包含中文核心描述（1-2个词） - 包含常用别名或相关术语 - 包含核心 API 或特性名称（可选） - 用逗号分隔，不超过 10 个关键词 **好的关键词示例：** `@k3000/store, 结构化存储, 本地数据库, 二进制存储, 版本化存储` **不好的关键词示例：** `@k3000/store`（缺少中文描述） `这个库很好用可以存很多东西`（太模糊，无法检索） ## 脚本用法 ### query.mjs — 关键字检索 ```bash node scripts/query.mjs <关键字> ``` 返回 JSON： - 命中：`{ found: true, keyword: "...", results: [{ keyword, description, filePath }] }` - 无命中：`{ found: false, keyword: "..." }` **匹配逻辑：** - 关键字 → 索引 Keywords 列（大小写不敏感，包含即命中） - 兜底：索引 Keywords → 关键字（反向包含） ```bash # 示例 node scripts/query.mjs @k3000/store node scripts/query.mjs 结构化存储 ``` ### add.mjs — 新增记忆条目 支持两种模式： **交互模式（不带参数）：** ```bash node scripts/add.mjs # 按提示输入：标题 → 关键字 → 描述 → 内容（Ctrl+D 结束） ``` **命令行模式（推荐在 agent 内使用）：** ```bash node scripts/add.mjs <标题> <关键字1,关键字2> <描述> [正文内容...] # 注意：正文内容为空格分隔，多行内容需用 stdin 或直接写文件 ``` 实际 agent 用法：直接用 `write` 工具写文件 + 手动编辑 `DEEP-MEMORY.md`，比调用脚本更可控。 ### list-index.mjs 此脚本目前不存在。如需列全部索引，直接读取 `DEEP-MEMORY.md` 即可。 ## 记忆文件格式规范 每个 `deep-memory/YYYY-MM-DD HH_MM_SS.md` 文件应包含： ```markdown # <标题> > 来源：<URL 或来源> > 存入时间：<YYYY-MM-DD HH:MM> ## 概述 1-3 句话描述这是什么。 ## 核心概念 关键术语和定义的简短列表。 ## 快速上手 / 典型用法 可运行的最小示例代码。 ## API 参考 / 常用操作 表格或列表形式的关键 API。 ## 注意事项 / 已知限制 使用时的坑、版本兼容、常见错误。 --- ## 其他补充（可选） FAQ、对比类似工具的优劣、相关链接等。 ``` ## 维护与更新 **更新已有记忆：** - 找到对应的 `deep-memory/*.md` 文件，用 `edit` 工具追加或修正内容 - 如果关键词有变化，同步更新 `DEEP-MEMORY.md` 的索引行 - 不要删除旧文件，只追加或修正（保留历史版本） **合并/整理：** - 如果两个记忆文件高度相关（如同一库的不同版本用法），可以在尾部用 "===" 分隔分别记录，并注明日期 **定期检查（每 1-2 周）：** - `DEEP-MEMORY.md` 是否有未匹配的查询（用户说"我存过的"但没找到） - 索引关键词是否过时（库更新后补充新 API 关键字） ## 常见问题 **Q: 用户问了一个问题，但 deep-memory 没有匹配到怎么办？** → 先尝试互联网搜索，找到答案后按"新增流程"存入 deep-memory，下次即可命中。 **Q: 关键词如何确定？** → 思考：如果用户想找这个记忆，会怎么描述？把最能想到的 3-5 个词/短语写进 Keywords。 **Q: 存进去之后怎么验证？** → 用 `node scripts/query.mjs <关键字>` 测试，确认能返回对应文件路径。 **Q: 需要删除一条记忆怎么办？** → 从 `DEEP-MEMORY.md` 索引表中删除对应行，文件可以保留（标记为已废弃）或删除。 **Q: list-index.mjs 不存在怎么列出全部索引？** → 直接读取 `DEEP-MEMORY.md` 即可，或写一个简单的 `grep` 命令： ```bash Select-String "|" DEEP-MEMORY.md | Select-Object -Skip 2 ``` **Q: 重新安装 skill 需要重新初始化吗？** → 不需要。setup.mjs 做了幂等处理：索引和目录已存在时会跳过，不会覆盖已有数据。 如果需要重新生成测试记录，先删除 `deep-memory/2026-05-07 11_01_00.md` 和索引中的对应行，再运行 setup.mjs。 ## 触发条件 遇到以下任务时，**先执行查询流程**，再决定是否新增： - 用户问一个知识性/技能性问题（优先查 deep-memory，再用 `memory_search` 查日常记忆，最后互联网搜索） - 用户明确提到某个库、框架、工具的名称（先查 deep-memory 索引） - 用户提到"之前那个 xxx 怎么用来着"、"存在深层记忆"、"记一下这个"等关键词 - 用户发送了一个 npm 库、GitHub repo 或工具链接，让存入记忆 - 需要帮用户整理某个领域的知识体系 - 读完一篇文档/博客，主动提取关键内容存入 deep-memory ## 相关文件 - `MEMORY.md` — 第一层日常记忆 - `memory/YYYY-MM-DD.md` — 每日会话日志 - `DEEP-MEMORY.md` — 本层索引表


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)