1. 机缘:C 盘塞满,旧 Agent 还要接着跑
OpenClaw 从 C 盘搬到 D 盘之后,真正难的不是目录迁移,而是让 D:\OpenClawData\agents 里的旧 Agent 重新把模型请求发出去。Key 我统一换成了 TaoToken(官网:https://taotoken.net/?utm_source=taotoken_aicg_blog_end),旧会话、工具配置都还在,只需要把模型通道换掉,OpenClaw 就能继续在 D 盘跑那套多工具 Agent。你可能和我一样,一开始只想着 C 盘快满了,赶紧把程序挪走。等数据恢复完,openclaw status 显示 running,才反应过来:数据回来了,但模型请求得靠一套能稳定结算的 Key 才能发出去。
这里要区分两件事:数据恢复是把 openclaw.json、agents/、workspace/、credentials/ 这些目录原样找回来;Agent 复活则是让你的 Agent 能把工具调用的结果送回模型、再把模型的下一个动作接回来执行。前者只动磁盘,后者动的是网络和鉴权。磁盘很好搬,鉴权才是旧 Agent 在新环境里最容易断的一环。本文顺着原迁移教程的节奏走,在原来「重新配置密钥」那一步停下来,把 TaoToken 的 Key 和 Base URL 填进去,让恢复后的旧 Agent 直接接着跑。
2. 先把 OpenClaw 本体和数据从 C 盘挪到 D 盘
2.1 卸载 C 盘残留,再用 npm --prefix 装到 D:\OpenClaw
如果你之前默认装过 OpenClaw,C 盘的 npm 全局目录里会留一份旧程序。直接装 D 盘会让系统同时存在两份 openclaw 命令,openclaw doctor 检查时可能读到 C 盘那份。先在 PowerShell 里把旧包卸掉,同时清掉 node_modules 里的残留:
npm uninstall -g openclaw
Remove-Item -Recurse -Force "$env:APPDATA\npm\node_modules\openclaw" -ErrorAction SilentlyContinue
然后指定前缀装到 D 盘。--prefix 是 npm 的参数,它决定全局包安装的根目录,OpenClaw 的可执行文件会被放到 D:\OpenClaw 下,而不是 %APPDATA%\npm:
npm install -g openclaw --prefix D:\OpenClaw
如果之后需要初始化网关服务,再跑一次:
openclaw onboard --install-daemon
2.2 用系统环境变量锁死状态目录
这是迁移里最关键的一步,它决定了 OpenClaw 把所有运行数据写到哪。在系统变量里新建下面两个,值指向 D 盘:
| 变量名 | 建议值 | 作用 |
|---|---|---|
OPENCLAW_STATE_DIR | D:\OpenClawData | 核心数据目录,agents、credentials、会话记录都在这下面 |
OPENCLAW_WORKSPACE | D:\OpenClawData\workspace | 工作区目录,Agent 读写文件的位置 |
如果还需要更细的控制,可以额外加 OPENCLAW_HOME=D:\OpenClawData 和 OPENCLAW_CONFIG_PATH=D:\OpenClawData\openclaw.json。设置完必须重启一次电脑,或者至少开一个全新的终端窗口,变量才会被 OpenClaw 读到。换电脑、重装系统后不要急着跑 onboard,先把这两个变量设好,再启动 OpenClaw,所有数据会直接生成在 D 盘,省掉后面整个迁移过程。
2.3 用 junction 把 .openclaw 指回 D 盘
OpenClaw 有些子命令仍然会去 C:\Users\你的用户名\.openclaw 找配置。为了避免它找不到 D 盘的数据,用管理员身份运行 PowerShell,建一个目录联接(junction):
New-Item -ItemType Junction -Path "$env:USERPROFILE\.openclaw" -Target "D:\OpenClawData"
这条命令不会复制任何文件,只是让 C 盘那个路径指向 D 盘。迁移前如果 C 盘已经有旧 .openclaw,先把它改名备份再建 junction,别让新旧数据混在一起。
2.4 检查旧数据目录是否完整
如果你的旧数据是压缩包(比如 openclaw-state.tgz),先解压到 D:\OpenClawData\。解压完成后,重点确认这几样东西都在:
D:\OpenClawData\
openclaw.json 主配置
agents\ 各个 Agent 的配置、长会话、工具权限
workspace\ 工作区文件
credentials\ 之前保存的第三方凭证
agents\ 里面往往躺着多个子目录,每个子目录就是一套旧 Agent 的完整状态:它的 system prompt、可用工具列表、会话历史都在这。这些文件本身不依赖 C 盘,但要让它们真正跑起来,还得把模型请求接出去。下面进入正题:给这些旧 Agent 换一套能用的模型通道。
3. 去 TaoToken 建 Key,把旧 Agent 的模型请求接到新通道
3.1 打开官网注册并创建 API Key
进入 TaoToken 注册账号,登录后到控制台的 API Keys 页面创建一把新 Key。拿到的是 YOUR_API_KEY 形式的占位串,下面所有配置都用这把 Key。TaoToken 提供的是统一 API 接入通道,你不需要分别去维护 Anthropic、OpenAI 等多套密钥,在 OpenClaw 里只需要改一个 Base URL 和一把 Key。
3.2 在 openclaw.json 里把旧模型配置替换成 TaoToken
恢复旧数据后,openclaw.json 里写的多半是原来的模型服务商地址和旧 Key。直接在 D:\OpenClawData 目录下搜索 apiKey、baseUrl、sk-ant 这些关键词,找到旧配置的位置。不同 OpenClaw 版本的配置结构略有差异,但语义都差不多,替换成下面这样:
{
"model": {
"provider": "anthropic",
"baseUrl": "https://taotoken.net/api",
"apiKey": "YOUR_API_KEY",
"model": "以模型广场当时列表为准"
}
}
注意三个容易填错的地方。第一,baseUrl 只填 https://taotoken.net/api,末尾不要加 /v1,也不要加 ?utm_source=... 这类官网跟踪参数;官网链接用于注册和看用量,接口地址是另一回事。第二,apiKey 填你刚从控制台创建的 YOUR_API_KEY,不要填旧服务商的 Key。第三,model 字段不要拍脑袋写,去模型广场复制当前列表里存在的模型 ID。
如果 OpenClaw 的配置是按 Agent 拆分的(agents\<AgentID>\agent.json),那就把对应 Agent 文件里的模型配置也改掉。改完保存,确认 openclaw.json 仍然是以 D:\OpenClawData\openclaw.json 为准,不要改到 C 盘那份残留配置。
3.3 全局环境变量兜底
有些 OpenClaw 子进程在启动时只读环境变量,不读 openclaw.json。为了稳妥,在系统环境变量里再补三个值:
ANTHROPIC_BASE_URL = https://taotoken.net/api
ANTHROPIC_AUTH_TOKEN = YOUR_API_KEY
ANTHROPIC_MODEL = 以模型广场当时列表为准
这样一来,OpenClaw 无论走配置文件还是走环境变量,最后都会把请求发到 TaoToken 的接口,而不是发回旧服务商。设置完同样重启终端会话。
4. 验证两步走:目录认得,请求也通
4.1 openclaw doctor 检查数据目录和 Agent 配置
目录和配置都改完后,先跑诊断命令:
openclaw doctor
它会检查 OPENCLAW_STATE_DIR 是否生效、agents/ 目录是否完整、网关组件是否正常。如果输出里出现 agents 相关的修复提示,多半是 agents/ 下的某个配置文件里还有旧 Key 或旧地址,回到第 3.2 节再搜一遍。openclaw restart 让网关重新加载配置,再 openclaw status 确认状态是 running。
4.2 发一条真实模型请求验证
doctor 只证明配置格式没问题,真正能说明 Agent 活过来的是模型请求通不通。直接在 OpenClaw 的对话界面里问一句「你现在的工作目录是哪里」,如果 Agent 能正常回答,说明整条链路已经通了。想更快地单独验证 Key 和 Base URL 是否可用,可以安装 TaoToken 的命令行工具发一条测试请求:
npm install -g @taotoken/taotoken
taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m 你的模型ID
这里的 -u 填的同样是接口地址 https://taotoken.net/api,不是官网。模型 ID 写你在模型广场复制的那个。CLI 能返回内容,就证明这把 Key、这个地址、这个模型 ID 三个参数在 OpenClaw 之外是成立的,接下来只需要确认 OpenClaw 把同样三个参数填进了请求。
4.3 回 TaoToken 控制台核对这次调用
验证完成后,登录 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 打开用量页面,你应该能看到刚才那几条请求记录,包括模型名、Token 数和时间。这一步非常关键:它同时证明了 Key 归属正确、请求确实走了 TaoToken 通道、计费正常。如果对话里 Agent 有回答但控制台看不到记录,说明 OpenClaw 可能走了某个本地缓存的旧地址,回到第 3.3 节把环境变量再查一遍。
5. D 盘迁移 + 新 Key 下的排障清单
5.1 OPENCLAW_STATE_DIR 不生效,Agent 还是落在 C 盘
重启电脑后,openclaw doctor 显示数据目录仍在 C:\Users\...\.openclaw。先在 PowerShell 里确认系统变量是否真的写进去了:
[Environment]::GetEnvironmentVariable('OPENCLAW_STATE_DIR', 'Machine')
如果返回空,说明变量没保存成功,回到系统属性里重新建。如果变量值正确,检查是否在旧终端会话里运行 openclaw——变量只在新建的终端会话里生效。还有一种情况:$env:USERPROFILE\.openclaw 这个 junction 建得比环境变量早,而旧数据还在 C 盘,导致 OpenClaw 优先读了 C 盘目录。删掉旧 junction,确认 D:\OpenClawData 下有完整的 openclaw.json 和 agents/,再重建 junction。
5.2 401 / 403:Key 没换干净或填到了错误位置
迁移后第一次发请求就 401,百分之九十是旧 Key 没清干净。agents/ 下每个 Agent 的配置文件里可能各自保存了一份模型 Key,只改 openclaw.json 不够。在 D:\OpenClawData 目录里全文搜索 sk-ant 或 api_key,把所有旧凭据字段都替换成 YOUR_API_KEY。另一个常见原因是把 Base URL 写成了官网首页地址,比如 https://taotoken.net/?utm_source=...。接口地址只有 https://taotoken.net/api 这一个,末尾没有 /v1。
5.3 模型 ID 找不到或不存在
taotoken cc 返回模型不存在,说明模型 ID 写成了历史版本或随手填的名字。打开模型广场,从列表里复制完整的模型 ID,粘贴到 openclaw.json 和环境变量里。不要自己加日期后缀或猜测名称。
5.4 网关启动失败
openclaw status 显示 stopped,openclaw doctor 提示网关异常,通常是迁移前旧的网关服务和 D 盘的新实例冲突。依次执行:
openclaw uninstall-gateway
openclaw install-gateway
openclaw restart
install-gateway 会重新注册本机的网关服务,之后 openclaw doctor 再跑一遍,确认所有检查项通过。
6. 把迁移命令存好,下次换机直接照着跑
整条链路跑通后,把下面这份清单存到 D:\OpenClawData\README.md 里,下次换电脑就不用再翻教程:
1. npm install -g openclaw --prefix D:\OpenClaw
2. 系统变量:OPENCLAW_STATE_DIR=D:\OpenClawData,OPENCLAW_WORKSPACE=D:\OpenClawData\workspace
3. 管理员 PowerShell:New-Item -ItemType Junction -Path "$env:USERPROFILE\.openclaw" -Target "D:\OpenClawData"
4. openclaw.json:baseUrl=https://taotoken.net/api,apiKey=YOUR_API_KEY
5. openclaw doctor && openclaw restart && openclaw status
配好之后至少发一条真实请求,再回控制台确认这笔 Token 进了你账上。拿同一把 Key 去 模型对话 先试一句,比在命令行里排查快得多。要长期跑多 Agent 长任务,先看看 Coding Plan 够不够用;Key 统一在 控制台 API Keys 创建。如果你在别的机器上还配了 Claude Code,环境变量的写法可以参考 Claude Code 接入文档。旧 Agent 里那些长会话和工具配置一份都没丢,模型通道也已经指向新 Key,接下来就让它们在 D 盘继续跑吧。




被折叠的 条评论
为什么被折叠?



