mcpField
E
evo-memory

evo-memory

github.com/evoscientist生产力481388 次安装1 天前更新
代码仓库

关于 evo-memory

evo-memory 是用于跨研究构思与实验周期积累知识的技能。它分别记录研究方向和实验策略,并通过多种机制更新记忆,供后续周期参考。

主要功能

  1. 01分别维护构思与实验记忆
  2. 02将研究方向分类为可行或失败
  3. 03提取可复用的实验策略
  4. 04在周期开始时读取相关记忆

适用场景

  1. 01将研究发现带入新周期
  2. 02避免重复尝试失败方向
  3. 03复用成功实验中的策略

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/evoscientist/evoskills --skill evo-memory

安装后在 Claude Code 中输入/evo-memory确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
evolution-report-template.md
experiment-memory-template.md
ideation-memory-template.md
references/
ese-protocol.md
ide-protocol.md
ive-protocol.md
memory-schema.md
paper-prompts.md

详细介绍

Evo-Memory

一个持续学习层,可在构思和实验周期中积累研究知识。它维护两个记忆存储,并实现三种进化机制,将学习到的模式反馈到未来的研究中。

何时使用此技能

  • 用户已完成 research-ideation,需要更新构思记忆
  • 用户已完成(或未能完成)experiment-pipeline,需要更新记忆
  • 用户即将开始新的研究周期,并希望加载先前的知识
  • 用户询问研究记忆、学习到的模式或跨周期知识
  • 用户提到“evo-memory”“更新记忆”“之前什么有效”“研究历史”或“进化”

学习层

研究是迭代的。每个周期都会从构思到实验产生知识,而这些知识应当为下一个周期提供参考。如果没有持久记忆,每个新项目都会从头开始,重复犯错并重新发现已有模式。

Evo-memory 通过维护两个结构化记忆存储和三种进化机制,解决了这一问题。这些机制会提取、分类并将知识注入后续周期。

两种记忆存储

构思记忆(M_I)

位置:/memory/ideation-memory.md

记录你在研究方向方面的经验——哪些领域前景可期,哪些方向行不通。

两个部分:

部分内容示例条目
可行方向先前周期中展现出潜力的方向“用于少样本分类的对比学习——已确认可行,在第 2 轮锦标赛中排名前三”
未成功方向曾尝试但失败的方向,并附失败分类“用于实时视频的自回归生成——根本性失败:延迟约束与自回归解码不兼容”

每个条目记录:方向名称、一句话摘要、证据(周期及结果)、分类(可行/实现失败/根本性失败)、日期。

使用方式:research-ideation 会在步骤 0 开始时读取 M_I。论文采用基于嵌入的检索和余弦相似度,选取最相似的前 k_I 个条目(实验中 k_I=2)。在步骤 3 中,先前周期里的可行方向会作为候选研究方向提供。在步骤 4 的优化过程中会使用未成功方向——与根本性失败相符的想法会被剔除;实现失败的方向则可能再次尝试。

模板请参见 assets/ideation-memory-template.md。

实验记忆(M_E)

位置:/memory/experiment-memory.md

记录你在研究策略方面的经验——哪些技术方法和配置在实践中有效。

论文将 M_E 定义为存储“可复用的数据处理和模型训练策略”。ESE 会联合总结(i)数据处理策略和(ii)模型训练策略。为全面覆盖,我们在此基础上扩展了另外两个实用部分(架构和调试)。

两个核心部分(来自论文)+ 两个实用扩展:

部分来源内容示例条目
数据处理策略论文(核心)预处理、数据增强和数据处理模式“对于含噪传感器数据:在归一化前使用中值滤波,可将训练不稳定性降低约 40%”
模型训练策略论文(核心)超参数、训练技巧和训练计划“在 10% 的训练步数中进行学习率预热,可避免 Transformer 微调初期发散”
架构策略扩展设计选择、模块配置和结构模式“对于插入 Transformer 超过 10 层深处的模块,残差连接至关重要”
调试策略扩展解决实验失败问题的诊断模式“当训练进行到 50% 后损失停滞:检查梯度范数——裁剪阈值可能过于激进”

