功能请求:项目级记忆隔离(Project-Level Memory Isolation)
背景
QoderWork 当前的记忆系统(MEMORY.md / USER.md / daily memory)是全局共享的,所有会话读取同一份记忆。这在单项目使用时没有问题,但当用户同时推进多个独立项目(如不同的科研课题、不同的客户项目、不同的代码仓库)时,会产生明显的上下文污染。
问题描述
- 记忆串扰:项目 A 的编码约定、决策记录、术语偏好会被带入项目 B 的对话中,导致 AI 做出不符合当前项目上下文的判断。
- 记忆膨胀:多项目并行时,全局 MEMORY.md 快速膨胀,大量条目对其他项目毫无意义,既浪费 token 又降低检索精度。
- 隐私边界:不同项目可能涉及不同客户或合作方,用户不希望 A 项目的敏感信息在 B 项目的对话中被回忆出来。
- 上下文切换成本:用户每次切换项目时,需要手动提醒 AI “忘掉之前的项目”,或重新声明当前项目的约定,体验很差。
期望功能
引入 Project(项目) 概念,每个项目拥有独立的记忆空间,与全局记忆并存但互不干扰。
具体设想如下:
项目定义:用户可以创建项目(如"低空智联网抗干扰调度"、“经济学论文翻译”),每个项目绑定一个工作目录和一组项目级上下文文件(类似 AGENTS.md / MEMORY.md)。
记忆隔离规则:
- 在某个项目上下文中工作时,AI 优先读取该项目的记忆,全局记忆作为兜底。
- 不同项目之间的记忆默认互不可见。
- 用户可以选择性地将某些记忆标记为"全局共享"(如个人偏好、通用编码习惯)。
记忆层级建议:
全局记忆(Global Memory)
├── USER.md ← 用户画像,所有项目共享
├── MEMORY.md ← 全局记忆,可标记条目归属
│
├── 项目 A 记忆(Project A Memory)
│ ├── PROJECT_AGENTS.md ← 项目 A 的编码规范、架构约定
│ ├── PROJECT_MEMORY.md ← 项目 A 的专属记忆
│ └── daily/ ← 项目 A 的每日工作日志
│
└── 项目 B 记忆(Project B Memory)
├── PROJECT_AGENTS.md
├── PROJECT_MEMORY.md
└── daily/
切换机制:用户可以通过选定工作目录自动关联项目,或在 UI 上手动切换当前活跃项目。
与现有功能的关联
- 当前已有"选定文件夹"机制,可以作为项目绑定的物理锚点。
- 当前已有 AGENTS.md / SOUL.md 等项目上下文文件的加载机制(bootstrap content protocol),项目级记忆可以在此基础上扩展。
- 论坛已有用户提出 Project level prompts 的需求,本帖聚焦在记忆隔离维度,两者可合并为完整的"项目管理"功能。
适用场景
| 场景 | 当前痛点 | 项目级记忆后 |
|---|---|---|
| 同时推进 3 个科研课题 | 论文 A 的符号约定被错误带入论文 B | 每个课题独立记忆,符号体系不混淆 |
| 为不同客户做咨询项目 | 客户 A 的商业信息可能泄露给 B | 记忆隔离,隐私安全 |
| 个人项目 vs 公司项目 | 公司的代码规范污染个人项目 | 按项目加载不同规范 |
| 长期研究 vs 短期任务 | 临时任务的噪音记忆稀释长期研究记忆 | 短期项目可设为临时,结束后不污染全局 |
最小可行方案(MVP)
如果完整的项目管理功能开发周期较长,以下是最小可行的替代方案:
- 允许用户在选定文件夹下放置 PROJECT_MEMORY.md,当该文件夹被选中时自动加载,优先级高于全局 MEMORY.md。
- 写入记忆时,如果当前有活跃项目,默认写入项目级记忆而非全局记忆。
- 项目记忆文件存在用户自己的工作目录中,不需要 QoderWork 额外管理,只需在 awareness loading 阶段支持读取即可。
这样用户可以立即通过文件夹组织来实现基本的项目隔离,不需要等待 UI 层面的项目管理功能。