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---
两个完全不同的文件夹,由于字符数量相同,最终编码成了完全一致的记忆路径!
风险评估
严重程度:高
可能导致的后果:
- 记忆内容相互覆盖:不同项目的记忆内容可能被错误地存储在同一个目录下
- 机密信息泄露:敏感信息可能被其他项目访问
- 会话历史丢失:使用
--resume或--continue时无法找到正确的会话 - 工具功能失效:外部工具无法正确识别项目关联
受影响人群:
- 所有使用非 ASCII 字符命名文件夹的用户
- 中文、日文、韩文用户风险最高
- 使用相同字符数量命名不同文件夹的用户
解决方案
使用 ASCII 字符命名文件夹(推荐)
完全避免非 ASCII 字符,确保路径编码的唯一性。
preserve-session 插件(实验性)
虽然该插件尚未正式收录,但有一个 PR (#39148) 提供了一个临时解决方案。
核心功能:
- 为每个项目生成唯一的 UUID
- 使用全局注册表维护 UUID → 路径映射
- 解决编码冲突和路径变更问题
问题跟踪
- 相关 Issue:#46071, #40946
- 建议修复方案:PR #39148 (
preserve-session插件)
本文由作者按照 CC BY 4.0 进行授权