1. Clawdbot 接豆包1.8,为什么配置完 Chat 页面一直转圈
Clawdbot 是一个本地优先的 AI 工具链网关,你可以把它理解成「一个跑在自己电脑上的模型路由中心」:它把 Claude Code、Cursor、Trae 这类客户端发来的请求,按你写的settings.json(部分版本叫clawdbot.json)转发到不同模型供应商。豆包1.8(doubao-seed-1-8)是字节火山方舟上的一个长上下文模型,contextWindow能到 262144,适合塞长文档和整仓库代码。适合谁?适合已经在本地装了 Clawdbot、想让 Chat 页面和 Agent 都走豆包1.8、但配完发现「发消息没反应」的人。
我踩过的坑基本都集中在同一个地方:models模块写了,agents模块没关联上,或者reasoning开着导致流式返回卡死。表现就是 Chat 页面一直转圈、日志里没有明显报错、网关进程还活着。这篇不重复安装步骤,只解决「配置落地 + 连通性验证」这一段闭环:给你一份可复制的settings.json骨架,再教你用一次最小请求确认模型真的通了、返回格式对不对。
核心检索词先摆出来:Clawdbot 配置豆包1.8、settings.json 骨架、模型连通性验证。下面所有配置都以「能复制、能跑通、能排错」为标准,路径和 Key 你替换成自己的即可。
2. 前置:TaoToken 统一 Key 与 API 通道一次性接入
在写配置之前,先把「鉴权从哪来」这件事定下来。Clawdbot 的 provider 配置里有一个apiKey字段和一个baseUrl字段,前者是凭证,后者是请求打到哪个通道。如果你每个模型都单独去申请 Key、单独记 baseUrl,配置会越堆越乱,换模型时还要改一堆地方。
TaoToken 在这里的角色是统一 Key / API 通道:你拿一个 Key,配一个 baseUrl,Clawdbot 里所有走 OpenAI 兼容协议的模型都能复用这套鉴权。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end ,API 根地址是 https://taotoken.net/api (这个地址不加 UTM,直接填进配置)。注意baseUrl填的是 API 根,不是官网首页,两者别混。
具体到操作,你需要先拿到 Key,再去控制台确认通道状态。拿 Key 的入口是 API Keys 页面,接入细节看接入文档,这两个链接后面 CTA 会再给一次。这里先记住三件事:
第一,apiKey字段填的是你申请到的 Key 字符串,不要带Bearer前缀,前缀由authHeader控制。
第二,baseUrl用 TaoToken 的 API 根地址,Clawdbot 会在后面自动拼/chat/completions这类路径,你手动加路径反而会 404。
第三,api字段写openai-completions,表示走 OpenAI 兼容的补全协议,豆包1.8 通过这个协议暴露出来。
注意:Key 属于敏感信息,别提交到 Git 仓库,也别贴到公开的 issue 里。本地配置文件建议加进
.gitignore。
3. 可复制的 settings.json 骨架(models + agents)
下面这份骨架只展示models和agents两个模块,其余模块(网关、渠道等)保持你现有配置不动。复制时注意 JSON 逗号,别把上一段的结尾逗号带进来。
{ "models": { "mode": "merge", "providers": { "doubao": { "baseUrl": "https://taotoken.net/api", "apiKey": "你的TaoToken Key", "auth": "token", "api": "openai-completions", "authHeader": true, "models": [ { "id": "doubao-seed-1-8-251228", "name": "豆包1.8", "reasoning": false, "input": ["text"], "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 262144, "maxTokens": 65536, "compat": { "supportsStore": true, "supportsDeveloperRole": true, "supportsReasoningEffort": true } } ] } } }, "agents": { "defaults": { "model": { "primary": "doubao/doubao-seed-1-8-251228" }, "workspace": "C:\\Users\\pc\\clawd", "compaction": { "mode": "safeguard" }, "maxConcurrent": 4, "subagents": { "maxConcurrent": 8 } } } }几个字段必须说清楚,不然复制完还是不通:
models.mode固定写merge。它的意思是「把这份配置合并进现有模型列表」,漏写或者写成别的值,模型配置不生效,Chat 页面自然找不到模型。
reasoning必须写false。豆包1.8 在这个通道下如果开着 reasoning,客户端会等一个不存在的推理流,表现就是一直转圈。这是最常见的「没响应」原因。
agents.defaults.model.primary的值是doubao/doubao-seed-1-8-251228,格式是「provider 名 / 模型 id」,中间用斜杠。provider 名要和providers下的键doubao完全一致,大小写都不能错。
workspace改成你自己的目录,Windows 路径里的反斜杠要写成双反斜杠\\,否则 JSON 解析会报错。
contextWindow和maxTokens按模型能力填,262144 和 65536 是豆包1.8 的常见值,填小了会截断长输入,填大了可能被服务端拒绝。
改完配置后,用 Cursor 或 Trae 打开这个文件检查一遍括号配对,比肉眼扫要快。
4. 重启网关并做一次最小连通性验证
配置改完不重启,等于没改。Clawdbot 的网关进程在启动时读一次配置,运行中不会热加载。所以先停再起:
clawdbot gateway stop clawdbot gateway startstart用前台方式跑,日志直接打在终端里,方便你看有没有报错。如果日志里出现provider doubao loaded或类似的加载信息,说明 models 模块被读到了。如果出现 JSON 解析错误,回去检查逗号和双反斜杠。
网关起来后,别急着开 Chat 页面,先用一次最小请求验证连通性。最小请求的意思是:只发一句话,看返回结构对不对。用 curl 直接打 TaoToken 的 API 根:
curl -s https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer 你的TaoToken Key" \ -H "Content-Type: application/json" \ -d '{ "model": "doubao-seed-1-8-251228", "messages": [ {"role": "user", "content": "只回复两个字:通了"} ], "stream": false }'这里stream设成false,是为了先排除流式解析的问题。如果这条命令返回一个带choices[0].message.content的 JSON,且内容是「通了」,说明 Key、通道、模型标识三者都对。返回格式长这样:
{ "id": "chatcmpl-xxxx", "object": "chat.completion", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "通了" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 12, "completion_tokens": 2, "total_tokens": 14 } }看到finish_reason: "stop"和usage字段,就说明返回格式是标准的 OpenAI 兼容结构,Clawdbot 能正常解析。这时候再回 Chat 页面发消息,应该就有响应了。如果 curl 通了但 Chat 页面还是转圈,问题在 Clawdbot 侧,重点查agents模块的primary有没有写对。
5. 本篇常见错排查:从 401 到一直转圈
排错按「先通道、后配置、再客户端」的顺序走,能少绕很多路。
401 / 鉴权失败:apiKey填错,或者authHeader没开。authHeader: true表示由 Clawdbot 自动加Authorization: Bearer头,你手动在 Key 里加前缀反而会变成双前缀。检查 Key 有没有多余空格。
404 / 路径不存在:baseUrl填成了官网首页,或者手动加了/chat/completions。正确写法是只填https://taotoken.net/api,路径交给客户端拼。
模型找不到 / provider 未加载:models.mode不是merge,或者providers下的键和agents里的前缀不一致。doubao/doubao-seed-1-8-251228里的doubao必须和 provider 键逐字符相同。
Chat 页面一直转圈、无报错:九成是reasoning开着。改成false再重启网关。另一个可能是stream相关兼容问题,先在 curl 里用stream: false确认非流式通,再回客户端。
JSON 解析报错、网关起不来:Windows 路径单反斜杠、对象末尾多逗号、注释没删干净。JSON 不支持注释,//和/* */都要去掉。
长输入被截断:contextWindow或maxTokens填小了。按模型实际能力填,豆包1.8 用 262144 / 65536。
改了配置没生效:忘了gateway stop再start。热加载不存在的,必须重启。
提示:每次只改一个字段、重启一次、验证一次。一次改五个地方,出错了你根本不知道是哪个引起的。
6. 把 Key、通道、模型标识这三件事固定下来
走到这里,Clawdbot 接豆包1.8 的闭环就完成了:settings.json 骨架填好、网关重启、curl 最小请求返回标准结构、Chat 页面能出字。回头看,真正容易出错的不是配置本身有多复杂,而是三个标识没对齐——Key 对应哪个通道、baseUrl 指向哪个根、模型 id 和 provider 前缀是否一致。
如果你还在配 Key 和通道这一步,直接去 API Keys 页面拿凭证,接入细节对照接入文档,两处都带好了参数,照着填就行。想先在网页里确认豆包1.8 的返回风格再落到本地配置,可以先用模型对话试一句,看输出格式是否符合预期。长期用 Clawdbot 跑编码和 Agent 任务的话,Coding Plan 更适合把额度和通道固定下来,省得每次换模型都重配一遍。
最后留一个实用习惯:把这份settings.json备份一份到 workspace 目录外,改坏了能秒回滚。配置这东西,能回滚比能调通更让人安心。