Concepts 导读

控制机器人“正在输入...”何时出现、多久刷新一次

通过 `agents.defaults.typingMode` 选择触发时机(从不/立即/思考时/消息时),用 `typingIntervalSeconds` 设置刷新间隔(默认6秒)。注意:`thinking` 模式要求模型流式输出推理过程,心跳运行始终不显示打字指示。

先讲这一页到底在解决什么

控制机器人“正在输入...”何时出现、多久刷新一次

通过 `agents.defaults.typingMode` 选择触发时机(从不/立即/思考时/消息时),用 `typingIntervalSeconds` 设置刷新间隔(默认6秒)。注意:`thinking` 模式要求模型流式输出推理过程,心跳运行始终不显示打字指示。

原文共 6 节,先看 Start Here 路径:/concepts/typing-indicators 查看官方原文

第一站

💡 typingMode 就是在决定“机器人多早举起‘我在写了’的小牌子”

从最安静到最积极,官方给了四档。

🙈

never

永远不举牌,全程安静。

💬

message

等真正开始吐正文时才亮灯,不会因为纯静默回复乱闪。

🧠

thinking

一检测到 reasoning 流开始,就先亮“我在想”。

instant

模型循环一开就立刻举牌,最积极。

第二站

⏲️ typingIntervalSeconds 不是开始时间,而是“隔多久再挥一下手”

很多人会把这两个开关混掉,所以官方特地提醒。

默认 6 秒

像每 6 秒提醒一次对面“别急,我还在写”。

Session override

你也能在会话级别单独改成 4 秒、6 秒之类,像某次聊天临时换节奏。

Heartbeat 例外

心跳任务永远不显示 typing。因为它更像后台巡逻,不像真人聊天。

Silent replies

如果这轮其实不打算回正文,message 模式就不会乱亮灯。

第三站

🎈 最稳的理解方式是:一个开关管“什么时候开始”,另一个开关管“多久续一次命”

把这两个角色分清,你就知道该调哪一边了。

typingMode

决定举牌时机。

typingIntervalSeconds

决定举牌后多久再刷新一次。

推荐理解

你想“早点让人知道我在处理”,就调 mode;你想“别太频繁晃灯”,就调 interval。

🎈 最后记一句

Typing indicators 讲的不是内容生成,而是聊天节奏感。