每条记录包含:策略名称、上下文(何时使用)、证据(哪个周期、结果如何)、普适性(特定领域适用或广泛适用)、日期。

使用方式:experiment-pipeline 会在每个周期开始时读取 M_E。论文使用基于嵌入的检索和余弦相似度,选取最相似的前 k 个条目(实验中 k_E=1)。先前周期中的相关策略有助于确定超参数、数据处理决策和调试方法,从而减少所需的尝试次数。

模板见 assets/experiment-memory-template.md。

三种演化机制

IDE — 思路方向演化

触发条件:research-ideation 完成步骤 5 并保存 /direction-summary.md,供步骤 6 使用后。

目的:从竞赛结果中提取有前景的研究方向,并将其存入 M_I,供未来周期使用。

论文提示词:将 references/paper-prompts.md 中的 IDE 提示词用作主要提取机制。从原始研究方向填入 {user_goal},从 /direction-summary.md 填入 {top_ranked_ideas},然后逐步推理。输出(方向摘要,包含标题、核心思路、前景原因、要求和验证计划)将直接用于以下步骤。

流程:

  1. 从 /memory/ideation-memory.md 读取当前 M_I
  2. 运行论文中的 IDE 提示词(见上文),逐步推理
  3. 对提示词输出中的每个方向,将其抽象为可复用的层次。“用于 3D 点云的基于注意力的特征选择”可归纳为“面向稀疏数据的跨领域注意力机制”——既具体到有用,又足够抽象以便迁移。
  4. 检查 M_I 中是否已有类似方向的条目。若存在则更新,若为新方向则追加。
  5. 如果本周期发现此前标记为“可行”的方向已被穷尽,则更新其状态。
  6. 编写演化报告,记录变更内容及原因。

关键原则:存储方向,而非思路。“面向结构化数据的对比学习”这样的方向可以在未来周期衍生出许多具体思路。“在分子数据集上使用图增强的 SimCLR”这样的具体思路则过于狭窄,难以复用。

完整流程见 references/ide-protocol.md。

IVE — 想法验证演进

触发条件(依据论文,满足以下任一条件):

  1. 基于规则:工程师在任一阶段都无法在预定义预算内找到任何可执行代码——代码根本无法运行。
  2. 基于 LLM:实验已完成,但通过分析执行报告 W,确定所提方法的表现不如基线。

目的:判定方法失败的原因,并据此更新 M_I。这是最关键的演进机制,因为它能防止后续循环重蹈覆辙,继续走入死胡同。

论文提示词:将 references/paper-prompts.md 中的 IVE 提示词用作主要分类机制。从 /research-proposal.md 填入 {research_proposal},再从各阶段的轨迹日志中填入 {execution_report},然后按提示词逐步推理。该提示词会将失败归类为 FAILED(NoExecutableWithinBudget)、FAILED(WorseThanBaseline) 或 NOT_FAILED。

运行论文提示词后:

  • FAILED(NoExecutableWithinBudget) → 实现失败(可重试)。在 M_I 中记录为“修复后重试”。
  • FAILED(WorseThanBaseline) → 使用以下 5 个诊断问题区分实现失败和根本性失败。
  • NOT_FAILED → 无需更新 IVE。

五个诊断问题(适用于 WorseThanBaseline 情况):

  1. 是否有任何变体显示出部分成功?(是 → 实现失败)
  2. 该假设是否适用于更简单的问题?(否 → 根本性失败)
  3. 相关方法是否曾在已发表的研究中取得成功?(是 → 实现失败)
  4. 不同实现中的失败模式是否一致?(是 → 根本性失败)
  5. 是否能在轨迹日志中找到具体的错误?(是 → 实现失败)

如果有 3 个或更多答案指向同一类型,则归类为该类型。如果答案各执一词,则归类为实现失败(更为保守,可允许重试)。

重试升级规则:如果某个方向在不同循环中被归类为“实现失败” 3 次,则升级为谨慎的重新评估——三次独立的实现失败可能意味着该方向比看起来更难。考虑将其重新归类为根本性失败。

