问题域/PD-499

消息渲染适配

Message Rendering Adapter

将 Agent 输出统一渲染为各渠道可发送的格式

子问题

1.渠道能力声明(markdown/emoji/code)

2.工具调用结果格式化

3.多媒体内容转换

4.文本截断与预览

5.工具参数/输出的分级截断策略(200/500 字符阈值)

6.Base64 内联数据与 URL 引用的统一处理

7.平台 Markdown 渲染怪癖的隔离修复

各项目的解法1 solutions

Signals

横向对比

维度CoPaw
能力声明方式RenderStyle dataclass 4 布尔标志声明渠道能力
渲染架构单 MessageRenderer + Style 驱动,BaseChannel 委托
内容中间表示Union[TextContent, ImageContent, ...] 6 类型联合
工具调用格式化4 级降级:markdown+emoji → markdown → code_fence → 纯文本
多媒体处理URL/Base64 双源解析,send_media 钩子渐进覆写
平台怪癖隔离独立模块处理(如 dingtalk/markdown.py 3 步修复)
渠道扩展方式继承 BaseChannel + 覆写 send_content_parts/send_media

最佳实践

1.RenderStyle 声明渠道能力,Renderer 据此适配输出格式

2.用独立模块隔离平台特有的 Markdown 修复逻辑

3.send_media 钩子默认 no-op,子类按需覆写发送真实附件

4.工具调用格式化按能力标志 4 级降级,避免 if/else 渠道分支