news 2026/10/3 16:28:43

WSL2 + OpenClaw 开机自启完整教程(零基础版):把 settings 改到 TaoToken

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WSL2 + OpenClaw 开机自启完整教程(零基础版):把 settings 改到 TaoToken

1. 为什么 WSL2 里的 OpenClaw 重启就“失联”

很多人第一次在 Windows 11 上装 OpenClaw,流程大概是这样的:装好 WSL2、装好 Ubuntu、把 OpenClaw 跑起来,浏览器打开http://localhost:端口号一切正常,心里美滋滋。结果第二天开机,浏览器直接打不开,进 WSL 一看,systemctl status openclaw显示inactive (dead),服务根本没起来。这就是典型的“手动能跑、开机不自启”问题。

OpenClaw 本身是一个常驻型服务,它需要有人把它拉起来,并且保证 WSL 这个“容器”在开机后也处于运行状态。Windows 和 WSL2 之间有一层边界:Windows 开机不会自动帮你启动某个 WSL 发行版,WSL 发行版不启动,里面的 systemd 就不会跑,systemd 不跑,OpenClaw 这个 unit 自然也不会被拉起。所以“开机自启”这件事,本质上是两段链路要同时打通:第一段是 Windows 侧把 WSL 拉起来,第二段是 WSL 内部把 OpenClaw 服务拉起来。

我试过只做其中一段,结果就是各种半吊子状态:只配 systemd,开机后 WSL 没启动,服务等于没配;只配 Windows 任务计划拉起 WSL,但 WSL 里 systemd 没开,OpenClaw 还是不会自动跑。所以这篇教程会把两条路径都讲清楚,并且告诉你什么场景选哪条。

另外还有一个容易被忽略的点:OpenClaw 的settings里如果写的是某个临时 Key 或者本地 mock 地址,开机自启后第一次请求就会鉴权失败。所以自启和鉴权要一起验证,不能只看进程在不在。这篇会顺带把settings指向 TaoToken 统一 Key/API 通道的写法给出来,让自启之后服务是真的可用,而不是“进程活着但请求全挂”。

适合谁看:零基础、刚接触 WSL2、想让 OpenClaw 开机自动跑起来、又不想每次手动敲命令的人。下面所有命令都可以直接复制,路径和参数我会写全。

2. 前置检查:WSL2、systemd 与 OpenClaw 服务状态确认

在动手配自启之前,先把当前环境摸清楚。很多人卡住不是因为自启配错,而是前置条件根本没满足。打开 PowerShell(普通用户即可,不需要管理员),依次执行下面三条命令。

# 1. 查看 WSL 版本,确认是 2 wsl -l -v # 2. 查看 systemd 配置 wsl -d Ubuntu -- cat /etc/wsl.conf # 3. 查看 OpenClaw 服务状态(WSL 正在运行时) wsl -d Ubuntu -- systemctl status openclaw --no-pager

第一条预期输出里,Ubuntu 那一行的 VERSION 应该是2。如果是1,需要先升级:wsl --set-version Ubuntu 2。第二条预期能看到[boot]段和systemd=true。如果没有,说明 systemd 没开,后面所有systemctl命令都会报System has not been booted with systemd。第三条如果显示inactive或active都正常,inactive说明服务已注册但没启动,active说明正在跑。

如果第二条没有systemd=true,先补上。编辑/etc/wsl.conf:

# 在 WSL 内执行 sudo tee /etc/wsl.conf > /dev/null <<'EOF' [boot] systemd=true [user] default=你的用户名 EOF

写完退出 WSL,在 PowerShell 执行wsl --shutdown,等 5 秒再wsl -d Ubuntu进入,重新cat /etc/wsl.conf确认生效。这一步是后面 systemd 自启路径的地基,不能跳过。

还要确认 OpenClaw 已经注册为服务。如果你之前执行过openclaw onboard --install-daemon,那 unit 文件一般已经在/etc/systemd/system/openclaw.service或用户级~/.config/systemd/user/openclaw.service。用下面命令确认:

# 系统级 unit ls -l /etc/systemd/system/openclaw.service # 用户级 unit ls -l ~/.config/systemd/user/openclaw.service

如果两个都不存在,说明服务没注册,需要先跑一次openclaw onboard --install-daemon。另外 linger 也要开,否则用户级服务在没人登录时不会启动:

sudo loginctl enable-linger "$(whoami)"

这一步做完,前置条件才算齐。下面进入两条自启路径的取舍。

3. 两条自启路径取舍:systemd unit 与 Windows 任务计划配置

自启有两条主流路径,各有适用场景,不是谁替代谁。