完整流程和示例请参阅 references/ive-protocol.md。

ESE — 实验策略演进

触发条件:experiment-pipeline 成功后——全部 4 个阶段完成且满足各项门槛。

目的:从成功的实验运行中提炼可复用策略,并将其存入 M_E,供后续周期使用。

论文提示词:将 references/paper-prompts.md 中的 ESE 提示词用作主要提取机制。用 /research-proposal.md 中的内容填入 {research_proposal},并用全部 4 个阶段的轨迹日志填入 {trajectories},然后逐步推理。提示词会输出 DATA SUMMARY 和 MODEL SUMMARY,分别对应我们的「数据处理策略」和「模型训练策略」部分。

流程:

  1. 运行论文中的 ESE 提示词(见上文),并逐步推理
  2. 使用 DATA SUMMARY 输出填充 M_E 的「数据处理策略」部分
  3. 使用 MODEL SUMMARY 输出填充 M_E 的「模型训练策略」部分
  4. 运行提示词后,从轨迹日志中手动提取:
    • 架构决策(扩展):哪些设计选择是性能的关键?
    • 调试模式(扩展):哪些诊断方法能最快解决故障?
  5. 对每个识别出的模式评估其通用性:
    • 是否特定于某个领域(仅适用于此类数据/模型)?
    • 还是具有广泛适用性(可能适用于其他场景)?
  6. 检查 M_E 中是否已有类似条目。若存在则更新,若不存在则追加。
  7. 编写演进报告,记录提取出的策略。

泛化指南:如果某项策略解决的是通用挑战(训练不稳定、过拟合、收敛缓慢),而非特定领域的特征,则可认为它具有广泛适用性。如有疑问,请连同策略一起记录其上下文,由未来的使用者判断其适用性。

完整流程请参阅 references/ese-protocol.md。

在周期开始时读取记忆

开始新的研究周期(加载 research-ideation 或 experiment-pipeline)时:

  1. 读取 /memory/ideation-memory.md 和 /memory/experiment-memory.md
  2. 总结相关条目,并将其注入当前上下文
  3. 对于 research-ideation:在步骤 3 中,将 M_I 中可行的方向作为候选研究方向提供。在步骤 4 的细化过程中,使用 M_I 中不成功的方向(仅限根本性失败)来筛除想法。
  4. 对于 experiment-pipeline:使用 M_E 中的策略来指导超参数范围、训练计划和调试方法。

不要盲目套用旧策略。 上下文很重要。适用于图像分类的策略,可能不适用于文本生成。务必核对已记录的上下文与当前问题是否相符。

检索方法:论文使用基于嵌入的余弦相似度进行检索。在实践中,请阅读每个条目的 Summary/Context 和 Retrieval Tags,并据此判断其与当前目标的相关性,以完成这种语义比较。如果环境中提供了自动化嵌入工具,则在记忆库较大时改用这些工具。

对于 research-ideation(注入 M_I)
  1. 读取 /memory/ideation-memory.md
  2. 选出与用户当前目标最相关的 top-k_I=2 个条目。将用户的目标陈述与每个条目的 Summary 和 Retrieval Tags 进行语义相似度比较。
  3. 对于每个选中的可行方向:在步骤 3 选择 3 个研究方向时,将其作为候选方向提供(总数仍为 3)。注入示例:“此前的周期发现‘模态感知模型压缩’很有前景(Elo 1500,第 3 个周期)。可将其作为 3 个研究方向之一,与新的方向一同考虑。”
  4. 对于每个不成功的方向,若其 Failure Classification: Fundamental,则标记为待筛除。注入示例:“此前的周期已确认‘自回归实时视频生成’存在根本性失败(O(n) 延迟)。筛除任何符合此模式的想法。”
