记忆与指令
Mework 给模型三种常驻上下文:你写在 MEWORK.md 里的项目指令,模型自己用 Markdown 文件维护的长期记忆,以及把没做完的工作带进新对话的交接文档。
项目指令
项目指令是你写给模型看的 Markdown 文件:怎么构建和测试、要遵守的约定、不该做的事。每一次运行开始时(你发出的每条消息,以及对话自行恢复的每一次),Mework 都会收集这些文件,放在对话历史之前发给模型。它们不会出现在时间线上。
指令只能引导模型,不能授予任何权限;必须遵守的规则请用钩子或安全级别。在对话中途改了指令文件,之后每个请求的开头都会变,提供商的提示缓存会重建一次。
Mework 读哪些文件
Mework 按下表顺序读取,越具体的越靠后:
| 顺序 | 文件 | 用途 |
|---|---|---|
| 1 | macOS 上是 /Library/Application Support/Mework/MEWORK.md,Windows 上是 %ProgramFiles%\Mework\MEWORK.md |
管理员为整台电脑设定的规则 |
| 2 | ~/.mework/MEWORK.md,然后是 ~/.mework/rules/ 下的每个 .md 文件 |
你自己对所有项目的规则 |
| 3 | 从 Git 仓库的顶层文件夹一路到工作区文件夹(不在仓库里时只读工作区文件夹),每一层依次读:.mework/MEWORK.md、MEWORK.md、.mework/rules/ 下的每个 .md 文件、MEWORK.local.md |
项目规则;MEWORK.local.md 放不进版本控制的个人备注 |
- 项目指令只来自工作区 1;对话的其他工作区不提供指令文件。
- 仓库顶层之上的文件夹(不在仓库里时,是工作区之上的文件夹)一概不读。想复用更上层的文件,就用
@导入它。 CLAUDE.md、AGENTS.md和.claude/不会被读取。想复用其中一个,就在MEWORK.md里写一行@AGENTS.md这样的导入。
只对部分文件生效的规则
rules/ 文件夹里的文件可以在 front matter 里用 paths: 限定自己适用的文件:
---
paths:
- "src/**/*.ts"
- docs/
---
Use the logger from src/log.ts, never console.log.这样的规则在模型用 read 工具打开匹配的文件之后才发送,并在本次运行剩下的时间里一直有效。模式相对工作区,区分大小写;* 不跨文件夹,** 跨文件夹,{a,b} 匹配其中任意一个,末尾的 / 表示整个文件夹,不含 / 的模式匹配任意位置的文件名。
子文件夹里的指令文件同理:模型读取该子文件夹里的文件之后才加载。
导入其他文件
任何指令文件都可以用 @ 加路径引入另一个文件:
Follow the style guide in @docs/style.md.
@"notes/release checklist.md"路径相对于写这一行的文件,也可以写绝对路径;~ 和 URL 都不能用,导入最多嵌套 4 层。
被导入的文件不论在不在工作区里都会读取:它是你自己点名的。在对话里,它算作工作区里的文件,不论是哪个工作区的指令导入了它,安全层级都按工作区内的文件对待它(见安全层级)。沙箱不会因此放宽。
上限与被跳过的文件
单个文件最大 256 KiB,全部指令文件合计最多 1 MiB、256 个。文件超过上限、不是有效的 UTF-8,或者看起来含有私钥、API 令牌、密码之类的密钥时,会被整个跳过。Mework 跳过文件时,会在应用里告诉你跳过了哪个文件、原因是什么。
代码块之外的 HTML 注释(<!-- … -->)在发送前会被删掉,可以用它写模型看不到的备注。
长期记忆
长期记忆是一组由模型自己读写的 Markdown 文件,一个对话里学到的东西,下一个对话还在。全局记忆只有一份,由这台电脑上的所有对话共用。项目记忆属于每个工作区:它放在工作区自己的文件夹里,由包含这个工作区的所有对话共用。
~/.mework/memory/ 全局记忆
MEMORY.md 索引:Mework 维护
<topic>.md 记忆文档:模型来写
<workspace>/.mework/memory/ 各工作区的项目记忆,结构相同记忆文档最大 256 KiB,MEMORY.md 最大 64 KiB;超过的文件会被整个略去。Mework 写入记忆时用的锁文件不会在你的仓库里显示为改动。
开启记忆
在 更多选项 → 对话设置 → 高级工具 里打开 启用全局记忆、启用项目记忆,或两个都开。每个开关会加入这一层的索引和记忆工具,这些工具不在 工具 页里列出;启用项目记忆 对对话的所有工作区都生效。开关属于对话本身,预设也会保存;内置的 mework 预设两个都开着。对话发出第一个请求之后,开关可能变成橘色或灰色,详见对话设置。
MEWORK.md 是项目指令,不属于记忆:无论记忆开没开,它们都会发送。
模型怎么使用记忆
每次运行开始时,Mework 把每个已开启层的 MEMORY.md 发给模型,全局在前:每篇文档一行,附带描述。对话有多个工作区时,每个工作区的索引放在各自的标题 Project memory of workspace N (<path>) 下,三个项目记忆工具多一个可选的整数参数 workspace,指定用哪个工作区的记忆(默认 1);只有一个工作区时没有这个参数。模型用记忆工具(例如 create_project_memory)按名字读取文档、新建文档,或替换文档里的一段;没有删除、列出或搜索记忆的工具。索引每次运行只读一次,所以新建的文档从下一次运行起才出现。
- 每次写全局记忆都要审批,完全访问 下也一样,钩子也不能替你批准。审批卡会注明这次改动影响所有项目共用的记忆,并且没有 总是允许。写项目记忆和所有读取都不会询问。
- 计划模式不会拦下记忆写入。
- 不带角色的子代理沿用对话的记忆开关;带角色的子代理没有记忆工具。
自己编辑或清空记忆
用任何编辑器都能改这些文件;改动从下一次运行起生效。
- 修改一条记忆: 编辑
memory/<topic>.md。 - 删除一条记忆: 删掉
memory/<topic>.md。从下一次运行起,模型就不会在索引里看到它,即使你没动MEMORY.md。 - 清空一层: 删掉这一层的
memory/文件夹。 - 别在
MEMORY.md里写自己的内容: 每次写入记忆都会只根据其中的索引行重建它,其余内容一概丢弃。常驻指令写在MEWORK.md里。
远程、工作树与临时工作区
- 在 SSH 机器或 WSL 上,指令和记忆与本地文件夹一样:Mework 读取远程文件夹里的指令文件,项目记忆放在那台机器上它的
.mework/memory/里,由包含这个工作区的所有对话共用。 - 在 Git 工作树里,工作树就是它自己的顶层:指令文件从工作树读取,不读项目文件夹里的,只额外加上项目文件夹里你未纳入版本控制的
MEWORK.local.md。项目记忆仍在工作区自己的.mework/memory/里,而不在工作树里,所以工作树删掉后记忆还在。 - 在临时工作区里,Mework 读取管理员文件、你
~/.mework里的文件和临时文件夹本身。项目记忆只属于这一个对话。
交接文档
上下文达到自动压缩阈值时,模型写下交接文档,然后在一个新对话 <title>-handover-1 里接着做;新对话从交接文档开始,不带历史。
交接文档存放在 Mework 应用数据目录下的 handoffs/<conversation>/ 里,索引是 HANDOFF.md,删除对话时随之删除。每次续接拿到的是文档的副本,所以连续多次交接时,一直在编辑同一套文档。
Mework 还会发送什么
每个请求都以 Mework 的系统提示词段落开头,每次运行重新生成:环境信息块(工作目录、平台、系统版本和日期),以及所选技能、MCP 服务器和钩子的说明段。
接下来是对话自己的系统提示词:时间线最顶端的 系统提示词 卡片,例如内置 mework 预设那张讲工程实践的卡片。在下方插入的 系统提示词 卡片从它所在的位置起生效:在支持对话中途系统消息的模型上,它作为一条中途系统消息送达;在其他模型上,它像计划模式引导那样送达。
Mework 自己写的大部分文字都可以用提示词档案改写;更多选项 → 历史记录 显示每个请求实际带了什么。