dsh-file-bridge:局域网把手机文件送进 DSH 草稿附件栏

前言

在 DSH 里做对话或调试智能体时,附件往往来自本机:截图、日志、文档从资源管理器拖进输入框上方即可。手机上的照片、扫描件或现场拍的图,常见做法是发到微信/邮件再在电脑上保存,或装同步盘、第三方传文件工具,步骤多且容易打断思路。DeepSeek Harness 的插件模型允许在 Host 与浏览器侧扩展能力;dsh-file-bridge 走另一条路:手机浏览器通过局域网 HTTP 上传,内容进入当前会话草稿附件栏,与在电脑上拖文件等价,发送时机和配文仍由你决定。

这是什么

dsh-file-bridge(GitHub:DeadLink233/dsh-file-bridge)由维护者 DeadLink233 发布,在 DSH 插件社区目录中归类为联网工具。一句话定位:在纯局域网内,把手机拍照或选择的任意文件传到当前 DSH 对话输入框上方的草稿附件栏,电脑端无需额外操作接收。

数据路径示意:

手机浏览器 ──HTTP──> 插件自己的局域网端口 ──队列──> DSH 页面轮询 ──> 草稿附件栏

README 注明:除 vendor/QRCode 外,仓库代码、文档、测试与提交信息均由 AI 生成并在真实 DSH 环境中验证;使用前请自行审查代码与备份,按「现状」使用。当前 package 版本为 1.2.0,MIT 许可证。

核心功能

下面介绍 README 中已写明的行为,不含格式转换或云端中转。

  • 拍照与任意文件:支持拍照,也支持 PDF、Office、压缩包、音视频及其他类型;手机端可多选上传。
  • 纯局域网:不经过云端、不依赖手机 App;配对二维码在本地生成,不调用在线二维码服务。
  • 与 DSH GUI 分离:不动 DSH 自带 Web 服务(GUI 仍在回环地址);插件另起传输端口(默认 8787)。
  • 草稿附件语义:文件进入当前会话草稿附件;新建对话尚未发送第一句时,Hero 顶部也有「手机传文件」入口;若文件先到而 Session 尚未就绪,Host 队列会等待,空白 Session 出现后自动注入。
  • 实现形态:无 npm 依赖、无构建步骤;二维码编码器位于 vendor/QRCode(第三方 MIT)。

兼容性:engines.dsh 为 >=0.2.1-rc.2 <0.3.0,README 写明已在 DSH 0.2.1-rc.2 验证;大版本升级后建议按仓库「验证」小节重新测试。

安装与启用

插件以独立仓库形式存在,不依赖 DSH Hub 是否收录。安装命令须以 README 为准。

从 GitHub 安装(推荐)

固定到某个 commit,避免默认分支后续变动:

dsh plugin --profile <profile> add github:DeadLink233/dsh-file-bridge#<commit-sha>

也可在 DSH 侧边栏 Plugins → Add plugin 填写 GitHub 仓库地址。

从 npm 安装(发布后)

dsh plugin --profile <profile> add dsh-file-bridge

从 DSH Hub 安装(可选)

DSH Hub(例如目录页 https://www.skillhub.cn/plugins/DeadLink233/dsh-file-bridge)是社区维护的插件索引,与 DeepSeek / 幻方无官方从属关系;是否收录不影响 GitHub 或 npm 安装。

本地目录安装

  1. 将仓库源码解压或放到本地,得到 dsh-file-bridge/ 文件夹。
  2. DSH → Plugins → Add plugin。
  3. 填入文件夹绝对路径,不要填 zip 路径。
  4. 确认插件行为为 applied、开关为开。

首次监听时若系统弹出防火墙提示,请允许专用网络 / 本地网络入站,否则手机无法连接。

可选配置写在 cordis.patch.yml 对应插件行的 config 下,字段均可选:

- insert:
    - id: photo-bridge
      name: 'dsh-file-bridge'
      config:
        port: 8787
        # bind: 192.168.1.5
        # maxBytes: 20971520
        # keepFiles: true
        # retentionHours: 72
        # token: '0123456789abcdef0123456789abcdef'
字段 默认 说明
port 8787 传输端口;占用时插件启用失败并报错
bind 自动探测 只绑定具体网卡 IPv4;拒绝 0.0.0.0 / ::
token 自动生成 16–64 位十六进制,持久化于 state
maxBytes 20971520 单文件上限 20 MB,可调至约 200 MB
keepFiles true ack 后是否保留原文件到 kept/
retentionHours 72 超时从队列与 inbox 清理

典型用法

先做配对,再在手机上传,最后回到电脑确认附件。

  1. 点开 手机传文件(普通会话在输入框下方;新对话在 Hero 顶部)。
  2. 手机与电脑连接同一 Wi-Fi,用手机相机扫描面板二维码(打不开时用「复制链接」)。
  3. iOS / Android 可将页面「添加到主屏幕」,下次从图标进入。
  4. 在手机上点 拍照,或点 文件 多选上传;看到「电脑已收到」即可。
  5. 回到 DSH:附件已在输入框上方附件栏,输入问题后发送。

配对 URL 含 token;token 保存在本机 DSH home 的 photo-bridge/state.json。卸载插件不会自动删 token;要轮换 token,删除该 state.json 后重启 DSH,旧链接立即失效。

数据目录(Windows 多为 %USERPROFILE%\.dsh\photo-bridge\,macOS / Linux 多为 ~/.dsh/photo-bridge/):

  • state.json:配对状态
  • inbox/:尚未被 DSH 收走的文件
  • kept/:已收走但保留的原文件

适用场景与注意

适合谁:经常在 DSH 里贴图、贴文档,且素材先在手机上产生;希望同一 Wi-Fi 内完成传输、不装额外 App、不把 DSH 主 GUI 暴露到局域网的用户。

权限与边界(安装前请确认):

  • 在指定网卡上监听 HTTP 端口,供手机页面上传;通过 DSH 回环 API 注册 /photo-bridge/* 路由,由浏览器半轮询并注入草稿。
  • 在本机 <DSH home>/photo-bridge/ 写入状态与文件;手机端仅用 <input type="file"> 与 capture,不调用 getUserMedia,不扫描手机文件系统。
  • 插件以当前 DSH 进程权限运行;README 声明无 postinstall 等安装生命周期脚本,但仍应在安装前阅读源码与 MIT 许可证,自行评估风险。

已知限制(摘自 README):

  • 附件能否被模型读取 PDF/Office/HEIC 等,取决于 DSH 附件管线与模型能力,本插件不做转码。
  • 不同网段、路由器 AP 隔离会导致连不上;可改用电脑热点。
  • 微信等内置浏览器可能忽略 capture;需「在浏览器打开」或使用 Safari / Chrome。
  • 同一 Wi-Fi 下持有配对链接者可向你的草稿塞文件;链接泄露时删除 state.json 换 token。

卸载:在 Plugins 关闭并移除插件;传输端口随卸载或重启释放;photo-bridge/ 目录需手动删除若不再需要历史文件。

结尾

dsh-file-bridge 把「手机上的文件」和「DSH 当前会话草稿附件」用局域网队列接起来:电脑不用开接收窗口,也不把对话 GUI 绑到公网。查阅细节与 commit 固定安装方式见 GitHub 仓库 DeadLink233/dsh-file-bridge;社区目录页 skillhub.cn/plugins/DeadLink233/dsh-file-bridge 便于检索,安装仍以 README 命令为准。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye