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

文件下载按钮 louisremi/dsh-always-on

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

DeepSeek Harness 插件:远程/NAS 主机上把「显示文件位置」换成「下载文件」

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
数据截至 2026/10/02·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 26 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    src/context.ts:39
    fetch(request: Request): Response | Promise<Response>;
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 支持远程主机
  • 支持NAS主机

README

由 DeepSeek 最新模型翻译生成
@louisremi/dsh-always-on 一个 DeepSeek Harness 插件,让 Harness 跑在容器里,无法访问你本机的文件系统。 把 Harness 跑在 Docker 容器里——NAS 上、服务器上,哪儿都行——它就活在一台独立的机器上:自带的「显示文件位置」和「在应用中打开」按钮得连上一台根本不存在的桌面,容器里也读不到、写不了你电脑上的文件。你和文件之间唯一的通道就是浏览器。这个插件让这条通道够用:把失效的按钮换成能通过浏览器干活的按钮: - Download file 按钮,把文件保存到你电脑上。 - Show files,打开侧边栏文件浏览器。 - Edit,在侧边栏代码编辑器里打开文本文件(Monaco,VS Code 背后的编辑器),保存回 Harness 主机。 安装 dsh plugin --profile web add @louisremi/dsh-always-on 换成你的 Harness 实际使用的配置档名称。插件会热加载;只有命令提示需要重启时,才重启 Harness。 从 git URL 安装会在安装时构建插件(prepare 会跑 npm run build)。如果你的配置档由 pnpm 管理,它可能拦下构建脚本,直到你批准(allowBuilds);构建被跳过,插件就没有 dist/。 用法 无需配置。
展开完整文档(README 剩余 1 节)
@louisremi/dsh-always-on

一个 DeepSeek Harness 插件,让 Harness 跑在容器里,无法访问你本机的文件系统。

把 Harness 跑在 Docker 容器里——NAS 上、服务器上,哪儿都行——它就活在一台独立的机器上:自带的「显示文件位置」和「在应用中打开」按钮得连上一台根本不存在的桌面,容器里也读不到、写不了你电脑上的文件。你和文件之间唯一的通道就是浏览器。这个插件让这条通道够用:把失效的按钮换成能通过浏览器干活的按钮:

- Download file 按钮,把文件保存到你电脑上。
- Show files,打开侧边栏文件浏览器。
- Edit,在侧边栏代码编辑器里打开文本文件(Monaco,VS Code 背后的编辑器),保存回 Harness 主机。

安装

dsh plugin --profile web add @louisremi/dsh-always-on

换成你的 Harness 实际使用的配置档名称。插件会热加载;只有命令提示需要重启时,才重启 Harness。

从 git URL 安装会在安装时构建插件(prepare 会跑 npm run build)。如果你的配置档由 pnpm 管理,它可能拦下构建脚本,直到你批准(allowBuilds);构建被跳过,插件就没有 dist/。

用法

无需配置。

Download。 下载按钮出现在原来文件夹按钮的位置:智能体回复下方的文件卡片(present)、变更文件审查标签页、侧边栏预览中打开文件的工具栏,以及预览渲染不了的文件空状态。

Show files。 会话头部的 workspace 文件夹按钮变成一个 Show files 按钮。它打开(或聚焦)侧边栏的 Files 标签页。在这个标签页内部,按钮会隐藏,因为点了也没用。

Edit。 在侧边栏预览里打开文本文件,按 Edit(铅笔图标,在 Download 旁边)。文件在独立的编辑器标签页中打开:

- Ctrl/Cmd+S 或 Save 按钮写入文件;标签页和文件名上的圆点标记未保存的改动。
- 如果打开之后文件在磁盘上变了,保存会被拒绝,你可以选 Reload from disk、Overwrite 或 Keep editing。不会有任何静默覆盖。
- 关闭有未保存改动的标签页(或浏览器页面)会弹出确认。
- 保留换行符(LF/CRLF)和开头的 UTF-8 字节顺序标记。
- 文本文件最大 1 MiB。二进制文件和非法 UTF-8 会被拒绝,而不是损坏。
- 保存遵循会话的沙箱模式:只读模式下失败,workspace-write 模式下在工作区外失败,和智能体自己的文件工具完全一致。