对于 experiment-pipeline(注入 M_E)
  1. 读取 /memory/experiment-memory.md
  2. 选择与当前实验领域最相关的 top-k_E=1 条记录。将实验的问题描述与每条记录的 Context 和 Category 进行比较。
  3. 将选定的策略作为上下文注入所有阶段。注入示例:“此前的周期发现,‘带热重启的余弦退火(T_0=10,T_mult=2)’对小型数据集上的 transformer 微调有效(已确认,2 个周期)。在第 2 阶段调优中将其作为默认调度方案。”
  4. 还要查看 Debugging Strategies 部分,查找与当前领域匹配的记录——这些记录在诊断故障时可以节省大量时间。

记忆维护

清理过时记录

定期检查两个记忆库,并移除或归档不再相关的记录:

  • 超过 10 个周期未被引用的记录
  • 已被明显更好的替代方案取代的策略
  • 发生根本性变化的领域方向(新范式、新的最先进水平)
版本跟踪

每个记忆文件都包含 Last Updated 字段和周期计数器。修改记录(而非仅追加记录)时,请在演进报告中注明更改内容。这将形成研究知识演进的审计跟踪。

演进报告

每次演进机制触发后,都要生成一份报告并保存到 /memory/evolution-reports/cycle_N_type.md:

  • 更改内容(新增、更新或删除的记录)
  • 更改原因(触发该机制的周期所提供的证据)
  • 对未来周期的预期影响

模板请参阅 assets/evolution-report-template.md。

反直觉的记忆规则

更新和使用记忆时,优先遵循以下规则:

  1. 先抽象再存储:存储方向和策略,而非具体实验细节。“对比学习能提升小样本分类效果”可在许多项目中复用;“在 CIFAR-10 上对 ResNet-50 设置 lr=0.001”则不可。目标是可迁移的知识,而不是实验日志。

  2. 失败的方向比成功的方向更有价值:知道哪些方法不该尝试,比知道哪些方法有效更节省时间。成功案例会发表在论文中,人人都能获取;失败案例很少分享,因此你的失败记忆能带来独特的竞争优势。

  3. 实现失败不等于方向失败:最常见的演进错误,是因为实现存在错误,就将一个好方向标记为失败。IVE 的存在正是为了区分这两者。无法确定时,应归类为实现失败——重试一个好想法的代价,低于永久放弃它的代价。

  4. 记忆不经清理就会衰退:10 个周期前在不同数据上奏效的策略,如今可能已不再相关。积累过时记录会增加噪声,使有用策略更难被发现。积极清理——规模较小、经过筛选的记忆,比规模庞大、噪声众多的记忆更有价值。

  5. 跨领域借鉴胜过深度专精:某一领域中 M_E 的策略往往也适用于其他领域。学习率预热有助于 NLP、视觉和语音。开始新的实验流程前,应查看完整的 M_E,而不只是特定领域的记录。

  6. 演进报告是写给人看的:报告应让研究人员——而不仅是 AI Agent——能够理解并据此采取行动。提供充分的背景信息,让 6 个月后阅读报告的人能理解为何做出更改,而不只是了解改了什么。

记忆集成点

evo-memory 如何与流程中的其他技能连接:

触发条件来源技能机制更新的记忆
锦标赛完成research-ideationIDEM_I(可行方向)
预算内没有可执行代码,或方法表现不如基线experiment-pipelineIVEM_I(不成功的方向)
流程成功experiment-pipelineESEM_E(数据处理 + 模型训练;可选架构 + 调试)
新周期开始research-ideation读取(top-k_I=2)读取 M_I,用于种子生成/剪枝
新周期开始experiment-pipeline读取(top-k_E=1)读取 M_E,用于策略指导

参考导航

主题参考文件使用时机
IDE 流程详情ide-protocol.md完成 research-ideation 后
IVE 流程详情ive-protocol.mdexperiment-pipeline 失败后(没有可执行代码或方法表现不如基线)
ESE 流程详情ese-protocol.mdexperiment-pipeline 成功后
论文中的实际提示词paper-prompts.md参考 IDE/IVE/ESE 提示词设计的确切内容
记忆数据结构memory-schema.md了解 M_I 和 M_E 的格式
构思记忆模板ideation-memory-template.md初始化 M_I
实验记忆模板experiment-memory-template.md初始化 M_E
演进报告模板evolution-report-template.md记录记忆更新

评论

支持 Markdown