DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-users-open-source

K

dsh-users-open-source

Discovered★ 4

DSH (DeepSeek Harness) Plugin "Open Source User": A plugin that fixes the issue where DeepSeek Harness cannot automatically open source user code. (Not really)

Machine translated

dsh-users-open-source

一款修复了「DeepSeek Harness 不能自动开源用户代码」这个问题的插件。

作为中国 AI 界的扛把子,Deepseek Harness 却没有跟上开源用户代码的潮流 —— 所以我特意做了这个插件,弥补这个空白。

开源用户面板

侧栏那一栏

首先声明:它并没有上传你的代码

「代码在自己上传!」说的是你自己机器上的字节,在 127.0.0.1 的回环网卡里跑来跑去。 插件在宿主进程里起一个只绑回环地址的测速口,然后自己当客户端去压它,量出这台机器的 TCP 吞吐。

  • 没有真的打包上传用户工作区,一个字节都没离开本机;
  • 不连接任何外部服务器,局域网里其它机器也连不上(只监听回环);
  • 不消耗 token:不注册模型工具、不写系统提示、不发模型请求,与 LLM 完全无关。
  • 穷怕了,真的一点代码都不敢偷啊。

功能

位置内容
设置 → 开源用户「打包 / 上传」两项指标、一颗「上传」按钮、实时进度与瞬时速率柱状图、「自动上传」定时设置、「云端备份」、「最近记录」(单条可删 / 一键清空)、「上传图片」(换成自己的图 + 调侧栏图片宽度)
左侧栏「插件」下方一栏实时带宽(↓1.23G ↑0.98G);没测过显示「等待上传」,测速中显示「开源中」,并在那一栏里接一张图
主面板 net-speed标题「本机自动开源」,和设置页是同一台仪器

「上传用户工作区」是怎么实现的

一、测速那一半(主包 dsh-users-open-source)

  1. 宿主起一个 http.createServer(...),只 listen(0, '127.0.0.1') —— 随机端口,只有本机能连;
  2. 跑测速时自己当客户端打这个口:下载是并发读流统计字节数,上传是并发灌 1 MiB 的块并处理背压;
  3. 每 250 ms 采一次瞬时速率喂给前端画柱状图;结果落进 $DSH_HOME/dsh-users-open-source/history.json;
  4. 「自动上传」由宿主侧 setTimeout 链排程 —— 浏览器关着也照跑。

二、「传进工作区」那一半(伴生包 dsh-users-open-source-workspace)