第一条是WSL 内部 systemd 自启。它的前提是 WSL 发行版已经被启动。也就是说,只要 WSL 在跑,systemd 就会按enable状态把 OpenClaw 拉起来。优点是配置干净、和 Linux 服务管理习惯一致、日志用journalctl就能看。缺点是它管不了“WSL 本身要不要开机启动”这件事。

第二条是Windows 任务计划拉起 WSL。它解决的是“开机后 WSL 根本没启动”的问题。通过任务计划在登录时执行wsl.exe -d Ubuntu,把发行版唤醒,剩下的交给 systemd。优点是补上了 Windows 侧那一环,适合希望开机即用、不想手动开终端的场景。缺点是任务计划配置项多,容易配错触发条件。

我的建议是:两条一起用。systemd 负责服务级自启,任务计划负责把 WSL 唤醒。只配一条都会有缺口。下面给出两段可复制的配置。

先看 systemd 侧。如果你用的是系统级 unit,直接 enable:

sudo systemctl enable openclaw sudo systemctl start openclaw systemctl status openclaw --no-pager

如果是用户级 unit,则用--user:

systemctl --user enable openclaw systemctl --user start openclaw systemctl --user status openclaw --no-pager

再看 Windows 任务计划。用管理员 PowerShell 执行,创建一个登录时触发的任务:

$action = New-ScheduledTaskAction -Execute "wsl.exe" -Argument "-d Ubuntu --exec /bin/true" $trigger = New-ScheduledTaskTrigger -AtLogOn $settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries Register-ScheduledTask -TaskName "OpenClaw WSL Boot" -Action $action -Trigger $trigger -Settings $settings -RunLevel Limited

这里--exec /bin/true只是把发行版唤醒,真正的服务启动交给 systemd。任务计划触发后 WSL 进入运行态,systemd 随即按 enable 状态拉起 OpenClaw。

接下来是settings指向 TaoToken 的部分。OpenClaw 的配置文件通常在~/.openclaw/settings.json或项目目录下的settings.json。把 API 通道统一指向 TaoToken,Key 用你在控制台创建的 Key,Base URL 用https://taotoken.net/api。可复制片段如下:

{ "api": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "model": "claude-sonnet-4-20250514" }, "server": { "port": 3000, "host": "0.0.0.0" } }

注意baseUrl不要带 UTM 参数,API 地址就是https://taotoken.net/api。Key 建议放在环境变量里而不是硬编码,但零基础阶段先写进配置能跑通,后面再改成env引用。模型 ID 按你实际可用的填,这里只是示例。

如果你用的是 TOML 风格配置(部分版本支持),等价写法:

[api] base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" model = "claude-sonnet-4-20250514" [server] port = 3000 host = "0.0.0.0"

配置改完,重启服务让 settings 生效:

sudo systemctl restart openclaw

到这里,两条自启路径和 settings 指向都配好了。下一节做重启验证。

4. 重启验证:确认自启与鉴权同时生效

配置写完不算数,必须重启验证。验证分两层:进程层和请求层。进程层看服务有没有自动起来,请求层看鉴权有没有通过。

先做一次完整重启。在 PowerShell 执行:

wsl --shutdown Start-Sleep -Seconds 5 wsl -d Ubuntu -- systemctl status openclaw --no-pager

预期输出里Active:应该是active (running)。如果还是inactive,说明 systemd enable 没生效或 unit 路径不对,回到第 3 节检查。

接着验证端口监听:

wsl -d Ubuntu -- sudo netstat -tlnp | grep -E ":(3000|5000|8080)" | grep -i node

能看到0.0.0.0:3000或:::3000这类监听就对了。端口号以你 settings 里的server.port为准。

然后做请求层验证。在 WSL 内直接 curl 本地服务:

wsl -d Ubuntu -- curl -s http://localhost:3000/health

如果返回{"status":"ok"}之类,说明服务本身活着。但真正要验证的是鉴权链路,也就是 OpenClaw 通过 TaoToken 发出去的请求能不能成功。用一个最小对话请求测试:

curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16 }'

预期返回里能看到choices数组和内容。如果返回 401,说明 Key 不对或没带上;如果返回local proxy failed之类,说明 Base URL 写错或网络出口有问题。这一步过了,才说明“自启 + 鉴权”整条链路是通的。

最后做一次开机级验证:重启 Windows,登录后不要手动开终端,等 30 秒,直接在浏览器访问http://localhost:3000。能打开就说明任务计划和 systemd 都生效了。如果打不开,先wsl -l -v看 Ubuntu 是不是 Running,再看systemctl status openclaw。

验证通过后,建议把 Key 从明文配置挪到环境变量,减少泄露风险。在~/.bashrc里加:

