Skip to content
广告 · 本站推荐广告

消息

Messages(消息)是用户与 Agent 之间通信的基本单位。OpenClaw 统一处理来自不同渠道的各类消息格式。

消息类型

OpenClaw 支持以下消息类型:

类型标识说明
文本text纯文本或 Markdown 格式
图片imageJPEG、PNG、WebP、GIF
语音voiceOGG、MP3、WAV 音频
视频videoMP4、WebM 视频
文档documentPDF、DOCX、TXT 等文件
位置location经纬度坐标

内部消息格式

所有渠道的消息被标准化为统一的内部格式:

typescript
interface Message {
  id: string              // 消息唯一 ID
  type: MessageType       // 消息类型
  content: string         // 文本内容
  sender: {
    id: string            // 发送者 ID
    name: string          // 发送者名称
    channel: string       // 来源渠道
  }
  media?: {
    url: string           // 媒体文件 URL
    mimeType: string      // MIME 类型
    size: number          // 文件大小(字节)
  }
  timestamp: number       // Unix 时间戳(毫秒)
  metadata?: Record<string, unknown>
}

消息生命周期

一条消息从接收到回复的完整流程:

接收           预处理           Agent 处理        回复
Received  →  Preprocessed  →  Agent Loop  →  Response
   │              │               │              │
   ▼              ▼               ▼              ▼
渠道适配器    格式标准化       LLM 调用       渠道格式化
收到原始消息  转换内部格式     生成回复       转换平台格式

1. 接收(Received)

Channel Adapter(渠道适配器)从平台 API 或 WebSocket 接收原始消息。

2. 预处理(Preprocessed)

  • 将平台特有格式转换为 OpenClaw 内部格式
  • 处理媒体文件下载与缓存
  • 语音消息自动转录(Speech-to-Text)
  • 应用消息过滤规则

语音转录

语音消息会自动转录为文本,原始音频保留在 media 字段中。转录使用配置的 STT(Speech-to-Text)模型。

3. Agent 处理

消息进入 Agent Loop 的 五阶段流水线,LLM 生成回复。

4. 回复(Response)

Agent 的回复经过渠道格式化后发送给用户。

渠道特定格式

不同渠道对消息格式有不同的支持和限制:

markdown
- 支持基本文本格式(粗体、斜体)
- 图片最大 16MB
- 语音消息自动转 OGG Opus
- 不支持流式输出
- 消息长度限制 65536 字符
markdown
- 支持 Markdown / HTML 格式
- 图片最大 10MB
- 支持内联键盘(Inline Keyboard)
- 支持流式编辑消息
- 消息长度限制 4096 字符
markdown
- 支持 Markdown 格式
- 支持嵌入(Embed)富文本
- 支持斜杠命令(Slash Commands)
- 消息长度限制 2000 字符
- 支持线程(Thread)回复

消息长度

超出渠道长度限制的回复会被自动分割为多条消息发送。分割点优先选择段落边界。

富媒体处理

图片处理

用户发送图片


  下载并缓存 → 检查模型是否支持视觉
      │                    │
      ▼                    ▼
  [支持] 直接发送     [不支持] OCR/描述
  给多模态模型        转换为文本注入

语音处理

用户发送语音


  下载音频 → STT 转录 → 文本注入上下文


        转录结果附加到消息

文档处理

支持的文档格式:

  • PDF — 提取文本与表格
  • DOCX — 提取富文本内容
  • TXT/CSV — 直接读取
  • 代码文件 — 语法高亮注入

消息队列

消息按渠道和会话进入队列处理:

Channel Queue → Session Queue → Agent Loop
渠道队列        会话队列        Agent 处理
  • 每个 Session 维护独立的消息队列
  • 队列保证消息按序处理
  • 队列溢出时按 steering 模式 处理

队列模式

steer 模式逐条处理;collect 模式在时间窗口内批量收集;followup 模式将后续消息追加到当前上下文。

消息元数据

每条消息可携带渠道特定的元数据(Metadata):

json
{
  "metadata": {
    "telegram": {
      "chatType": "private",
      "replyToMessageId": "12345"
    },
    "whatsapp": {
      "isForwarded": true,
      "quotedMessage": "原始消息内容"
    }
  }
}

下一步

基于MIT协议开源 | 内容翻译自 官方文档,同步更新