Back to home@liujia-io

dsh-image-picker

No description

Stars
0
Language
JavaScript
Created
Aug 26, 2026
Updated
Aug 26, 2026
GitHub repo

Introduction

dsh-image-picker

DeepSeek Harness Web GUI 插件:在会话输入框左侧添加一个 📎 按钮,通过系统文件选择器选择图片并注入官方附件管线。

为什么需要它

官方附件链路(dsh-client-ui-attachment)支持拖拽与粘贴,但在部分 Windows 环境下,从资源管理器/云盘客户端拖文件进浏览器会静默失败(常见根因:浏览器以管理员身份运行而资源管理器不是,UIPI 完整性级别不一致;云盘占位文件;嵌入式 webview)。文件选择器对话框不经过任何拖拽通道,不受这些环境问题影响。

工作原理

点击 📎 → <input type="file" accept="image/*" multiple>
       → 构造 DataTransfer(含 Files)
       → 在 [data-composer-card] 派发合成 dragenter/dragover/drop
       → 官方 ComposerAttachments 的 document 级监听器接收
       → onAddImages → intakeImages(数量/大小校验)→ 缩略图 rail
       → 随消息一起上传

完全复用官方管线,无自建上传逻辑。

安装(web profile)

# 1. 放置或克隆本包,然后在 profile 目录:
cd ~/.dsh/profiles/web
pnpm add file:H:/dw/dsh-image-picker   # 或 git 仓库地址

# 2. 编辑 ~/.dsh/profiles/web/package.json,在 dsh.profile.bundles 数组加入 "dsh-image-picker"

# 3. 重启 dsh web

重启前想立即生效:把一段临时 shim 追加进任一已加载插件的 client.js(如 dsh-cost-meter)。注意模块系统按启动清单物化插件,追加的独立 load() 调用不会被执行——shim 必须用纯 DOM 注入(MutationObserver 找 [data-composer-card],把按钮插到原生"+"按钮旁),不能走插槽 API。代码带 .dip-btn 存在性检查与 window.__DSH_IMAGE_PICKER__ 门控,与正式包并存时只渲染一个按钮;下次重启后删除该 shim 段即可。

临时 shim 状态

2026-08-24 已将 v3 DOM 注入 shim 追加到 ~/.dsh/profiles/web/node_modules/dsh-cost-meter/lib/client.js 尾部(标记:/* ==== dsh-image-picker TEMPORARY SHIM (v3)),当前无需重启即可使用。服务器下次重启后本插件正式生效,届时可删除该 shim 段。

字段

  • 插槽:conversation.input.left(输入卡片左下角,"+"按钮旁)
  • 接受类型:image/png、image/jpeg、image/webp、image/gif