1. 为什么 Clawdbot 和 Moltbot 总被混着叫
如果你最近在折腾 OpenClaw,大概率会在 GitHub issue、Discord 聊天记录或者某篇教程里同时看到 Clawdbot、Moltbot、OpenClaw 三个名字,然后一脸问号:这到底是三个项目还是一个项目的三个马甲?我一开始也踩过这个坑,照着旧教程 clone 了 Clawdbot 的仓库,结果配置文件字段对不上,卡了整整一个下午。
先把结论说清楚:Clawdbot 是 2025 年 11 月的初代命名,取的是「Claw(爪子)+ Claude」的双关;2026 年 1 月中旬因为商标关联性问题改名为 Moltbot;2026 年 1 月 30 日正式定名 OpenClaw,官网、仓库、文档全部统一。所以你在老文章里看到的 Clawdbot 和 Moltbot,指的都是同一个东西的不同历史阶段,不是两个独立组件。
但这里有个容易误解的点:很多人以为 Clawdbot 和 Moltbot 是 OpenClaw 架构里的两个不同 Agent 角色,一个负责对话、一个负责执行。实际上不是。它们是同一套 Agent 运行时在不同版本里的代号,真正需要区分的是 OpenClaw 内部的功能分层——Gateway 网关层、Lobster Agentic Loop 执行循环、Skills 技能层、Memory 记忆层。搞混命名和搞混分层,是新手配置失败的两大主因。
这篇文章面向的是准备在本地部署 OpenClaw、并且想通过统一 API 通道接入大模型推理内核的开发者。我会把 Clawdbot/Moltbot 的历史脉络讲清楚,然后重点落在两件事上:一是 OpenClaw 多 Agent 架构里各模块的职责划分和消息流转路径,二是给出 config.toml 和 settings.json 的可复制配置骨架,并演示如何通过 TaoToken 的统一 Key 通道完成一次完整的 Agent 调用链验证。目标很明确:让你一次跑通,不用在命名和配置字段上来回试错。
2. OpenClaw 架构里 Clawdbot/Moltbot 到底管什么
2.1 命名演变与模块职责的对应关系
把命名历史映射到架构上,你会看得更清楚。Clawdbot 时期,项目还是一个相对简单的「聊天工具 + Claude 调用」脚本,核心就是一个消息转发器加一个 prompt 模板。到了 Moltbot 阶段,引入了 Lobster Agentic Loop 的雏形,开始支持多步任务拆解和工具调用。OpenClaw 定名后,架构才真正模块化,Gateway、Loop、Skills、Memory 四层解耦,每层可以独立替换和部署。
所以当你在配置文件里看到[agent]段落下有runtime = "clawdbot"或runtime = "moltbot"这样的字段时,它指的是兼容旧版运行时的行为模式,不是让你选两个不同的 Agent。新版配置里这个字段已经统一为runtime = "openclaw",但为了兼容老配置文件,前两个值仍然能被解析。
2.2 消息流转的完整路径
一条用户消息从聊天工具进来,到最终结果推回去,走的是这样一条链路:
用户在 Telegram 或 Discord 发一条消息,Gateway 层接收并做协议适配,把不同平台的消息格式统一成内部 Message 对象。然后 Gateway 做身份校验和权限检查,确认这个用户有没有权限触发高危技能。校验通过后,消息被投递到 Lobster Agentic Loop。
Loop 拿到消息后,先查 Memory 层有没有相关的历史上下文和用户偏好,把短期记忆和长期记忆拼进 prompt。然后调用大模型推理内核做任务规划,模型返回一个或多个工具调用意图。Loop 解析这些意图,去 Skills 层查找对应的技能实现,按顺序执行。每个技能执行完,结果回传给 Loop,Loop 判断任务是否完成,没完成就带着新结果再调一次模型,形成 ReAct 循环。
所有步骤执行完,Loop 把最终结果和关键日志汇总,交回 Gateway,Gateway 按原渠道格式化后推送给用户。同时,Loop 会把这次任务的状态和关键信息写入 Memory 层,供后续任务参考。
这个链路里,Clawdbot/Moltbot 的历史代号对应的是 Loop 层的早期实现,而现在的 OpenClaw 把 Loop 做成了可配置的执行引擎,支持超时控制、失败重试和权限校验。
2.3 为什么接入层要单独抽出来
OpenClaw 默认支持 Claude、GPT、Ollama、GLM、DeepSeek 等多种推理内核,但每个模型的 API 格式、鉴权方式、计费逻辑都不一样。如果直接在 Loop 层硬编码各家 SDK,换模型就要改核心代码,维护成本极高。
所以实际部署时,通常会在 Loop 和模型之间加一个统一接入层,把所有模型调用收敛到一套 OpenAI 兼容的接口上。这样 Loop 只需要知道一个 base_url 和一个 api_key,换模型只改配置不改代码。TaoToken 在这里扮演的就是这个统一接入层的角色,它提供 OpenAI 兼容的 API 端点,把不同模型的调用统一成一套 Key 和一套请求格式。下面第三章的配置骨架就是围绕这个思路展开的。
3. config.toml 与 settings.json 可复制配置骨架
3.1 目录结构与文件分工
OpenClaw 本地部署后,配置目录通常长这样:
~/.openclaw/ ├── config.toml # 主配置:Gateway、Loop、模型接入 ├── settings.json # 技能开关、权限、记忆策略 ├── skills/ # 本地技能目录 └── memory/ # 持久化记忆存储config.toml 管的是「怎么跑起来」——监听端口、模型通道、执行循环参数。settings.json 管的是「跑的时候允许做什么」——哪些技能启用、权限边界、记忆保留策略。两者分开的好处是,你可以把 config.toml 纳入版本管理,而 settings.json 里的敏感权限配置单独保管。
3.2 config.toml 完整骨架
下面这份配置可以直接复制,把YOUR_TAOTOKEN_KEY替换成你在 TaoToken 控制台生成的 Key 即可。模型通道部分走的是 OpenAI 兼容格式,base_url 指向 TaoToken 的 API 端点。
# ~/.openclaw/config.toml [gateway] host = "127.0.0.1" port = 8787 # 聊天渠道适配,按需开启 channels = ["telegram", "discord"] # 身份校验:只允许白名单用户触发 allowed_users = ["your_telegram_id"] [agent] runtime = "openclaw" # 执行循环参数 max_iterations = 12 timeout_seconds = 180 retry_on_failure = true retry_limit = 2 [model] # 统一接入层:OpenAI 兼容格式 provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "YOUR_TAOTOKEN_KEY" # 规划用强推理模型,执行用轻量模型 planner_model = "claude-sonnet-4" executor_model = "deepseek-chat" temperature = 0.3 max_tokens = 4096 [memory] short_term_limit = 20 long_term_enabled = true storage_path = "~/.openclaw/memory" [skills] dir = "~/.openclaw/skills" auto_load = true几个关键字段说明。base_url填https://taotoken.net/api,不要带末尾斜杠,OpenClaw 的 OpenAI 兼容客户端会自动拼接/v1/chat/completions。planner_model和executor_model分开配置,是因为任务规划需要强推理能力,而具体执行步骤用轻量模型就够,这样能在保证效果的同时控制成本。max_iterations设 12 是实测下来比较稳的值,太小会导致复杂任务中途断掉,太大则可能陷入无效循环。
3.3 settings.json 权限与技能骨架
settings.json 控制的是安全边界,这部分比 config.toml 更需要谨慎。下面这份骨架默认关闭了高危技能,只开了信息调研、代码生成、文件读取这几类低风险能力。
{ "skills": { "web_search": { "enabled": true, "permission": "read" }, "code_generate": { "enabled": true, "permission": "read" }, "file_read": { "enabled": true, "permission": "read", "allowed_paths": ["~/Documents", "~/Projects"] }, "file_write": { "enabled": false }, "shell_exec": { "enabled": false }, "browser_automation": { "enabled": true, "permission": "read" }, "email": { "enabled": false }, "calendar": { "enabled": false } }, "security": { "require_confirmation": ["file_write", "shell_exec"], "sandbox_mode": true, "log_level": "info", "log_retention_days": 7 }, "memory": { "persist_user_preferences": true, "persist_task_history": true, "encrypt_at_rest": false } }allowed_paths限定文件读取范围,避免 Agent 扫到敏感目录。require_confirmation里的技能即使启用了,执行前也会先问用户确认。sandbox_mode开启后,技能执行会被限制在容器或受限用户权限内。encrypt_at_rest如果本地设备有加密需求可以打开,但会增加一点读写开销。
3.4 环境变量与 Key 管理
不要把 Key 硬编码在 config.toml 里提交到仓库。推荐用环境变量注入:
export TAOTOKEN_API_KEY="sk-your-key-here"然后 config.toml 里改成:
[model] api_key = "${TAOTOKEN_API_KEY}"OpenClaw 启动时会自动解析${}占位符。这样配置文件可以安全地纳入版本管理,Key 只存在于运行环境里。
4. 验证请求:一次跑通 Agent 调用链
4.1 启动与健康检查
配置写好后,先启动 OpenClaw:
openclaw start --config ~/.openclaw/config.toml看到Gateway listening on 127.0.0.1:8787和Agent loop initialized两行日志,说明 Gateway 和 Loop 都起来了。如果卡在Connecting to model provider...,多半是 base_url 或 Key 有问题,先跳到第五章排查。
4.2 用 curl 直接验证模型通道
在触发完整 Agent 链路之前,先用一个最小请求确认 TaoToken 通道是通的:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4", "messages": [{"role": "user", "content": "回复 OK 两个字母即可"}], "max_tokens": 16 }'正常返回里会有choices[0].message.content字段,内容是OK。这一步通了,说明 Key 有效、base_url 正确、模型名可识别。如果返回 401,检查 Key 有没有复制完整;返回 404,检查 base_url 是不是多写了/v1。
4.3 触发一次完整 Agent 任务
模型通道确认后,通过 Gateway 发一条测试消息。如果你配了 Telegram 渠道,直接在聊天窗口发:
帮我搜索 OpenClaw 多 Agent 架构的最新资料,总结三条核心要点这条消息会走完整链路:Gateway 接收 → 身份校验 → Loop 加载 Memory → 调 planner_model 做任务规划 → 识别出需要 web_search 技能 → 执行搜索 → 结果回传 Loop → 调 executor_model 总结 → 结果推回 Telegram。
观察 OpenClaw 的日志输出,你应该能看到类似这样的流转记录:
[gateway] message received from user=your_id channel=telegram [loop] iteration=1 planner=claude-sonnet-4 intent=web_search [skills] executing web_search query="OpenClaw multi-agent architecture" [loop] iteration=2 executor=deepseek-chat summarizing 5 results [gateway] response sent to channel=telegram如果日志里出现了iteration递增、intent被正确识别、skills被执行,说明整条调用链是通的。这时候你再去 TaoToken 控制台的用量页面,应该能看到对应时间点的调用记录,planner 和 executor 的模型分别计费。
4.4 验证多 Agent 协作场景
想验证 Clawdbot/Moltbot 历史运行时和当前 OpenClaw 运行时的差异,可以在 config.toml 里临时把runtime改成moltbot,重启后发同样的任务。你会看到日志里 Loop 的迭代策略略有不同——moltbot 模式下任务拆解更保守,单次迭代只执行一个技能;openclaw 模式下支持并行技能调用。这个对比能帮你理解命名演变背后的架构升级。
5. 本篇常见错排查
5.1 模型通道报 401 或 403
最常见的原因是 Key 没生效。先确认环境变量有没有 export 成功:
echo $TAOTOKEN_API_KEY如果输出为空,说明当前 shell 会话没加载。检查是不是写在了.bashrc但没 source,或者用了sudo启动导致环境变量丢失。另一个可能是 config.toml 里${TAOTOKEN_API_KEY}的占位符没被解析,试试直接填 Key 值排除变量问题。
5.2 技能执行被拒绝
日志里出现skill denied by permission policy,说明 settings.json 里对应技能的enabled是 false,或者allowed_paths不包含目标路径。比如 file_read 技能想读~/Downloads但 allowed_paths 只写了~/Documents,就会被拦。按需放宽路径,但别直接改成根目录。
5.3 Loop 迭代次数超限
如果日志里iteration到了 max_iterations 还没出结果,通常是任务描述太模糊,模型反复规划但找不到收敛点。把任务拆细一点,比如把「帮我整理项目」改成「读取 ~/Projects/demo 下的 README.md,提取三个关键模块名称」。另外检查 planner_model 是不是选得太弱,弱模型的任务拆解能力有限,容易绕圈。
5.4 Gateway 启动但收不到消息
渠道配置问题居多。Telegram 需要 bot token,Discord 需要 bot 权限和 intent 配置。先确认allowed_users里填的用户 ID 和实际发消息的账号一致,ID 填错会被静默丢弃。Discord 还要确认 bot 有没有开 Message Content Intent,没开的话消息内容读不到。
5.5 记忆模块写入失败
memory/目录权限不对会导致持久化失败。确认运行 OpenClaw 的用户对该目录有写权限:
ls -ld ~/.openclaw/memory chmod 700 ~/.openclaw/memory如果开了encrypt_at_rest但没配密钥,也会写入失败,先关掉加密排除问题。
6. 接入通道与后续动作
配置骨架跑通之后,下一步是把 Key 管理和模型切换流程固定下来。TaoToken 的控制台可以生成多个 Key,建议按用途分开:一个给 planner 用强推理模型,一个给 executor 用轻量模型,这样在用量页面能分别看到两类的消耗,方便调优成本。
如果你在接入过程中遇到鉴权或通道配置的问题,可以直接对照接入文档排查字段格式。想先确认某个模型在当前通道下能不能正常返回,用模型对话页面发一条测试消息最快,不用改本地配置就能验证。长期跑编码类或 Agent 类任务的话,Coding Plan 的额度模型比按次计费更适合高频调用场景,具体可以在控制台里对比一下用量曲线再决定。
我自己的习惯是,每次改完 config.toml 先用 curl 打一发最小请求,确认通道没问题再启动完整 Agent。这样能把「通道问题」和「Agent 逻辑问题」分开定位,省掉很多来回重启的时间。