什么是输入指示器
输入指示器(Typing Indicators)就是你在聊天软件中看到的"对方正在输入…"提示。当 OpenClaw 智能体收到你的消息并开始处理时,它会在聊天界面显示这个提示,让你知道它正在工作。 ``
你:帮我写一个 Docker Compose 配置
智能体:[正在输入...] ← 这就是输入指示器
`
没有输入指示器的话,你发完消息后会看到一片空白,不知道智能体是在处理还是卡住了。
输入指示器的工作原理
OpenClaw 的输入指示器工作流程:
`
1. 用户发送消息
↓
2. Gateway 收到消息
↓
3. 向渠道发送"正在输入"信号 ← 开始显示
↓
4. 调用 AI 模型生成回复
↓
5. (如果处理时间长)定期刷新"正在输入"信号
↓
6. 回复发送完成
↓
7. "正在输入"信号自动消失 ← 停止显示
`
为什么需要定期刷新?
大多数聊天平台的输入指示器有超时机制——如果一段时间内没有新的"正在输入"信号,指示器会自动消失。例如:
- WhatsApp:约 25 秒超时
- Telegram:约 5 秒超时
- Discord:约 10 秒超时
OpenClaw 会在处理过程中定期发送输入指示器信号,确保在整个处理期间都显示"正在输入"。
配置输入指示器
全局配置
在 openclaw.json 中配置:
`json
{
"typingIndicators": {
"enabled": true
}
}
`
按渠道配置
不同渠道可以单独配置:
`json
{
"channels": {
"telegram": {
"typingIndicators": true
},
"whatsapp": {
"typingIndicators": true
},
"discord": {
"typingIndicators": true
}
}
}
`
禁用输入指示器
某些场景下你可能想禁用输入指示器:
`json
{
"typingIndicators": {
"enabled": false
}
}
`
禁用的理由可能包括:
- 减少 API 调用次数(某些渠道对输入指示器有频率限制)
- 不想让用户知道智能体正在处理(静默模式)
- 调试时减少日志噪音
什么是在线状态
在线状态(Presence)是指智能体在聊天平台上显示的状态信息,比如"在线"、"离线"、"忙碌"等。
`
智能体头像旁边的绿点 → 在线
智能体头像旁边的灰点 → 离线
`
在线状态的作用
- 让用户知道智能体是否可用
- 在群组中显示智能体的活跃状态
- 提供自定义状态消息(如"正在维护中")
在线状态配置
基本配置
`json
{
"presence": {
"enabled": true,
"status": "online"
}
}
`
状态类型
| 状态值 | 显示效果 | 适用场景 |
|--------|---------|---------|
| online | 在线(绿色) | 正常运行 |
| idle | 空闲(黄色) | Gateway 运行但无活跃会话 |
| dnd | 勿扰(红色) | 维护期间 |
| offline | 离线(灰色) | Gateway 停止 |
自定义状态消息
部分渠道支持自定义状态文本:
`json
{
"presence": {
"enabled": true,
"status": "online",
"statusMessage": "随时为你服务 🤖"
}
}
`
各渠道支持差异
不同渠道对输入指示器和在线状态的支持程度不同:
输入指示器支持
| 渠道 | 支持 | 说明 |
|------|------|------|
| WhatsApp | ✅ 完整支持 | 显示"正在输入…",需定期刷新 |
| Telegram | ✅ 完整支持 | 显示"正在输入…",约 5 秒超时需刷新 |
| Discord | ✅ 完整支持 | 显示"Bot 正在输入…" |
| WebChat | ✅ 完整支持 | 通过 WebSocket 实时显示 |
| 微信 | ❌ 不支持 | 微信 API 不提供输入指示器接口 |
| QQ | ❌ 不支持 | QQ Bot API 不提供此功能 |
| 飞书 | ⚠️ 有限支持 | 仅在单聊中支持 |
| Slack | ✅ 完整支持 | 显示"Bot is typing…" |
在线状态支持
| 渠道 | 支持 | 说明 |
|------|------|------|
| Discord | ✅ 完整支持 | 支持在线/空闲/勿扰/离线 + 自定义状态 |
| Telegram | ⚠️ 有限 | 仅显示"最近在线"时间 |
| WhatsApp | ⚠️ 有限 | 仅显示"在线"或"最后上线时间" |
| Slack | ✅ 完整支持 | 支持自定义状态文本和 emoji |
| WebChat | ✅ 完整支持 | 可自定义显示 |
| 微信 | ❌ 不支持 | 微信不显示 Bot 在线状态 |
| QQ | ❌ 不支持 | QQ Bot 无在线状态概念 |
实用配置示例
场景一:全渠道最佳体验
为所有支持的渠道启用输入指示器和在线状态:
`json
{
"typingIndicators": {
"enabled": true
},
"presence": {
"enabled": true,
"status": "online",
"statusMessage": "AI 助手在线中"
}
}
`
场景二:Discord 专属配置
Discord 对 Bot 状态支持最完整:
`json
{
"channels": {
"discord": {
"typingIndicators": true,
"presence": {
"status": "online",
"statusMessage": "输入 /help 查看帮助"
}
}
}
}
`
场景三:静默模式
不显示任何状态信息,适合后台自动化场景:
`json
{
"typingIndicators": {
"enabled": false
},
"presence": {
"enabled": false
}
}
`
常见问题
输入指示器一直显示怎么办?
如果"正在输入"一直不消失,可能是:
1. 模型响应超时:检查模型 API 是否正常
2. Gateway 卡住:重启 Gateway(openclaw gateway restart)
3. 渠道 API 异常:检查渠道连接状态(openclaw channels status`)