Skip to content

表情回应(Reactions)

表情回应(Reactions)是 OpenClaw 跨通道的消息反馈机制,让 Agent 能够通过 👍、❤️、✅ 等表情符号快速表达对消息的响应——无需发送完整的文字回复。


为什么需要表情回应?

在自动化场景中,Agent 常常需要处理大量消息。对于"已收到"、"正在处理"、"完成"等简单状态,用表情回应代替文字回复,可以大幅减少通道的消息噪音,同时让用户一眼看出任务状态。

常见使用场景

  • 👍 确认收到消息,正在处理
  • ✅ 任务已完成
  • ❌ 任务失败或拒绝执行
  • ⏳ 任务正在等待中
  • ❤️ 用户反馈、情感交互

跨通道语义统一

不同聊天平台对表情回应的实现方式不同,OpenClaw 在内部统一了其语义:

平台实现方式OpenClaw 统一语义
Telegram消息反应(Message Reaction)Reactions API
Discord消息表情(Message Emoji Reaction)Reactions API
Slack表情回应(Emoji Reaction)Reactions API
Web Chat内置表情面板Reactions API

无论用户在哪个平台交互,Agent 都通过相同的接口发送表情回应,平台差异由 OpenClaw 内部处理。


Agent 如何使用表情回应

Agent 通过内置工具发送表情回应:

bash
# Agent 在任务开始时发送"收到"回应
openclaw run "处理用户请求时,先发送 👍 表示收到,完成后发送 ✅"
工具调用示例(开发者参考)

Agent 内部使用 send_reaction 工具:

json5
{
  tool: "send_reaction",
  params: {
    messageId: "msg_12345",
    emoji: "👍"
  }
}

移除表情回应:

json5
{
  tool: "remove_reaction",
  params: {
    messageId: "msg_12345",
    emoji: "👍"
  }
}

配置

在配置文件中启用或禁用表情回应功能:

json5
{
  tools: {
    reactions: {
      enabled: true,

      // 自定义语义映射
      semantics: {
        "received": "👍",
        "completed": "✅",
        "failed": "❌",
        "thinking": "🤔"
      }
    }
  }
}

按通道单独配置

如果某个通道不支持表情回应,可以单独禁用:

json5
{
  channels: {
    "my-webhook": {
      reactions: { enabled: false }
    }
  }
}

注意事项

平台限制

  • Telegram 对表情回应有严格限制:只能使用 Telegram 内置的"精选表情",不支持任意 Unicode 表情
  • 某些旧版本的 Discord 机器人权限可能不包含"添加表情回应",需要在机器人权限设置中单独开启
  • 部分自定义通道(如 Webhook)可能不支持表情回应,会静默忽略该操作

下一步:工具系统总览

用工程视角拆解 AI 智能体框架