bug: 伙伴对话界面,Cindy Art 生成图片在 Android/iOS 会话不渲染
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
### 问题描述 / What happened
Cindy Art 生成图片在 Android/iOS 会话不渲染:xdt_media_produced 未进入移动端媒体解析
桌面端可见生成结果,但 Android 与 iOS 打开同一任务时,仅显示助手的"已生成"文字确认,不出现图片附件或图片卡。
根因判断
主因(高置信度):跨端媒体结果契约不一致
桌面插件网关在插件未明确返回 xdt_image_urls 时,会把主机账本中的生成媒体注入为 xdt_media_produced。这条兜底为桌面/IM 送达设计,但移动端共享解析器只识别 xdt_image_url(s)、视频和音频字段,完全忽略 xdt_media_produced。
因此 NormalizedRemoteMessage.media 为空,ToolMediaBlock 不会渲染。
网关生成 xdt_media_produced:mcpServer.ts、mcpServer.ts
网关工具名 mcp__cindy__ghost_call:mcpServer.ts
共享解析器仅提取 xdt_image_url(s):payloadSummary.ts
移动端仅渲染已解析 tool.media:messageNormalize.ts、MessageRenderer.tsx
次要风险:Cindy Art 未覆盖 tool result echo 丢失时的回收
桌面持久化层的孤儿媒体结果回收仅允许旧 mcp__lizi_art__ / mcp__lizi_mivo__ 工具名;当前 mcp__cindy__ghost_call 不会进入该兜底。
若流式 tool_result 回声丢失,移动端连可解析的持久化工具结果也拿不到。
旧工具名白名单:messagePersistBroadcaster.ts
当前工具结果持久化及媒体引用提交:messagePersistBroadcaster.ts
### 环境 / Environment
- Cindy 版本或 commit / version or commit: 0.1.82
- 平台与版本 / platform & OS version: Android 或 iOS
### 复现步骤 / Steps to reproduce
1. 配对桌面端与 Android 或 iOS。
2. 在桌面任务中调用 Cindy Art 生成图片,例如"猫吃鱼"。
3. 确认桌面端已显示生成结果。
4. 在手机打开同一任务,等待同步
5. 观察助手文字存在,但无图片卡、无附件预览。
### 日志与截图 / Logs & screenshots
Contributor guide
Research direction
Trace xdt_media_produced from mcpServer.ts through payloadSummary.ts, then inspect messageNormalize.ts and MessageRenderer.tsx to see why mobile media remains empty. Review messagePersistBroadcaster.ts for the listed tool-name fallback and persistence path. Reproduce the Cindy Art task on Android or iOS and verify the generated image renders and remains available when the tool-result echo is missing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react-native, typescript
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100