🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

交付卡片下载 hanbernate/dsh-save-button

DeepSeek Harness
hanbernate25 天前有提交已提供中文文档扫描:未发现敏感能力

在交付卡片上加下载按钮,文件直存本机

29.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add hanbernate/dsh-save-button
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · browser
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 25 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 4 处,展示前 4 条)
  • 发起网络请求
    lib/client.js:619
    fetch(HOST_PATH, { headers: { accept: 'application/json' } })
  • 发起网络请求
    lib/client.js:654
    const response = await fetch(url, { method: 'HEAD' })
  • 发起网络请求
    lib/client.js:667
    const response = await fetch(openUrlOf(sessionId, file, action), { method: 'POST' })
  • 发起网络请求
    lib/client.js:746
    fetch(url, { method: 'HEAD' })
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

给 DSH 交付卡片加上下载按钮,用 present 交付的文件直接在浏览器里保存。

README

由 DeepSeek 最新模型翻译生成
dsh-save-button 在 DSH Web GUI 的交付卡片上,给「打开」按钮右边加一个「下载」按钮:模型用 present 交付的文件(打包好的 zip、报告、数据集、图片……)直接通过浏览器下载到本机,不用再开 SFTP/SCP 拉文件。 ┌──────────────────────────────────────────────────────────────────┐ │ 📄 HexHowitzer-windows-x86_64.zip ┌────────┐ │ │ 在侧边栏预览 │ 打开 ▾ │ │ ← 官方卡片 │ └────────┘ │ └──────────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────────┐ │ 📄 HexHowitzer-windows-x86_64.zip ┌────────┐ ┌──────┐ │ │ 在侧边栏预览 │ 打开 ▾ │ │ ⬇ 下载│ │ ← 装上本插件 │ └────────┘ └──────┘ │ └──────────────────────────────────────────────────────
展开完整文档(README 剩余 1 节)
dsh-save-button

在 DSH Web GUI 的交付卡片上,给「打开」按钮右边加一个「下载」按钮:模型用 present 交付的文件(打包好的 zip、报告、数据集、图片……)直接通过浏览器下载到本机,不用再开 SFTP/SCP 拉文件。

┌──────────────────────────────────────────────────────────────────┐
│ 📄 HexHowitzer-windows-x86_64.zip ┌────────┐ │
│ 在侧边栏预览 │ 打开 ▾ │ │ ← 官方卡片 │ └────────┘ │ └──────────────────────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────────────────────┐ │ 📄 HexHowitzer-windows-x86_64.zip ┌────────┐ ┌──────┐ │ │ 在侧边栏预览 │ 打开 ▾ │ │ ⬇ 下载│ │ ← 装上本插件 │ └────────┘ └──────┘ │ └──────────────────────────────────────────────────────────────────┘

远程/容器里跑 DSH(云主机、GPU 机器、WSL、内网服务器)时最有用:文件在 Host 上,浏览器在你手上,中间只差一个按钮。

功能

- 交付卡片一键下载:present 声明的每个文件右边都有「下载」,走 Content-Disposition: attachment,由浏览器自己的下载管理器流式落盘——几十上百 MB 的 zip 不会先塞进页面内存。
- 官方卡片能力保留:点卡片/「打开」在侧边栏预览;右侧 ▾ 仍是官方的「用默认应用打开」「打开所在文件夹 / 在 Finder 中显示 / 在文件资源管理器中显示」,主机没有桌面时按官方语义禁用并提示。
- 状态就地反馈:正在准备下载… / 已开始下载 / 下载失败,点击重试;打开、打开所在文件夹同样有状态与重试。
- 不干扰官方渲染:本轮文件改动 chips、多文件折叠(全部 N 个文件 / 收起)等官方行为照旧;插件的回合没有交付产物时,官方那一行完全不受影响。
- 零依赖、零构建:纯 ESM + 手写浏览器 bundle,装完即用;没有 postinstall、没有编译步骤。
- 中英双语:跟随 GUI 语言。
- 同时兼容 DSH 0.1.5-rc.\、0.1.7-rc.\ 与 0.2.0-rc.\*:见下方「支持的 DSH 版本」。

安装

从 npm 装进 web profile:

dsh plugin --profile web add dsh-save-button

也可以直接装 git 仓库——本包无构建步骤,lib/ 已提交:

dsh plugin --profile web add github:hanbernate/dsh-save-button

本地开发时改为链接本目录,改动后 Host 半区随 Loader 热重组合生效:

dsh plugin --profile web add /path/to/dsh-save-button

