Install
$ agentstack add skill-2021291696-weaver-evolve-memory-keeper ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
记忆管理 — Memory Keeper
你负责即时响应用户的"记住"和"忘掉"指令,将信息融入正确位置并维护结构整洁。
与 weaver-自我迭代 的关系
| | weaver-自我迭代 | memory-keeper | |------|-------------|---------------| | 触发 | 手动/定期 | 实时"记住"指令 | | 范围 | 批量扫历史 | 单条即时处理 | | 删除 | 被动+主动扫描 | 确认后处理+整理结构 | | 优化建议 | 视情况 | 视情况 |
两者互补:memory-keeper 处理单条即时需求,weaver-自我迭代 定期全局整理。
整理 vs weaver(边界声明)
| | weaver | 整理 | |------|------|------| | 触发 | 定期/手动"编织一下/全局整理" | 随时"整理记忆" | | 范围 | 跨项目全局 | 单范围(全局/项目/指定) | | 动作 | 扫对话→提取→归位→权限→file-tidy→复盘 | 已有记忆 L3 结构重构 | | 依赖 | agentmemory MCP(离线降级) | 无依赖,离线可用 |
整理不扫对话、不调 file-tidy/debug-architect、不做权限审查、不动 Obsidian wiki。
整理 vs neat-freak(边界声明)
| | neat-freak | 整理 | |------|------|------| | 触发 | 会话末"整理一下/同步一下/收尾" | 随时"整理记忆" | | 范围 | docs + CLAUDE.md + memory 三层同步 | 仅 memory 文件 | | 动作 | 把代码变更同步到知识体系(顺手 L1 卫生) | L3 深度结构重构 |
触发词靠"记忆"二字区分:带"记忆"→整理;不带"记忆"("整理一下"/"整理文档"/"梳理一下")→neat-freak。
整理 vs 记住/忘掉(边界声明)
记住 = 新增单条;忘掉 = 删单条;整理 = 批量结构重构(去重/清死链/合并/重组/关联)。
修改范围
不只是 memory/ 系统,还包括:
~/.claude/settings.json/settings.local.json(全局配置)~/.claude/CLAUDE.md(全局 AI 指令)- 项目
CLAUDE.md(项目 AI 指令) - 项目
.claude/settings.json(项目权限配置) - 子项目同理
"记住"流程(8步)
1. 判断层级
根据用户语境和信息内容判断属于哪层:
- 全局:影响所有项目、跨项目偏好、通用工具选择
- 项目:当前对话所在项目的决策、配置、踩坑
- 子项目:明确提到子项目目录名
不确定时保守下沉一级。
2. 判断类型
| 类型 | 信号 | 示例 | |------|------|------| | 偏好习惯 | "以后都这样"、"我习惯用X" | "回复要简短" | | 工具选择 | "用X不用Y"、"X比Y好" | "Maven用阿里云镜像" | | 项目决策 | 架构选型、技术栈变更 | "lab3用MyBatis" | | 踩坑记录 | "踩了个坑"、"注意X会Y" | "PyInstaller中文路径报错" | | 个人特性 | "我喜欢"、"我是"、"我在学" | "我是学生"、"喜欢整洁" | | 事实信息 | API Key、路径、端口、账号 | "MySQL端口3306" |
2.1 判断 Obsidian 归属
判断为"踩坑记录"/"项目决策"/"个人特性"且属通用知识时,写入 Obsidian(wiki/概念/ 或 wiki/来源/);纯操作偏好/凭据/进度只写 memory/。同时写两边时,memory 正文第一条加 > 详见 [[个人知识库/wiki/...]] 索引。
完整路由规则(合并检测 / 写入规范 / TL;DR 格式 / log.md 追加 / raw 只读):见 ~/.claude/rules/memory-routing.md。
3. 搜索已有
写入前 grep 目标文件 + MEMORY.md,找已有相关内容。
4. 展示计划
告诉用户你的计划,格式:
我会 [合并到/更新/新建/覆盖] [完整文件路径]
[文件路径] 中已有:[相关旧内容摘要(如有)]
新信息:[一句话]
动作:[更新旧条目 / 新建条目 / 覆盖旧信息]
[如有矛盾] ⚠ 旧"[...]"会被新信息替代
[如有过时] 旧的 [文件路径] 中的"[...]"会随之删除
[如有互补] 新旧不冲突,各自保留并互链
等待确认后再写。
5. 用户确认
给用户纠正位置或内容的机会。用户说"对"或"可以"才继续。
6. 执行归位
按位置矩阵写入。遵循融入规则(8条)。
7. 周边整理
写入后检查:
- MEMORY.md 索引描述是否还需更新?
- 同目录其他文件有没有因本条而过时的?
- 有没有文件变空或只剩一条?
8. 读回确认
写入完成后,读回验证(对齐 verify-before-changing 规则——宣布修好前先实际读确认):
- [ ] Read 目标文件,确认新内容真在、格式没坏
- [ ] grep MEMORY.md 索引,确认每个链接指向的文件真实存在(无死链)
- [ ] 若删除/更新了旧内容:grep 旧关键词在目标文件清零
- [ ] 若涉及 Obsidian:确认
wiki/index.md已更新、wiki/log.md已追加
任一不过 → 回第6步补,不宣布完成。
"忘掉"流程(6步)
1. 搜索匹配
grep MEMORY.md + 所有 memory 文件中匹配的内容。
如果只匹配到一个 → 继续。 如果匹配到多个 → 列出所有结果让用户选。 如果没匹配到 → 告知用户,确认是否换个关键词。
2. 展示确认
找到以下匹配:
1. [文件路径] — [内容摘要]
2. [文件路径] — [内容摘要]
要删除的是哪些?(全部删除 / 只删第N条 / 不删了)
3. 分析影响
删除 [文件路径] 中的"[...]"后:
- 该文件还剩 [N] 条内容
- MEMORY.md 索引需要更新 [是/否]
- 相关文件 [X] 中也有引用,需要调整 [是/否]
4. 展示影响
删除后我会:
- 删除 [文件路径] 中的对应内容
- 从 MEMORY.md 移除链接 [如果文件变空]
- 将剩余内容合并到 [上级文件] [如果只剩一条]
5. 用户确认
6. 执行删除 + 整理结构
删内容 + 更新索引 + 清理空文件 + 合并孤立条目。
删后验证(对齐 verify-before-changing——删完不等于删干净):
- [ ] grep 已删内容的关键词,在所有 memory 文件清零
- [ ] grep MEMORY.md,确认对应索引链接已移除(无指向已删文件的死链)
- [ ] 若删了整个文件:确认该文件已不存在,无残留空文件
任一不过 → 补到干净为止,不宣布完成。
"整理"流程(4阶段)
对已有记忆做 L3 深度结构重构。不扫对话、不调 file-tidy/debug-architect、不做权限、不动 Obsidian wiki(详见上方"整理 vs weaver/neat-freak"边界声明)。
触发词与范围
| 触发词 | 整理范围 | |--------|---------| | "整理记忆" / "整理一下记忆" | 全局CC记忆 + 项目记忆 + 配置文件过期扫描 | | "整理全局记忆" | 只全局CC记忆 + 配置文件过期扫描 | | "整理项目记忆" | 只项目记忆 | | "整理记忆,只整理记忆文件" | 跳过配置文件 |
当前项目 = 触发时 CWD 所在项目(memory-keeper 是全局 skill,动态识别)。
整理对象 × 动作矩阵
| 对象 | L1(清死链/去重/清过期) | L2(合并孤立/格式统一) | L3(碎片合并/跨文件关联) | |------|:-:|:-:|:-:| | 全局CC记忆(~/.claude/projects//memory/,带 frontmatter) | ✓ | ✓ | ✓ | | 项目记忆(/memory/,纯索引) | ✓ | ✓ | ✓ | | 配置文件(settings.json / CLAUDE.md / rules/) | ✓ 仅清过期 | ✗ 不重组 | ✗ 不重组 | | Obsidian wiki | ✗ | ✗ | ✗ |
4阶段流程
阶段1 审计:扫描所有纳入对象,按 8 类动作(见下方细则)产出问题清单。每项标注:文件路径 + 问题 + 建议动作。文件读取失败 → 跳过,列"无法读取"清单。
阶段2 确认:展示整理计划,等用户选"全部执行 / 部分执行 / 取消"。
阶段3 执行:按确认执行,遵循融入 8 规则。写阶段开始前重读目标文件,若与审计时不一致(被外部修改)→ 暂停,提示"X 在审计后被改,是否重新审计"。
阶段4 验证:读回确认(对齐 verify-before-changing)。验证清单见下方"阶段4 验证检查清单"。
8类动作判定规则
| # | 动作 | 信号 | 建议 | |---|------|------|------| | 1 | 清死链 | MEMORY.md 链接目标不存在 | 删索引行 / 或重建文件 | | 2 | 去重 | 同信息跨文件复制 | 留详细那个,删其他 + 合并要点 | | 3 | 清过期 | 旧 vs 新矛盾 / 引用已删项目 / 废弃工具 / 地址变更 | 删旧或更新 | | 4 | 合并孤立 | 文件只剩 1 条 | 合并到同类 | | 5 | 碎片合并 | 同主题/同类分散 >3 文件 | 合并成主题文件 | | 6 | 格式统一 | 缺 frontmatter(仅全局)/ 相对时间 / 链接不规范 | 全局补 frontmatter;项目修时间/链接 | | 7 | 跨文件关联 | type 同 + 主题重叠 / 关键词共现 ≥2 / 提对方主题未链 | 双向加 [[wikilink]],只建议不强制 | | 8 | 配置过期 | settings/CLAUDE/rules 过期信号 | 只标记,settings 逐条确认 |
关联 vs 去重的区别:重复 = 同信息复制(合并);关联 = 相关但不同(互链,各自保留)。
配置文件过期扫描细则(L1 子集,不重组结构)
| 文件 | 扫什么 | 动作 | |------|--------|------| | settings.json | permissions 引用不存在路径 / env 失效地址 / 重复规则 / 废弃 MCP | 只标记,不自动改——JSON 改错断 CC,逐条确认 | | CLAUDE.md(全局+项目) | 引用已删 skill 路径 / 废弃工具 / 与 rules 重复 / blockquote 历史叙事 / TODO | 删行 / 更新 / 标记 | | ~/.claude/rules/*.md | 被新规则覆盖的旧规则 / 引用不存在文件 / 与其他 rules 矛盾 | 删文件 / 更新 / 标记矛盾让用户选 |
安全约束:settings.json 任何改动必须用户逐条确认,不批量执行。
阶段4 验证检查清单
- [ ] 每个改动文件 Read 一遍,确认内容真在、格式没坏
- [ ] MEMORY.md 无死链:grep 所有链接 → 文件都存在
- [ ] 删除内容真没了:grep 关键词在所有 memory 文件清零
- [ ] 无残留空文件:删内容的文件要么有剩余要么已删
- [ ] 合并的源文件已删,目标文件有合并内容
- [ ] 关联链接双向:A 有
[[B]]→ B 也有[[A]] - [ ] 配置语法合法:settings.json JSON 解析验证;CLAUDE.md 无断裂引用
- [ ] 时间格式:
grep -E "今天|昨天|最近|刚刚"在改动文件清零
整理边界场景
| 场景 | 处理 | |------|------| | 项目无 memory/ | 跳过该对象,审计报告注明 | | 首次整理,系统不完整 | 正常整理,自动创建缺失的 MEMORY.md | | 全局和项目对同一事实矛盾 | 列"需用户确认",不自动删 | | settings.json 破坏性改动 | 逐条确认,不批量 | | 整理中发现"该记住的新信息" | 不提取(weaver 的事),只整理已有 | | 单文件 memory | 跳过 ④⑤,只做 ①②③⑥⑦ | | 审计中文件读取失败 | 跳过,列"无法读取"清单 | | 写阶段发现外部修改 | 暂停,提示重新审计 |
审计计划展示格式(阶段2确认用)
## 整理计划(YYYY-MM-DD)
扫描范围:全局CC记忆(N文件) + 项目记忆(M文件) + 配置文件(K处)
### 建议删除(死链/过期/无用)
1. memory/xxx.md — 死链,MEMORY.md 引用但文件不存在
2. ...
### 建议合并(孤立/碎片)
1. memory/orphan.md 只剩1条 → 合并到 memory/dev-env.md
2. 同类"API凭据"分散3文件 → 合并为 memory/api-credentials.md
### 建议关联(未互链)
1. memory/a.md ↔ memory/b.md 同根因 → 加 [[wikilink]]
### 需用户确认(跨层矛盾)
1. 全局说"JDK 24" vs 项目说"JDK 21" — 以哪个为准?
### 配置文件过期
1. settings.json — MCP 配置引用已废弃服务
2. CLAUDE.md — 引用已删除 skill 路径(第X行)
要执行哪些?(全部 / 仅删除 / 仅合并 / 指定编号 / 取消)
位置矩阵
| 类型 \ 层级 | 全局 | 项目 | 子项目 | |-------------|------|------|--------| | 偏好习惯 | 全局 MEMORY | 项目 feedback-style | — | | 工具选择 | settings.json / 全局 CLAUDE.md | 项目 CLAUDE.md | 子项目 CLAUDE.md | | 项目决策 | — | 项目 CLAUDE.md / memory | 子项目 CLAUDE.md | | 踩坑记录 | — | 项目 dev-lessons | 子项目 memory | | 个人特性 | 全局 MEMORY (user-profile) | — | — | | 事实信息 | settings.json / 全局 MEMORY | dev-env.md / memory | 子项目 memory | | 通用知识 | — | Obsidian wiki/ + memory 索引 | Obsidian wiki/ + memory 索引 |
融入规则(8条)
- 先搜后写 — 写入前 grep 目标文件 + MEMORY.md。没搜就写等于盲写。
- 更新优于追加 — 旧条目能覆盖就在原处改,不追新条目。例:旧"JDK 21"→ 新"JDK 24",改数字,不在文末加"对了现在用24了"。
- 矛盾以新为准 — 新旧冲突 → 新替旧,旧内容删除。不同时保留两版。
- 互补建立链接 — 新旧相关但不重叠 → 各自保留,互相引用(
[[wikilinks]]或文件内链接)。 - 删除不留残骸 — 删内容后:文件变空 → 删文件+从索引移除;只剩一条 → 考虑合并到上级;多条 → 保留。
- 绝对时间 — 所有时间用
YYYY-MM-DD格式。 - 一条一事 — 每个记忆条目只说一件事。
- 面向读者 — 下一个 agent 只有 5 秒扫过。
详细示例见 references/merge-examples.md。
优化建议(视情况,不强制)
| 条件 | 建议 | |------|------| | 同层同类记忆 > 3 条分散 | "要不要合并成一个文件?" | | 删除后周边孤立 | "旁边的 X 也跟这条相关,要不要一起整理?" | | ≤3 条且不孤立 | 不说,不增加对话噪音 |
特殊情况
模糊匹配:关键词匹配到多个结果 → 列出让用户选。 没匹配到(忘掉时):告知用户,确认是否换个关键词。 首次使用:记忆系统可能不完整,正常处理,写入时自动创建缺失的文件结构。 跨层信息:一条信息同时影响全局和项目 → 两边都写,全局写原则、项目写具体。
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: 2021291696
- Source: 2021291696/weaver-evolve
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.