
1. 为什么我想改掉 Claude Code 的等待提示Claude Code 在终端里跑任务时光标旁边会不停轮换一些词Stewing、Brewing、Doodling、Cogitating。这些词在官方文档里叫 Spinner Verbs直译就是「旋转器动词」也有人叫 Loading Verbs 或 Status Verbs。它本质上是一组字符串数组CLI 在没有真实进度可显示的时候每隔一两百毫秒从数组里挑一个配上旋转动画一起刷出来。你看到的不是随机乱码而是有明确显示机制的状态提示。我平时在多个项目之间切换终端窗口开得比较多时间一长就发现一个问题默认的英文动词虽然有趣但团队里几个刚接触 CLI 的同学经常问我「它是不是卡住了」「这行字到底代表什么」。加上我们内部统一走 TaoToken 的 Key 和 API 通道终端里如果能显示中文提示排查时一眼就能分清是模型在思考还是网络在等效率会高不少。所以这篇就聚焦一件事Claude Code CLI 的 Spinner Verbs 怎么自定义改完怎么验证以及请求是不是按预期经 TaoToken 统一通道发出。适合谁看已经在用 Claude Code、想让终端等待提示更贴合自己习惯的开发者或者团队里想统一 CLI 交互风格、又不想动核心逻辑的人。你不需要改 Claude Code 源码改一个 settings 文件就够了。下面我会先讲清楚它的显示机制再给可复制的配置片段最后用一次真实请求验证文案切换和通道走向。2. Spinner Verbs 的显示机制与 TaoToken 前置准备2.1 它到底是怎么轮换的Claude Code 启动一个需要等待的操作时会先判断有没有可量化的进度信息。如果有比如下载文件显示百分比那就走进度条如果没有比如模型正在推理、工具正在执行它就进入 Spinner 模式。Spinner 模式内部维护一个动词池按固定间隔取下一个词同时刷新旋转动画。任务结束动画和动词一起消失。这里有个细节值得注意动词池的轮换是纯展示层的不影响请求本身。也就是说你把 Brewing 改成「酿造中」模型该跑多久还是多久只是你看到的字变了。理解这一点很重要后面排查问题时就不会把「文案没变」误判成「配置没生效」——它俩是两套东西。2.2 为什么值得自定义默认动词是英文的而且偏文艺。对个人用户来说无所谓但在团队协作场景里统一的中文提示能降低沟通成本。比如「深度思考中」和「正在调用工具」用不同动词区分新人一眼就知道当前阶段。另外把动词改成和你们内部流程相关的词也算一种轻量的「人格化」终端不再冷冰冰。2.3 接入 TaoToken 的前置动作在改 Spinner Verbs 之前先把请求通道理顺否则你验证的时候分不清是文案问题还是通道问题。TaoToken 提供统一的 Key 和 API 入口Claude Code 通过环境变量指向它即可。你需要准备三样东西Base URL、API Key、Model ID。Base URL 用https://taotoken.net/apiKey 在控制台生成Model ID 按你实际使用的模型填。控制台入口在这里https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentconsole生成 Key 的页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys如果你还没配过 Claude Code 的接入可以先看文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc把这三件套准备好再往下改 Spinner Verbs验证时就能一次看清「文案切换 通道正确」两件事。3. 可复制的 settings 配置片段3.1 配置文件放哪Claude Code 读取用户级配置的路径通常是~/.claude/settings.json项目级配置放在项目根目录的.claude/settings.json。我建议先改用户级影响面可控验证通过再考虑项目级覆盖。如果你用的是 Windows路径是C:\Users\你的用户名\.claude\settings.json。改之前先备份一份这是踩过的坑JSON 少个逗号Claude Code 启动时可能直接忽略整段配置而且不一定报错你会以为改了没生效。3.2 一份可直接粘贴的 JSON下面这段是用户级 settings 的完整示例包含 Spinner Verbs 和 TaoToken 通道两部分。注意env里的 Base URL 和 Key 要换成你自己的。{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoToken密钥, ANTHROPIC_MODEL: claude-sonnet-4-20250514 }, spinnerVerbs: { mode: replace, verbs: [ 深度思考中, 正在拆解问题, 调用工具中, 整理上下文, 推演方案, 校对代码, 酝酿回答, 收尾检查 ] } }几个参数说明。mode有两个常用值replace表示完全替换默认动词池append表示在默认池后面追加。我一般用replace因为中英混排看起来乱。verbs是字符串数组建议控制在 6 到 12 个太少轮换快显得闪太多记不住。3.3 如果你用 TOML 或项目级覆盖有些团队习惯用 TOML 管理配置Claude Code 也支持在项目里放.claude/settings.toml。等价写法如下[env] ANTHROPIC_BASE_URL https://taotoken.net/api ANTHROPIC_API_KEY sk-你的TaoToken密钥 ANTHROPIC_MODEL claude-sonnet-4-20250514 [spinnerVerbs] mode replace verbs [深度思考中, 正在拆解问题, 调用工具中, 整理上下文, 推演方案, 校对代码]项目级配置会覆盖用户级同名项。如果你在用户级设了中文动词某个项目想用英文就在项目级写一份replace的英文数组即可互不干扰。3.4 关于 Model ID 的提醒ANTHROPIC_MODEL必须填你账号实际可用的模型 ID填错会直接 404 或 400。不确定的话先去模型对话页面确认一下可用模型https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentchat4. 验证请求与观察 Spinner 文案切换4.1 启动前先做一次语法检查改完 JSON先用命令行校验一下格式避免低级错误python3 -m json.tool ~/.claude/settings.json如果输出格式化后的 JSON说明语法没问题如果报错按提示的行号去修。TOML 可以用python3 -c import tomllib; tomllib.load(open(.claude/settings.toml,rb))检查。4.2 启动 Claude Code 并触发一次等待在终端里进入任意项目目录运行claude然后输入一个会触发较长推理的请求比如让它读几个文件再总结。观察光标旁边的动词是否变成你配置的中文。正常情况下几秒内就能看到「深度思考中」这类词开始轮换。4.3 确认请求经 TaoToken 通道发出光看文案还不够要确认请求真的走了统一通道。有两种方式。第一种在 Claude Code 里执行一个简单请求同时另开一个终端看网络出口或者直接看 TaoToken 控制台的调用记录。控制台会显示每次请求的时间、模型和消耗。第二种临时把ANTHROPIC_BASE_URL改成一个错误地址重启 Claude Code如果请求立刻失败并报连接错误说明配置确实被读取了改回正确地址后恢复正常就证明通道生效。这个方法有点笨但很直观。4.4 成功结果长什么样配置正确时你会看到终端里中文动词稳定轮换没有英文残留请求正常返回结果TaoToken 控制台出现对应调用记录。三者同时满足才算完整验证通过。如果只满足前两条第三条没有记录那大概率是 Key 或 Base URL 写错了回到第 5 节排查。5. 常见报错与排查对照5.1 401 报错Key 无效或没读到现象是启动后请求立刻返回 401。先确认ANTHROPIC_API_KEY是不是完整的 Key有没有多余空格。再确认你改的是 Claude Code 实际读取的那个配置文件——用户级和项目级可能同时存在项目级会覆盖用户级。用claude --help或查看启动日志确认加载路径。5.2 local proxy failed本地代理配置冲突如果你之前配过本地代理相关的环境变量可能和新的 Base URL 冲突。检查 shell 里有没有残留的HTTP_PROXY、HTTPS_PROXY之类变量临时清掉再试unset HTTP_PROXY HTTPS_PROXY然后重启 Claude Code。这类报错通常和通道配置有关和 Spinner Verbs 无关别改错方向。5.3 reading choices 报错响应结构不符这个报错一般出现在 Base URL 指向了不兼容的端点时。确认ANTHROPIC_BASE_URL填的是https://taotoken.net/api不要多加路径后缀也不要漏掉/api。如果填成了网页地址返回的是 HTML解析自然失败。5.4 OAuth 相关报错认证方式混用如果你同时用了 OAuth 登录和 API Key可能互相干扰。Claude Code 优先读环境变量里的 Key如果 Key 为空才走 OAuth。建议二选一用 TaoToken 通道时就明确配好 Key避免混用。5.5 文案没变配置没生效如果请求正常但动词还是英文按顺序查JSON 语法是否合法spinnerVerbs拼写是否正确注意大小写mode是否写成了不支持的值是否被项目级配置覆盖。改完记得完全退出 Claude Code 再重启热加载不一定生效。5.6 三件套自查清单出现任何通道类报错先对照这三项Base URL 是否为https://taotoken.net/apiKey 是否来自控制台且未过期Model ID 是否为账号可用模型。三项都对再去看网络和代理。需要重新生成 Key 的话https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentapi-keys6. 把等待提示变成团队习惯改 Spinner Verbs 这件事本身很小但它反映了一个思路CLI 的交互层是可以按团队习惯定制的不用迁就默认值。我现在的做法是把中文动词按任务阶段分组比如「读取文件」「调用工具」「生成回答」各对应几个词这样终端一刷我大概就知道跑到哪一步了。配合 TaoToken 的统一通道换项目、换机器时只要同步一份 settings体验就一致。如果你还想把这套配置带到更多编码场景比如长期跑 Agent 任务可以看看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentcoding-plan想先手动验证模型行为用模型对话页面最直接https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentchat接入细节和参数说明都在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentdoc最后留一个实用技巧把spinnerVerbs的数组单独抽成一个片段团队里谁想改就改自己那份Base URL 和 Key 保持统一这样既有个性又不影响通道一致性。改完跑一次真实请求看到中文动词轮换、控制台出现记录这事就算收尾了。