export TAOTOKEN_API_KEY="sk-你的TaoTokenKey"

然后 settings 里用"apiKey": "${TAOTOKEN_API_KEY}"引用。改完source ~/.bashrc并重启服务。

5. 常见报错排查:401、local proxy failed、reading choices、OAuth

自启配好后,最常见的不是进程问题,而是鉴权和请求格式问题。下面按真实报错逐条排查。

401 Unauthorized。这是 Key 问题。先确认 settings 里的apiKey和你在 TaoToken 控制台创建的一致,注意不要有多余空格或换行。用 curl 直接测 Key:

curl -s -o /dev/null -w "%{http_code}" https://taotoken.net/api/v1/models \ -H "Authorization: Bearer sk-你的TaoTokenKey"

返回 200 说明 Key 有效,返回 401 说明 Key 本身有问题,去控制台重新生成。如果 curl 通了但 OpenClaw 报 401,说明 settings 没被正确加载,检查配置文件路径和 JSON 语法。

local proxy failed。这个报错通常出现在 Base URL 写错或本地代理配置冲突时。确认baseUrl是https://taotoken.net/api,不要写成带路径的https://taotoken.net/api/v1再加/chat/completions导致重复。另外检查 WSL 内是否有残留的HTTP_PROXY环境变量:

env | grep -i proxy

如果有,unset HTTP_PROXY HTTPS_PROXY后再重启服务。

reading choices 报错。典型是响应结构不符合预期,常见于模型 ID 写错或请求体格式不对。确认model字段是你账号下可用的 ID,messages是数组且每条有role和content。用 curl 复现一次,看返回体里有没有choices。如果返回的是错误对象,先解决错误对象里的 message。

OAuth 相关报错。如果你用的是需要 OAuth 的客户端(比如某些 CLI 工具),要确认 token 没过期。OAuth 和 API Key 是两套东西,OpenClaw 的 settings 里如果混用了 OAuth token 当 apiKey,会报鉴权失败。统一用 TaoToken 的 API Key 即可。

服务 active 但浏览器打不开。检查server.host是不是0.0.0.0,如果是127.0.0.1,WSL 内可访问但 Windows 侧可能映射不到。改成0.0.0.0后重启。另外 Windows 防火墙偶尔会拦,临时关掉测试一下。

开机后 WSL 没启动。检查任务计划是否真的触发了:Get-ScheduledTaskInfo -TaskName "OpenClaw WSL Boot"看LastRunTime。如果没跑,检查触发条件是不是AtLogOn,以及任务是否被禁用。

排查顺序建议:先 curl 测 Key,再 curl 测服务,再看 journalctl 日志:

wsl -d Ubuntu -- journalctl -u openclaw --no-pager -n 50

日志里通常直接写着失败原因,比猜快得多。

6. 把 Key 管好:接入文档与长期编码的下一步

自启跑通之后,真正要长期维护的是 Key 和配置的整洁度。明文 Key 写在 settings 里能跑,但不适合长期放着。建议做三件事:Key 放环境变量、配置分环境、定期轮换。

环境变量方式前面提过,在~/.bashrc里 export,settings 用${TAOTOKEN_API_KEY}引用。这样换 Key 只改一处,不用动配置文件。分环境可以用settings.dev.json和settings.prod.json,启动时用--settings指定。

如果你后面要做长期编码或 Agent 类任务,建议把接入方式固定下来:Base URL 用https://taotoken.net/api,Key 从控制台创建,Model ID 按任务选。需要新建 Key 或查看用量,去控制台页面操作即可。接入细节和参数说明可以对照接入文档,里面有各语言的示例。

  • 创建和管理 Key:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite
  • 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
  • 模型对话快速验证:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite
  • 长期编码与 Agent 场景:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite

最后留一个实用习惯:每次改完 settings,先systemctl restart openclaw,再 curl 一次/health和一次对话请求,两个都过再关机。这样下次开机自启后,你面对的是一个确定可用的服务,而不是一个“进程活着但请求全挂”的假象。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 16:27:14

在 IDEA 中集成 Claude 功能:TaoToken 统一 Key 接入与本地验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 16:20:50

OpenClaw 3.0.2 避坑指南:Gateway 离线与启动慢的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/3 16:17:40

AI搜索信任构建:大模型筛选信源的证据链与GEO落地

一、AI搜索时代的四个常见问题当用户向豆包、文心一言或DeepSeek提问时&#xff0c;大模型给出的答案并非凭空生成&#xff0c;而是基于对海量信源的筛选、比对与排序。这一过程引出四个行业普遍困惑&#xff1a;第一&#xff0c;大模型究竟依据什么标准判断一条企业信息值得引…

作者头像 李华