MagicFrog 给每段对话一份长期记忆:一棵 Markdown 笔记树,agent 每次会话都会读取,并可在工作推进中更新。记忆组织为五个维度,同一条笔记路径可以同时存在于多个维度——更具体的维度获胜。
五个维度
| 维度 | 范围 | 随账号漫游 |
|---|---|---|
account |
整个账号共享 | 是 |
user |
单个用户的偏好与上下文 | 是 |
agent |
单个具名 agent,按 agent ID 隔离 | 是 |
task |
单个任务(项目),按任务 ID 隔离 | 是 |
device |
仅一台计算机 | 否——从不离开这台机器 |
前四个构成一条覆盖链,从最泛到最具体:account < user < agent < task。同一路径存在于链上多个维度时,合并(生效)视图只保留最具体的那一份。device 在链外:它的条目是绑定这台计算机的独立行,绝不跨机器合并。
agent 与 task 条目可以用 ID 前缀放进命名空间——agent/<agentId>/notes/style.md 只作用于那个 agent,task/<taskId>/notes/progress.md 只作用于那个任务。不带 ID 前缀的路径作用于所有 agent 与任务。
记忆住在哪里
记忆就是磁盘上的纯 Markdown;一个文本编辑器就足以作为记忆客户端。每个条目是一个带最简 frontmatter 的 .md 文件:
---
revision: 3
updated: 2026-10-20T09:12:00.000Z
---
Prefer functional array methods over for loops.
account、user、agent与device条目位于 MagicFrog 数据目录的memory/<dimension>/下。task条目位于项目内.magicfrog/memory/。revision随每次写入递增。写入可携带期望 revision;对过期 revision 的写入会失败,而不是静默覆盖。device条目额外记录一个machinefrontmatter 键,把它绑定到写入它的那台计算机;导入时保留该绑定。
旧布局的 machine/ 与 project/ 目录继续可用,分别按设备与任务记忆读取;新笔记直接写进五个维度。
层即配置
每个维度都有层(layer)——维度根内部的路径约定。每个维度默认存在两层:
core(维度根本身),以及skills(skills/前缀)。
层定义在记忆树旁边的 layers.json 里:为团队或工作流加一层就是改一次配置。
skills 层下的 Markdown 文档可作为技能源被发现,与你的仓库技能和主目录技能并列——写着「如何工作」的记忆笔记会变成可加载的技能。
记忆如何到达 agent
每次会话开始时,agent 都会读到作用域内各维度的记忆,越具体的维度越优先(task、agent、user、account,最后是 device)。记忆更新后整体替换,agent 不会把新旧视图混用。
所以每个 agent 看到的是它所在任务的记忆和它自己的记忆——看不到其他人的。
云端漫游
前四个维度(account、user、agent、task)随你的账号跨机器同步,每条目的 revision 让写入具备冲突安全。device 条目从不上传——本机记忆留在本机。
要手工搬移记忆,这棵树可导出为一组可移植的 Markdown 文件再导回;带 machine/ 或 project/ 前缀的文件分别落入 device 或 task 维度。