文章

Claude Code 记忆系统路径关联风险

Claude Code 在非 ASCII 字符的项目路径下可能混淆记忆

Claude Code 记忆系统路径关联风险

问题概述

在使用 Claude Code 工具时,项目记忆系统存在一个严重的路径关联风险:当项目路径包含相同长度的非 ASCII 字符(如中文字符)时,会导致记忆目录编码冲突,造成记忆内容相互覆盖或混淆。

问题原理

路径编码机制

Claude Code 的记忆系统使用了一种简单的路径编码策略:

  • 将路径分隔符 / 替换为 -
  • 对所有非 ASCII 字符(如中文、日文、韩文、西里尔文等)统一替换为 -

编码冲突示例

1
2
3
4
5
原始路径:/Users/opal/Desktop/你好
编码后:  -Users-opal-Desktop---

原始路径:/Users/opal/Desktop/你坏
编码后:  -Users-opal-Desktop---

两个完全不同的文件夹,由于字符数量相同,最终编码成了完全一致的记忆路径!

风险评估

严重程度:高

可能导致的后果:

  1. 记忆内容相互覆盖:不同项目的记忆内容可能被错误地存储在同一个目录下
  2. 机密信息泄露:敏感信息可能被其他项目访问
  3. 会话历史丢失:使用 --resume--continue 时无法找到正确的会话
  4. 工具功能失效:外部工具无法正确识别项目关联

受影响人群:

  • 所有使用非 ASCII 字符命名文件夹的用户
  • 中文、日文、韩文用户风险最高
  • 使用相同字符数量命名不同文件夹的用户

解决方案

使用 ASCII 字符命名文件夹(推荐)

完全避免非 ASCII 字符,确保路径编码的唯一性。

preserve-session 插件(实验性)

虽然该插件尚未正式收录,但有一个 PR (#39148) 提供了一个临时解决方案。

核心功能

  • 为每个项目生成唯一的 UUID
  • 使用全局注册表维护 UUID → 路径映射
  • 解决编码冲突和路径变更问题

问题跟踪

  • 相关 Issue:#46071, #40946
  • 建议修复方案:PR #39148 (preserve-session 插件)
本文由作者按照 CC BY 4.0 进行授权