前言¶
在 DeepSeek Harness(DSH)生态中,智能体通常需要通过即时通讯(IM)平台与用户交互。如果为每个平台(如飞书、Telegram、Discord)单独开发适配逻辑,会造成大量代码重复。dsh-messaging 插件旨在解决这一问题,它提供了一套统一的接口,允许开发者配置一次,即可在飞书、Telegram、Discord 和企业微信之间切换。
核心能力¶
该插件基于插件架构设计,具备以下核心功能:
- MessagePlatform abstraction:提供统一的平台抽象层,屏蔽底层协议差异。
- Plugin architecture:采用适配器模式,每个平台作为独立的适配器接入。
- Capability degradation:当平台不支持某项功能时,自动触发降级处理并提示用户。
- Markdown auto-downgrade:对于不支持 Markdown 渲染的平台(如飞书),自动将 Markdown 转换为纯文本。
- Production-hardened:包含消息去重、逐聊序列化、自动 Token 刷新等生产环境特性。
- CapabilitySet:允许智能体在执行前查询当前平台的能力列表。
- Streaming buffer:将流式输出的文本缓冲至回复完成后再发送,避免出现残缺消息。
- Retry with backoff:内置重试机制,支持指数退避策略,并处理 Telegram 和飞书的限流响应。
- Per-chat serialization:确保同一会话内的消息按顺序处理。
- Message dedup:通过 TTL 和上限机制过滤飞书等平台的重复事件。
安装与启用¶
安装插件需要使用 DSH 的插件命令。该插件由 andiven 维护,遵循 MIT 许可证。
dsh plugin --profile web add github:andiven/dsh-messaging
安装完成后,需要在配置文件中启用插件。插件通过 cordis.patch.yml 注入到 DSH 实例中。
典型用法¶
配置示例(以飞书为例):
# cordis.patch.yml
- id: messaging
name: '@dsh-messaging/messaging'
config:
platform: feishu
feishu:
appId: env:FEISHU_APP_ID
appSecret: env:FEISHU_APP_SECRET
mode: websocket
autoConnect: true
平台配置要求¶
不同平台需要不同的凭证和权限:
- Feishu:需在开放平台创建自建应用,启用
im:message权限,订阅im.message.receive_v1长连接,并发布应用。 - Telegram:通过 @BotFather 创建机器人并获取 Token。
- Discord:在开发者门户创建应用并添加 Bot,启用“消息内容”权限意图,使用
botscope 邀请至服务器,获取 Token。 - WeCom:在管理后台创建自建应用,记录 Corp ID、Secret 和 AgentId。入站消息需在后台注册 HTTP 回调 URL(若仅需发送消息可省略回调配置)。
适用场景与注意¶
该插件适合需要在单一 DSH 实例中集成多 IM 平台的智能体项目。
已知限制:
* 飞书媒体发送:图片、音频、视频和文件的发送功能尚未实现。
* 卡片消息降级:Telegram 和企业微信的卡片消息会降级为格式化文本;Discord 的卡片消息会降级为 Embed。
* 重连机制:Discord 网关重连为尽力而为模式,非可恢复关闭时会重新发起连接;无重连状态保留机制,重启可能导致队列中的更新丢失。
* 单实例单平台:每个 DSH 实例当前仅支持配置一种平台。
* 无测试覆盖:项目暂无测试套件。
短结尾¶
dsh-messaging 通过统一接口和自动降级机制,降低了多平台 IM 对接的复杂度。开发者可访问 GitHub 查看源码或提交 Issue。