☰
openclaw 对接迅雷云盘:用 TaoToken 统一 Key 打通 Alist WebDAV 备份链路
2026/10/10 13:18:45 网站建设 项目流程

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_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api ,注意 API 地址不带 UTM 参数,配置的时候别把跟踪参数带进去。

第一步,登录 console 创建 API Key。打开 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console_key&utm_campaign=rewrite ,在 API Keys 页面点新建。建议按用途拆 Key:一个给 openclaw 主程序用,一个给备份脚本用,一个给测试用。这样万一某个 Key 泄露,直接吊销那一个就行,不影响其他环节。创建完之后立刻复制保存,页面刷新后就看不到完整 Key 了。

第二步,确认你要用的模型 ID。TaoToken 支持多种模型,具体列表在模型对话页面能看到: https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models_list&utm_campaign=rewrite 。备份链路里如果只是做文件上传,其实用不到模型;但如果你想让 openclaw 在备份前先给文件生成摘要、或者备份完成后发个通知,那就需要指定 Model ID。常见的做法是用一个轻量模型做摘要,成本低、速度快。

第三步,如果你打算用 Claude Code 或者类似的 coding agent 来写备份脚本,可以走 Coding Plan 通道: https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。这个通道对长时间编码任务更友好,额度策略和普通 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_source=taotoken_aicg_blog_end&utm_content=doc_claude&utm_campaign=rewrite 。建议先照着文档把 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 目录,可以用davfs2:

sudo apt install davfs2 -y sudo mkdir -p /mnt/xunlei sudo mount -t davfs http://你的IP:5244/dav /mnt/xunlei -o username=admin,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_URL="https://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 2>&1

这样整条链路就通了: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是 200,data.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_source=taotoken_aicg_blog_end&utm_content=models_check&utm_campaign=rewrite 。然后检查请求体是否符合 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_source=taotoken_aicg_blog_end&utm_content=doc_oauth&utm_campaign=rewrite 。

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,工具本身没问题,别在凭证上偷懒。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询