dsh-attachment-panel:DSH 投送面板与附件索引

前言

在 DeepSeek Harness(DSH)里和 agent 协作时,图片和文件会进内容寻址存储,原名只留在会话日志里;用 @ 引过的本机路径也散在消息文本中,过几天很难再找。若你还用 Tailscale Taildrop 在设备间传文件,macOS 上官方几乎没有图形界面,发完也没有统一记录,接收侧文件还可能混在 ~/Downloads 里。下面介绍社区插件 dsh-attachment-panel(维护者 ysqp6-lang,分类:客户端):把发给 DSH 的附件、@ 引用路径、Taildrop 投送与接收按设备与时间列在一起,并可在面板内直接选设备发文件。

这是什么

dsh-attachment-panel 是一个 DSH Web 插件(npm 包名 dsh-attachment-panel,当前版本 0.6.0,MIT 许可证)。它在 DSH 宿主 webServer 上注册同源路由 /dsh-ap,不新起服务、不占新端口,零第三方依赖。侧栏「新会话」下方会出现「投送记录」入口;也可在 loopback 打开 http://127.0.0.1:19387/dsh-ap,用 ?scope=file|send|recv 等参数直达某个标签。README 写明 macOS 优先(补 macOS Tailscale 缺少 Taildrop 图形界面的缺口);Linux / Windows 上部分能力会降级,见下文平台支持。

它补的四个洞

  1. macOS 没有 Taildrop 图形界面,终端 tailscale file cp 发完无面板级记录。
  2. DSH 附件实体以 sha256 存盘,原名需回会话翻找。
  3. @ 引用路径只存在于当时那条消息里。
  4. 其他设备 Taildrop 投来的文件落在下载目录,来源不易区分。

核心功能

面板共五个标签,搜索对全部标签生效(文件名、会话名、目录、扩展名、类型词等)。

标签 内容 常见操作
图片 发给 DSH 的图片附件(按天、时间倒序) 大图、翻页、文件管理器定位、复制路径
文件 @ 引用过的本机路径 定位、复制、默认程序打开
投送 Taildrop 发出记录(按目标设备分组) 设备筛选、+ 投送文件
接收 Taildrop 收件相关 inbox 收下、定位、打开
工具图片 DSH 产出或读到的图(截图、预览等) 同「图片」

投送:点 + 投送文件 → 选设备(读 tailscale debug localapi file-targets,离线置灰)→ 多选文件 → 带进度上传 → 宿主临时目录 → tailscale file cp → 清理临时文件。成功记录写入 ~/.dsh/attachments/v1/panel-sends.jsonl 并进入索引。单文件软上限 2 GB(SEND_MAX_BYTES,非 Tailscale 官方限制)。

接收:macOS 上区分「待接收」(/Library/Tailscale/incoming-files/,可执行等价于 tailscale file get ~/Downloads 的收下)与「疑似收到」(~/Downloads 近 14 天内无浏览器/App xattr 标记的文件,启发式,README 说明无法 100% 确认)。Linux / Windows 跳过疑似过滤,主要列待接收。

索引数据来自会话 session.v4.jsonl.zstd、附件目录 ~/.dsh/attachments/v1/objects/、投送相关的 tool/call 与 panel-sends.jsonl;缓存 panel-index.json、缩略图目录可删后重建。

安装与启用

官方 CLI 安装(会挂 bundle 进 profile):

dsh plugin --profile desktop add dsh-attachment-panel

也可手动把包 link 进 profile 的 dependencies,并在 dsh.profile.bundles 中加入 dsh-attachment-panel(插件自带 cordis.patch.yml 可自动 insert)。装完重启 DSH 后侧栏出现「投送记录」。

卸载:从 profile 的 dependencies 与 dsh.profile.bundles 移除,或执行 dsh plugin remove。

开发注意:改 lib/client.js 或 lib/panel.html 刷新页面即可;改 lib/index.js(宿主)需重启 DSH。

典型用法

  1. 日常在 DSH 里发图、用 @/path 引用文件,打开「投送记录」按天或搜索找回,不必滚会话。
  2. 在「投送」标签用 + 投送文件 向在线 Tailscale 设备传文件,历史与 agent 执行过的 tailscale file cp 一并索引(终端手动 cp 不进 DSH 历史)。
  3. macOS 在「接收」处理 inbox 与疑似 Taildrop 文件;需要更准时 README 建议调整 Taildrop 落点/流程走 inbox。
  4. 深链:http://127.0.0.1:19387/dsh-ap?scope=send 等直达标签。

宿主提供 REST API(前缀 /dsh-ap/api/),包括 index、thumb、raw、targets、send、received、receive-pull、reveal、reveal-path、open-path、health 等,详见仓库 README「路由」一节。

平台支持与限制

能力 macOS Linux Windows
附件/文件/投送历史/UI 支持 支持 支持
缩略图 sips 回落原图 回落原图
Taildrop 发收 支持 支持(inbox 路径不同) 支持

环境变量 DSH_TAILDROP_TAILSCALE 可指定 tailscale 可执行文件路径。

务必了解:Taildrop 仍为 alpha;协议无回执,面板无法确认对方是否收到;tagged 节点限制等以 Tailscale Taildrop 文档 为准。插件路由仅 loopback,文件 reveal/open 走白名单;投送目标仅限 file-targets 返回的设备名。插件以当前 DSH 进程权限运行,安装前请自行查看源码与 MIT 许可证。

Node 引擎要求 >=22.19,peer 依赖 @deepseek-ai/cordis ^4.0.4。仓库提供 npm test(test/smoke.mjs)做本地冒烟。

结尾

dsh-attachment-panel 把 DSH 附件、@ 路径与 Taildrop 投送收拢到同一面板,适合经常在 Harness 里传文件、跨设备 Taildrop、又需要可追溯列表的开发者。DSH 生态强调「一切皆插件」;社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

  • 目录页:https://www.skillhub.cn/plugins/ysqp6-lang/dsh-attachment-panel
  • GitHub:https://github.com/ysqp6-lang/dsh-attachment-panel
羽毛球分组比赛记分
小程序二维码

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

Xiaoye