mirror of
https://github.com/hansjone/dsh-im-ops.git
synced 2026-10-09 00:33:20 +08:00
feat: add native image delivery across channels
This commit is contained in:
parent
dbc0a4b730
commit
3ec5f1eca7
31 changed files with 2754 additions and 846 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# 出站图片原生呈现落地方案
|
||||
|
||||
> 状态:待实施
|
||||
> 状态:已实施;九渠道真机验收通过
|
||||
>
|
||||
> 日期:2026-08-24
|
||||
>
|
||||
|
|
@ -23,6 +23,16 @@
|
|||
|
||||
不引入新的产物类型、基类、注册表、配置开关、回执版本或本地图片格式白名单。
|
||||
|
||||
### 1.1 实施结果(2026-08-24)
|
||||
|
||||
本方案已按上述最小边界落地:
|
||||
|
||||
- 新增 `src/channels/shared/semantic/artifact-delivery.mjs`,统一负责 `image/*` 选择、确定性失败降级、`artifact-delivery-uncertain`/Abort 防重复、回执合并和 Artifact 释放。
|
||||
- 共享 `TextHarnessBridge` 及飞书、微信、钉钉、企业微信、QQ Bridge 均改用该函数,不再各自维护图片识别与降级循环。
|
||||
- 飞书、微信、钉钉、企业微信、QQ、Telegram、WhatsApp 接入各自原生图片发送;Slack、Discord 继续复用一次原生附件上传并显示图片预览。
|
||||
- `dsh_im_return_file`、`OutboundArtifact`、`DeliveryReceipt` v1 和现有 Bot 配置结构均保持不变。
|
||||
- `npm run check` 通过:1089/1089 测试通过,构建和发布包校验通过;独立代码复审未发现剩余 P0–P2 问题。
|
||||
|
||||
## 2. “语义核心 + 渠道原生适配”在本方案中的含义
|
||||
|
||||
| 层次 | 现有代码 | 本方案中的职责 |
|
||||
|
|
@ -327,6 +337,24 @@ try {
|
|||
|
||||
自动化测试能验证协议形状,不能完全代替客户端是否“原生显示”的验收。
|
||||
|
||||
### 9.4 九渠道真机验收记录(2026-08-24)
|
||||
|
||||
统一使用工作区图片 `assets/logo-plugin-phone.png`(PNG,85,920 字节),由用户在每个渠道的真实会话中要求 Agent 调用 `dsh_im_return_file`。以下时间均为 Asia/Taipei:
|
||||
|
||||
| 渠道 | 实际发送路径 | 官方客户端可见结果 | 结果 |
|
||||
| --- | --- | --- | --- |
|
||||
| Telegram | `sendPhoto` | 03:07 出现一张原生图片消息 | 通过 |
|
||||
| Slack | 单次 external file upload | 03:08 在消息列中显示一张内联图片预览 | 通过 |
|
||||
| Discord | 单次 multipart attachment | 03:10 在 Bot 私信中显示一张内联图片附件 | 通过 |
|
||||
| 飞书 | `image.create` + `msg_type: image` | 03:11 在“梁子文件传送”会话中显示一张原生图片 | 通过 |
|
||||
| 微信 | CDN 图片上传 + `image_item` | 03:12 在 DeepSeek Harness 会话中显示一张图片气泡 | 通过 |
|
||||
| 钉钉 | image media + `sampleImageMsg` | 03:14 在“梁子来了”会话中显示一张原生图片,侧栏标记 `[Image]` | 通过 |
|
||||
| 企业微信 | `uploadMedia(image)` + image media message | 03:15 在“今天是梁子”会话中显示一张原生 `[Photo]` | 通过 |
|
||||
| QQ | SDK `sendImage` | 03:15 在 `winBot` 私聊中显示一张原生图片,侧栏标记 `[图片]` | 通过 |
|
||||
| WhatsApp | Baileys `{ image, mimetype }` | 03:16 在账号自聊中显示一张原生图片并保留引用上下文 | 通过 |
|
||||
|
||||
九个客户端均只出现一份图片产物,没有额外文件 fallback、重复图片或失败提示。事后状态检查中九个目标 Bot 均为 `connected` / `healthy`;除飞书状态投影不含本轮计数外,其余八个渠道均记录 1 条接收、1 条回复,Host 日志未出现 Artifact 投递失败、结果不确定或失败通知。
|
||||
|
||||
## 10. 验收标准
|
||||
|
||||
- 九个渠道中的 PNG、JPEG 都能在原生客户端直接看到图片或图片附件预览。
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue