
1. 为什么要把 openclaw 的备份链路接到迅雷云盘openclaw 跑起来之后最先撑不住的往往不是模型额度而是本地磁盘。工作空间里的 markdown 笔记、memory 记忆文件、session 会话记录、skill 技能脚本这些东西单个不大但每天都在长。我自己的实例跑了不到三周~/.openclaw目录就悄悄涨到了 4 个多 G其中大部分是历史 session 的 JSON 和日志。本地磁盘能扛但扛不住误删和机器重装。所以备份这件事越早做越省心。迅雷云盘个人版对普通用户来说容量够用、上传下载速度也还行把它当成 openclaw 的冷备仓库是个务实的选择。问题在于迅雷云盘没有开放标准的文件协议接口openclaw 没法直接往里写文件。这时候 Alist 就派上用场了。Alist 本质上是一个协议转换器它把迅雷云盘私有的 API 封装成标准的 WebDAV 协议。任何支持 WebDAV 的程序——包括 openclaw 的备份脚本、系统的挂载工具、甚至手机上的文件管理器——都能像操作本地目录一样操作迅雷云盘。链路就变成了openclaw 写本地文件 → 备份脚本打包 → 通过 WebDAV 推到 Alist → Alist 转成迅雷 API 上传到云盘。那 TaoToken 在这里扮演什么角色它解决的是凭证管理的问题。openclaw 在调用模型、执行 skill、跑定时任务时需要用到各种 API Key。如果每个环节都硬编码一套 Key改起来就是灾难。TaoToken 提供统一的 API 通道和 Key 管理把模型调用、coding plan、console 管理这些入口收敛到一处。备份链路里的脚本如果要调用模型做文件摘要、或者触发 agent 任务就可以复用同一个 Key不用在多个配置文件里来回同步。这篇内容适合三类人一是已经在用 openclaw、想给它加自动备份的二是手里有迅雷云盘、想把它接进自动化流程的三是想搞清楚 Alist WebDAV 统一 Key 这套组合怎么落地的人。下面从 Alist 部署开始一步步把链路搭起来。2. TaoToken 前置准备统一 Key 与 API 通道怎么配在动手接 Alist 之前先把 TaoToken 这边的凭证准备好。这一步看起来简单但后面 openclaw 的 skill、备份脚本、定时任务都要引用它所以值得花几分钟理清楚。TaoToken 的核心作用是提供一个统一的 API 入口把不同模型的调用收敛到同一个 endpoint 和同一套 Key 上。你不需要为每个模型单独申请账号、单独记 Key只要在 TaoToken 这边配置好openclaw 那边填一次就行。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 注意 API 地址不带 UTM 参数配置的时候别把跟踪参数带进去。第一步登录 console 创建 API Key。打开 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole_keyutm_campaignrewrite 在 API Keys 页面点新建。建议按用途拆 Key一个给 openclaw 主程序用一个给备份脚本用一个给测试用。这样万一某个 Key 泄露直接吊销那一个就行不影响其他环节。创建完之后立刻复制保存页面刷新后就看不到完整 Key 了。第二步确认你要用的模型 ID。TaoToken 支持多种模型具体列表在模型对话页面能看到 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodels_listutm_campaignrewrite 。备份链路里如果只是做文件上传其实用不到模型但如果你想让 openclaw 在备份前先给文件生成摘要、或者备份完成后发个通知那就需要指定 Model ID。常见的做法是用一个轻量模型做摘要成本低、速度快。第三步如果你打算用 Claude Code 或者类似的 coding agent 来写备份脚本可以走 Coding Plan 通道 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。这个通道对长时间编码任务更友好额度策略和普通 API 调用不一样。写脚本、调试、改配置这些活儿用 Coding Plan 比较划算。第四步把 Key 和 endpoint 记到一个安全的地方。不要直接写在 shell 脚本里明文保存更不要提交到 git。推荐用环境变量或者.env文件并且把.env加进.gitignore。后面配置 openclaw 的时候我会给出具体的填写位置。这里有个细节要注意TaoToken 的 API endpoint 是https://taotoken.net/api在 openclaw 的配置文件里填 Base URL 的时候通常需要带上/v1后缀具体看 openclaw 版本和模型协议。如果你用的是 OpenAI 兼容格式Base URL 一般写成https://taotoken.net/api/v1。这个在后面的配置片段里会体现。另外如果你用的是 Claude Code 这类工具它的配置方式和普通 API 调用不太一样需要单独设置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY。TaoToken 的文档页面有详细说明 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc_claudeutm_campaignrewrite 。建议先照着文档把 Claude Code 跑通再回来接 Alist这样出问题的时候容易定位是哪一层的事。凭证准备好之后就可以进入 Alist 的部署环节了。Alist 这边不需要 TaoToken 的 Key它只管迅雷云盘的账号和 WebDAV 服务。两者是解耦的各管各的通过 openclaw 这个中间层串起来。3. 可复制配置Alist 挂载迅雷云盘 openclaw 接入片段这一节是整篇的核心给出可以直接复制粘贴的配置片段。我按Alist 部署 → 迅雷存储配置 → WebDAV 暴露 → openclaw 接入的顺序来写每一步都给出完整命令或配置文件内容。3.1 Alist 一键安装与初始化在 Ubuntu 24.04 上用官方脚本安装最省事。打开终端执行curl -fsSL https://alistgo.com/v3.sh -o v3.sh bash v3.sh默认安装到/opt/alist。如果你想装到自定义路径比如/home/youruser/alist用bash v3.sh install /home/youruser/alist安装完成后用 systemctl 管理服务systemctl start alist systemctl status alist如果状态显示 active (running)说明起来了。接下来设置管理员密码。Alist 3.25.0 之后不再存明文密码只能重置cd /opt/alist ./alist admin random这条命令会随机生成一个新密码并打印出来记下来。如果你想自己指定./alist admin set YourNewPassword然后浏览器访问http://你的服务器IP:5244用 admin 和新密码登录。3.2 添加迅雷云盘存储登录后台后左侧菜单点存储 → 添加。驱动选迅雷云盘 (Thunder)挂载路径填/xunlei序号默认缓存过期时间填 30状态启用。在配置标签页里填{ username: 13800000000, password: 你的迅雷密码, root_folder_path: / }注意 username 这里填手机号不要加 86。这是最容易踩的坑加了 86 会提示账号格式错误。如果账号密码登录报错或者你想用 Token 模式就切到配置 (JSON)标签页填{ access_token: 你抓包拿到的token值 }Token 的获取方式浏览器打开迅雷云盘网页版登录按 F12 打开开发者工具切到 Network 标签刷新页面找到api/2/login或包含access_token的请求在 Response 里复制access_token的值。保存后如果提示need verify: {url}说明触发了风控。复制那个 url 到浏览器打开完成滑块或短信验证拿到 CaptchaToken填回配置里再保存。3.3 暴露 WebDAV 服务Alist 默认就开启了 WebDAV地址是http://你的IP:5244/dav。用户名是 admin密码是你后台设置的密码。如果你想在 openclaw 所在的机器上直接挂载这个 WebDAV 目录可以用davfs2sudo apt install davfs2 -y sudo mkdir -p /mnt/xunlei sudo mount -t davfs http://你的IP:5244/dav /mnt/xunlei -o usernameadmin,password你的密码挂载成功后/mnt/xunlei里就能看到迅雷云盘的文件了。写入这个目录的文件会自动同步到云盘。3.4 openclaw 接入配置openclaw 这边需要配置两处一是模型调用的 Base URL 和 Key二是备份脚本里的 WebDAV 路径。模型配置部分找到 openclaw 的配置文件通常在~/.openclaw/config.json或项目根目录的.env填入{ model: { base_url: https://taotoken.net/api/v1, api_key: 你的TaoToken Key, model_id: 你选择的模型ID } }如果你用的是 Claude Code 通道配置方式不同需要设置环境变量export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEY你的TaoToken Key备份脚本部分写一个简单的 shell 脚本backup_to_xunlei.sh#!/bin/bash # 备份 openclaw 工作空间到迅雷云盘 BACKUP_DIR/mnt/xunlei/openclaw-backup SOURCE_DIR$HOME/.openclaw DATE$(date %Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR tar -zcf $BACKUP_DIR/openclaw_$DATE.tar.gz $SOURCE_DIR echo 备份完成: openclaw_$DATE.tar.gz给脚本加执行权限chmod x backup_to_xunlei.sh然后加到 crontab每天凌晨 2 点跑一次crontab -e添加一行0 2 * * * /bin/bash /path/to/backup_to_xunlei.sh /var/log/openclaw_backup.log 21这样整条链路就通了openclaw 写本地文件 → 脚本打包 → 写入/mnt/xunlei→ Alist 转 WebDAV → 迅雷云盘。4. 验证请求一次上传下载的完整动作配置写完不代表链路通了得实际跑一次验证。这一节给出从上传到下载的完整验证步骤每一步都有预期结果方便你对照排查。4.1 验证 Alist 存储是否正常先确认 Alist 能正常读取迅雷云盘。在服务器上执行curl http://localhost:5244/api/fs/list \ -H Authorization: 你的AlistToken \ -H Content-Type: application/json \ -d {path:/,page:1,per_page:10}如果返回 JSON 里code是 200data.content里有文件列表说明 Alist 到迅雷云盘的连接是通的。如果返回 401说明 Authorization 头里的 Token 不对去 Alist 后台设置 → 其他里重新生成一个 Token。4.2 验证 WebDAV 挂载确认/mnt/xunlei挂载正常ls -la /mnt/xunlei应该能看到迅雷云盘根目录的文件。然后测试写入echo test $(date) /mnt/xunlei/test_upload.txt如果没报错去迅雷云盘网页版刷新一下应该能看到test_upload.txt。这一步验证的是本地写入 → WebDAV → Alist → 迅雷云盘这条上传链路。4.3 验证下载链路从云盘下载刚才的文件cat /mnt/xunlei/test_upload.txt应该输出test 2026-xx-xx ...。这一步验证的是迅雷云盘 → Alist → WebDAV → 本地读取这条下载链路。4.4 验证 openclaw 备份脚本手动跑一次备份脚本/bin/bash /path/to/backup_to_xunlei.sh然后检查ls -lh /mnt/xunlei/openclaw-backup/应该能看到一个openclaw_日期.tar.gz文件。再验证压缩包完整性tar -tzf /mnt/xunlei/openclaw-backup/openclaw_最新日期.tar.gz | head -20能列出文件列表就说明打包没问题。4.5 验证 TaoToken 调用如果你在备份脚本里加了模型摘要功能可以单独测一下 TaoToken 的 API 是否通curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer 你的TaoToken Key \ -H Content-Type: application/json \ -d { model: 你选择的模型ID, messages: [{role: user, content: 回复OK}] }返回里有choices字段且内容正常说明 TaoToken 通道没问题。如果返回 401检查 Key 是否复制完整如果返回 404检查 Base URL 是否带了/v1。4.6 端到端验证最后做一次完整的端到端测试在 openclaw 里触发一次文件写入比如让它生成一个测试笔记等几秒然后去迅雷云盘网页版看文件是否出现。如果出现了整条链路就通了。我实测下来从本地写入到云盘可见延迟大概在 3 到 10 秒之间取决于文件大小和网络状况。小文件基本秒同步大文件几百兆需要等一会儿。5. 本篇常见错排查401、local proxy failed、reading choices链路搭起来之后最容易在几个固定位置翻车。这一节把常见报错和对应解法列出来方便你对照。5.1 401 Unauthorized这个报错出现在两个地方要分开看。如果是在调用 Alist API 时返回 401说明Authorization头里的 Token 不对。去 Alist 后台设置 → 其他里重新生成 Token注意复制完整不要带多余空格。如果是在调用 TaoToken API 时返回 401说明 API Key 有问题。检查三点Key 是否复制完整有时候复制会漏掉末尾几个字符、Key 是否被吊销、请求头格式是否是Bearer 你的Key。如果都正常还是 401去 console 页面重新创建一个 Key 试试。5.2 local proxy failed这个报错通常出现在 Alist 的迅雷驱动里下载方式选了Local Proxy但服务器网络不通。迅雷的 CDN 在某些网络环境下访问不稳定走本机代理中转就容易失败。解法很简单把下载方式改回Default。Alist 会自动判断当前环境优先用迅雷官方 CDN失败再尝试其他方式。对于备份场景来说稳定性比速度重要Default 就够了。如果 Default 也失败检查 Alist 服务器能不能正常访问外网curl -I https://api-pan.xunlei.com返回 200 或 403 都算通返回超时就是网络问题。5.3 reading choices 报错这个报错出现在解析 TaoToken 返回结果的时候通常是返回体里没有choices字段。原因可能是模型 ID 填错了、请求格式不对、或者 Key 没有对应模型的权限。先确认模型 ID 是否正确去模型对话页面核对 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodels_checkutm_campaignrewrite 。然后检查请求体是否符合 OpenAI 格式messages数组不能为空。如果还不行换一个模型试试排除是单个模型的问题。5.4 OAuth 相关报错如果你用的是 Claude Code 通道可能会遇到 OAuth 报错。这通常是因为ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY没配对或者环境变量没生效。检查方式echo $ANTHROPIC_BASE_URL echo $ANTHROPIC_API_KEY如果输出为空说明环境变量没设置。注意 Claude Code 的 Base URL 和普通 API 不一样不要带/v1。具体配置参考文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdoc_oauthutm_campaignrewrite 。5.5 Alist 网页一直转圈现象是重启 Alist 后网页提示获取设置失败请稍后正在加载存储…且一直转圈。原因通常是某个挂载的存储失效了Token 过期、账号被封Alist 启动时卡在连接那一步。解法进入 Alist 安装目录列出所有存储cd /opt/alist ./alist storage list找到有问题的挂载路径比如/xunlei禁用它./alist storage disable /xunlei然后重启systemctl restart alist网页应该能正常打开了再进后台重新配置那个存储。5.6 迅雷账号登录的区号陷阱这个坑前面提过但值得再强调一次。在 Alist 后台填迅雷账号时直接填手机号不要加 86。正确写法13800000000错误写法8613800000000。但如果你在调试窗口抓包、或者系统提示需要验证码时参数里通常要带 86。这两个场景的格式要求是反的很容易搞混。5.7 备份文件不完整如果发现云盘上的 tar.gz 文件比本地小或者解压报错通常是上传过程中断了。检查 Alist 的日志journalctl -u alist -n 100看有没有上传超时或连接重置的记录。如果是大文件上传不稳定可以在备份脚本里加个校验md5sum $BACKUP_DIR/openclaw_$DATE.tar.gz $BACKUP_DIR/openclaw_$DATE.tar.gz.md5上传后对比本地和云盘的 md5不一致就重传。6. 把 Key 管好把备份跑顺整套链路搭下来最花时间的其实不是 Alist 部署而是凭证管理。迅雷账号、Alist Token、TaoToken Key、模型 ID这些东西散落在不同配置文件里改一个就要翻好几个地方。我的做法是统一用环境变量管理.env文件只放在本地不进 git服务器上单独维护一份。TaoToken 在这里的价值就是收敛。模型调用、coding plan、console 管理都走同一个入口Key 按用途拆分吊销和轮换都方便。备份脚本如果要调模型做摘要直接复用同一个 Key不用再申请一套。Alist 那边迅雷云盘的 Token 会过期建议在日历上设个提醒每个月检查一次。如果发现网页转圈或者文件列表刷不出来大概率就是 Token 失效了按第 5.5 节的方法禁用再重配就行。备份脚本跑顺之后可以再加一层备份完成后调 TaoToken 的模型接口让模型读一下备份日志生成一句摘要发到你的通知渠道。这样每天不用手动检查有异常会主动告诉你。最后提醒一句迅雷云盘挂载的目录不要分享出去Alist 后台的 Token 也不要截图发群里。这套链路的安全性取决于你怎么管 Key工具本身没问题别在凭证上偷懒。