LQ-1123/paste-to-workspace
DSH插件:将粘贴或拖入聊天框的图片及任意文件保存为会话工作区文件。官方bundle插件,安装:dsh plugin --profile web add github:LQ-1123/paste-to-workspace
项目介绍Project Overview
paste-to-workspace 是 DSH 的 Web 端插件,把拖入或粘贴的图片与任意文件保存到会话工作区 .dsh-paste/,发送时以 [Image: source: <路径>] 或 [File: source: <路径>] 注入消息(图片由 modlens 读图,其他文件由模型按路径读取),输入框保持干净,预览条与气泡内渲染缩略图或文件卡片。适合在聊天中频繁附带本地截图、PDF、压缩包等任意文件而不想污染草稿时使用。注意:单文件约 24 MB 上限,文件 30 天后自动清理,过期后历史卡片下载会 404。
paste-to-workspace is a DSH web plugin that saves dragged or pasted images and arbitrary files to a session workspace folder .dsh-paste/. On send, it injects [Image: source: <path>] or [File: source: <path>] tokens into the message—modlens reads images, while the model reads other files by path. The input box stays clean, and the preview bar and chat bubbles render thumbnails or file cards. Use it when you frequently attach local screenshots, PDFs, archives, or any files to chat without cluttering the draft. Note: roughly 24 MB per-file limit; files auto-clean after 30 days, so older history cards may return 404 on download.
请帮我了解并安装插件:【paste-to-workspace】【https://github.com/LQ-1123/paste-to-workspace】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add "github:LQ-1123/paste-to-workspace"
把 LQ-1123/paste-to-workspace 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
paste-to-workspace
把粘贴或拖入聊天框的图片与任意文件保存为会话工作区文件,发送时以
[Image: source: <绝对路径>] / [File: source: <绝对路径>] 文本注入消息——
图片由 modlens 读图,其他文件由模型按路径直接读取。输入框保持干净,预览条
与对话气泡内直接渲染缩略图 / 文件卡片。
✨ 功能一览
- 🖼️ 任意文件拖放:从 Finder / 微信 / QQ / 网页把任意类型文件拖到窗口
任意位置即保存到工作区
.dsh-paste/,进入待发预览条(纯文本/链接拖放仍走 原生行为) - 📋 图片粘贴:Cmd/ctrl+V 粘贴截图/图片同样进入待发列表
- 🎨 类型图标渲染:图片显示缩略图;其他文件显示 RemixIcon line 图标 + 原始文件名 + 大小(PDF/Word/Excel/PPT/TXT/Markdown/压缩包/音视频/代码/ 字体/电子书等 15 组),未知格式用代码图标兜底,样式随浅/深主题
- ⬇️ 点击即下载:点文件卡片唤起浏览器另存为(保留原始文件名),不再打开 预览页
- 🚀 纯文件发送:只上传文件、不输入任何文字也能发送(Enter 或发送按钮 均可),一次调用 = 一个回合,文字与文件不拆消息
- 🧵 一回合双气泡:文字留在原气泡、图片/文件卡片移到独立用户行(显示层 拆分,模型侧始终是一条消息)
- 🌓 主题适配:卡片底色/边框/文字/图标全部走宿主设计 token,深浅主题 自动切换
- ✏️ 官方提示文案改写:拖放时宿主全页提示"图片拖动到此处即可添加"自动 改写为"文件拖动到此处即可添加",限制行替换为任意文件说明
- 🧹 30 天自动清理:超期文件自动清扫(只动插件自己的
pasted-*文件)
🚀 安装
前置:已装好 DSH(dsh web 可正常运行),dsh plugin 可用(依赖 pnpm)。
从 GitHub 安装(推荐,一行命令,产物已入库无需构建):
dsh plugin --profile web add "github:LQ-1123/paste-to-workspace"
# 验证 bundle 已挂载
dsh --profile web --dump-config | grep paste-to-workspace
也可以本地路径(开发调试时)或 npm 包名安装:
dsh plugin --profile web add /path/to/paste-to-workspace
安装后重启 dsh web 生效:宿主在进程启动时通过 package.json 的
dsh.client 声明发现浏览器端 bundle,浏览器端无需额外配置。
禁用与重新启用
在 Profile patch 或 overlay 中把 bundle 行设为 disabled: true:
- id: paste-to-workspace
disabled: true
删除该字段或设为 false 即可重新启用。
卸载
dsh plugin --profile web remove @dsh-user/paste-to-workspace
📖 使用
重启 GUI 后:
- 拖入任意文件(.txt / .md / .pdf / .doc / .zip …)或粘贴图片:输入框 上方出现预览条——图片为缩略图、其他文件为图标卡片(点击卡片下载、 点灰色 × 移除);
- 发送(Enter 或发送按钮,不输入文字也可以):一次回合——有文字时 显示两个气泡(文字一条、媒体一条),纯文件只有一条;
- 模型侧收到
[Image: source: /Users/.../.dsh-paste/pasted-*.png](modlens 自动读图)或[File: source: /Users/.../pasted-*.txt](模型按路径读取 文件内容); - 文件落在工作区
.dsh-paste/目录,历史消息里点击文件卡片可随时重新下载。
🧩 工作原理
- 浏览器侧(
lib/client.js):捕获阶段拦截图片粘贴与任意文件拖放 → POST 到宿主路由 → 路径进入旁路待发列表(草稿零改动);conversation.input.dock预览条渲染待发项;发送时包装sendSession把 路径拼成 token 追加到消息(一次调用 = 一个回合);MutationObserver 把 已发送消息里的 token 显示层替换为图片/文件卡片并拆成两个气泡;拖放期间 改写宿主"图片…"提示文案。 - 宿主侧(
lib/index.js):POST /save保存任意类型文件到<会话工作区>/.dsh-paste/pasted-<时间戳>-<随机>.<扩展名>(扩展名取自原始 文件名,无扩展名文件按原名保存);GET /file?path=…[&meta=1]回读文件 / 返回原始文件名与大小;DELETE /file?path=…移除未发送文件。路径校验严格 (必须位于已知粘贴根目录内且匹配插件命名格式),跨站请求 403。
⚠️ 已知限制
- 粘贴(Cmd+V)只拦截聊天输入框内的图片;文件请用拖放
- 不支持拖入文件夹(请打包成 zip 再拖)
- 单文件上限约 24 MB(base64 后 32 MB JSON 体)
- 发送过的文件在
.dsh-paste/保留 30 天后自动清理,历史卡片点击下载可能 404(预期行为) - 待发文件是全局列表:未发送前切换会话,文件会跟着下一次发送走
- 拖放提示文案改写仅作用于拖放进行时;宿主 UI 若有其他"图片"字样不在本 插件职责范围
📜 许可
MIT。文件图标来自 RemixIcon(Apache-2.0),path 数据 内嵌于客户端 bundle。
🕒 更新历史
- v0.8.1:官方拖放提示"图片"→"文件"运行时改写;限制行替换为任意文件说明
- v0.8.0:点击文件卡片直接下载(保留原始文件名);图片缩略图仍为预览
- v0.7.9:纯文件发送(空草稿占位符保持发送按钮可用,Enter/按钮均可)
- v0.7.8:移除按钮改灰色 ×、置于卡片内部,卡片加高至 48px
- v0.7.7:修复
.ts被解析为视频的冲突(TypeScript 优先) - v0.7.6:中性单色图标(随主题),未知格式改用代码图标兜底
- v0.7.5:改用 RemixIcon line 图标(内嵌 SVG,无网络依赖)
- v0.7.4:全格式覆盖,无扩展名文件按原名保存
- v0.7.3:图标瓦片加宽(更"胖")
- v0.7.2:文件卡片/图标紧凑化
- v0.7.1:样式随宿主主题 token 切换
- v0.7.0:拖放支持所有文件类型 + 文件图标渲染
- v0.6.x:30 天自动清理、串行保存、流式输出、拖放接管全局化
- v0.3 ~ v0.5:输入框保持干净、缩略图预览条、一回合双气泡
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS