| name | evolution-memory |
| description | 跨项目的蒸馏式知识积累。在项目结束时自动触发蒸馏,在新项目启动时自动读取相关规则。存"规则"而非"数据"。 |
Evolution Memory
跨项目的蒸馏式知识积累系统。每个项目结束时提炼可复用规则,新项目启动时读取历史经验,实现跨周期进化。
When to Use
- 读取:每个 skill 启动时自动读取与当前阶段相关的 memories
- 写入:项目结束时(论文提交后 / 实验完成后)自动触发蒸馏
- 用户说"总结经验" / "保存规则" / "evolution memory"
- 实时捕获:用户纠正 agent 行为、确认非显而易见的做法、或提供项目动态时
存储结构
位置:~/.nexus/evolution_memory/
~/.nexus/evolution_memory/
├── MEMORY.md # 索引文件(每条 <150 字符,总量控制在 200 行内)
├── user_researcher_profile.md
├── feedback_terse_output.md
├── project_neurips_deadline.md
├── reference_gpu_server.md
├── idea_cross_domain.md
├── experiment_lr_warmup.md
└── ...
每个记忆文件使用以下 frontmatter 格式:
---
name: {{记忆名称}}
description: {{单行描述 — 用于未来对话中判断是否相关}}
type: {{user | feedback | project | reference}}
source_project: {{来源项目,可选}}
date: {{YYYY-MM-DD,必须用绝对日期}}
confidence: {{0.0-1.0,可选}}
---
{{记忆内容}}
四类型记忆分类
user — 研究者画像
关于用户的角色、目标、知识水平、研究风格的信息。帮助 agent 调整行为适配用户。
保存时机:学到用户任何偏好、背景、专业水平时
示例:
- 用户说"我是做 RL 的,第一次碰 world model" → 保存:
深耕 RL,world model 新手 — 用 RL 术语类比解释 WM 概念
- 用户说"我导师要求每周汇报进展" → 保存:
有周报需求 — 实验阶段注意以周为单位规划
feedback — 行为纠正与确认
用户对 agent 行为的反馈。同时记录纠正和正面确认。
如果只保存纠正,agent 会回避过去的错误但偏离已验证的方法,并可能变得过于保守。
保存时机:
- 用户纠正做法("不要这样"、"别用这种方式")
- 用户确认非显而易见的做法("对就这样"、"这种方式很好"、默认接受了不寻常的选择)
结构:Rule → Why: → How to apply:
示例:
- 用户说"别在综述里引用预印本" → 保存:
文献综述不引用 arXiv 预印本。**Why:** 导师要求只用正式发表的论文。**How to apply:** survey 阶段的 corpus freeze 时过滤 unpublished。
- 用户说"对,一次性提交整个 PR 是对的" → 保存:
代码修改倾向于合并成一个 PR 而非拆分。**Why:** 用户确认了这种做法,认为拆分是 churn。**How to apply:** 除非用户另有指示,实验代码修改合并提交。
project — 项目动态
项目的进行中工作、目标、截止日期、动态。不可从代码或 git 历史派生的上下文信息。
相对日期必须转换为绝对日期("下周四" → "2026-04-08")。
保存时机:学到 who/what/why/when 时
结构:Fact → Why: → How to apply:
示例:
- 用户说"NeurIPS 截止日期提前到五月中" → 保存:
NeurIPS 2026 截止日 2026-05-15。**Why:** 今年改了截止日。**How to apply:** 实验和写作 timeline 需在 5/10 前完成。
- 用户说"我们组的 GPU 下周要维护" → 保存:
GPU 服务器 2026-04-07 起维护一周。**Why:** 机房检修。**How to apply:** 在 4/07 前完成需要 GPU 的实验。
reference — 外部资源指针
外部系统中信息的位置指引。
保存时机:学到外部资源及其用途时
示例:
- 用户说"Overleaf 项目链接是 xxx" → 保存:
Overleaf 项目: xxx — NeurIPS 2026 主稿
- 用户说"实验服务器是 AutoDL xxx" → 保存:
AutoDL 实验机: xxx — 4× A100, 用于 TSWM 训练
不应保存的内容
- 代码模式、架构、文件路径 — 可从项目当前状态派生
- Git 历史 —
git log/git blame 是权威源
- 调试方案 — 修复已在代码中
- CLAUDE.md 中已有的内容
- 临时任务详情:进行中的工作、当前对话上下文
即使用户明确要求保存,也适用这些排除。 如果用户要求保存 PR 列表或活动摘要,问"其中什么是意外的或非显而易见的" — 那部分才值得保留。
记忆漂移防护
记忆是某个时间点的快照,可能过时。使用记忆前:
- 如果记忆提到文件路径 → 先检查文件是否存在
- 如果记忆提到函数/配置 → 先 grep 确认
- "记忆说 X 存在" ≠ "X 现在存在"
- 项目状态类记忆衰减最快 — 如果用户问"当前"状态,优先用
git log 或读代码
四种进化机制
IDE — Idea Direction Evolution
触发:idea 阶段结束后(ToT + Elo + 红队完成)
提炼内容:
- 哪些方向存活了?为什么?
- 哪些方向被 kill 了?什么原因?
- 红队最常攻击的弱点类型是什么?
输出:type: feedback 记忆,如 "在[领域]做[方法类型]的 idea,[可行/不可行],因为[原因]"
IVE — Idea Validation Evolution
触发:实验失败后
提炼内容:
- 失败是实现问题(bug/环境/超参)还是方向问题(idea 本身不 work)?
- 如果是方向问题,在什么条件下暴露的?
输出:type: feedback 记忆,如 "[方法]在[条件]下会失败,因为[根本原因]"
ESE — Experiment Strategy Evolution
触发:实验成功后
提炼内容:
- 哪些策略关键促成了成功?
- 哪些调试技巧特别有效?
- 数据处理/训练的可复用 pattern 是什么?
输出:type: feedback 记忆,如 "遇到[问题]时,先试[策略A]再试[策略B]"
RFE — Review Feedback Evolution(v4 新增)
触发:用户收到真实审稿意见后,使用 reenter_pipeline 重入
处理流程:
-
将真实审稿意见与模拟审稿做逐条对比
-
分析差异类型:
| 差异类型 | 含义 | 校准动作 |
|---|
| 模拟 ✅ 真实 ❌ | 模拟遗漏了真实弱点 | 保存 type: feedback 记忆 |
| 模拟 ❌ 真实 ✅ | 模拟过度攻击 | 降低该类攻击权重 |
| 模拟 ✅ 真实 ✅ | 双方共识 | 提升 confidence |
| 模拟 score > 真实 score | Sycophancy bias | 保存 type: feedback,加大 Score Deflation |
-
输出 calibration_report.md
-
自动更新相关记忆文件的 confidence
输出:type: feedback 记忆,如 "在[venue]审稿模拟中,[弱点类型]被遗漏了N次,真实reviewer关注[具体模式]"
这实现了自校准审稿系统——每次真实投稿反馈后,模拟审稿精度提升。
读取策略
按需加载——每个 skill 启动时只读取相关类型的记忆:
| Skill | 读取的记忆类型 |
|---|
| 所有 skill | user + reference(始终相关) |
| idea-brainstorm | + feedback(含 IDE 规则) |
| experiment-runner | + feedback(含 IVE/ESE 规则)+ project(截止日期) |
| paper-writing | + feedback(写作偏好)+ project(venue/deadline) |
| multi-reviewer | + feedback(含 RFE 规则) |
预估增量:~50 tokens/memory × ~30-60 memories(10个项目后)= 1.5-3K tokens
写入策略
自动蒸馏(项目结束时)
- 回顾项目全流程记录(evidence audit → idea → experiment → paper → review)
- 提炼 2-5 条新记忆
- 用户确认后写入
~/.nexus/evolution_memory/
- 同步更新
MEMORY.md 索引
- 如果新记忆与已有记忆冲突 → 更新 confidence 或合并
实时捕获(v2 新增)
- 任何 stage rollback 时自动 capture failure lesson → 转换为
type: feedback 记忆
- 用户纠正 agent 行为时立即保存
- 不等项目结束,每次反馈都积累
记忆淘汰
- 连续 3 个项目未被读取的记忆 → 标记为
deprecated
- confidence < 0.3 的记忆 → 建议删除
project 类型中日期过期 > 3 个月 → 自动标记为过期
核心准则
- 失败经验比成功经验更有价值 — IVE 的规则优先级高于 ESE
- 记忆要少不要多 — 60 条精炼记忆 > 500 条泛泛记录
- 过时的记忆比没有记忆更危险 — 定期淘汰,不要累积
- 同时记录纠正和确认 — 避免只从错误学习导致过于保守
Pipeline Exit (v2: MetaClaw-style Auto Distillation)
触发时机:
- 最终蒸馏:
final_revise 完成后由 complete_stage("final_revise") 自动触发
- 实时捕获(v2 新增):任何 stage rollback 时自动 capture failure lesson
complete_stage(result="rollback") → 自动记录 failure reason → 转换为记忆
- 不等项目结束,每次失败都积累经验
- 手动调用:任何时候均可
MetaClaw 式自动蒸馏:failure → lesson → memory → 注入下次 pipeline(自动化)
T4 — 被动 hook 蒸馏(Phase 2 实装)
NeXus 现有 log_event hook:每次
pipeline-orchestrator.complete_stage 跑完都往 ~/.nexus/evolution_memory/.event_log.jsonl
追加一条结构化事件(不阻塞 agent)。
distill_event_log.py 把这些事件被动蒸馏成编号的 lesson 文件,落在 ~/.nexus/evolution_memory/lessons/{NNNN}_{type}_{stage}_{ts}.json。
蒸馏规则(最小可行集,待 Phase 2 后续补 LLM 精读):
| 事件类型 | 蒸馏为 | 触发条件 |
|---|
rolled_back | feedback lesson | 任何 stage 回滚 |
compliance_failed | feedback lesson | 任何 stage 合规失败 |
advanced + stage="final_revise" | project lesson | 项目完整跑完 |
幂等性:脚本用 ~/.nexus/evolution_memory/.distill_offset 跟踪已处理的字节数;重复跑同一份 event log 不会产生重复 lesson。
触发方式(任选):
- 每次 stage 完成自动:可在 nexus_hooks 加
assurance_emit 风格的 PostToolUse 触发 distill_event_log.py(小开销)。
- 后台
/loop:Claude Code 用户可 /loop 5m python ~/.../distill_event_log.py。
/full-research-pipeline 结尾:自动调用一次(已在 workflow 文档里)。
- 手动:用户随时
python distill_event_log.py 也行。