1. 百元服务器跑 OpenClaw 的真实场景与成本账
OpenClaw 是一个轻量级开源 AI 助手框架,能做什么?简单说,它把「对话界面 + 模型调用 + 本地知识存储」打包成一个可以自己部署的服务,适合想拥有专属 AI 助手、又不想把聊天记录交给第三方平台的个人开发者。它支持对接云端模型 API,也支持后续换成量化后的本地开源模型,前端是一个 Web 页面,浏览器打开就能用。
我选择在百元级云服务器上部署它,核心原因是成本可控。以国内主流云厂商的 1 核 2GB 突发性能实例为例,年付活动价常在 500 到 700 元之间,折合每月 50 到 60 元;轻量应用服务器同配置也差不多这个价位。这个配置跑 OpenClaw 的后端推理层(FastAPI 单进程)内存占用大约 80MB,前端静态资源 200KB 左右,日常交互完全够用。相比每月动辄几十上百的付费 AI 订阅,这套方案把成本压到了最低,而且数据落在自己的磁盘上。
场景上,我把它当成个人知识助手用:把工作文档丢进去做向量检索,用自然语言让它生成数据处理脚本,或者单纯当一个随时在线的问答入口。7×24 小时在线的意义在于,你半夜想到一个问题,打开浏览器就能问,不用等本地电脑开机。下面从系统选型开始,一步步把部署、常驻、自启、验证和排障走完。
系统选型建议 Ubuntu 22.04 LTS,原因是软件源里的 Python 版本较新、systemd 稳定、社区排障资料多。如果你用的是 Debian 12 也可以,命令基本一致。服务器规格 1 核 2GB 是底线,1 核 1GB 在安装依赖阶段容易触发 OOM,不建议。带宽 1Mbps 足够,因为模型推理在远端或本地进程内完成,Web 界面传输的只是文本。
安全组方面,你需要放行两个方向:入方向开放 8000 端口(OpenClaw 默认 Web 端口),出方向保持默认全通即可,因为要调用外部模型 API。这里提醒一句,不要图省事把 22 端口改成弱密码,部署前先确认 SSH 密钥登录已经配好。
成本账再算细一点:服务器月付 50 元,模型调用走按量计费的话,个人日常使用每月通常几元到十几元;如果后续换成本地 7B 量化模型,模型调用成本归零,只剩服务器费用。这就是「百元玩转」的由来——不是一次性百元,而是每月百元以内。
2. TaoToken 前置:统一 Key 与 API 通道接入模型能力
OpenClaw 本身不绑定任何一家模型服务,它通过配置里的base_url和api_key去调用兼容 OpenAI 协议的后端。这意味着你可以把模型通道统一交给 TaoToken 来管理:一个 Key 走通多家模型,切换模型时只改配置里的模型 ID,不用到处申请账号、管理多套密钥。对个人开发者来说,这省掉了大量琐碎的账号维护工作。
TaoToken 的定位是模型 API 聚合与统一接入层,官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。你需要在控制台创建一个 API Key,然后把它填进 OpenClaw 的配置文件。整个流程分三步:注册登录、创建 Key、把 Base URL 和 Key 写进config.toml。
创建 Key 的入口在控制台的 API Keys 页面,路径是 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。进去之后点新建,复制生成的sk-开头的字符串,注意它只显示一次,丢了只能重建。如果你不确定该选哪个模型,可以先去模型对话页面试一下效果,地址是 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite ,在网页里直接对话,确认响应速度和回答质量符合预期,再决定写进配置的 Model ID。
这里要强调三件套的概念:Base URL、API Key、Model ID,缺一不可。Base URL 填https://taotoken.net/api,注意末尾不要多加/v1,具体以接入文档为准;API Key 填你刚复制的那串;Model ID 填你在模型对话页面确认过的模型标识,比如常见的通用对话模型 ID。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,里面有完整的参数说明和示例,遇到字段不确定时优先查它。
如果你后续打算长期跑编码类或 Agent 类任务,可以关注 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,它针对高频调用场景做了额度优化。不过对于本篇的 OpenClaw 个人助手场景,按量计费的普通 Key 就够用了。把 Key 准备好之后,下一节进入可复制的配置环节。
3. 可复制配置:从系统初始化到 config.toml 与 systemd
这一节是全文的核心,所有命令都可以直接复制。先做系统初始化,登录服务器后依次执行:
sudo apt update && sudo apt upgrade -y sudo apt install python3.10 python3.10-venv python3.10-dev -y python3.10 -m venv /root/openclaw-env source /root/openclaw-env/bin/activate虚拟环境放在/root/openclaw-env,后面 systemd 配置里的路径要和它一致,否则服务起不来。激活后安装 OpenClaw 核心包:
pip install --upgrade pip pip install openclaw[all]==0.1.2 openclaw initopenclaw init会在当前目录生成config.toml。接下来编辑它,把模型通道指向 TaoToken。用你熟悉的编辑器打开,写入下面这段 TOML:
[llm] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model = "你的ModelID" timeout = 60 [server] host = "0.0.0.0" port = 8000 [storage] type = "local" path = "/root/openclaw-data"注意base_url末尾不要带/v1,api_key替换成你在控制台创建的那串,model替换成你在模型对话页面确认过的 Model ID。这三项就是前面说的三件套,任何一项写错都会导致请求失败。host设为0.0.0.0是为了让公网能访问,port保持 8000。
配置写好后先手动启动一次,确认能跑起来:
openclaw start看到INFO: Uvicorn running on http://0.0.0.0:8000就说明进程起来了。按 Ctrl+C 停掉,接下来做 systemd 常驻。创建服务文件:
sudo nano /etc/systemd/system/openclaw.service写入以下内容,路径要和你的虚拟环境一致:
[Unit] Description=OpenClaw AI Assistant Service After=network.target [Service] User=root WorkingDirectory=/root Environment="PATH=/root/openclaw-env/bin" ExecStart=/root/openclaw-env/bin/openclaw start Restart=always RestartSec=10 [Install] WantedBy=multi-user.target保存后启用并启动:
sudo systemctl daemon-reload sudo systemctl enable openclaw.service sudo systemctl start openclaw.serviceRestart=always配合RestartSec=10保证进程崩溃后 10 秒自动拉起,这是 7×24 在线的关键。最后去云服务器控制台的安全组里添加入方向规则,允许 TCP 8000 端口,来源填0.0.0.0/0或者你自己的固定 IP(更安全)。到这里配置部分就完成了,下一节验证请求。
4. 验证请求与成功结果:curl 与 Web 界面双通道确认
配置写完不代表能通,必须实际发一次请求。先看服务状态:
sudo systemctl status openclaw.service显示active (running)且没有红色报错,说明进程层面正常。如果显示failed,先跳到第 5 节排障。进程正常后,用 curl 直接打本地接口,验证模型通道是否打通:
curl -X POST http://127.0.0.1:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "你的ModelID", "messages": [{"role": "user", "content": "你好,请回复一句话"}] }'如果返回 JSON 里带有choices字段和模型回复内容,说明 OpenClaw 到 TaoToken 的链路完全通了。这一步很关键,因为它绕过了前端,直接测后端推理层。如果这里报错,问题一定在config.toml的三件套或网络出方向上。
本地通了之后,再测公网访问。在浏览器打开http://你的服务器公网IP:8000,应该能看到 OpenClaw 的 Web 界面。在输入框里发一条消息,比如「帮我列一个 Python 读取 CSV 的示例」,几秒内应该能看到流式或整段回复。如果页面能打开但发消息报错,说明前端正常、后端模型通道有问题,回到 curl 那步排查。
实测下来,1 核 2GB 的机器在单用户场景下响应延迟主要取决于模型服务端,本地进程开销可以忽略。你可以连续发 5 到 10 条消息,观察top里的内存占用,正常情况下 OpenClaw 进程稳定在 100MB 以内。如果内存持续上涨不回落,检查是不是开了本地模型加载,1 核 2GB 不建议跑本地 7B 模型。
验证通过后,建议做一次重启测试:sudo reboot,等服务器起来后直接访问 Web 界面,确认 systemd 自启生效。这一步能验证你的 7×24 方案是否真的可靠。重启后如果服务没起来,多半是enable没执行或者路径写错,用systemctl status看日志定位。
5. 本篇常见错排查:401、local proxy failed 与 reading choices
部署过程中最容易撞上的几类报错,我按出现频率排一下,并给出对应的定位方法。
第一类是 401 未授权。报错通常长这样:{"error":{"message":"Invalid API key","type":"invalid_request_error"}}。原因无非三个:Key 复制时带了空格或换行、Key 已被删除或额度耗尽、base_url写错导致请求打到了别的服务。排查方法是用 curl 直接测 TaoToken 的接口,把 Key 换成变量打印出来看有没有多余字符。确认 Key 有效后,再检查config.toml里base_url是不是https://taotoken.net/api,末尾有没有误加/v1。
第二类是local proxy failed或连接超时。这类报错说明服务器出方向被拦了,或者 DNS 解析有问题。先在服务器上执行curl -I https://taotoken.net/api,如果卡住或报Could not resolve host,检查/etc/resolv.conf里的 DNS 配置,换成8.8.8.8或云厂商内网 DNS 再试。如果解析正常但连接超时,检查云服务器安全组的出方向规则,默认应该是全通的,如果你手动改过要恢复。
第三类是reading choices相关报错,典型信息是KeyError: 'choices'或list index out of range。这通常不是网络问题,而是返回的 JSON 结构和你预期的不一致。常见原因是 Model ID 写错了,服务端返回了一个错误对象而不是正常的 completion 结构,OpenClaw 去取choices就取不到。解决办法是先用 curl 单独发一次请求,把完整返回打印出来看,确认model字段填的是有效 ID。另一个可能是timeout设得太短,长回答还没返回就断了,把timeout从 60 调到 120 试试。
第四类是 OAuth 或鉴权方式不匹配。如果你在配置里误开了需要 OAuth 的 provider,而 TaoToken 走的是 API Key 模式,就会报鉴权失败。检查config.toml里provider是不是openai-compatible,不要写成需要额外 OAuth 流程的类型。如果你同时装了 Claude Code 或 Codex 之类的工具,注意它们的auth.json或 settings 文件不要和 OpenClaw 的配置混用,各管各的。
第五类是端口占用。报错Address already in use,说明 8000 端口被别的进程占了。用sudo lsof -i:8000找到进程 PID,要么停掉它,要么把 OpenClaw 的port改成 8001 并同步更新安全组。改完记得systemctl restart openclaw.service。
排障的通用思路是分层:先看systemctl status确认进程,再看journalctl -u openclaw.service -n 50看服务日志,再用 curl 测本地接口,最后测公网。一层层缩小范围,比盲目改配置高效得多。
6. 长期在线与后续扩展:从 API Key 到 Coding Plan 的平滑路径
服务跑起来只是开始,长期稳定在线还需要一点运维习惯。我建议每周做一次日志巡检,命令是journalctl -u openclaw.service --since "7 days ago" | grep -i error,看看有没有反复出现的报错。另外给/root/openclaw-data目录配一个定时备份,用crontab -e加一行每周打包,防止数据丢失。
模型通道方面,如果你后续调用频率上来了,比如开始用它跑自动化脚本或 Agent 任务,可以了解 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,它在高频场景下比按量计费更划算。切换方式很简单,在控制台创建对应计划的 Key,替换config.toml里的api_key,重启服务即可,Base URL 和 Model ID 通常不用动。
如果你想把模型能力接到更多工具里,比如 Claude Code 这类编码助手,TaoToken 也提供了对应的接入方式,文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。核心还是那三件套:Base URL 填https://taotoken.net/api,Key 用控制台创建的,Model ID 按文档选。不同工具只是配置文件位置不同,参数逻辑一致。
最后给一个实用技巧:在config.toml里把timeout设成 120,比默认值更抗长回答中断;systemd 的RestartSec保持 10 秒,太短会导致崩溃循环,太长影响恢复速度。这两处调完,你的 OpenClaw 基本可以放着不管,24 小时在线。需要新建 Key 或查看额度时,回到 https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 操作就行。