Skip to content

[Feature] 支持自动剥离 QQ 官方平台特有交互标签(如 <qqbot-cmd-input>,<qqbot-cmd-enter>)以优化多平台与 LLM 上下文 #8755

@Zzzzzzouhang

Description

@Zzzzzzouhang

Description / 描述

📌 背景与痛点 (Background & Problem)

AstrBot 作为一个多平台聚合框架,在处理 QQ 官方平台(qqofficial)的消息时,可能会接收到包含平台特有交互标签的文本。例如,当用户点击 QQ 原生的指令输入框时,Bot 接收到的消息原文中会包含类似如下的 XML/HTML 标签:

你好 <qqbot-cmd-input text="/快速英雄云图 " show="快速云图" reference="false" />

当前存在的问题:

  1. 污染 LLM 上下文:当这类消息被直接传递给大模型(LLM)时,大模型无法理解这些平台特有的 XML 标签,不仅浪费 Token,还可能导致模型产生幻觉或输出包含类似标签的奇怪回复。
  2. 跨平台显示异常:如果通过 AstrBot 将消息路由、转发或同步到其他非 QQ 平台(如微信、Telegram、KOOK 或 WebUI),这些标签会作为纯文本原样显示,造成严重的阅读干扰和排版混乱。

🎯 期望行为 (Expected Behavior)

希望 AstrBot 框架或 qqofficial 适配器能够在消息接收与标准化阶段,自动识别并处理这类平台特有的富文本/交互标签。

具体期望如下:

  1. 自动剥离/清洗:在将消息传递给 LLM 或其他平台适配器前,自动移除 <qqbot-cmd-input ... /> 等无意义的展示标签。
  2. 智能提取(可选优化):如果该标签代表用户的实际意图,可以尝试提取其 text 属性(如 /快速英雄云图 )作为实际消息内容,或者直接将其替换为空字符串以保持上下文纯净。
    • 清洗前帮我查一下 <qqbot-cmd-input text="/快速英雄云图 " show="快速云图" reference="false" />
    • 清洗后帮我查一下 /快速英雄云图 (或 帮我查一下

🛠️ 建议的实现方案 (Proposed Solution)

  1. 适配器层处理:在 qqofficial 适配器的消息解析逻辑,增加针对 QQ 官方特有标签的正则清洗逻辑。

  2. 框架层全局配置:在 AstrBot 核心配置中提供一个“跨平台消息清洗”开关,允许开发者自定义需要全局剥离的 HTML/XML 标签正则列表,以应对未来其他平台(如飞书、钉钉)可能出现的类似特殊标签。

Use Case / 使用场景

No response

Willing to Submit PR? / 是否愿意提交PR?

  • Yes, I am willing to submit a PR. / 是的,我愿意提交 PR。

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:platformThe bug / feature is about IM platform adapter, such as QQ, Lark, Telegram, WebChat and so on.enhancementNew feature or request

    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