那颗「云端备份」按钮确实会在文件资源管理器里打开你的工作区目录,但它只递一个 sessionId, 目录永远由宿主从 DSH 自己的账本里查出来,客户端没机会递任意路径:

  1. 请求里的 sessionId 命中的工作区;
  2. 正在写的会话日志分桶目录 → 编码回工作区路径(D:\work\my-project ⇄ --D-work-my-project--);
  3. 会话投影缓存 $DSH_HOME/storages/session_projcache/sessions/*.json 里最新那份的 cwd;
  4. 注册表里 updatedAt 最新的工作区;
  5. 全落空 → 注册表第一个。

打开动作走宿主自己的 ctx.subprocess,目录作为 argv 里的一项直传、不经 shell, 所以空格、中文、& 都不会被当成命令。

安装

dsh plugin --profile <你的 profile> add dsh-users-open-source

从 npm 装即可,伴生包是本包的 dependencies,会自动带上;装完重启一次 dsh web。

也可以直接从 GitHub 源码装:

dsh plugin --profile <你的 profile> add github:KAIROSLLL/dsh-users-open-source

⚠️ 主包对伴生包的依赖写的是普通 ^0.1.0,不是 pnpm 的 workspace:^ —— 后者只在作者自己的 monorepo 里能解析,从 Git 子目录安装时伴生包会被静默跳过 (DSH 市场对这种情况的提示是"无法从 Git 子目录单独恢复")。所以走源码安装时, 请确认 npm 上已经发布了对应版本。

本地联调(不经过 npm registry):

dsh plugin --profile <你的 profile> add "link:<本仓库>\packages\dsh-users-open-source"
  • 客户端半边 lib/client.js 由 dsh-client-hmr 热重载,刷新页面即可;
  • 宿主侧 lib/host.js 改动要重启 dsh web(模块进了 ESM 缓存);
  • 伴生包的 lib/open-folder.ps1 / lib/focus.cs 每次调用现读,改完立刻生效。

已知问题 / 局限

  • 它量的是本机协议栈 / 回环吞吐上限(常见几 GB/s),不是运营商带宽 —— 想测后者的必须有一个外部对端,那和「不接其他服务器」直接冲突;
  • 宿主侧改动要重启 dsh web,客户端半边热重载;侧栏图片这类在宿主侧新加的功能,重启之后才生效;
  • 侧栏那张图靠「撑高栏目」实现:如果 DSH 的 sidebar 给那一栏设了固定高度或 overflow: hidden,图可能被裁掉一部分;
  • 手动测速与自动上传共用同一个回环口:正在跑的时候点「上传」会拿到 busy,定时任务也会跳过;
  • 打开目录那段是 Windows 专用(PowerShell + Win32 调窗口);macOS / Linux 走 open / xdg-open,未实测;
  • 上传的图片上限 3 MB,只接受 png / jpeg / webp / gif;换图不会动包内文件,升级插件不会覆盖你自己换的图;
  • 历史只保留最近 60 条。

几处踩坑记录

  • 隐身窗口:DSH 以隐藏方式启动插件子进程,直接 spawn('explorer.exe', [dir]) 打开的窗口 IsWindowVisible 是 false —— 窗口存在(COM 能枚举到 CabinetWClass),但看不见; 后台进程直接调 SetForegroundWindow 也会被 Windows 拒绝。所以 Windows 上走包内的 open-folder.ps1 + focus.cs:Shell.Application.Explore 打开,再用 AttachThreadInput + ShowWindow(SW_SHOW / SW_RESTORE) + BringWindowToTop + SetForegroundWindow 显形。
  • 不要强抢焦点:脚本里刻意没有 HWND_TOPMOST、也没有循环 SetForegroundWindow。 试过,观感像被劫持("我是不是中病毒了")。现在只显示 + 给一次焦点,然后撒手。
  • 不要加合成 ALT:keybd_event 会释放前台锁,反而让两个窗口每几百毫秒互相抢焦点。

仓库结构

packages/
├─ dsh-users-open-source/              主包
│  ├─ lib/host.js                      回环测速口 / 测速引擎 / 自动上传调度 / HTTP 路由
│  ├─ lib/client.js                    客户端半边(设置页「开源用户」、侧栏、主面板)
│  ├─ assets/code-upload.jpg           测速时弹的那张默认图
│  ├─ cordis.patch.yml                 插入两条 entry(本包 + 伴生包)
│  └─ tests/smoke.mjs                  24 项自检
└─ dsh-users-open-source-workspace/    伴生包(不是独立 bundle)
   ├─ lib/index.js                     POST /dsh-users-open-source/open-workspace
   ├─ lib/open-folder.ps1              Windows:Explorer 打开 + 显形
   ├─ lib/focus.cs                     Win32 声明
   └─ tests/smoke.mjs                  9 项自检

为什么要拆成两个包:主包带 dsh.client 半边,而 dsh-client-modules 按「模块最近的 package.json」判定来源包 —— 同一个包里挂第二条 loader entry,无论写包内子路径(loader 解析不了) 还是写 file: URL(被判成本包的第二个 Loader 源)都会让启动直接崩。独立成包后 entry name 就是包名,两边都干净。

开发

pnpm install
pnpm -r test                       # 两个包各自的 smoke 测试
pnpm -r exec pnpm pack --dry-run   # 看 npm 包里到底是什么

发布

# 顺序不能反:先伴生包,再主包(主包依赖它)
cd packages\dsh-users-open-source-workspace
pnpm publish --access public
cd ..\dsh-users-open-source
pnpm publish --access public

License

MIT

Comments

Loading…

Similar plugins

dsh-all-enhance

by rangdl

DSH(DeepSeek Harness)功能增强插件

Development & InfrastructureManifest valid

★ 0

TypeScript

Sep 1, 2026

dsh plugin --profile web add dsh-all-enhance

by whitefirer

dsh(DeepSeek Harness)插件:让 agent 读写浏览器所在机器的本地文件——File System Access 授权 + WS 中继,含非安全上下文兼容模式

Tools & CapabilitiesTerminal & ClientsManifest valid

★ 4

↓ 301/wk

MIT

JavaScript

Aug 23, 2026

dsh plugin --profile web add dsh-browser-fs

by IAMLieutenant

DeepSeek Harness 用户记忆插件

Sessions & MessagesManifest valid

★ 3

↓ 103/wk

MIT

TypeScript

Oct 10, 2026

dsh plugin --profile web add dsh-tool-user-memory

by awol2005ex3

DeepSeek Harness(`dsh`)插件:为单机的 harness 增加**用户管理**与**会话按用户隔离**。

Manifest valid

★ 0

Apache-2.0

TypeScript

Sep 28, 2026

dsh plugin --profile web add dsh-user-manager

by fu827707013

DSH(DeepSeek Harness)并发请求监控与门闩插件。

Development & InfrastructureTerminal & ClientsManifest valid

★ 4

↓ 331/wk

MIT

JavaScript

Sep 17, 2026

dsh plugin --profile web add dsh-concurrency-guard

by Qiongkura

DeepSeek Harness(DSH)的 Token 用量统计 附属插件

Manifest valid

★ 4

↓ 302/wk

MIT

TypeScript

Aug 20, 2026

dsh plugin --profile web add dsh-usage-plugin