排障视角OpenClaw 评测里compaction failed之后我把模型通道切到了 TaoToken这篇记录的是我在 OpenClaw agent CLI 评测 Gemma 4 12B 时踩到的一个具体坑跑评测 prompt 时 CLI 直接抛出CLI transcript compaction failed: Already compacted导致 token/速度探针没法继续走 OpenClaw 通道只能临时改走本地 Ollama API。报错本身不影响 QVeris 的真实工具调用但会中断整个评测流程。处理思路分两条线一条是把 OpenClaw 的模型调用切到 TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 统一通道让模型评价探针稳定跑起来另一条是本地会话压缩失败的问题单独修不再依赖 CLI 的 transcript。下面把配置、验证和排查过程完整写一遍。一、原问题与场景报错到底卡在哪一步先说清楚这次评测的链路不然容易把两个问题混在一起。我的评测流程大致是OpenClaw 默认模型指向ollama/gemma4:12b每个案例先用qveris-official脚本执行discover拿到候选工具和参数描述Codex 根据 discover 结果构造参数执行 QVeriscall把 QVeris 核心结果摘要交给本地gemma4:12b要求输出结构化 JSON 评分Codex 汇总原始记录、评分和速度指标。问题出在第 4 步之前。OpenClaw agent CLI 在处理评测 prompt 时触发了CLI transcript compaction failed: Already compacted这个报错的含义是CLI 试图对会话 transcript 做一次压缩compaction但当前 transcript 已经处于 compacted 状态于是压缩动作失败并中断了后续流程。它不是模型推理失败也不是 QVeris 调用失败——QVeris 的 discover/call 链路在这次评测里始终是真实执行的。真正被打断的是「把工具结果交给模型评价」这个探针环节。所以现象是QVeris 数据调用正常10 个案例的 call 都能跑通但 token/速度探针没法继续走 OpenClaw CLI因为 CLI 在 compaction 阶段就挂了为了不让评测停摆我把探针临时改走本地 Ollama API直接对同一个gemma4:12b做单次推理。这里必须强调一个区别Ollama API 路径只是在同一台机器上直接调用同一个模型对固定输入做一次推理而 OpenClaw 路径会带上 agent 系统提示、workspace bootstrap、工具说明、会话历史、compaction 逻辑和工具调用循环。所以 Ollama API 的 token 和速度数据只能说明gemma4:12b这个模型本身的吞吐和结构化评价能力不能代表 OpenClaw 端到端耗时也不能覆盖 OpenClaw 的上下文压缩、工具协议和失败恢复成本。换句话说compaction 报错暴露的是 OpenClaw CLI 的会话管理问题而模型通道本身是可以独立配置的。这就引出了下一步把 OpenClaw 的模型调用切到 TaoToken让模型评价探针走统一通道不再受 CLI transcript 状态影响。二、TaoToken 前置先拿 Key再改 Base URL处理这类问题的顺序很重要先把模型通道独立出来再去修 CLI 的会话压缩。否则你会在两个问题之间反复横跳。第一步是在 TaoToken 官网创建 Key官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end进入后到 API Keys 页面生成一个 Key记作YOUR_API_KEY。第二步是确认 API 地址。OpenClaw 模型配置里的 Base URL 要填https://taotoken.net/api注意这里不要带/v1。很多 OpenAI 兼容客户端习惯性补/v1但 TaoToken 的接入地址就是https://taotoken.net/api多写一段路径会导致请求打到不存在的路由表现为 404 或连接异常。这一点在排障时经常被忽略后面第五节会专门讲。第三步是明确这次要改的目标让 OpenClaw 的模型调用走 TaoToken 统一通道同时保留 Ollama 作为本地兜底。也就是说TaoToken 负责在线统一通道Ollama 负责本地离线/降级场景两者不冲突。如果你还想顺手把 CLI 侧的调用也统一起来TaoToken 提供了 CLI 工具npm i -g taotoken/taotoken taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m MODEL_ID其中-u是 API 地址-m是模型 ID。这条命令适合在终端里快速验证通道是否通和 OpenClaw 的配置文件是两条独立的入口。三、可复制配置OpenClaw 模型通道怎么改下面给一份可以直接抄的配置思路。因为 OpenClaw 的配置字段会随版本变化这里按「模型 provider base_url api_key model」四个核心项来写你按自己版本的字段名对应即可。1. 模型 provider 配置OpenClaw 侧把默认模型从ollama/gemma4:12b切到 TaoToken 通道核心是改 Base URL 和 Key{ model: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key: YOUR_API_KEY, model_id: MODEL_ID } }要点base_url填https://taotoken.net/api不带/v1api_key填你在官网创建的YOUR_API_KEYmodel_id填你要用的模型 ID按 TaoToken 文档里的可用模型填。2. 保留 Ollama 作为本地兜底不要把 Ollama 配置删掉而是作为 fallback 保留{ model: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key: YOUR_API_KEY, model_id: MODEL_ID, fallback: { provider: ollama, base_url: http://localhost:11434, model_id: gemma4:12b } } }这样在线通道异常时可以降级到本地评测流程不会因为单一通道挂掉而完全停摆。3. 环境变量方式可选如果你的 OpenClaw 版本支持环境变量覆盖也可以这样export OPENAI_BASE_URLhttps://taotoken.net/api export OPENAI_API_KEYYOUR_API_KEY export OPENCLAW_MODEL_IDMODEL_ID环境变量的好处是改起来快坏处是容易和配置文件冲突。排障时建议先确认到底哪一层在生效避免「改了没反应」。4. 关于 compaction 的单独处理模型通道切到 TaoToken 之后CLI transcript compaction failed: Already compacted这个问题不会自动消失因为它属于 CLI 会话管理不属于模型通道。处理建议长评测走 Ollama API 或 TaoToken 直连绕开 CLI transcript缩短 OpenClaw 的 workspace/bootstrap 内容减少 transcript 压力每个案例独立运行避免 transcript 累积到需要 compaction 的状态评测结果落文件再由 Codex 汇总不依赖 CLI 会话状态。四、验证请求与成功结果配置改完后先做最小验证别直接上完整评测。1. 用 CLI 快速验证通道taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m MODEL_ID如果通道正常会返回模型响应。这一步只验证「Key Base URL 模型 ID」三件套是否对不涉及 OpenClaw。2. 用 curl 验证 API 地址curl https://taotoken.net/api/chat/completions \ -H Authorization: Bearer YOUR_API_KEY \ -H Content-Type: application/json \ -d { model: MODEL_ID, messages: [{role: user, content: ping}] }注意 URL 是https://taotoken.net/api/chat/completions不是/api/v1/chat/completions。如果这里返回 404基本就是路径多写了/v1。3. 在 OpenClaw 里验证模型评价探针把之前失败的评测 prompt 重新跑一遍观察模型是否正常返回结构化 JSON 评分token 计数和速度指标是否正常采集是否还会触发compaction failed。如果模型评价探针能稳定返回 JSON说明 TaoToken 通道已经生效。此时 QVeris 的真实调用链路不受影响评测可以继续。4. 成功结果的判断标准我这边验证通过的标准是CLI 和 curl 都能拿到模型响应OpenClaw 模型评价探针不再因 compaction 中断token/速度指标能正常落盘Ollama 兜底配置存在但未被触发。达到这四条就说明「模型通道切 TaoToken 本地 Ollama 兜底」的目标达成了。五、本篇常见错排查这一节按报错现象来排都是这次实际遇到或容易踩的。1.compaction failed: Already compacted反复出现这是本次的核心报错。它不是模型通道问题而是 CLI transcript 状态问题。排查方向确认是不是长会话累积导致的缩短 workspace/bootstrap每个案例独立运行避免 transcript 进入已压缩状态评测探针改走 API 直连绕开 CLI 会话管理不要指望改 Base URL 能修这个错两者是不同层的问题。2. Base URL 带了/v1导致 404现象请求返回 404 或路由不存在。原因TaoToken 接入地址是https://taotoken.net/api多写/v1会打到错误路径。处理把 Base URL 改成https://taotoken.net/apicurl 验证时用/api/chat/completions。3. Key 无效或未生效现象401/403或提示鉴权失败。排查确认 Key 是从官网 API Keys 页面创建的确认配置里没有多余空格或换行确认环境变量和配置文件没有互相覆盖用 curl 单独验证 Key排除 OpenClaw 配置层干扰。4. 改了配置但 OpenClaw 没走新通道现象模型响应还是本地 Ollama 的或者速度特征没变。排查确认配置文件路径正确没有被其他 profile 覆盖确认环境变量没有把 Base URL 又指回本地重启 OpenClaw 进程避免旧配置缓存看日志里实际请求的 endpoint 是哪个。5. Ollama 兜底被误触发现象明明配了 TaoToken却走了本地模型。排查确认 fallback 触发条件是不是在线通道超时太短确认 TaoToken 通道本身是通的别让兜底掩盖了主通道故障检查是否有并发限制导致部分请求降级。6. 模型 ID 不匹配现象请求返回模型不存在或参数错误。处理确认model_id是 TaoToken 文档里支持的模型 ID不要直接填 Ollama 的gemma4:12b标签。7. token/速度指标口径混乱现象Ollama API 路径和 OpenClaw 路径的数据混在一起没法对比。处理明确区分两条路径。Ollama API 的 token/速度只代表模型本身吞吐OpenClaw 端到端耗时包含 agent 系统提示、工具循环、compaction 等成本。评测报告里要分开标注别混用。六、语义一致 CTA这次排障的核心是两件事把 OpenClaw 模型通道切到 TaoToken 统一通道以及把 CLI compaction 问题单独隔离处理。如果你也在做类似的接入或排障可以按下面的路径走需要创建 Key、配置 Base URL、排查鉴权问题先到API Keys页面拿 Key再对照接入文档确认https://taotoken.net/api的用法不要带/v1想先验证模型通道是否通用模型对话做一次最小请求确认 Key、地址、模型 ID 三件套正确长期跑编码或 Agent 评测考虑Coding Plan把在线统一通道和本地 Ollama 兜底组合起来避免单一通道中断评测流程。相关入口API Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi_keys接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc模型对话https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsoleCoding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding_plan回到这次评测本身compaction failed不影响 QVeris 的真实调用但会中断评测流程。把模型通道切到 TaoToken、保留 Ollama 兜底、把 compaction 问题单独修这三步做完评测就能继续跑下去。模型通道和会话管理是两层问题分开处理比混在一起调要省事得多。
