1. 先搞清楚 OpenClaw 到底在干什么:从对话到能动手的 Agent
OpenClaw 这个项目,圈子里叫它“小龙虾”,本质上是一个本地跑的 Agent 框架。它能做什么?简单说,就是让大模型不只是聊天,还能调用工具、执行命令、读写文件、访问 HTTP 接口。适合谁?适合想在自己电脑上快速跑通一个 Agent、又不想被各种云平台绑定的人。
我见过太多人把 OpenClaw 当成“装完就万能”的东西,结果装完发现它什么都不会。原因很简单:Agent 的能力边界,取决于你给它配了什么工具和技能。OpenClaw 本身只是一个调度器,它负责把用户输入、模型输出、工具执行结果串起来。真正干活的是模型和工具。
所以这篇教程的目标很明确:从零搭一个最小可用的 OpenClaw Agent,让它能通过 HTTP 服务器接收请求,调用大模型 API,返回结果。整条链路里最关键的一环是 API Key 和 Base URL 的配置。我会用 TaoToken 的统一 Key 来打通模型调用,这样你不需要在多个平台之间来回切换。
先看整体架构。OpenClaw 的核心流程是这样的:
用户请求 → HTTP 服务器 → OpenClaw Agent → 模型 API(TaoToken)→ 工具执行 → 返回结果这里面有几个关键文件你需要知道:
SKILL.md:技能描述文件,告诉 Agent 它能做什么、怎么做config.toml或settings.json:OpenClaw 的主配置文件,里面填 Base URL、API Key、Model IDagent.py或入口脚本:启动 Agent 和 HTTP 服务器的代码
很多人卡在第一步:模型 API 怎么接。OpenClaw 默认走 OpenAI 兼容协议,所以只要你的 API 端点兼容/v1/chat/completions或/v1/responses,就能直接接。TaoToken 的 API 地址是https://taotoken.net/api,兼容 OpenAI 协议,填进去就能用。
我试过用其他平台的 Key,每个平台都要单独配环境变量、单独改 Base URL,切换模型的时候特别麻烦。TaoToken 的好处是一个 Key 可以调多个模型,Base URL 统一,Model ID 按需换。对于 OpenClaw 这种需要频繁切换模型的场景,省事很多。
接下来我会一步步带你走完:先拿到 TaoToken 的 Key,然后写 SKILL.md,再配 OpenClaw 的 settings,最后用 curl 验证整条链路通不通。每一步都有可复制的代码和配置,你跟着做就行。
2. TaoToken 前置准备:统一 Key 与 Base URL 填写位置
在开始写 OpenClaw 配置之前,你需要先拿到 TaoToken 的 API Key。这一步很快,但有几个细节要注意,不然待会儿配置的时候会卡住。
首先访问 TaoToken 官网注册账号:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。注册完成后进入控制台,找到 API Keys 页面:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。在这里创建一个新的 Key,复制出来保存好。这个 Key 就是你后面填到 OpenClaw 配置里的凭证。
注意:Key 只显示一次,复制后存到安全的地方。如果你用环境变量管理,可以写成TAOTOKEN_API_KEY,后面配置文件里引用这个变量就行。
TaoToken 的 API 端点有两个你需要记住:
- Base URL:
https://taotoken.net/api - 兼容协议:OpenAI Chat Completions / Responses
OpenClaw 的配置文件里,Base URL 填https://taotoken.net/api,不要加/v1,OpenClaw 会自动拼接路径。如果你填成https://taotoken.net/api/v1,可能会遇到 404 或者路径重复的问题。这个坑我踩过,当时排查了半天才发现是 Base URL 多写了一层。
Model ID 怎么填?TaoToken 支持多个模型,你可以在模型对话页面查看可用列表:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。常见的比如gpt-4o、claude-3-5-sonnet、deepseek-chat等。OpenClaw 配置里填你实际要用的 Model ID,后面切换模型只需要改这一个字段。
如果你打算长期跑 Agent 任务,建议看一下 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。它适合需要频繁调用模型、跑自动化任务的场景,比按量计费更划算。
现在你手里应该有这些东西:
| 项目 | 值 |
|---|---|
| API Key | 从控制台复制的那串字符 |
| Base URL | https://taotoken.net/api |
| Model ID | 比如gpt-4o或claude-3-5-sonnet |
| 配置文件路径 | OpenClaw 项目根目录下的settings.toml或config.json |
把这些准备好,接下来写 SKILL.md 和 OpenClaw 配置就顺了。
3. 可复制配置:SKILL.md 模板与 OpenClaw settings 片段
这一节是整篇教程的核心。我会给你两份可直接复制的配置:一份是SKILL.md,一份是 OpenClaw 的settings.toml。你只需要把里面的 API Key 和 Model ID 换成自己的,就能跑起来。
先看SKILL.md。这个文件的作用是告诉 Agent 它能做什么、怎么做。OpenClaw 启动时会读取这个文件,把里面的内容作为系统提示的一部分传给模型。所以 SKILL.md 写得越清楚,Agent 的行为越可控。
下面是一个最小可用的 SKILL.md 模板,包含两个技能:执行本地命令和调用 HTTP 接口。
# SKILL.md ## 技能:执行本地命令 当用户要求执行系统命令、创建文件、查看目录时,使用以下格式回复: 命令:<要执行的命令> 规则: 1. 只输出一行,以“命令:”开头,后面跟命令本体 2. 不要输出解释、Markdown 代码块或多余文字 3. 命令执行结果会回传给你,根据结果决定下一步 ## 技能:调用 HTTP 接口 当用户要求获取天气、查询 API 数据时,使用以下格式: 命令:curl -s "https://taotoken.net/api/v1/models" -H "Authorization: Bearer $TAOTOKEN_API_KEY" 规则: 1. 所有 HTTP 请求通过 curl 执行 2. 需要认证的接口,从环境变量读取 Key 3. 返回结果会回传给你,解析后回复用户 ## 技能:对话与推理 当不需要执行命令时,直接用自然语言回复用户。 不要以“命令:”开头。这个模板的关键点是:明确告诉模型“什么时候输出命令、什么时候输出自然语言”。OpenClaw 的调度器会根据回复内容判断是否要执行命令。如果模型输出以“命令:”开头,调度器就提取命令并执行;否则直接把回复返回给用户。
接下来是 OpenClaw 的settings.toml。这个文件通常放在项目根目录,OpenClaw 启动时会自动读取。
[model] provider = "openai" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" model_id = "gpt-4o" max_tokens = 4096 temperature = 0.7 [agent] name = "openclaw-agent" skill_file = "SKILL.md" max_iterations = 10 [server] host = "0.0.0.0" port = 8080如果你用的是 JSON 格式的配置,等价写法如下:
{ "model": { "provider": "openai", "base_url": "https://taotoken.net/api", "api_key": "sk-你的TaoTokenKey", "model_id": "gpt-4o", "max_tokens": 4096, "temperature": 0.7 }, "agent": { "name": "openclaw-agent", "skill_file": "SKILL.md", "max_iterations": 10 }, "server": { "host": "0.0.0.0", "port": 8080 } }几个参数说明:
base_url:填https://taotoken.net/api,不要加/v1api_key:你的 TaoToken Key,建议用环境变量替换model_id:按需填,比如gpt-4o、claude-3-5-sonnetmax_iterations:Agent 最多执行多少轮工具调用,防止死循环port:HTTP 服务器监听端口,手机访问时用这个端口
如果你用环境变量管理 Key,可以把api_key改成api_key_env = "TAOTOKEN_API_KEY",然后在启动脚本里 export 这个变量。这样配置文件可以提交到 Git,不会泄露 Key。
配置写完后,启动 OpenClaw:
export TAOTOKEN_API_KEY="sk-你的TaoTokenKey" python -m openclaw --config settings.toml如果启动成功,你会看到类似这样的输出:
[INFO] OpenClaw agent started [INFO] Model: gpt-4o @ https://taotoken.net/api [INFO] HTTP server listening on 0.0.0.0:8080 [INFO] Skill file loaded: SKILL.md到这里,配置部分就完成了。下一节我会用 curl 验证整条链路,确保 Agent 能正常调用模型 API。
4. 验证请求:用 curl 测试 Agent 调用 API 是否成功
配置写好了,但你怎么知道它真的通了?最直接的办法是用 curl 发一个请求,看返回结果。这一节我会给你完整的 curl 命令和预期返回,你照着做就能确认整条链路是否正常。
先验证模型 API 本身是否可用。这一步绕过 OpenClaw,直接调 TaoToken 的接口:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -d '{ "model": "gpt-4o", "messages": [ {"role": "user", "content": "回复一个字:通"} ], "max_tokens": 10 }'预期返回:
{ "id": "chatcmpl-xxx", "object": "chat.completion", "created": 1700000000, "model": "gpt-4o", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "通" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 10, "completion_tokens": 1, "total_tokens": 11 } }如果你看到choices[0].message.content有内容,说明模型 API 通了。如果返回 401,检查 Key 是否正确;如果返回 404,检查 Base URL 是否多写了/v1。
接下来验证 OpenClaw 的 HTTP 服务器。假设你已经启动了 OpenClaw,监听在8080端口。发一个请求:
curl -s http://localhost:8080/chat \ -H "Content-Type: application/json" \ -d '{ "message": "帮我在当前目录创建一个 hello.txt,内容是 OpenClaw 测试" }'预期返回:
{ "reply": "已创建 hello.txt,内容为:OpenClaw 测试", "tool_calls": [ { "command": "echo 'OpenClaw 测试' > hello.txt", "exit_code": 0, "output": "" } ] }然后检查文件是否真的创建了:
cat hello.txt预期输出:
OpenClaw 测试如果这一步成功,说明整条链路通了:HTTP 请求 → OpenClaw Agent → 模型 API → 工具执行 → 返回结果。
再验证一个 HTTP 调用技能。发一个天气查询请求:
curl -s http://localhost:8080/chat \ -H "Content-Type: application/json" \ -d '{ "message": "帮我查一下北京的天气" }'预期返回里会包含tool_calls,里面有一条 curl 命令,执行结果会回传给模型,模型再整理成自然语言回复。
如果你在手机上也配好了访问地址,可以用手机浏览器打开http://你的电脑IP:8080,发一条消息试试。能收到回复就说明远程链路也通了。
到这里,验证部分就完成了。下一节我会列出几个常见的报错和排查方法,帮你快速定位问题。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
配置和验证过程中,最容易遇到这几类报错。我按出现频率从高到低排列,每个都给出具体现象和解决方法。
401 Unauthorized
现象:curl 返回{"error": {"message": "Invalid API key", "type": "invalid_request_error"}}。
原因:API Key 填错了,或者环境变量没生效。
排查步骤:
- 检查
settings.toml里的api_key是否和 TaoToken 控制台里的一致 - 如果用环境变量,确认
echo $TAOTOKEN_API_KEY有输出 - 检查 Key 是否被删除或过期,去控制台重新生成一个
# 确认环境变量 echo $TAOTOKEN_API_KEY # 重新测试 curl -s https://taotoken.net/api/v1/models \ -H "Authorization: Bearer $TAOTOKEN_API_KEY"local proxy failed
现象:OpenClaw 启动时报local proxy failed: connection refused或proxy error。
原因:Base URL 填错了,或者网络不通。
排查步骤:
- 确认
base_url是https://taotoken.net/api,不要加/v1 - 用 curl 直接测 Base URL 是否可达
- 检查是否有本地代理配置干扰,临时取消
HTTP_PROXY和HTTPS_PROXY环境变量
# 测试连通性 curl -s -o /dev/null -w "%{http_code}" https://taotoken.net/api/v1/models \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" # 取消代理 unset HTTP_PROXY unset HTTPS_PROXYreading choices 报错
现象:TypeError: Cannot read properties of undefined (reading 'choices')或类似。
原因:API 返回格式和预期不一致,通常是 Base URL 路径拼接错误,或者 Model ID 不存在。
排查步骤:
- 确认 Base URL 没有多余路径
- 确认 Model ID 在 TaoToken 支持列表里
- 用 curl 直接调一次,看返回结构
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "hi"}]}'如果返回里没有choices字段,说明请求本身有问题,检查 Model ID 和请求体格式。
OAuth 相关报错
现象:OAuth token expired或invalid_grant。
原因:如果你用的是 Claude Code 或 Codex 的 OAuth 认证方式,Token 过期了。
排查步骤:
- 重新走一遍 OAuth 授权流程
- 如果用的是 TaoToken 的 Key,确认没有混用 OAuth 配置
- 检查
auth.json或credentials.json里的 Token 是否过期
如果你在 OpenClaw 里同时配了 OAuth 和 API Key,可能会冲突。建议只用一种认证方式,TaoToken 的 Key 方式最简单,直接填api_key就行。
CC Switch / Cline MCP / Codex auth.json 三件套
如果你在用 CC Switch 或 Cline 的 MCP 功能,配置里必须写全三件套:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的TaoTokenKey", "model_id": "gpt-4o" }缺任何一个都会报错。Codex 的auth.json里也是同样三个字段,路径通常在~/.codex/auth.json。
排查完这些,基本能覆盖 90% 的常见问题。如果还有报错,去接入文档里查:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。
6. 接入文档与 API Keys 入口:把 OpenClaw 跑成长期可用的 Agent
配置跑通之后,你可能会想把它变成一个长期可用的服务。比如让 OpenClaw 常驻后台,手机随时能访问,或者接入更多技能。这一节给你几个实用建议和入口。
首先,把 OpenClaw 做成 systemd 服务,开机自启:
[Unit] Description=OpenClaw Agent After=network.target [Service] Type=simple User=youruser WorkingDirectory=/home/youruser/openclaw Environment="TAOTOKEN_API_KEY=sk-你的TaoTokenKey" ExecStart=/usr/bin/python3 -m openclaw --config settings.toml Restart=always RestartSec=10 [Install] WantedBy=multi-user.target保存到/etc/systemd/system/openclaw.service,然后:
sudo systemctl daemon-reload sudo systemctl enable openclaw sudo systemctl start openclaw sudo systemctl status openclaw这样 OpenClaw 就会在后台常驻,崩溃了自动重启。
其次,扩展 SKILL.md。你可以往里面加更多技能,比如发送邮件、读写数据库、调用第三方 API。每加一个技能,Agent 的能力就多一分。但注意不要一次加太多,容易让模型混淆。建议按需添加,测试通过后再加下一个。
如果你需要更稳定的模型调用配额,可以看看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。它适合长期跑 Agent 任务的场景,比按量计费更可控。
API Key 管理入口在这里:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。建议定期轮换 Key,避免泄露。
接入文档里有更详细的参数说明和示例:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。遇到问题先查文档,大部分报错都有对应说明。
最后,如果你只是想快速验证模型效果,可以直接在模型对话页面测试:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。不用写代码,选模型、输问题、看回复,确认模型可用后再接到 OpenClaw 里。
整条链路跑通后,你会发现 OpenClaw 的核心并不复杂:一个 HTTP 服务器接收请求,一个调度器管理模型调用和工具执行,一个 SKILL.md 定义能力边界。真正决定 Agent 好不好用的,是你给它配了什么技能、写了什么提示词。多试几次,调整 SKILL.md 里的规则,你会慢慢找到适合自己场景的配置。