概述
OpenClaw 的消息处理机制决定了 AI 助手如何接收、排队和响应用户消息。合理配置这些参数能显著提升多人群聊场景下的交互体验。
响应前缀(Response Prefix)
messages.responsePrefix 允许你在每条 AI 回复前添加自定义前缀,支持模板变量:
// ~/.openclaw/openclaw.json
{
"messages": {
"responsePrefix": "[{model}] "
}
}
可用模板变量
| 变量 | 说明 | 示例输出 |
|---|---|---|
{model} |
当前使用的模型名称 | claude-3-opus |
{provider} |
模型提供商 | anthropic |
{identity.name} |
机器人身份名称 | 小助手 |
配置示例
{
"messages": {
"responsePrefix": "🤖 {identity.name} ({provider}/{model}):\n"
}
}
效果:每条回复前会显示类似 🤖 小助手 (anthropic/claude-3-opus): 的前缀。
消息队列模式
messages.queue 是 OpenClaw 处理并发消息的核心机制,提供四种模式:
steer 模式
新消息会覆盖当前正在处理的请求,AI 转向处理最新的消息:
{
"messages": {
"queue": "steer"
}
}
适合:即时响应场景,用户希望 AI 始终处理最新指令。
followup 模式
新消息会被排队,等当前响应完成后再按顺序处理:
{
"messages": {
"queue": "followup"
}
}
适合:需要保证每条消息都被处理的场景。
collect 模式
在一定时间窗口内收集多条消息,合并为一个请求发送给模型:
{
"messages": {
"queue": "collect"
}
}
适合:用户习惯分段发送消息(先发问题,再补充细节)。
interrupt 模式
新消息会立即中断当前处理,丢弃未完成的响应,开始处理新消息:
{
"messages": {
"queue": "interrupt"
}
}
适合:对时效性要求极高的场景。
消息防抖(Debounce)
messages.inbound.debounceMs 用于合并用户快速连续发送的多条消息:
{
"messages": {
"inbound": {
"debounceMs": 1500 // 1.5 秒内的连续消息会被合并
}
}
}
工作原理
用户发送 "帮我写一个" ─┐
(800ms 后) │
用户发送 "Python 脚本" ─┤ 合并为 → "帮我写一个 Python 脚本"
(2000ms 后,超过阈值) │
用户发送 "要能处理 CSV" ─┘ 作为新消息处理
建议值:
- 个人使用:
800-1500ms - 群聊场景:
500-1000ms(避免合并不同用户的消息)
长消息流式传输
当 AI 生成的回复较长时,OpenClaw 支持流式传输(streaming)和分块发送(chunking):
{
"messages": {
"streaming": {
"enabled": true,
"chunkSize": 200 // 每 200 字符发送一个分块
}
}
}
流式传输的优势:
- 用户无需等待完整回复生成
- 降低单条消息超过平台字数限制的风险
- 提供更自然的"正在输入"体验
综合配置示例
以下是适合中等规模群聊的推荐配置:
{
"messages": {
"responsePrefix": "[{identity.name}] ",
"queue": "followup",
"inbound": {
"debounceMs": 1000
},
"streaming": {
"enabled": true,
"chunkSize": 300
}
}
}
故障排查
AI 回复丢失或不完整?
- 检查队列模式是否为
steer或interrupt,这两种模式会丢弃未完成的回复 - 切换为
followup模式确保每条消息都被处理
用户分段消息被拆开处理?
- 增大
debounceMs值,给用户更多时间补充内容
回复被平台截断?
- 启用流式传输并调小
chunkSize值 - 检查目标平台的单条消息长度限制