前言¶
在 DSH Web 会话里,平台原生只给插件留了图片通道,普通文件往往只能手打路径或另找变通。对话里要附带日志、配置、截图和代码片段时,输入框和发送链路并不统一,也容易和平台自带的图片处理打架。
下面介绍社区插件 dsh-file-attach(仓库 RCYD857/857-dsh-file-attach,维护者 RCYD857)。它在 Web 作曲器输入框内部增加一行可滚动的「芯片」:拖拽或粘贴文件、文件夹或图片后,芯片显示在文本上方;发送时,非图片文件展开为模型可打开的 @path 引用,图片仍走平台既有图片管线。
这是什么¶
dsh-file-attach 是面向 DSH Web 客户端(--profile web)的插件,当前 package 版本为 0.6.1,许可证 MIT。它不改造输入框为「路径编辑器」:文本框里仍是你键入的内容,附件以芯片形式挂在输入区;发送时由插件包装的 conversation.sendSession 把就绪芯片转成 @path(路径含空格时为 @"path"),已发送消息里 @path 也会渲染成文件引用芯片。
核心功能¶
输入与芯片行¶
| 操作 | 结果 |
|---|---|
| 在页面任意处拖拽文件 | 全屏提示;松手后在输入框内、文本上方出现芯片 |
| 在输入框粘贴文件 | 同上 |
| 拖拽或粘贴图片 | 进入平台图片管线,并在同一芯片行中显示 |
| 点击芯片 | 预览:整图、文本或代码前 200 KiB,或文件元数据 |
| 点击芯片右上角 × | 芯片淡出,发送时不带上 |
| 芯片多于一行宽度 | 行内分页滚动;仍被挡住的端显示浮动箭头,被挡住的芯片在卡片上渐隐 |
| 发送 | 每个就绪芯片展开为对应的 @path |
| 拖拽文件夹 | 解析为文件夹路径,提示中为 @folder/,模型可在目录内列举与读取 |
每条消息最多 20 个附件。芯片展示徽标、文件名,以及 扩展名 · 大小(或当前步骤,如「正在定位…」「正在上传…」)。同名但内容不同的文件会先让你选择再发送。附加失败时可点 附加失败,重新试一次 重试定位或暂存步骤;仍有芯片在解析或待选时按 Enter,提示会点名该附件及原因,芯片保留。
图片与非图片如何到达模型¶
DSH 插件没有通用文件附件 API,插件把职责拆开:
- 图片(
image/*):经conversation.createDraftImages(files)校验并登记,再用会话封面的addImages(ids)提交;必须走平台下发的 id,直接把 File 交给 facade 会在下一轮渲染被丢掉。 - 其它类型:以输入框内卡片存在;发送时在统一的
sendSession出口展开为@path。草稿正文不被改写;发送失败时卡片仍在,可再次发送。
粘贴的位图(如微信、Snipping Tool 截图)按平台方式作为普通图片附件处理;媒体类型优先来自文件本身,其次扩展名,再次文件头。
路径从哪来(按优先级)¶
- 拖拽载荷自带路径:例如资源管理器提供的
text/uri-list,不复制文件。 - 粘贴文件的指纹:无路径时,浏览器对最多 64 MiB 内容算 SHA-256,主机用
POST /file-attach/locate在同名候选中匹配「用户交出的那份」;匹配不到或过大无法哈希则进入后续规则。 - 主机 bounded 搜索:搜索根顺序为当前工作区 → 其它工作区 → 各工作区下的
inbox/input/inputs/drops→Desktop/Documents/Downloads→ 历史命中目录(记在<DSH_HOME>/file-attach-roots.json,最多 24 个)。广度优先、深度 5、整次搜索约 3 秒、最多 2 万条目与 20 个候选;文件夹也可匹配。仍无法唯一定位且内容 genuinely 不同时出现选择器。 - 暂存副本:
POST /file-attach/stage,字节写入<workspace>/.dsh-attachments/<name>;目录自带.gitignore(内容为*),单文件上限 256 MiB。浏览器不暴露拖拽来源时的兜底;同名不同内容会落到name-2.ext等,按字节区分,避免静默覆盖。
工作区外的文件夹若无法解析,会提示改为拖入文件夹内文件。
安装与启用¶
插件无构建步骤,不需要 allowBuilds 审批。官方安装命令如下:
dsh plugin --profile web add github:RCYD857/857-dsh-file-attach
安装后重启 DSH,并对 Web 页做一次硬刷新。卸载:
dsh plugin --profile web remove dsh-file-attach
本地开发可链接源码目录:
dsh plugin --profile web add link:/path/to/dsh-file-attach
文档说明在 DSH Desktop for Windows 上开发与验证;需具备带 Web 客户端的 DSH profile。
典型用法¶
- 在 Web 会话页打开作曲器,将本地文件拖到页面或输入框,或从资源管理器复制后在输入框粘贴。
- 查看芯片上的名称、大小或状态;需要时点击芯片预览,不需要的用 × 移除。
- 输入说明文字后发送;就绪的非图片附件会以
@path进入提示,图片以视觉输入进入模型。 - 若需整目录上下文,可拖拽文件夹;解析成功后发送形式为
@folder/,由模型在目录内操作。
适用场景与注意¶
适合:经常在 DSH Web 里把本地文件、截图、小目录一并交给智能体,且希望交互接近豆包式「输入框内芯片行」的开发者。
注意:
- 仅 Web profile;其它 profile 不在该插件声明范围内。
- 插件与当前 dsh 进程权限 一致,主机端的 locate / stage 会读写工作区与用户目录下的搜索路径;安装前请自行审阅 GitHub 源码 与 MIT 许可证。
- 大文件、无法哈希的粘贴、或搜索超时可能走暂存或需人工选文件;未就绪附件不会被静默丢弃,发送时会有说明。
- 社区目录 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系;DSH 生态以「一切皆插件」为方向,本插件为社区维护项。
结尾¶
dsh-file-attach 把 Web 作曲器里的拖放、粘贴和发送串成一条链路:图片走平台管道,其它文件在输入框内以芯片管理,发送时变为 @path。若你主要在 DSH Web 里做带文件的对话,可按上文命令安装并在 Windows Desktop 环境下验证。
- 目录页:https://www.skillhub.cn/plugins/RCYD857/857-dsh-file-attach
- 仓库:https://github.com/RCYD857/857-dsh-file-attach