别用中文目录名打开 Claude Code。你的对话正在消失。
实测中文、日文、韩文、阿拉伯文全部受影响。4 种语言。6 层影响。1 个根源。
一、一个会话神秘消失了
6 月 24 日上午,我在 C:\Users\...\Desktop\claude面试 目录下跟 Claude Code 聊了半个小时。下午再打开——会话不见了。--resume 找不到。
没删过。没清理过。
回退路径——翻到 .claude/projects/——Claude Code 把所有对话历史存在这里,每个项目一个目录。
看到的目录名让我愣住了。
二、目录名去哪了
简历/ → C--Users-...-Desktop---
claude面试/ → C--Users-...-Desktop-claude--
测试中文目录/ → C--Users-...-Desktop-------
汉字全部被替换成了连字符。 "简历"变成两个 -。"测试中文目录"变成六个 -。
为了验证,我创建了两个不同的目录:
mkdir 项目甲 (3 个中文字)
mkdir 测试乙 (3 个中文字)
各打开一次 Claude Code。然后检查 .claude/projects/:
项目甲 → C--Users-...-Desktop----
测试乙 → C--Users-...-Desktop---- ← 一模一样
两个不同的文件夹——映射到了同一个会话目录。 它们的所有对话都存储在一起。
三、这意味着三件事
第一:清理一个目录,连带删除另一个
在 项目甲 执行 claude project purge 清理自己的项目——清理程序删了 ---- 目录下的所有会话——包括 测试乙 的全部对话。测试乙 的用户甚至不知道对话被删过。没有警告。没有提示。
第二:一个目录可以看到另一个目录的对话
在 测试乙 执行 claude --resume——会话列表里出现了 项目甲 的对话。从未打开过那个项目的人,可以点进去——恢复那个项目的完整聊天记录。
第三:不只中文
同样的测试在日文(日本語テスト)、韩文(한국어테스트)、阿拉伯文(اختبار)下各跑了一遍。全部被编码为等长连字符——全部碰撞到同一个目录。四种语言——同一个结果。
四、预存碰撞——这不是新 bug,已经发生很久了
调查过程中,我检查了自己系统上已有的 .claude/projects/。发现了 5 个纯连字符目录名——里面存储着真正项目的对话记录。
例如:C--Users-...-Desktop--------(8 个连字符)里存了 C:\Users\...\Desktop\黑马微服务资料 的会话。这个目录早就在这了——不是我的测试创建的——是正常的项目使用中生成的。
这个 bug 不是新引入的。它已经丢在用户系统上默默运行很久了。
五、不只是会话碰撞——更深层的问题
信任状态是分离的
.claude.json 里的信任状态由真实路径存储——项目甲 和 测试乙 各自有独立的信任标记。但它们的会话是共享的。
这意味着——你在 项目甲 里点了"信任"——你信任的不是 测试乙。但你们的对话存在同一个地方。你清一次项目——两个人的对话全没了。
清理机制也受影响
cleanupPeriodDays(默认 30 天)按编码后的目录名操作。两个不同的项目被视为一个——清理时统一处理。一个项目 30 天没用被清理——另一个还在活跃使用的项目对话也一起被删了。
"不再询问"权限也是共享的
如果 项目甲 的 .claude/settings.local.json 里写了 "don't ask again" 的权限——它存在编码后的项目目录下——测试乙 打开时也会使用同一份设置。你为一个项目授予的权限——另一个项目自动获得。
六、根源:路径编码丢弃非拉丁字符
Claude Code 在存储会话时,使用的路径编码规则是:
路径中的 / → -
路径中的非拉丁字符 → -
所以 C:\Users\...\Desktop\测试中文目录 变成 C--Users-...-Desktop-------。
不同目录——只要非拉丁字符数量相同——映射到完全相同的 .claude/projects/ 目录。 会话全部混在一起。
七、影响面
任何使用中文、日文、韩文、阿拉伯文、俄文、希伯来文、泰文等非拉丁字符命名文件夹的开发者——都存在以下风险:
- 清理一个项目的对话——导致另一个项目的对话消失
- 在一个项目里
--resume——能看到另一个项目的对话 - 使用
autoUploadSessions同步时——不同项目的对话被合并上传 cleanupPeriodDays默认清理——把多个项目当作一个处理- "不再询问"权限——一个项目的授权应用到另一个项目
全球所有非英语用户都会受影响。
八、修复建议
在被 Claude Code 修复之前,建议:
- 将项目目录名改为纯 ASCII 字符——
my-project而不是我的项目 - 避免在中文目录下打开 Claude Code——会话可能和其他同名长度的目录碰撞
- 使用检测工具扫描——确认你的目录是否有风险
九、已报告 & 检测工具
GitHub Issue:anthropics/claude-code#70674
(已被 bot 标记为 area:core + has repro——确认为核心代码缺陷 + 复现步骤有效)
开源检测工具:ai-config-guard
git clone https://github.com/yurenpai/ai-config-guard.git
cd ai-config-guard
node index.js .
功能:
- 目录名检查——如果包含非拉丁字符,立即发出警告——告诉你编码后的名称和碰撞风险
- 项目文件扫描——检测 AI 编码助手可能被诱导执行的危险操作(凭据读取、数据外泄、Prompt Injection 等 7 条规则)
- Web 仪表盘——深色/浅色主题切换 + 中文/英文双语 + CSV/SARIF 导出
- CI/CD 集成——GitHub Actions 自动扫描——可插入到任何项目的提交前校验中
这是目前唯一能检测此问题的工具。
2026-06-25 · 发现 → 实测 → 提交 → 工具
更多推荐




所有评论(0)