bug: Art 插件生成的视频在 Telegram 投递时丢失,xdt_video_urls 未转成可发送附件
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
## 问题描述 / What happened
在 Telegram 渠道调用 Art 插件生成视频后,插件侧生成成功,但视频没有送达 Telegram。最终回复会出现附件投递失败提示:
```text
Attachment delivery incomplete: 1 item could not be sent.
```
同一条链路里,图片仍可通过 xdt_image_urls 正常投递;视频返回的 xdt_video_urls 则没有变成 Telegram 可发送的附件。Art 插件的输出 hint 会声称媒体已自动送达桌面/IM,但实际视频未送达。
把同一个生成视频另行写入当前工作目录,并在最终回复中显式使用 `[paris.mp4](xdt-file:///绝对路径)` 后,Telegram 可以收到文件。这说明视频文件本身和 Telegram 文件发送能力可用,问题集中在 Art 插件结果到 IM 附件的自动交付链路。
## 环境 / Environment
- Cindy 版本或 commit / version or commit: 未知
- 渠道 / channel: Telegram
- 插件 / plugin: Art
- 发现日期 / observed date: 2026-08-16
## 复现步骤 / Steps to reproduce
1. 在 Telegram 会话中要求 Cindy 使用 Art 插件生成视频。
2. 等待 Art 插件成功产出视频。
3. 查看 Telegram 最终回复和附件。
4. 视频未送达,并出现 `Attachment delivery incomplete: 1 item could not be sent.`。
5. 将生成的同一视频写入会话工作目录,再通过 `xdt-file:///绝对路径` 显式引用。
6. Telegram 可以收到该视频文件。
## 实际行为 / Actual behavior
- Art 已成功生成视频。
- 插件 hint 暗示媒体会自动投递到 IM。
- Telegram 没有收到视频;xdt_video_urls 没有形成有效附件。
- 系统给出附件投递不完整提示。
## 期望行为 / Expected behavior
- host 应消费 Art 返回的 xdt_video_urls,并将视频转换为 Telegram 可发送的视频或文件附件。
- 自动投递成功前,不应向模型提供“已自动送达 IM”的错误 hint。
- 若自动投递失败,应保留可重试的媒体引用,并明确报告失败原因,不能直接丢弃视频结果。
## 初步定位 / Suspected boundary
这是基于现象的初步判断,尚未做代码验证:图片的 xdt_image_urls 能穿过交付链,而视频的 xdt_video_urls 可能在插件结果 hook / IM 附件投影阶段被过滤或未消费。手工 xdt-file 路径可成功,说明 Telegram 发送端不是整体不可用。
## 影响 / Impact
Telegram 用户通过 Art 生成视频后无法拿到产物;插件显示成功但交付失败,且错误 hint 会让 agent 误以为视频已经送达。
Contributor guide
Research direction
Start by tracing the Art plugin result hook and the IM attachment projection for xdt_image_urls and xdt_video_urls, then compare the Telegram delivery path with explicit xdt-file references. Done means generated videos become Telegram-sendable attachments, failed delivery preserves a retryable media reference and reports the reason, and the success hint is not emitted prematurely.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100