dsh-messaging 📨
English | 中文
DeepSeek Harness 的多平台消息插件。一套接口,多个 IM 平台(飞书/Telegram/微信/Discord),不支持的功能自动降级提示。
特性
- 🌉 MessagePlatform 抽象层 — 所有 IM 平台统一接口
- 🔌 插件式架构 — 每个平台是一个独立适配器,即插即用
- ⚡ 能力降级 — 平台不支持的功能自动触发中英双语提示
- 📝 Markdown 自动转换 — 飞书不渲染 Markdown,自动转纯文本
- 🔒 经过实战验证 — 消息去重、按会话串行处理、Token 自动刷新(源自 Hermes Agent 3 个月生产经验)
支持的平台
| 平台 | 文本 | Markdown | 图片 | 语音 | 视频 | 文件 | 卡片 | 表情回应 | 话题 | 输入中 | 推送 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 飞书 | ✅ | ❌ | 🔨 | 🔨 | 🔨 | 🔨 | ✅ | ✅ | ✅ | ❌ | ✅ |
| Telegram | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
| Discord | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
| 企业微信 | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
❌ = 平台不支持 → 自动降级并提示用户 🔨 = 平台支持但本插件尚未实现 🚧 = 计划在未来版本支持
快速开始
# 安装到你的 DSH profile
dsh plugin --profile web add github:andiven/dsh-messaging# 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前置条件
飞书: 在 open.feishu.cn 创建企业自建应用,开通 im:message 和 im:message:send_as_bot 权限,事件订阅选「长连接」模式并订阅 im.message.receive_v1,然后发布版本。
Telegram: 通过 @BotFather 创建机器人,获取 Bot Token。
Discord: 在 Discord 开发者平台 创建应用并添加 Bot,开启 Message Content 特权 Intent,用 bot scope 及「发送消息」「读取消息历史」权限邀请进服务器,获取 Bot Token。
企业微信: 在企业微信管理后台创建自建应用,记录企业 ID(Corp ID)、应用 Secret 和 AgentId。接收消息需要在后台注册指向本插件回调服务器的 HTTP 回调 URL(Corp ID、Token、EncodingAESKey);不配置 wecom.callback 则仅支持主动推送(不接收消息)。
工作原理
用户在飞书/Telegram 发送消息
↓
适配器接收事件 → 归一化为 InboundMessage
↓
DshBridge 调用 agent.followup(text)
↓
DSH Agent 处理(LLM + 工具调用)
↓
session/event: assistant/chunk → 缓冲到 turn/end
↓
DshBridge 通过 platform.sendMessage() 发送完整回复
↓
能力自动检查:飞书自动把 Markdown 转纯文本等核心设计
- CapabilitySet — 每个平台声明 12 项能力,Agent 可以在行动前查询平台支持什么
- 自动降级 — 不支持的功能触发中英双语提示,用户能看懂
- 流式缓冲 — Agent 回复攒成完整消息再发(不是逐 token 发送,避免触发限流)
- 重试退避 — 指数退避 + 抖动,遵循 Telegram
retry_after/ 飞书限流码 - 按会话串行 — 同一会话的消息排队处理,保证回复顺序
- 消息去重 — 飞书重复事件自动过滤(TTL + 数量上限)
已知限制
- 飞书媒体发送(图片/语音/视频/文件)尚未实现(能力声明已诚实标为
false) - Telegram/企业微信卡片消息降级为格式化文本;Discord 卡片降级为 embed
- Discord Gateway 断线重连尽力支持 resume(遇到不可恢复的 close code 时会退回全新 Identify)
- 企业微信接收消息依赖 HTTP 回调(需在管理后台注册);官方专有的 AI Bot WebSocket 网关是另一个需申请权限的产品,本插件未实现
- 暂无重连状态保持(重启可能丢失排队中的消息)
- 暂无测试套件
- 每个实例只支持一个平台(配置中选择一个)
开发
git clone https://github.com/andiven/dsh-messaging.git
cd dsh-messaging
npm install
npm run build许可证
MIT