项目级记忆隔离(Project-Level Memory Isolation)

功能请求:项目级记忆隔离(Project-Level Memory Isolation)

背景

QoderWork 当前的记忆系统(MEMORY.md / USER.md / daily memory)是全局共享的,所有会话读取同一份记忆。这在单项目使用时没有问题,但当用户同时推进多个独立项目(如不同的科研课题、不同的客户项目、不同的代码仓库)时,会产生明显的上下文污染。

问题描述

  1. 记忆串扰:项目 A 的编码约定、决策记录、术语偏好会被带入项目 B 的对话中,导致 AI 做出不符合当前项目上下文的判断。
  2. 记忆膨胀:多项目并行时,全局 MEMORY.md 快速膨胀,大量条目对其他项目毫无意义,既浪费 token 又降低检索精度。
  3. 隐私边界:不同项目可能涉及不同客户或合作方,用户不希望 A 项目的敏感信息在 B 项目的对话中被回忆出来。
  4. 上下文切换成本:用户每次切换项目时,需要手动提醒 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)

如果完整的项目管理功能开发周期较长,以下是最小可行的替代方案:

  1. 允许用户在选定文件夹下放置 PROJECT_MEMORY.md,当该文件夹被选中时自动加载,优先级高于全局 MEMORY.md。
  2. 写入记忆时,如果当前有活跃项目,默认写入项目级记忆而非全局记忆。
  3. 项目记忆文件存在用户自己的工作目录中,不需要 QoderWork 额外管理,只需在 awareness loading 阶段支持读取即可。

这样用户可以立即通过文件夹组织来实现基本的项目隔离,不需要等待 UI 层面的项目管理功能。