Skip to content

fix: 修复暂停态带图插话丢失图片 - #4

Merged
better-er merged 1 commit into
mainfrom
fix/image-interjection
Oct 17, 2026
Merged

better-er merged 1 commit into
mainfrom
fix/image-interjection

Conversation

@better-er

Copy link
Copy Markdown
Owner

问题

暂停态下带图插话时,插件只把草稿文字作为插话放行,图片完全没有进入放行请求。结果是文字先被当插话发走,图片仍留在输入框里,下一次 Enter 才单独发出去;如果只带图不带字,按 Enter 只是继续,图片原样残留。

原因

浏览器侧 release 只读 InputState.draft,忽略 InputState.attachmentIds;主机侧 release 也只接受文字,没有把附件准入成持久引用。RPC 请求体上限还是 8 MiB,带图本身也传不过去。

改动

  • 浏览器侧:放行前用 serializeDraftAttachments 序列化草稿附件,把图片以 base64 随 release 请求提交;放行成功后同时清空草稿与附件,失败则在控件旁显示原因并保持暂停。
  • 主机侧:release 接受图片列表,经 attachments.admitPromptContent 换成持久引用,与文字合成同一条 user 消息并入本次 pre-step。
  • 文件附件暂不支持插话,浏览器侧提前识别并提示移除,避免静默丢失。
  • RPC 请求体上限从 8 MiB 提到 300 MiB,与官方默认一致,并允许测试传入更小的上限。
  • 放行中重复按 Enter 或连点不会重复上传同一批图片。
  • 版本升到 0.1.4,README 同步。

测试

  • pnpm typecheck、pnpm test 38 项全过、pnpm build 通过。
  • 新增用例:带图放行时图片经附件服务准入,并与文字并入同一条消息;非法媒体类型拒绝放行且门保持。
  • 在独立 dsh web 实例上手工验证:暂停后输入文字并附红色方块图,按 Enter,输入框与图片一起清空,会话出现一条图文消息,模型正确回答「红色」。

兼容性

  • 使用 dsh 现有的 attachments.admitPromptContent 与 conversation.serializeDraftAttachments,未改 DSH 源码。
  • 文件附件仍是已知限制,会在控件旁提示。

检查清单

  • 类型检查
  • 单测
  • 构建与产物
  • 手工回归

@better-er
better-er merged commit fd79b1e into main Oct 17, 2026
1 check passed
@better-er
better-er deleted the fix/image-interjection branch October 17, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant