dsh-file-attach:在 DSH Web 输入框内用芯片附加文件并发送 @path

前言

在 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,插件把职责拆开:

  1. 图片(image/*):经 conversation.createDraftImages(files) 校验并登记,再用会话封面的 addImages(ids) 提交;必须走平台下发的 id,直接把 File 交给 facade 会在下一轮渲染被丢掉。
  2. 其它类型:以输入框内卡片存在;发送时在统一的 sendSession 出口展开为 @path。草稿正文不被改写;发送失败时卡片仍在,可再次发送。

粘贴的位图(如微信、Snipping Tool 截图)按平台方式作为普通图片附件处理;媒体类型优先来自文件本身,其次扩展名,再次文件头。

路径从哪来(按优先级)

  1. 拖拽载荷自带路径:例如资源管理器提供的 text/uri-list,不复制文件。
  2. 粘贴文件的指纹:无路径时,浏览器对最多 64 MiB 内容算 SHA-256,主机用 POST /file-attach/locate 在同名候选中匹配「用户交出的那份」;匹配不到或过大无法哈希则进入后续规则。
  3. 主机 bounded 搜索:搜索根顺序为当前工作区 → 其它工作区 → 各工作区下的 inbox / input / inputs / drops → Desktop / Documents / Downloads → 历史命中目录(记在 <DSH_HOME>/file-attach-roots.json,最多 24 个)。广度优先、深度 5、整次搜索约 3 秒、最多 2 万条目与 20 个候选;文件夹也可匹配。仍无法唯一定位且内容 genuinely 不同时出现选择器。
  4. 暂存副本: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。

典型用法

  1. 在 Web 会话页打开作曲器,将本地文件拖到页面或输入框,或从资源管理器复制后在输入框粘贴。
  2. 查看芯片上的名称、大小或状态;需要时点击芯片预览,不需要的用 × 移除。
  3. 输入说明文字后发送;就绪的非图片附件会以 @path 进入提示,图片以视觉输入进入模型。
  4. 若需整目录上下文,可拖拽文件夹;解析成功后发送形式为 @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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye