在浏览器里直接下载 Agent 交付的文件
29.3/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/lanyunshijian/dsh-file-download.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 下载Agent交付文件
README
由 DeepSeek 最新模型翻译生成dsh-file-download
在 DSH 的 Web 界面里直接下载 Agent 交付的文件。
为什么需要它
DSH 的 Web 界面本来只能在宿主机桌面上打开交付的文件。当宿主是一台云端服务器时,这个功能正好是最没用的——你根本没有本地文件夹可以打开。dsh-file-download 补上的就是这个缺口:改为让浏览器下载文件。
插件会列出当前会话中 Agent 通过 present 工具声明的所有文件,并把单个文件、或者全部文件打包成的一个 ZIP,交给浏览器自己的下载管理器。整个过程中文件字节不经过 JavaScript 内存,因此大文件也能直接流式下载。
使用方法
1. 把 bundle 安装进某个 profile(见下方“安装”)。
2. 在 Web 界面打开一个会话,然后刷新页面。
3. 会话标题栏会出现下载交付文件按钮,并带一个数量角标。点开后可以看到已声明的文件、文件大小与描述。
4. 点单个文件的下载,或者在有多个文件时点打包下载全部。
只有当 Agent 用 present 声明过文件时,面板里才有内容;从未声明过文件的会话会显示空状态提示。
展开完整文档(README 剩余 1 节)
dsh-file-download
在 DSH 的 Web 界面里直接下载 Agent 交付的文件。
为什么需要它
DSH 的 Web 界面本来只能在宿主机桌面上打开交付的文件。当宿主是一台云端服务器时,这个功能正好是最没用的——你根本没有本地文件夹可以打开。dsh-file-download 补上的就是这个缺口:改为让浏览器下载文件。
插件会列出当前会话中 Agent 通过 present 工具声明的所有文件,并把单个文件、或者全部文件打包成的一个 ZIP,交给浏览器自己的下载管理器。整个过程中文件字节不经过 JavaScript 内存,因此大文件也能直接流式下载。
使用方法
1. 把 bundle 安装进某个 profile(见下方“安装”)。
2. 在 Web 界面打开一个会话,然后刷新页面。
3. 会话标题栏会出现下载交付文件按钮,并带一个数量角标。点开后可以看到已声明的文件、文件大小与描述。
4. 点单个文件的下载,或者在有多个文件时点打包下载全部。
只有当 Agent 用 present 声明过文件时,面板里才有内容;从未声明过文件的会话会显示空状态提示。
安装
从 npm 安装
dsh plugin --profile web add dsh-file-download
或从本地目录安装
dsh plugin --profile web add /path/to/dsh-file-download
除 Node 内置模块外,本插件没有任何运行时依赖,因此安装不需要构建步骤,也不需要联网拉包。
路由
插件在 Connection 的 /api 认证围栏内注册三个路由,因此自动继承浏览器 Cookie 认证与 Host/Origin 信任校验。另有一个不认证的探活路由。
| 路由 | 用途 |
| GET /api/dsh-file-download.list?sessionId= | JSON 列表:声明路径、文件名、大小、描述,以及 missing 标记 |
| GET\|HEAD /api/dsh-file-download.file?sessionId=&seq=&index= | 以附件形式下载单个已声明文件 |
| GET\|HEAD /api/dsh-file-download.bundle?sessionId= | 把所有可读的已声明文件打包为一个 ZIP |
| GET /dsh-file-download/health | 部署探活:{ ok: true, plugin, version },不涉及任何会话数据 |
安全性质
- 只认坐标,不认路径。 浏览器从不发送文件系统路径,只发送 present 事件坐标(seq + index)。宿主重新读取会话日志、还原声明路径、经组合文件系统解析后再打开文件。
因此无法请求任意路径。
- 响应不泄露宿主路径。 列表只包含声明路径、文件名、大小与描述。
- 下载一律作为附件。 Content-Disposition 同时给出 ASCII 回退名与 RFC 5987 的 filename*,非 ASCII 文件名在所有浏览器都能正确落地;响应带 x-content-type-options: nosniff。
- 单文件下载不设置 Content-Length。 交付文件可能在 stat 与流式发送之间被改动,长度过期会让浏览器一直等待,因此改用分块传输。
- 压缩包条目名经过净化。 去除穿越段、绝对根与控制字符,重名自动加序号后缀。
- 零依赖。 ZIP 写入器仅基于 node:zlib,因此即使 profile 里没有装归档库也能运行。
限制
- 列表来自会话日志里的 present 声明;Agent 写过但没有声明的文件不会出现。
- 单个文件达到或超过 4 GiB、归档达到或超过 4 GiB、或条目数超过 65535 时会明确报错:本写入器不实现 Zip64。
- 下载内容与 Agent 留下的内容逐字节一致,插件不做任何转码或重新编码。
目录结构
| 路径 | 作用 |
| lib/index.js | 宿主半:路由注册、读会话日志、流式发送文件 |
| lib/zip.js | 无依赖的流式 ZIP 写入器 |
| lib/client.js | 浏览器半:标题栏控件、列表面板、下载交接 |
| cordis.patch.yml | bundle 补丁,把插件行插入 profile |
| test/host.test.mjs | 行为测试(路由、响应头、归档合法性) |
| PUBLISHING.md | 发布清单与社区提交指南 |
| CHANGELOG.md | 版本变更记录 |
| evidence/ | 本次构建的验证报告与原始日志 |
| .github/workflows/test.yml | CI:语法检查、行为测试、打包冒烟 |
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
lanyunshijian/dsh-file-download
在浏览器里直接下载 Agent 交付的文件
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。