news 2026/9/28 19:31:27

OpenClaw在Windows下开机自启动:用WSL+PowerShell配TaoToken的完整骨架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenClaw在Windows下开机自启动:用WSL+PowerShell配TaoToken的完整骨架

1. 为什么 Windows 下 OpenClaw 开机自启总是失败

很多人第一次在 Windows 上部署 OpenClaw,都会经历一个非常相似的场景:当天晚上跑通了,飞书、Telegram 或者本地控制台都能正常对话,关机睡觉。第二天早上起来发消息,没有任何反应,打开电脑一看,OpenClaw 根本没起来。

这个问题的根源其实不在 OpenClaw 本身,而在于 Windows 和 WSL 的启动机制是两套独立体系。OpenClaw 的网关服务跑在 WSL 的 Linux 用户空间里,而 Windows 开机登录时并不会自动帮你把 WSL 里的用户级 systemd 服务拉起来。你手动打开 WSL 终端时它看起来是好的,是因为终端会话触发了用户服务;一旦没有交互式终端,服务就处于「装了但没跑」的状态。

所以完整的开机自启链路要拆成两段:第一段是在 WSL 内部让 OpenClaw 网关成为可持续运行的用户服务,第二段是在 Windows 侧用 PowerShell 注册一个登录时触发的任务,把 WSL 拉起来并启动这个服务。两段都做对,重启后才能真正无人值守。

这篇内容适合已经在 Windows 上装好 WSL 和 OpenClaw、但被自启动问题卡住的用户,也适合准备把 OpenClaw 当长期在线助手来用的人。下面我会给出可复制的 config.toml 与 settings.json 骨架、启动脚本片段,以及重启后验证自启动是否生效的具体检查动作。整个过程中,TaoToken 作为统一的 Key/API 通道接入,省去你在多个模型供应商之间来回切换配置的麻烦。

2. TaoToken 前置:统一 Key 与 API 通道

在配置自启动之前,先把模型通道这件事定下来。OpenClaw 支持多种模型后端,如果你每个模型都单独配一套 Key,config.toml 会变得很难维护,自启动脚本里也容易漏掉环境变量。TaoToken 的思路是提供一个统一的 API 入口,你只需要在配置里写一个 base_url 和一个 Key,就能调用多个模型。

TaoToken 官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数,配置里直接写这个就行。

你需要先拿到一个 API Key。登录后进入控制台,在 API Keys 页面创建一个新的 Key,复制保存好。这个 Key 后面会写进 OpenClaw 的 config.toml,也会作为环境变量传给 WSL 里的服务。

注意:API Key 属于敏感信息,不要直接提交到 Git 仓库,也不要在公开的启动脚本里明文硬编码。建议放在 WSL 用户目录下的环境文件里,通过 systemd 的 EnvironmentFile 加载。

如果你还没创建 Key,可以走这个路径:先访问 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 创建,再回到 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 查看用量和余额。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,里面有各语言的调用示例,配置 OpenClaw 时对照着看即可。

3. 可复制配置:config.toml 与 settings.json 骨架

3.1 WSL 内 OpenClaw 的 config.toml

OpenClaw 的配置文件通常位于~/.config/openclaw/config.toml。下面是一个接入 TaoToken 的最小骨架,你可以直接复制后替换 Key:

# ~/.config/openclaw/config.toml [gateway] host = "0.0.0.0" port = 18789 log_level = "info" [model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" default_model = "claude-sonnet-4-20250514" [model.fallback] enabled = true models = ["gpt-4o", "claude-sonnet-4-20250514"] [channels.feishu] enabled = true app_id = "your_feishu_app_id" app_secret = "your_feishu_app_secret"

这里的关键点是base_url指向 TaoToken 的 API 入口,api_key用环境变量占位,避免明文。default_model可以按你实际使用的模型名填写,fallback 列表用于主模型不可用时自动切换。

3.2 环境变量文件

在 WSL 里创建~/.config/openclaw/env:

TAOTOKEN_API_KEY=sk-你的实际Key

然后设置权限,防止其他用户读取:

chmod 600 ~/.config/openclaw/env

3.3 systemd 用户服务单元

OpenClaw 网关需要作为用户级 systemd 服务运行。创建~/.config/systemd/user/openclaw-gateway.service:

[Unit] Description=OpenClaw Gateway After=network-online.target Wants=network-online.target [Service] Type=simple EnvironmentFile=%h/.config/openclaw/env ExecStart=/usr/local/bin/openclaw gateway run Restart=on-failure RestartSec=5 [Install] WantedBy=default.target

注意ExecStart的路径要和你实际安装 OpenClaw 的位置一致,可以用which openclaw确认。

3.4 Windows 侧 PowerShell 启动脚本

在 Windows 上创建一个启动脚本,比如C:\Scripts\start-openclaw.ps1:

# C:\Scripts\start-openclaw.ps1 $distro = "Ubuntu" $service = "openclaw-gateway" wsl.exe -d $distro --bash -lc "systemctl --user start $service" Start-Sleep -Seconds 3 wsl.exe -d $distro --bash -lc "systemctl --user is-active $service"

这个脚本的作用是:登录时拉起 WSL,启动用户服务,然后检查服务状态。如果你用的不是 Ubuntu,把$distro改成wsl -l里显示的名称。

3.5 注册计划任务

以管理员身份打开 PowerShell,执行:

