如何把旧的 Claude Code .claude 配置有选择地迁移到 OpenClaude 的 .openclaude?
【免费下载链接】openclauderuns anywhere. uses anything项目地址: https://gitcode.com/GitHub_Trending/op/openclaude
如果你之前用过 Claude Code,或者用过仍以.claude路径存放配置的旧版本 OpenClaude,会遇到一个明确的问题:新版 OpenClaude 默认只读自己的配置位置~/.openclaude和~/.openclaude.json,不会读取~/.claude、项目里的.claude/目录,也不会读取CLAUDE_CONFIG_DIR指向的目录。也就是说,旧配置不会自动生效,你需要自己把其中"确实属于自己、需要继续用"的部分有选择地复制到对应的.openclaude位置。本文按 README.md 的 "OpenClaude config cutover" 一节和 .env.example 的说明,讲清楚哪些文件可以复制、哪些不能复制,以及模型凭据如何重新配置。
先确认新旧配置位置分别是什么
迁移前先把两个位置分清楚,避免整目录乱搬:
| 位置 | 归属 | 说明 |
|---|---|---|
~/.openclaude(目录)+~/.openclaude.json | OpenClaude 默认 | 按用户存放的状态与用户级配置 |
~/.claude(目录)+~/.claude.json | 旧路径 / Claude Code | 早期安装会回退到~/.claude,见下文 |
项目内.claude/ | 旧的项目级配置 | OpenClaude 新项目对应的是项目内.openclaude/ |
.openclaude-profile.json | OpenClaude 的 provider 档案 | 由/provider保存 provider 档案和凭据 |
两点背景依据,用于判断旧配置是怎么来的:
- CHANGELOG.md 记录了 "rename .claude.json to .openclaude.json with legacy fallback"(#582),即用户级 JSON 从
.claude.json改名为.openclaude.json并保留了旧文件回退。 - .env.example 说明:默认 openclaude 把每用户状态放在
~/.openclaude,"(对改名之前的安装会回退到~/.claude)"。所以如果你的旧安装还在写~/.claude,那里面的内容是你需要人工挑选的对象。
文档中明确提到的具体配置位置包括:用户级~/.openclaude/settings.json(/config写入的就是这个文件)、项目内.openclaude/settings.json与被 gitignore 的本地.openclaude/settings.local.json、会话记录~/.openclaude/projects/...下的 jsonl 文件。复制时按"旧位置里的同类文件 → 新位置里的同类文件"对应,而不是整体搬运。
哪些文件复制,哪些坚决不复制
README 的 cutover 一节给出的规则是"intentional migration(有意图地迁移)":
- 可以复制:你为 OpenClaude 亲手创建的 settings、commands、agents、skills、scheduled tasks,以及其他你自己创建的文件——把它们复制到对应的
.openclaude位置(用户级进~/.openclaude,项目级进项目内的.openclaude/)。 - 不要整目录复制
.claude。旧目录里混着别处的配置和状态,全盘拷贝正是文档明确反对的做法("Do not blanket-copy.claude")。 - 不要复制 Claude Code 的 credentials 或 auth 文件。模型凭据走重新配置的路径,见下一节。
判断标准就一条:这个文件是不是你自己创建、并且迁移后还会被 OpenClaude 使用的。属于旧工具自动生成的状态文件,不在这个清单里,就不搬。
凭据不迁移:用 /provider 或环境变量重新配置
凭据类文件复制过去不会生效于新路径,OpenClaude 的推荐做法是重新走一遍 provider 设置:
- 启动
openclaude,在交互界面里运行/provider,按引导完成 provider 设置。它会把 provider 档案和凭据保存到.openclaude-profile.json,之后启动时直接复用。 - 如果你习惯用环境变量管理凭据,注意两点限制:
- OpenClaude不会自动加载项目的
.env文件。要么在你的 shell/启动器里显式 export 变量,要么在启动时带上文件:openclaude --provider-env-file .env该参数用于引入 provider/setup 相关变量;运行时/调试类变量仍建议直接从 shell 或启动器 export。
- 环境变量示例保持与文档一致即可,例如最快的 OpenAI 兼容方式(macOS / Linux):
export CLAUDE_CODE_USE_OPENAI=1 export OPENAI_API_KEY=sk-your-key-here export OPENAI_MODEL=gpt-4o openclaude其中
OPENAI_API_KEY的值需要替换为你自己的密钥。
- OpenClaude不会自动加载项目的
可选分支:用 OPENCLAUDE_CONFIG_DIR 隔离配置目录
如果你不想直接把旧文件拷进~/.openclaude,或想在新目录里验证一遍迁移结果,可以把 OpenClaude 指向别的目录。.env.example 的 "Config directory override" 一节说明:
OPENCLAUDE_CONFIG_DIR=/path/to/dir是优先使用的变量名,/path/to/dir替换为你自己的目标目录;CLAUDE_CONFIG_DIR=/path/to/dir是旧别名,仍然有效;- 两个变量同时设置且取值不同时,
OPENCLAUDE_CONFIG_DIR生效,且进程内会记录一条警告(每个进程一次)。
这个变量同时被文档标注的用途是隔离 profile 或在多台机器间共享配置。用它做迁移验证的思路是:先把OPENCLAUDE_CONFIG_DIR指到一个新目录,挑选文件复制进去,确认行为符合预期后再指回默认位置或直接使用。注意 README 中的边界:后台会话(--bg)元数据默认存放在解析后的配置目录下(通常~/.openclaude/bg-sessions/),且CLAUDE_CONFIG_DIR对 OpenClaude 后台会话存储是被忽略的——如果你依赖CLAUDE_CONFIG_DIR指了别处,后台会话仍会落在 OpenClaude 的默认配置目录下。
如何判断迁移完成
文档没有给出一个专门的"迁移校验"命令,可以按以下几条实际可观察的结果核对:
- 版本正常:运行
openclaude --version确认安装本身没问题(README 将其列在 Verify / troubleshoot 一栏)。 - provider 档案落盘:走
/provider流程后,.openclaude-profile.json中出现新配置的 provider 档案,说明凭据已按 OpenClaude 自己的方式重新保存。 - 旧目录确认失效:由于 OpenClaude 不读
~/.claude和项目.claude/,迁移后你可以放心不再维护这些目录;改它们对新版 OpenClaude 没有影响。 - 配置目录覆盖生效:若你设置了
OPENCLAUDE_CONFIG_DIR和CLAUDE_CONFIG_DIR且两者取值不同,日志中出现"每个进程一次"的警告,是预期行为,不是错误。
边界与限制
- OpenClaude 不读取
CLAUDE_CONFIG_DIR作为默认配置来源,也不自动加载项目.env——这是两条最容易踩的限制,凭据和环境变量都要按上一节的方式显式提供。 - 不要复制 Claude Code 的 credentials / auth 文件;provider 认证优先重新跑一遍 provider setup,或导出 provider 专属环境变量。
- 项目级
modelPricing只在用户设置~/.openclaude/settings.json、本地 gitignored 的.openclaude/settings.local.json或--settings/SDK 设置中生效,项目内.openclaude/settings.json会被有意忽略(见 docs/advanced-setup.md)。复制项目级设置时不要把这类覆盖项放进项目 settings.json,否则会不生效。 - 全新用户可以完全跳过迁移:OpenClaude 支持从空配置启动,不需要安装 Claude Code。
迁移完成后的状态是:自己创建的 settings、commands、agents、skills 等已位于.openclaude对应位置,provider 凭据通过/provider或环境变量重新提供,.openclaude-profile.json可验证;旧的.claude目录从此不再被读取。
【免费下载链接】openclauderuns anywhere. uses anything项目地址: https://gitcode.com/GitHub_Trending/op/openclaude
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考