Skip to content

飞书扩展无法解析富文本中的代码块和合并转发消息 #28578

@Lumimainagent

Description

@Lumimainagent

问题描述

背景

OpenClaw 的飞书扩展在处理特定消息类型时存在解析缺失,导致用户发送的内容无法被 Agent 正确接收。

具体问题

1. Markdown 代码块(富文本)无法解析

复现步骤:

  1. 在飞书私聊或群聊中发送包含 Markdown 代码块的消息(使用 ``` 包裹)
  2. Agent 收到的消息中代码块内容完全丢失

根因分析:
/extensions/feishu/src/bot.tsparsePostContent 函数(第 262-308 行)中,只处理了以下 tag:

  • text - 普通文本
  • a - 链接
  • at - @提及
  • img - 图片

缺少对以下 tag 的处理:

  • code_block - 代码块
  • pre - 预格式化文本

建议修复:
parsePostContent 函数的 element 处理循环中添加:

else if (element.tag === "code_block" || element.tag === "pre") {
  const lang = element.language || "";
  const code = element.text || element.content || "";
  textContent += `\n\`\`\`${lang}\n${code}\n\`\`\`\n`;
}

2. 合并转发消息(share_chat)无法解析

复现步骤:

  1. 在飞书中将多条聊天记录合并转发给机器人
  2. Agent 只收到提示文字 "Merged and Forwarded Message"
  3. 无法获取合并转发内的实际聊天内容

实际现象:

用户发送:合并转发包含 5 条消息的聊天记录
Agent 收到:{"body": "Merged and Forwarded Message"}

根因分析:
飞书消息类型 share_chat 未被 OpenClaw 处理。

影响范围

场景 影响
用户发送代码示例 代码内容丢失,Agent 无法理解
用户转发聊天记录 无法查看上下文,需要用户手动复制粘贴
群聊中的富文本消息 部分格式内容丢失

临时解决方案

  1. 避免直接发送代码块:将代码内容复制为普通纯文本发送
  2. 合并转发消息先展开:在飞书中点开合并转发,复制内容后以文本形式重新发送
  3. 使用普通消息格式:不使用富文本编辑器,直接发送纯文本

优先级建议

问题 优先级
代码块解析 P1
合并转发 P2

相关文件

  • /extensions/feishu/src/bot.ts - parsePostContent 函数
  • /extensions/feishu/src/channel.ts - 消息处理主入口

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions