AtomCode 终端 Spinner 词表解析:那些“占卜““酿造“到底是模型在干什么?
一、起因:从误以为是模型排队说起
使用 AtomCode 处理跨文件重构、全库检索这类长任务时,终端底行常跳出 Divining… 5m2s、Brewing… 3m10s 这类陌生提示。不少开发者第一反应会认为是模型排队阻塞,直到注意到终端右上角的 verbose 模式提示。
实际测试会发现,verbose 模式需要提前打开,中途切换无法回溯已执行的思考过程,而这些看似奇怪的单词,本质是 AtomCode 对模型推理阶段的友好状态提示,和排队阻塞完全无关——如果遇到真正的队列等待,底行会显示 Queued、Waiting for capacity 这类明确标识。
二、代码路径:这些词从哪来?
AtomCode 的 spinner 逻辑集中在 crates/atomcode-tuix 终端渲染模块中,核心链路如下:
1. 词表定义
所有动名词都定义在 crates/atomcode-tuix/src/state.rs 的 THINKING_LABELS 常量中,是 Claude Code 生态统一的“劳作风“词池,共 20 个词汇,按轮次递进切换,而非随机选取。
2. 词切换逻辑
state.rs 中实现 current_thinking() 方法,每轮 Agent 执行完成后推进一个词汇,确保连续任务的提示词不重复。同时会根据当前执行阶段动态覆盖 spinner 内容:比如工具执行时显示 Running read_file,等待用户确认时显示 Waiting approval,推理阶段则回落到 THINKING_LABELS 中的词汇。
3. 底行拼接逻辑
最终展示的 Divining… 5m2s 格式在 crates/atomcode-tuix/src/event_loop/mod.rs 的 format_spinner_label 函数中拼接:前半部分是当前 spinner 词汇,后半部分的时长由 crates/atomcode-tuix/src/render/mod.rs 的 fmt_dur 函数格式化,输出 XhYm/YmZs/Zs 格式的剩余预估时间。
4. Verbose 模式控制
Ctrl+O 快捷键的逻辑在事件循环中监听,切换时会控制 AgentEvent::Reasoning 字段的渲染开关:开启时展示工具调用详情、模型推理过程,关闭时仅展示精简的 spinner 提示,降低信息干扰。
三、单词全解析
THINKING_LABELS 的词表设计遵循“模型劳作“隐喻,把抽象的推理过程具象化为手工、烹饪、农业类动作,每个词对应明确的模型执行阶段。
初始推理阶段(刚拿到任务)
| 单词 | 释义 | 模型行为 | 记忆锚点 |
|---|---|---|---|
| Pondering | 沉思 | 模型进入深度思考模式,分析任务上下文 | 沉思者雕像 |
| Reflecting | 反思 | 模型在回顾之前产生的输出,检查是否偏离目标 | 照镜子 |
| Analyzing | 分析 | 模型正在解析输入,拆解子任务 | 显微镜 |
| Synthesizing | 综合 | 把分析结果整合成连贯的方案 | 拼图 |
| Reasoning | 推理 | 模型执行多步逻辑推理,生成中间结论 | 逻辑链 |
中间执行阶段(正在处理)
| 单词 | 释义 | 模型行为 | 记忆锚点 |
|---|---|---|---|
| Thinking | 思考 | 通用推理状态,模型正在内部生成 token | 大脑发光 |
| Processing | 处理 | 处理中间结果,整理上下文 | 齿轮转动 |
| Computing | 计算 | 执行数学或逻辑计算 | 算盘 |
| Evaluating | 评估 | 评估多个候选方案,选择最优路径 | 天平 |
| Formulating | 规划 | 生成代码或文本的具体结构规划 | 蓝图 |
收尾阶段(接近完成)
| 单词 | 释义 | 模型行为 | 记忆锚点 |
|---|---|---|---|
| Finalizing | 收尾 | 模型正在生成最终输出,合并结果 | 系蝴蝶结 |
| Reviewing | 审核 | 检查最终输出质量 | 眼镜 |
| Polishing | 润色 | 优化输出格式和表达 | 擦皮鞋 |
| Verifying | 验证 | 验证方案的可行性 | 对勾 |
隐喻/趣味词
| 单词 | 释义 | 模型行为 | 记忆锚点 |
|---|---|---|---|
| Divining | 占卜 | 模型在不确定性中寻找答案 | 水晶球 |
| Brewing | 酿造 | 把多个想法混合发酵成方案 | 大锅炖 |
| Conjuring | 召唤 | 从训练数据中调用相关知识 | 魔法棒 |
| Crafting | 手作 | 精细构造代码/文本 | 木工台 |
| Cultivating | 培育 | 逐步优化输出,反复迭代 | 种花 |
| Foraging | 觅食 | 在长上下文中搜索关键信息 | 松鼠找坚果 |
四、常见误解
误解 1:“这些词表示模型在排队”
实际: 排队状态有专属词——Queued、Waiting for capacity。Spinner 词汇只表示模型正在推理中,不表示排队。
误解 2:“词多说明模型卡住了”
实际: 词汇按轮次递进,连续任务中每个词只出现一次。如果看到同一个词反复出现,说明模型在同一轮推理中卡住,而不是因为词表循环。
误解 3:“Verbose 模式可以回溯”
实际: Verbose 模式需要提前打开(Ctrl+O),中途切换无法回溯之前已经执行完毕的推理过程。如果任务已经执行到中间阶段才打开 Verbose,只能看到后续的推理过程。