🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

LI-Huaa/dsh-workspace-upload

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
未验证

一个用于 dsh Web 配置文件的

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/14 · 已提供中文文档

A simple plugin to address the pain point of inconvenient file management when deploying DeepSeek Harness in the cloud. 一个简单的插件,用于在云端部署deepseek harness时管理文件。

综合分
26.9
GitHub 分
26.9
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add LI-Huaa/dsh-workspace-upload
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:仅索引本站尚未对其实装验证,仅收录元数据
是什么
dsh 原生插件 · other
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
更新放缓:最近一次提交在 42 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-workspace-upload

一个用于 dsh Web 配置文件的
工作区文件管理器插件——直接在聊天界面中浏览、上传、下载、重命名、创建和删除
会话工作区中的文件。

功能

* 输入框左侧控件中的 文件 (Files) 按钮 会在应用上方打开一个文件管理器
对话框:
* 浏览工作区及其子目录(面包屑导航、向上 /
刷新);
* 上传——多文件、分块、任意大小(640 KiB 分块,在代理请求体限制下
自适应缩小);
* 下载文件;
* 重命名文件和文件夹;
* 创建文件夹;
* 删除文件和文件夹(两步确认)。
* 每个操作都限定在工作区根目录内:主机侧路径包含检查
会拒绝任何 .. 或绝对路径逃逸。
* 工作区解析为会话的工作区(会话 → cwd → 第一个
已注册的工作区)。

目录结构

dsh-workspace-upload/
├── cordis.patch.yml      # 配置文件补丁层:插入插件行
├── package.json          # dsh.bundle / dsh.client 声明、导出
├── lib/
│   ├── index.js          # 主机半部分:/api/workspace-upload 文件管理器路由
│   └── client.js         # 客户端半部分:浏览器包(按钮 + 对话框)
├── test/
│   ├── protocol.mjs      # 主机协议测试(真实处理器,无需 dsh)
│   └── simulate.mjs      # 客户端内核模拟(插槽注册伪造)
├── LICENSE               # MIT
├── .gitignore
├── README.md             # 英文
└── README-zh.md          # 中文

架构

一个包、一个配置文件行、两个半部分:

| 半部分 | 文件 | 角色 |
| --- | --- | --- |
| 主机 | lib/index.js | 在 dsh Web 服务器上注册 GET/POST /api/workspace-upload:列表 / 重命名 / 创建目录 / 删除 / 下载 / 分块上传,全部带有工作区包含检查。 |
| 客户端 | lib/client.js | 浏览器包(window.__ModuleLoader__.load):conversation.input.left 中的触发按钮;对话框从按钮自身渲染(纯本地状态,position: fixed 覆盖层)。 |

接线:

* package.json → dsh.bundle.patch 指向 cordis.patch.yml(插入该行的
配置文件层),并且 dsh.client.platform: "web" 将该
包标记为浏览器名册条目,其包通过 exports["./client"] 发布。
* cordis.patch.yml 向 Web
组合中插入一行 workspace-upload。

API

GET  /api/workspace-upload
→ { "workspace": "" }        (no params)
→ file download with attachment headers              (?sessionId&path&name)

文件管理器模式(JSON POST;path 是工作区相对目录
"" / "sub" / "sub/deep",name 始终是一个路径段):

{ "mode": "list",   "sessionId"?, "path"? }                    → { workspace, path, entries:[{name,type,size,mtime}] }
{ "mode": "rename", "sessionId"?, "path"?, "name", "newName" } → { ok, from, to }
{ "mode": "mkdir",  "sessionId"?, "path"?, "name" }            → { ok, path }
{ "mode": "delete", "sessionId"?, "path"?, "name" }            → { ok, deleted }

分块上传(任意文件大小;GUI 发送 640 KiB 分块——base64 正文约
853 KiB,低于 nginx 默认的 client_max_body_size 1 MiB;遇到裸
413 时,客户端将分块大小减半至 64 KiB 并重试):

{ "mode": "chunk",  "sessionId"?, "path"?, "transferId", "name", "offset", "data", "total" } → { received }
{ "mode": "finish", "sessionId"?, "path"?, "transferId", "name", "total", "overwrite"? }     → { status, path, bytes }
{ "mode": "abort",  "transferId" }                                                            → { aborted }

分块会追加到目标目录内隐藏的 .dsh-upload- 临时文件中,并在
完成时重命名。分块必须从偏移量 0 开始按顺序到达;在已接收偏移量处重复的
分块会以幂等方式应答(客户端可安全重试)。孤立的传输会在
30 分钟后被清理。

为兼容 API/curl,保留了旧版单次批量模式:

{ "sessionId"?, "files": [{ "name", "data": "", "overwrite"? }] }
→ { "workspace": string, "results": [{ name, path?, status, bytes?, error? }] }

限制:每个请求 32 MiB(一个分块 + 开销),每个分块解码后 8 MiB。
overwrite: true 会替换现有文件;否则该文件会被跳过,并返回
status: "skipped"。

安装

该包作为 dsh 配置文件捆绑包安装。在拥有该
包目录的检出目录中执行:

dsh plugin --profile web add ./dsh-workspace-upload
or from a clone:  dsh plugin --profile web add /path/to/dsh-workspace-upload

然后重启 web 配置文件(dsh web ...),以便加载器识别新的
条目,并刷新浏览器。移除插件:

dsh plugin --profile web remove dsh-workspace-upload

开发

两个测试都无需 dsh 实例即可运行(它们直接测试真实的主机处理器和
客户端捆绑包工厂):

node test/protocol.mjs   # host protocol: list/rename/mkdir/delete/download/chunked upload
node test/simulate.mjs   # client kernel: slot registration against a faithful slots fake

安全说明

* 所有 path / name 值都会在主机上经过清理和包含性检查;
上传使用隐藏的临时文件,这些文件绝不会逃逸出目标目录。
* 该路由继承 dsh web 服务器的绑定(默认 localhost);当
远程暴露 GUI 时,请将其置于与应用其余部分相同的 TLS/Basic-Auth 反向
代理之后(并且如果你希望减少分块数量、增大分块体积,请提高 client_max_body_size)。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群