dsh 不在 PATH 上时,用你启动 Web GUI 的那份 CLI,例如:

node ~/.dsh/profiles/node_modules/@deepseek-ai/dsh/lib/bin.js \
plugin --profile web add dsh-save-button

这条命令把 dsh-save-button 追加到 profile 的 dsh.profile.bundles,并由 Loader 插入本包 cordis.patch.yml 里的那条 entry。

生效方式:

- 装完 刷新浏览器页面(浏览器半区是页面加载的 bundle,刷新才会重新拉取)。
- 若刷新后没出现按钮,重启 Web GUI:dsh web(或你平时的启动命令)。

验证:随便让它 present 一个文件(例如先 ls 出你打包好的 zip),卡片右侧就会出现「下载」。

使用

按钮长在官方交付卡片的「打开」右侧,一文件一个:

| 操作 | 行为 |
| 下载 | 先 HEAD /api/download.button?sessionId=…&seq=…&index=… 探测可下载性,成功后用 把文件交给浏览器下载管理器;文件名由 Host 的 Content-Disposition 决定 |
| 打开 | 与官方一致:在侧边栏预览该文件 |
| ▾ 菜单 | 官方动作:用默认应用打开 / 打开所在文件夹(Finder / 资源管理器);主机无桌面时禁用 |
| 失败 | 就地显示失败原因(如「该文件已不在会话中」),点击原按钮重试 |
| 多于 4 个文件 | 保留官方折叠:全部 N 个文件 / 收起 |

下载只接受 (sessionId, seq, index) 三元组寻址,没有 path 参数,因此只有该会话用 present 声明过的文件能被下载;解析、越界与类型校验、分块读取全在 Host 半区。详见 doc/architecture.md。

支持的 DSH 版本

| DSH RC | turnTail 契约 | 集成方式 | 状态 |
| 0.1.0-rc.2 … 0.1.2-rc.1 | —(无 present / workspaceFiles) | 不适用 | 不支持 |
| 0.1.5-rc.1 / rc.2 / rc.3 | chain | 按 priority: -1 认领整行并自绘卡片 | 支持(rc.3 实测 11/11) |
| 0.1.7-rc.1 / rc.2 | list | 官方卡片原样,注入 deliverables.file.actions 下载按钮 | 支持(rc.2 实测 12/12) |
| 0.2.0-rc.1 / rc.2 | list | 同 0.1.7:官方卡片原样,注入 deliverables.file.actions 下载按钮 | 支持(rc.2 实测 12/12) |

插件在初始化时按运行时实际声明选择适配器(客户端拿不到 DSH 版本号),所以同一份安装包在所有这些线上都工作。
契约清单、测试分层、逐项实测记录与换线手册见 doc/compatibility.md。

卸载

dsh plugin --profile web remove dsh-save-button

然后刷新页面。插件被移除后,官方交付卡片原样恢复——本插件不修改任何官方文件。

故障排查

| 现象 | 处理 |
| 卡片右侧没有「下载」 | 先刷新页面;再确认 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 里有 dsh-save-button;仍无效则重启 dsh web |
| 按钮出现,点了提示「下载失败,点击重试」 | 打开浏览器开发者工具看 /api/download.button?... 的响应:401/403 = 认证,404 = 该声明不在 Session 里(换了会话或事件被裁剪),422 = 不是常规文件/在工作区之外 |
| 点「打开」报「打开失败」 | Host 无桌面(纯服务器)时的正常结果;用「下载」或侧边栏预览 |
| 报 exports["./client"] must be a string | package.json 的 exports 被改坏了,跑 npm test 看守卫 |
| 改了 lib/client.js 没生效 | 刷新页面(bundle 由 Host 按 revision 提供,页面不刷新不会重拉) |

文档

| 文档 | 内容 |
| doc/architecture.md | 工作原理、两个半区、适配器与能力探测选择器、图标能力表、安全边界、设计决策记录 |
| doc/compatibility.md | 支持矩阵、官方契约面清单(C1–C10)、两个断点的历史、测试分层与用例、真机实测记录(V1–V23)、换线手册 |
| doc/development.md | 目录结构、跑测试、改完怎么生效、新增适配器的步骤、发布前检查清单、开发陷阱 |

License

MIT,见 LICENSE。
预览分享卡片长什么样 ↓hanbernate/dsh-save-button
分享 · DeepSeek Harness Hub
hanbernate/dsh-save-button

在交付卡片上加下载按钮,文件直存本机

这是你的仓库?认领条目

回到顶部