在会话输入框添加 📎 选图按钮,通过系统文件选择器选取参考图并注入官方附件管线(缩略图、数量与大小校验、随消息上传),绕开拖拽环境问题。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:liujia-io/dsh-image-picker
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness Web GUI 插件:在会话输入框左侧添加一个 📎 按钮,通过系统文件选择器添加附件。
- 图片(png/jpeg/webp/gif)→ 合成 drop 注入官方附件管线:缩略图 rail、数量/大小校验、随消息上传
- 文本类(
.txt/.md/.markdown/.docx)→ 浏览器读出内容后 POST 到本地服务端暂存,消息里只插入一段极短的"回执"(保存路径 + 字符数 + 预览),正文不进会话上下文,agent 用普通读取工具按需取用
为什么这样设计
- 官方管线是图片专用——非图文件直接报"不支持类型"。文本类走不了上传路径。
- 浏览器 File 对象拿不到真实磁盘路径——"传路径让 agent 自己读"在纯前端走不通:拖拽路径会被浏览器安全策略隐藏,对话框也取不到绝对路径。
- 全文内联会撑爆上下文——几万字直接塞进消息既浪费又容易截断。
于是:脚本把选中文件的内容暂存为 ~/.dsh/picker-attachments/ 下的本地文件,消息里给出绝对路径 + 短预览。浏览器端无法偷懒绕过,但服务端 shell(host 插件)可以——它运行在 dsh web 进程里,有完整文件系统访问权。
.docx 在浏览器内用迷你 ZIP 解析 + DecompressionStream("deflate-raw") 提取正文后再暂存。
容量与安全护栏
| 护栏 | 说明 |
|---|---|
| 单文件暂存上限 | 25 MB(超出返回 413) |
| 文件名 | 自动清洗非法字符并加时间戳前缀,防路径遍历 |
| 暂存目录 | ~/.dsh/picker-attachments/ |
| 降级 | 若暂存接口不可用,自动回退为全文内联(单文件 3 万字符截断) |
工作原理
点击 📎 → <input type="file" multiple>
├─ image/* → DataTransfer + 合成 drop → 官方 ComposerAttachments 接收
└─ 文本/docx → 浏览器读出 → POST /dsh-image-picker/store
→ 落盘 ~/.dsh/picker-attachments/<time>-<name>
→ 插入"回执"(路径+字符数+120字预览)到输入框
投递通道:host 壳(lib/index.js)激活时注册
GET /dsh-image-picker/client.js—— client 脚本,每次请求现读磁盘(改完刷新页面即生效)POST /dsh-image-picker/store—— 文本类附件落盘- 并通过
webServer.tapIndex注入<script defer>标签(whale-widget 同款模式)
client 端是免模块系统的自执行 IIFE,不对 window.__ModuleLoader__ 有任何依赖。
安装(web profile)
dsh plugin --profile web add github:liujia-io/dsh-image-picker
# 重启 dsh web 生效
要求:仓库已声明 dsh.bundle;正在申请收录 awesome-dsh-plugin(PR #3278)。
版本
- 1.2.0 — 文本/docx 改为"暂存为本地文件 + 回执",正文不进上下文;
/store落盘路由;文档类支持 - 1.1.0 — 文本与 docx 内容内联插入草稿;容量护栏;跳过清单
- 1.0.1 — 打包修复:真实的
lib/index.jshost 入口 +"."导出;client 改经 webServer 路由投递 - 1.0.0 — 📎 选图按钮(官方附件管线)
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 8639
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 8639
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 4515
右下角常驻的小鲸鱼挂件:余额、今日已用与每轮对话消耗(含峰谷价),余额预警与今日预算的泡泡内容都可编辑;泡泡点击序列模块化自定义,支持并列加权 A/B、随机台词与随机图片;内置 30+ 厂商模板(OpenAI / OpenRouter / Kimi / 硅基流动 / 方舟 / 智谱 / MiniMax 等),按模型查余额与订阅额度;另有任务结束音效、导入音频、自定义角色与资源管理。数据全在本机,无遥测。
ccch1mneyyy/dsh-TUI★ 4296
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
omdsh-dev/DSH-better-sidebar★ 4116
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1449
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。