$action = New-ScheduledTaskAction -Execute "powershell.exe" ` -Argument "-NoProfile -WindowStyle Hidden -File C:\Scripts\start-openclaw.ps1" $trigger = New-ScheduledTaskTrigger -AtLogOn $settings = New-ScheduledTaskSettingsSet ` -ExecutionTimeLimit (New-TimeSpan -Hours 0) ` -RestartCount 3 ` -RestartInterval (New-TimeSpan -Minutes 1) ` -AllowStartIfOnBatteries ` -DontStopIfGoingOnBatteries Register-ScheduledTask ` -TaskName "OpenClaw_AutoStart" ` -Action $action ` -Trigger $trigger ` -Settings $settings ` -RunLevel Highest ` -Force

执行成功后会看到任务状态为 Ready。这里用 PowerShell 脚本包一层,比直接在计划任务里写wsl.exe参数更可控,也方便后续加日志。

4. 验证请求与成功结果

配置完成后,先不要急着重启,在 WSL 里手动验证一遍服务链路。

第一步,启用 linger,让用户服务在终端关闭后继续运行:

sudo loginctl enable-linger "$(whoami)"

第二步,重新加载 systemd 并启动服务:

systemctl --user daemon-reload systemctl --user enable --now openclaw-gateway

第三步,查看状态:

systemctl --user status openclaw-gateway

看到active (running)就说明 WSL 内部这一层没问题了。

第四步,在 Windows 浏览器访问http://localhost:18789,能打开 OpenClaw 控制台就说明网关正常。

第五步,手动运行一次 PowerShell 脚本:

powershell.exe -NoProfile -File C:\Scripts\start-openclaw.ps1

如果输出active,说明 Windows 侧调用链路也通了。

最后重启电脑,登录后等 30 秒左右,再次访问http://localhost:18789。如果控制台能打开,并且通过飞书发消息有响应,就说明开机自启完整生效了。

如果你想先验证模型通道是否正常,可以打开模型对话页面 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 发一条测试消息,确认 Key 和模型都可用,再回头排查自启动问题,能少走很多弯路。

5. 本篇常见错排查

5.1 重启后服务没起来,手动打开 WSL 就好了

这是最典型的现象。原因是 linger 没开,或者 systemd 用户服务没有 enable。检查:

loginctl show-user "$(whoami)" | grep Linger

如果显示Linger=no,重新执行sudo loginctl enable-linger "$(whoami)"。

5.2 计划任务显示已运行,但服务还是没起

大概率是 WSL 发行版名称写错了。用wsl -l -v查看准确名称,注意大小写。另外,计划任务里如果用了--bash -lc,要确保命令在非交互式 shell 下也能找到systemctl。可以在脚本里加绝对路径,或者先source ~/.bashrc。

5.3 端口 18789 被占用

检查 Windows 侧是否有其他程序占用了这个端口:

netstat -ano | findstr 18789

如果有冲突,改 config.toml 里的port,同时更新验证地址。

5.4 API Key 读取不到

systemd 的 EnvironmentFile 不会自动展开 shell 变量。确认 env 文件里是TAOTOKEN_API_KEY=sk-xxx这种纯键值对格式,不要加export,也不要用引号包裹。改完后执行:

systemctl --user daemon-reload systemctl --user restart openclaw-gateway

5.5 飞书消息没响应但控制台能打开

这说明网关起来了,但渠道配置有问题。检查 config.toml 里[channels.feishu]的 app_id 和 app_secret 是否正确,以及飞书后台的事件订阅地址是否指向你的公网入口。如果只是本地测试,可以先用控制台里的对话功能验证模型通道。

5.6 计划任务执行超时被终止

默认计划任务有执行时间限制。上面注册时用了-ExecutionTimeLimit (New-TimeSpan -Hours 0)表示不限制。如果你手动创建任务,记得在「设置」里把「如果任务运行时间超过以下时间,停止任务」取消勾选。

6. 长期运行与 Coding Plan 接入

如果你打算把 OpenClaw 当作长期在线的编码助手或 Agent 来用,建议把模型通道固定到 Coding Plan 上。Coding Plan 针对代码场景做了优化,长上下文和工具调用的稳定性更好,适合 OpenClaw 这种需要持续处理任务的环境。

接入方式很简单,在 config.toml 里把default_model换成 Coding Plan 支持的模型,base_url 仍然用https://taotoken.net/api。如果你还没开通,可以先到 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 了解套餐内容,再决定是否切换。

对于 Claude Code 这类工具的重度用户,TaoToken 也提供了对应的接入方式,参考 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 里的 ClaudeCodeAnthropic 章节即可。配置逻辑和 OpenClaw 一致,都是统一 base_url 加 Key。

最后提醒一个实操细节:每次修改 config.toml 或 env 文件后,都要执行systemctl --user daemon-reload再 restart,否则 systemd 不会重新读取环境变量。这个坑我在调试阶段踩过好几次,服务状态显示 running,但实际用的还是旧 Key,排查了半天才发现是没 reload。

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

197.验证

对比实验的安排比陈远预想的要快。孙国平从办公室出去后不到一个小时,就回到了办公室,身后跟着一个穿着灰色工装的中年男人。他介绍说这是白班的班长老周,在金丰干了十二年,技术过硬,人也靠谱。“陈老师,我…

作者头像 李华
网站建设 2026/9/28 19:28:55

基于AgentScope的生产级AI Agent实战:消息驱动与长期记忆设计

说句实话,把 AI Agent 从一个“能聊天的 demo”做成“能上线扛业务的生产级系统”,中间那条沟比很多人想象的要宽得多。过去这几个月我一直在做一件事:基于 AgentScope 从零搭一个带长期记忆的 AI Agent,用在客服和内部知识问答场…

作者头像 李华