你在某个 Claude Project 里新开了一个 chat 想问 B 话题,Claude 却一直引用 A 话题的内容——那是两天前你在同一个 Project 里的另一个对话。更糟的是它甚至会冒出某个客户名或代码路径,本不该出现在这次任务里。这不是 bug,是 Project 这个模型设计如此:Project knowledge 对该 Project 下所有 chat 都共享、custom instructions 对所有 chat 都生效、Project 文档里的信号会偏置模型。一旦你搞清楚到底是哪一层在漏,修法就很机械。
常见原因
按命中率从高到低。
1. Project knowledge 里还留着上一话题的文档
Project Knowledge 里的任何东西(上传的文件、粘贴的文本、连接的来源)都会被注入到这个 Project 的每一个 chat。A 话题的 spec PDF 还在里面,B 话题的 chat 就会被它带偏。
怎么判断:打开 Project 侧栏看 Knowledge 区——列在里面的每一项都会对每个 chat 生效。
2. Custom instructions 里塞了话题特定的规则
Project 的「Set instructions for this Project」会被前置到每个 chat。要是写了「永远引用 Acme 合同」,所有 chat 都会继承,包括无关的。
怎么判断:Project 设置 → Custom instructions,看完整文本。凡是话题特定的内容都在漏。
3. 你以为开的是新 chat、其实是接着旧 chat
Claude 界面上点错按钮,有时会把一个旧 chat 当新的打开。侧栏里高亮哪一项,你就在哪一项里。
怎么判断:看 URL—— /chat/<id>,再对侧栏选中项。如果你最新消息上面已经有历史 turn,这就不是新 chat。
4. 长会话里换话题,前面的 turn 全在 context 里
单一 chat 里就算你滚到上面新起一个话题,Claude 看到的是从最早到最新所有 turn。chat 不会在换话题时自动重置。
怎么判断:往上滚一下。你最新消息上面有 30+ 条别话题的 turn,那些都在 context 里。
5. 连接的来源(GitHub、Google Drive)把旧内容重新拉进来
如果你把某个 repo 或 Drive 文件夹连到了 Project,Claude 在 chat 时会重新读。更新过的文档能看到,但同来源里的无关内容也会被看到。
怎么判断:Project 设置 → Connected sources。列出来的每一个都可能在 scope 内。
开始前
- 想清楚目标:是彻底清理 Project,还是只在这一次 chat 隔离(开一个 Project 外的 chat 即可)。
- 删 Project knowledge 之前把重要的备份一下——上传的文件不一定能恢复。
- 区分泄漏是只影响一个 chat 还是所有 chat,前者改本次 chat、后者改 Project。
需要收集的信息
- 那段污染性引用的原文(便于到 knowledge 里搜)。
- 出问题的 chat 是哪一条(带 chat id 的 URL)。
- Project custom instructions 的完整文本。
- Project knowledge 文档清单和 connected sources 清单。
- 当前 chat 是真的新 chat(上方无历史 turn)还是长会话。
一步一步修复
Step 1:先确认它真的是「新」chat
看一眼这个 chat:如果你消息上面已经有 turn,那就不是新的——点 Project 名再点 Project 里的「Start new chat」(或者 Project 外的「New chat」)。URL 应该变成一个全新的 chat ID,上面没有任何历史消息。
Step 2:读一遍 Project 的 custom instructions
Project 设置 →「Set instructions for this Project」。里面只要有话题特定的内容(「把用户当 Acme 的 CFO」「永远参考 Q3 上线计划」)就是污染源,会被前置到所有 chat。要么:
- 把话题特定的那几行删掉,只留耐久规则
- 要么把这次 chat 移出 Project
Step 3:审一遍 Project knowledge
打开 Knowledge 面板。对每一项问自己「这个东西应该出现在这个 Project 的每一个 chat 里吗?」否的话就删。常见嫌疑:
- 只为某一次 chat 上传的 spec PDF
- 粘贴进来的早期对话转录
- 已经不相关的老合同、客户 brief
Project knowledge 是共享的——不是 per-chat。
只对一个 chat 相关的文档应该直接 attach 到那个 chat 里。
Step 4:单次需要的文档用「chat 内附件」而不是 Project knowledge
某份文档只对一次 chat 有用,就直接在 chat 消息里通过回形针图标加进去,只影响这个 chat、不污染整个 Project。
Step 5:敏感话题放到另一个 Project
如果你真的有两批内容绝对不该混(A 客户 vs B 客户、工作 vs 个人),就开两个 Project。共用一个 Project 永远会交叉污染。
Project: Acme Q3 上线 → Knowledge: 上线 brief、deck、对外沟通
Project: Beta 内部工具 → Knowledge: repo 文档、RFC、ADR
Step 6:清理过还泄漏,就硬重置 chat
开一个全新的 chat、只贴新话题的 prompt。如果 Project knowledge 已清、instructions 已精简、还在漏,残留信号在别处——去看 connected sources(GitHub / Drive)。
Step 7:把 connected sources 关掉或缩窄范围
Project 设置 → Connected sources。连接了一个特别大的 GitHub repo,Claude 检索时会把无关文件拉进 context。要么直接断开,要么缩到具体路径(看 connector 是否支持)。
怎么验证修好了
- 在 Project 里开新 chat,问元问题:「你现在从这个 Project 里看到了哪些 context?」Claude 应该只描述当前应在 scope 内的东西。
- 做一次对照:问 A 话题——Claude 仍然应该知道 A(如果 Project 现在的主题就是 A),但应该不再带已被删除的 knowledge 的残影。
- 重跑原来出问题的那条 prompt,泄漏的关键词不应再出现。
- 等 5 分钟再试一次(Project 状态有一定缓存)。
长期预防
- 一个 Project 一个话题,别什么都往一个「Personal」Project 里塞。
- 单次用的文档走 chat 附件,不要往 Project knowledge 塞。
- Project custom instructions 只写耐久规则(「用中文回复」「简洁一点」),不写话题特定的内容。
- 定期审 Project knowledge,每季度清一次过期上传。
- 给客户工作的 Project 加客户前缀做名字,避免不小心在错的 Project 里 chat。
- 把 Project knowledge 当「永远在的背景」,chat 才是「今天的焦点」。
容易踩的坑
- 误以为「新 chat = 一张白纸」——在 Project 里永远不是。
- 把对话转录粘进 custom instructions 以为这样能「记住」,结果是污染了每个 chat。
- 把整个 GitHub org 接到 Project 当来源,范围太大。
- 删了一份 knowledge 没等索引刷新,Claude 还会引用一小段时间。
- 把 chat 记忆(per-chat)和 Project knowledge(per-project)混为一谈——两者完全不同范围。
常见问答
- 删一个 chat 会从 Project 记忆里清掉它的内容吗? 删 chat 就只是删 chat。不会动 Project knowledge。两者独立。
- Project knowledge 会过期吗? 不会,你手动删之前一直在。
- 共享 Project 的协作者能看到彼此的 chat 吗? 看方案和 Project 共享设置。Team 方案下 knowledge 共享,chat 默认私有。
- 为什么 Claude 有时会「忘」Project knowledge? Context window 压力——长 chat 里早期 Project knowledge 可能被摘要丢掉。开新 chat 就好。
- 能不能让 knowledge 只对某些 chat 生效? 目前不行。一次性文档走 chat 附件。