概念内部机制

正在输入提示

运行处于活动状态时,会向聊天渠道发送输入状态指示器。使用 agents.defaults.typingMode 控制输入状态何时开始,使用 typingIntervalSeconds 控制它多久刷新一次。

默认值

agents.defaults.typingMode 未设置时,OpenClaw 会保留旧版行为:

  • 直接聊天:模型循环开始后,输入状态会立即开始。
  • 带提及的群聊:输入状态会立即开始。
  • 不带提及的群聊:只有消息文本开始流式传输时,输入状态才会开始。
  • Heartbeat 运行:如果解析出的 Heartbeat 目标是支持输入状态的聊天,且输入状态未被禁用,则输入状态会在 Heartbeat 运行开始时启动。

模式

agents.defaults.typingMode 设置为以下之一:

  • never - 从不显示输入状态指示器。
  • instant - 模型循环一开始就开始显示输入状态,即使该运行稍后只返回静默回复标记。
  • thinking - 在第一个推理增量时开始显示输入状态(该运行需要 reasoningLevel: "stream")。
  • message - 在第一个非静默文本增量时开始显示输入状态(会忽略 NO_REPLY 静默标记)。

“触发早晚”的顺序: nevermessagethinkinginstant

配置

{
  agent: {
    typingMode: "thinking",
    typingIntervalSeconds: 6,
  },
}

你可以按会话覆盖模式或节奏:

{
  session: {
    typingMode: "message",
    typingIntervalSeconds: 4,
  },
}

注意事项

  • 当整个载荷是精确的静默标记(例如 NO_REPLY / no_reply,按大小写不敏感匹配)时,message 模式不会为仅静默回复显示输入状态。
  • thinking 只有在运行流式传输推理(reasoningLevel: "stream")时才会触发。 如果模型不发出推理增量,输入状态不会开始。
  • Heartbeat 输入状态是解析出的投递目标的活跃信号。它会在 Heartbeat 运行开始时启动,而不是跟随 messagethinking 的流式时序。设置 typingMode: "never" 可禁用它。
  • target: "none"、目标无法解析、该 Heartbeat 的聊天投递被禁用,或渠道不支持输入状态时,Heartbeat 不会显示输入状态。
  • typingIntervalSeconds 控制的是刷新节奏,不是开始时间。 默认值为 6 秒。

相关内容