Skip to content

OpenClaw 打字指示器默认在私聊和@提及群聊立即启动,无提及群聊等待文本流;心跳打字在运行开始时作为存活信号启动(若频道支持且未禁用)。配置 agents.defaults.typingMode 切换触发模式,typingIntervalSeconds 调整刷新间隔(默认6秒)。若要关闭所有打字指示,设为 never。注意:thinking 模式需模型流式推理(reasoningLevel: "stream"),message 模式忽略纯静默回复。

OpenClaw 打字指示器配置:模式与默认行为

运行中的智能体会向聊天频道发送“正在输入”状态。使用 agents.defaults.typingMode 控制何时开始显示,typingIntervalSeconds 控制刷新频率

默认行为(私聊/群聊/心跳)

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

  • 私聊:模型循环一开始立即显示打字状态。
  • 有 @ 提及的群聊:立即显示打字状态。
  • 无 @ 提及的群聊:仅在消息文本开始流式传输时才显示打字状态。
  • 心跳运行:当心跳目标解析为一个支持打字的聊天频道且打字未被禁用时,在心跳运行开始时即显示打字状态(作为存活信号)。

模式对比与触发顺序

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

  • never — 永不显示打字状态。
  • instant模型循环一开始立即显示打字状态,即使该运行最终只返回静默回复令牌。
  • thinking — 在第一个推理增量时显示打字状态(需要运行的 reasoningLevel: "stream")。
  • message — 在第一个非静默文本增量时显示打字状态(忽略 NO_REPLY 静默令牌)。

触发时机从早到晚的顺序(数值越大触发越早):
nevermessagethinkinginstant

配置方法

设置 Agent 级别的默认行为:

json5
{
  agents: {
    defaults: {
      typingMode: "thinking",
      typingIntervalSeconds: 6,
    },
  },
}

按会话覆盖模式或刷新节奏:

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

注意事项与限制

  • message 模式不会对纯静默回复(如 NO_REPLY / no_reply,大小写不敏感)显示打字状态。
  • thinking 模式仅在运行流式推理(reasoningLevel: "stream")时生效。如果模型不输出推理增量,打字状态不会启动。
  • 心跳打字是一种存活信号,它在心跳运行开始时启动,而不跟随 messagethinking 的流时序。可通过设为 typingMode: "never" 完全禁用。
  • 心跳在以下情况不会显示打字:target: "none"、目标无法解析、心跳的聊天投递被禁用、或该频道不支持打字。
  • typingIntervalSeconds 控制的是刷新节奏,而非启动时机。默认值为 6 秒。

常见问题

打字指示器为什么不显示?

检查 agents.defaults.typingMode 是否被设为 never。如果是 message 模式且模型只返回静默回复(如 NO_REPLY),不会显示。若为 thinking 模式,确认模型是否启用了 reasoningLevel: "stream" 并输出了推理增量。还可以检查频道是否支持打字指示。

心跳打字一直显示怎么关上?

将心跳所在工作区的 agents.defaults.typingMode 或会话的 typingMode 设为 never。或者将心跳目标设为 "none" 或确保目标频道不支持打字。

thinking 模式不生效,打字不显示

核实运行的配置中是否包含 reasoningLevel: "stream"。如果模型没有输出 reasoning deltas,thinking 模式不会触发,打字不会启动。可尝试切换为 messageinstant 模式验证问题是否为模型推理流本身未生效。

相关文档

  • Presence — Gateway 如何跟踪已连接的客户端并在 macOS Instances 标签页中显示。
  • Streaming and chunking — 出站流式行为、分块边界及频道特定投递。