deepseek-files-panel:在 DSH Web 界面管理 DeepSeek Files API 上传文件

前言

用 DeepSeek Harness(DSH)的 Web 界面跑智能体时,从 0.1.1-rc.2+ 起,官方适配器支持 DeepSeek Files API,图片会经 Files API 上传并复用 file_id。这些文件留在 DeepSeek 云端,默认 7 天过期。

想确认账号里到底有哪些文件、把不用的清掉,在这之前要自己调 https://api.deepseek.com/files 的接口,或临时写脚本。deepseek-files-panel 把这些操作收进了 DSH Web 界面:右侧一个可折叠面板,列出、复制并清理通过 Files API 上传的文件,密钥全程不出宿主进程。

这是什么

deepseek-files-panel 是 iskshadow195563 维护的 DSH Web 插件,采用 MIT 许可证。一句话定位:为 DSH Web 界面提供右侧可折叠侧边栏,列出、复制并清理通过 DeepSeek Files API 上传的图片,密钥零暴露。

它是标准的 DSH bundle 包(package.json 声明 dsh.bundle.patch),可以直接用官方插件命令安装。DSH 的理念是「一切皆插件」,这类包跟随 profile 加载,随 dsh web 一起生效。

注意它的管理范围:只管通过 Files API 上传的文件(图片走 Files API 上传时产生)。纯文本对话、未经过 Files API 的内容不在此列。

核心功能

  • 列出全部已上传文件:文件名(DSH 自动命名 dsh-<内容哈希>.<ext>)、file_id、大小、创建时间、过期时间(默认 7 天,由 DeepSeek 管理,过期前面板会显示剩余有效期)
  • 一键刷新:随时与 DeepSeek 云端同步
  • 复制 file_id:方便在请求或脚本中引用
  • 删除文件:红色按钮加二次确认,3.5 秒内再点击才真正删除,防止误删
  • 主题自适应:跟随 DSH 页面主题变量(--dsw-*),深色、浅色皮肤均可
  • 无密钥泄露:插件本体不含任何密钥,密钥由 DSH 凭据服务在宿主侧解析

密钥与工作原理

「无密钥泄露」是它最值得说的设计。调用链是这样的:浏览器页面只访问本机 dsh web 的路由;宿主侧通过 DSH 的凭据服务解析 DEEPSEEK_API_KEY,再去请求 https://api.deepseek.com/files 完成列表与删除。

也就是说,API Key 只存在于宿主进程内,页面与 DeepSeek API 之间只经本机同源路由,密钥永不进入浏览器。再配合删除操作的二次确认,误删云端文件的风险也被压低了。

安装与启用

先确认两个前置条件:

  • DeepSeek Harness dsh >= 0.1.0-rc.6,推荐 0.1.1-rc.2+(官方适配器支持 Files API 的版本);
  • 已在 DSH 凭据中配置 DEEPSEEK_API_KEY,用于调用 https://api.deepseek.com/files

方式一:包形态安装(推荐)

dsh plugin --profile web add github:iskshadow195563/DeepSeek_Harness_Files_Panel#v1.1.0

--profile 必填,换成你实际使用的 profile 名,web 是默认 Web 界面 profile。安装完成后,插件加入 Profile 的 bundle 层,重启 dsh web 后生效。

方式二:手动安装

dsf-files-panel.mjs 放入 Web Profile 目录 $DSH_HOME/profiles/web/(Windows 默认 %USERPROFILE%\.dsh\profiles\web\):

# macOS / Linux($DSH_HOME 未设置时默认为 ~/.dsh)
cp dsf-files-panel.mjs "${DSH_HOME:-$HOME/.dsh}/profiles/web/"

# Windows PowerShell
Copy-Item dsf-files-panel.mjs "$env:USERPROFILE\.dsh\profiles\web\"

再编辑同目录下的 cordis.patch.yml,合并 insert 补丁:

- insert:
    - id: deepseek-files-panel
      name: ./dsf-files-panel.mjs?v=1

若文件为 [] 或不存在,直接粘贴上面整段;若已有其他 insert 条目,把 - id: deepseek-files-panel 一行追加进去。?v=1 用于破 ESM 缓存,升级插件时把数字加一。

手动安装的补丁文件保存即热生效,无需重启;若 5 秒内没生效,再重启 dsh web

验证

刷新浏览器页面(F5),右侧中部会出现「📁 DeepSeek 文件」手柄,说明插件已加载。

卸载

包形态安装的,一条命令:

dsh plugin --profile web remove deepseek-files-panel

手动安装的,删除 profile 目录下的 dsf-files-panel.mjs,并从 cordis.patch.yml 的 insert 列表中去掉对应条目,刷新页面。

无论哪种方式,卸载插件都不会删除已上传到 DeepSeek 云端的文件。要清理,请在面板里删除,或调用 DELETE https://api.deepseek.com/files/{file_id}

典型用法

以下操作都在 DSH Web 页面完成,默认本机地址形如 http://127.0.0.1:3080

1、展开/收起:点击右侧手柄「📁 DeepSeek 文件」展开面板;点面板右上「▶」收起。
2、刷新:点标题栏「↻」按钮,重新拉取云端列表。
3、复制 ID:点某个文件的「复制 ID」按钮,会复制形如 file-api-... 的 file_id,可直接粘进请求或脚本。
4、删除:点「删除」,按钮变红色「确认删除?」,3.5 秒内再点一次才会真正从云端删除。
5、直达展开:浏览器地址栏加 ?dsf-open=1,例如 http://127.0.0.1:3080/?dsf-open=1,页面加载后自动展开面板。

适用场景与注意

适合经常在 DSH Web 界面传图、需要在后续请求里复用 file_id、或想定期清理云端文件的用户。不经过 Files API 的内容不会出现在面板里,这不是缺陷,只是边界。

几点提醒:

  • 已上传文件默认 7 天过期,过期时间由 DeepSeek 管理,过期前面板会显示剩余有效期。
  • 右侧手柄没出现时,先确认 .mjs 文件在 profile 目录、补丁行已合并,重启 dsh web 后 F5 刷新页面。
  • 列表报「未配置 DEEPSEEK_API_KEY」时,到 DSH 设置/Models 页配置该凭据。

最后是通用提醒:插件以当前 dsh 进程权限运行,安装任何第三方插件前,建议先读一遍源码、确认许可证。本插件为 MIT,仓库内附 LICENSE。

结尾

deepseek-files-panel 解决的是一个具体的小问题:Files API 上传的文件散在云端,面板把它们收进 DSH Web 界面,列出、复制、删除都在本地页面完成,密钥不出宿主进程。如果你在用 DSH 0.1.1-rc.2+ 并通过 Web 界面传图,值得一试。

  • GitHub 仓库:https://github.com/iskshadow195563/DeepSeek_Harness_Files_Panel
  • 社区插件目录页:https://www.skillhub.cn/plugins/iskshadow195563/DeepSeek_Harness_Files_Panel

目录页来自社区维护的独立站点,与 DeepSeek、幻方无官方从属关系。

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

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

Xiaoye