工作原理

插件给 Harness 加了两条需要认证的路由,GET /api/download.file 和 POST /api/save.file,并把按钮注册到与内置按钮相同的 UI 槽位里,把它们遮住(禁用插件,内置按钮就会回来)。「Show files」调用侧边栏的公开方法 openTab('files');编辑器是一种侧边栏标签页类型,通过公开的侧边栏 API 注册。下载直接流式写入磁盘,所以大文件也没问题。保存走 Harness 自己的文件系统层,带会话的沙箱策略和版本检查。

编辑器和 CDN

为了让包体积小(约 69 kB),Monaco 没有打包进去。第一次点 Edit 时,才从 jsDelivr 加载,版本固定为 monaco-editor@0.52.2。

- 它跑在沙箱 iframe 里(sandbox="allow-scripts",没有 allow-same-origin),Content-Security-Policy 只允许 CDN。所以 CDN 的代码读不到 Harness 页面、你的会话 cookie、local storage,也调不了 Harness API;它只能和编辑器外壳互发消息。
- 加载器脚本用 Subresource Integrity(SRI)校验。加载器随后拉取的文件没有逐个按哈希固定,所以上面这层隔离才重要。
- 你的浏览器需要能访问 cdn.jsdelivr.net(Harness 主机不需要)。如果访问不了或被拦截,编辑器会退回普通 ,保存、冲突和脏状态行为完全一样,并会说明这一点。
- Monaco 加载时,jsDelivr 能看到你的 IP 地址和 user agent。

限制

- 下载:只支持单个文件;文件夹不能下载。
- 编辑:文本文件最大 1 MiB;除了磁盘上的版本检查,没有多用户锁定。
- 在 DSH 0.2.0-rc.2 上测试过。它依赖内置 open-in-app 和 sidebar-right 插件的槽位名和公开 API。

开发

源码是 TypeScript;npm run build 把它编译到 dist/(安装和打包时也会通过 prepare 自动运行)。测试直接用 Node 的原生类型剥离跑 .ts 文件,所以开发需要 Node ≥ 22.18(或 ≥ 23.6)——插件本身运行时仍然只要求 Node ≥ 20。

npm ci
npm run check # TypeScript typecheck of src, tests and e2e
npm run build # compile src/ to dist/
npm test # host route unit tests (no browser needed)
npm run test:e2e # opt-in: real headless Chromium + real Monaco from the CDN (builds first)

test:e2e 需要 Chromium、playwright-core 和 React 18 UMD 构建;见 e2e/browser.e2e.mts 的文件头。

卸载

dsh plugin --profile web remove @louisremi/dsh-always-on

发布

改动以 pull request 的形式落到 main,这样每个 GitHub Release 都能自我描述:创建一个描述为空的 release,Release notes 工作流会用上一个 release 以来合并的所有内容把它填满(.github/release.yml 控制分类)。

1. 在 package.json 里升 version 并推送(通过 PR)。
2. 发布一个 GitHub Release,标签与版本号一致:gh release create vX.Y.Z。
3. 随后 Publish to npm 工作流会在 release 发布时运行:它会拿标签和 package.json 比对,跑 lint、类型检查、测试,再通过可信发布带 provenance 发布到 npm —— 仓库里不存任何 token。如果版本已经在 registry 里(包的首次发布必须手动完成,因为可信发布是在包页面上配置的),工作流会跳过发布。

License

MIT
预览分享卡片长什么样 ↓louisremi/dsh-always-on
分享 · DeepSeek Harness Hub
louisremi/dsh-always-on

DeepSeek Harness 插件:远程/NAS 主机上把「显示文件位置」换成「下载文件」

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部