1. 从 Clawdbot 到 OpenClaw:本地 AI 智能助手到底解决什么问题
如果你之前折腾过 Clawdbot 或者 Moltbot,会发现它们改名的消息满天飞,社区里一堆人问「原来的配置还能不能用」。我先把结论放前面:OpenClaw 就是 Clawdbot / Moltbot 这条线的新名字,核心定位没变——一个本地优先、开源、能接你自己渠道的个人 AI 智能助手框架。你把它理解成「跑在自己机器上的 AI 中枢」就行,它负责把模型能力、本地文件、浏览器、日历、消息渠道串起来,让 AI 从「只会聊天」变成「能替你干活」。
为什么很多人聊了半天大模型,最后还是回到手动复制粘贴?因为大多数在线助手被关在网页里,碰不到你的本地环境。你想让它整理一个文件夹的笔记,它说做不到;你想让它定时检查某个页面变化,它也没有定时器。OpenClaw 补的就是这「最后一公里」:AI 能读你的文件、能调工具、能按计划执行任务,而且数据留在你自己的设备上。
这篇面向第一次接触 OpenClaw 的开发者,走一条从零到跑通第一个自动化任务的完整路径。重点有三块:Skills 怎么写和怎么被调用、Clawdbot/Moltbot 迁移时要注意什么、以及怎么用 TaoToken 统一 Key 和 API 通道把模型接进来。热词里提到的 OpenClaw、AI 智能助手、自动化、Skills,我都会落到可复制的配置和命令上,而不是停在概念。
适合谁看?有基本命令行知识、装过 Node.js、想搭一个属于自己的 AI 助手的开发者。如果你完全没碰过终端,跟着一步步来也能走通,但遇到报错要愿意看日志。不适合只想开箱即用、不愿意配置的人。
先明确一个心智模型:OpenClaw 里 Agent 是执行主体,Session 是一次会话上下文,Skill 是可被调用的能力单元。你写一个 Skill,本质是告诉 Agent「遇到这类任务时,按这个流程、调这些工具去做」。自动化则是把 Skill 和定时/触发条件绑在一起。理解了这三层,后面的配置就不会晕。
环境上你需要 Node.js v18 以上,推荐 v20。检查一下:
node -v npm -v如果版本太低,用 nvm 装一个:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash nvm install 20 nvm use 20装好之后,OpenClaw 的安装和初始化我会在下一节和 TaoToken 接入一起讲,因为模型通道没配好,助手跑起来也是空转。
2. TaoToken 前置:统一 Key 与 API 通道接入 OpenClaw 模型配置
很多人卡在第一步不是不会装 OpenClaw,而是模型 API 太散:Claude 一个 Key、GPT 一个 Key、Kimi 又一个 Key,切换模型要改一堆环境变量。我的做法是用 TaoToken 做统一通道,一个 Key 走多家模型,OpenClaw 侧只认一个 Base URL 和一个 Key,换模型只改 Model 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 地址不要加 UTM 参数,配置里写干净的 https://taotoken.net/api 就行。
先去控制台拿 Key,入口在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。拿到形如sk-xxxx的 Key 之后,先别急着写进 OpenClaw,用一条 curl 验证通道是否通:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "只回复:通道正常"}] }'返回里有choices[0].message.content就说明 Key 和通道没问题。这一步很关键,因为 OpenClaw 报错时你分不清是框架问题还是 Key 问题,先隔离验证能省很多时间。
OpenClaw 的模型配置一般放在项目根目录的配置文件里,常见是openclaw.config.json或环境变量方式。我用 JSON 配置演示,路径按你实际安装目录来:
{ "models": { "default": "claude-sonnet-4-20250514", "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的Key", "models": [ "claude-sonnet-4-20250514", "gpt-4o", "kimi-k2-0711-preview" ] } } } }如果你更习惯环境变量,等价写法是:
export OPENCLAW_MODEL_PROVIDER=taotoken export OPENCLAW_BASE_URL=https://taotoken.net/api export OPENCLAW_API_KEY=sk-你的Key export OPENCLAW_DEFAULT_MODEL=claude-sonnet-4-20250514这里三件套必须齐全:Base URL、Key、Model ID。少任何一个,OpenClaw 启动时要么连不上,要么默认模型为空。Model ID 要和你 TaoToken 账号里可用的模型名一致,写错了会返回模型不存在。
配好之后跑一次 OpenClaw 的模型自检命令(不同版本命令名略有差异,常见是openclaw doctor或openclaw models test):
openclaw doctor看到 provider 为 taotoken、default model 正确、连通性 OK,就可以进入下一步写 Skill 了。如果你还想在网页里直接对比不同模型的回答质量,可以用模型对话页 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite 先试几轮,确定默认模型再写进配置。
3. 可复制配置:OpenClaw Skills 编写模板与自动化任务落地
Skills 是 OpenClaw 里最值得花时间的地方。一个 Skill 通常是一个目录,里面至少有一个SKILL.md描述元信息,加上可选的脚本或工具声明。Agent 在规划任务时会读取这些描述,决定要不要调用、怎么调用。
先建目录结构:
mkdir -p ~/.openclaw/skills/daily-report cd ~/.openclaw/skills/daily-report然后写SKILL.md。下面这个模板可以直接复制,改掉 name、description 和步骤即可:
--- name: daily-report description: 汇总指定目录下的 Markdown 笔记,生成一份当日摘要报告 version: 1.0.0 author: your-name triggers: - 生成日报 - 汇总笔记 tools: - read_file - write_file - list_dir --- # Daily Report Skill ## 目标 读取 `~/notes` 目录下最近修改的 Markdown 文件,提取要点,生成 `~/reports/daily-YYYYMMDD.md`。 ## 执行步骤 1. 使用 list_dir 列出 `~/notes` 下所有 .md 文件。 2. 按修改时间排序,取最近 10 个。 3. 使用 read_file 读取内容,提取标题和一级要点。 4. 汇总为结构化 Markdown,写入 `~/reports/daily-YYYYMMDD.md`。 5. 返回生成的文件路径和条目数量。 ## 约束 - 不修改原始笔记文件。 - 报告文件不存在时自动创建目录。 - 单次读取文件不超过 200KB。triggers是给 Agent 的语义提示,用户说「帮我生成日报」时更容易命中。tools声明这个 Skill 需要哪些内置工具,OpenClaw 会在调用前做权限检查。步骤写得越具体,Agent 执行越稳,别写「分析一下内容」这种模糊描述。
写完 Skill 后,用 CLI 注册并查看是否被识别:
openclaw skills list openclaw skills reload如果列表里出现daily-report,说明加载成功。接着做自动化绑定。OpenClaw 的定时任务配置一般在openclaw.config.json的automations段:
{ "automations": [ { "name": "每晚生成日报", "schedule": "0 22 * * *", "skill": "daily-report", "input": { "sourceDir": "~/notes", "outputDir": "~/reports" }, "enabled": true } ] }schedule是标准 cron 表达式,0 22 * * *表示每天 22 点执行。input会作为参数传给 Skill。改完配置重启 OpenClaw 服务:
openclaw restart openclaw automations list看到任务处于 enabled 状态就绑好了。想手动触发一次验证,不用等到 22 点:
openclaw run daily-report --input '{"sourceDir":"~/notes","outputDir":"~/reports"}'这一步能跑通,说明 Skill 逻辑和工具权限都没问题。如果你要接的是长期编码或 Agent 类任务,模型调用量会比较大,可以考虑用 Coding Plan 通道 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,把编码场景的额度单独规划,避免和日常对话抢配额。
关于 Clawdbot/Moltbot 迁移,重点看两处:一是配置文件名和字段名可能变了,旧版clawdbot.config.json里的 provider 段要按新版models.providers结构重写;二是 Skills 目录路径,旧版可能在~/.clawdbot/skills,新版统一到~/.openclaw/skills。迁移时先把旧目录复制过来,再逐个openclaw skills reload验证,别一次性全量切换。
4. 验证请求:本地运行 OpenClaw 并跑通第一个自动化任务
配置和 Skill 都就位后,做一次端到端验证。先启动 OpenClaw 服务,前台运行方便看日志:
openclaw start --foreground日志里应该能看到 provider 初始化、skills 加载数量、automations 注册条数。如果 provider 那行报连接失败,回到第 2 节检查 Base URL 和 Key。
服务起来后,用 CLI 发一条自然语言指令,测试 Agent 能不能命中 Skill:
openclaw ask "帮我生成今天的日报,笔记在 ~/notes"预期返回类似:
{ "skill": "daily-report", "status": "success", "output": "~/reports/daily-20250612.md", "items": 8 }然后确认文件真的生成了:
ls -lh ~/reports/ cat ~/reports/daily-20250612.md打开报告看内容结构是否合理。如果条目为空,多半是~/notes路径不对或没有 .md 文件;如果报工具权限错误,检查SKILL.md里tools是否声明了read_file、list_dir。
再验证定时任务是否被调度器接管:
openclaw automations status输出里会显示下次执行时间。想快速验证 cron 逻辑,可以临时把 schedule 改成*/2 * * * *(每两分钟),观察日志里是否自动触发,验证完改回 22 点。
如果你还想在接入前先确认某个模型对这类任务的理解能力,可以在模型对话页 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite 里贴一段 Skill 描述,问它「你会怎么执行」,对比几个模型的规划质量,再决定默认模型。
到这里,第一个自动化任务就跑通了:模型通道走 TaoToken,Skill 负责具体逻辑,automation 负责触发。后面你要加新能力,就是复制这个模板改步骤,成本很低。
5. 本篇常见错排查:401、local proxy failed 与 reading choices 报错
实际跑的时候,报错集中在几个地方。我按真实遇到的顺序列一下,对照日志定位。
401 Unauthorized。最常见,Key 错了、过期了、或者复制时带了空格。先单独 curl 验证:
curl -i https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":"ping"}]}'返回 401 就重新去 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 生成一个 Key。注意配置里不要写成Bearer Bearer sk-xxx,也不要漏掉Bearer前缀。
local proxy failed。这个报错通常出现在 OpenClaw 尝试走本地转发但端口没起来,或者 Base URL 写成了localhost。检查配置里baseUrl是不是https://taotoken.net/api,别写成http://127.0.0.1:xxxx。如果你本地有其它服务占用端口,也会触发类似提示,换端口或关掉冲突服务。
reading 'choices' of undefined。这是响应结构不符合预期,OpenClaw 拿不到choices字段。原因一般是 Base URL 少了/v1或多了/v1。TaoToken 的对话端点完整路径是https://taotoken.net/api/v1/chat/completions,配置里baseUrl写https://taotoken.net/api,框架会自动拼/v1/chat/completions。如果你手动写成了https://taotoken.net/api/v1,就会变成/v1/v1/...,返回结构自然不对。
OAuth 相关报错。如果你用的是需要 OAuth 的客户端(比如某些 Claude Code 场景),报 OAuth 失败时先确认是不是把 API Key 模式误配成了 OAuth 模式。OpenClaw 走的是 Key 模式,不需要 OAuth 流程。Claude Code 接入可以参考文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 里的说明,ClaudeCodeAnthropic 专用入口在 https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite 。
Skill 不触发。Agent 没命中 Skill,先openclaw skills list确认加载,再看triggers关键词是否和用户说法差太远。把常见说法都加进 triggers,比如「日报」「总结笔记」「汇总今天」。
automation 不执行。检查enabled是否为 true,cron 表达式是否写错(五个字段,不是六个),以及 OpenClaw 服务是否在后台常驻。前台跑的时候关掉终端,任务就停了。
排障时优先看 OpenClaw 日志里的 provider 和 skill 两段,90% 的问题在这两处。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,遇到通道问题先查文档再改配置。
6. 语义一致 CTA:把 OpenClaw 接入通道固定下来
跑通第一个任务之后,建议把模型通道固定成一套配置,别每次换模型都改代码。我的习惯是:TaoToken 的 Key 只放一份,OpenClaw 配置里 provider 只写 taotoken,需要换模型时改default字段的 Model ID。这样迁移 Clawdbot/Moltbot 旧配置时,只需要把旧 provider 段替换成这一套,Skills 和 automations 基本不用动。
如果你主要做排障和接入,先把 API Keys 和接入文档过一遍:Key 管理在 https://taotoken.net/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=chat&utm_campaign=rewrite 。长期跑编码和 Agent 任务,用 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 单独规划额度。
最后留一个我踩过的坑:Skill 的SKILL.md里步骤别写太抽象,Agent 规划时会自由发挥,结果不稳定。把每一步对应到具体工具和具体路径,跑十次结果都一致,这才算真正可用的自动化。