dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness remote plugin: continue a paired Harness Host's workspaces, sessions, streaming replies and approvals in the official Desktop UI
一个供个人使用的 DeepSeek Harness 远程连接插件。它把另一台电脑上的官方 Harness Host 接到当前官方 Desktop 里:工作区、会话历史、模型请求、工具执行、审批和提问 仍然由远端 Host 管理,界面仍然使用官方现有的会话界面,而不是另做一个网页或只显示 连接状态的面板。
dsh-private-remote0.1.0(协议 1)0.2.1-rc.3desktop profile,并完成本机双实例联调;真实 Windows + macOS 双机尚未验证(见“验证状态”)。
同一套代码按配置承担两种角色:
角色 · 运行位置 · 作用 client · 你正在看的官方 Desktop · 保留官方界面;把本机 Gateway 的普通 /api 调用和 /api/remote.mux 流统一切换到已配对的远端 Host;提供“私人远程”面板和状态显示。 host · 另一台电脑上的 Harness · 在私网/Tailscale IP 上另开一个认证桥,只转发白名单内的官方会话、工作区、审批和提问接口;不复制会话数据库,不重写 Agent 循环。
连上远端后:
官方 UI 渲染。
被取消。
第一版明确不包含:
dsh web 访问说明;官方 Desktop(客户端机器) 远端 Harness Host(另一台机器)
┌──────────────────────────────┐ ┌──────────────────────────────┐
│ 官方会话 UI │ │ 官方会话 UI(本地使用) │
│ │ /api、/api/remote.mux │ │ │
│ ▼ │ │ │
│ 本机 Typert Gateway │ │ 本机 Typert Gateway │
│ │ Gateway switch(插件) │ 加密 HTTP/SSE │ ▲ │
│ ▼ │ ──────────────► │ │ BridgeServer(插件) │
│ 本机 BridgeClient ───────────┼──────────────────┼───┘ 只转发白名单端点 │
│ 控制通道 /private-remote │ │ 独立端口,绑定私网/Tailscale │
└──────────────────────────────┘ └──────────────────────────────┘客户端不是“改一个 URL”:普通 RPC、WebSocket 流、事件流、认证、会话选择都经过同一个 已认证桥;远端工作区/会话/缓存以 Host 身份隔离。实现细节见 docs/ARCHITECTURE.md。
当前这台 macOS 上的官方 Desktop 使用 desktop profile。插件已经以本地链接方式安装:
~/.dsh/profiles/desktop/package.json
dsh.profile.bundles: [..., "dsh-private-remote"]
dependencies: { "dsh-private-remote": "link:/Users/wangqiyuan/Documents/git/dsh-private-remote/bundle" }安装动作本身走官方插件的 bundle 机制;没有修改官方安装目录,也没有分叉官方客户端。 本仓库重新构建后,bundle/ 是链接目标;Host 侧的代码需要重启 Harness 才会重新加载, 客户端 UI 在刷新页面后加载新的 client.js。
手动安装(任意 profile)可用官方 CLI:
dsh plugin --profile <profile> add /绝对路径/dsh-private-remote/bundle或在当前 Desktop 里用插件管理器的 install_bundle 指向 bundle/ 目录。desktop profile 由 Electron 独占启动,不能直接用 dsh --profile desktop 启动;安装/管理请走 官方插件管理器或 dsh plugin。
cordis.patch.yml 增加 Host 配置(bindHost 改成该机的 Tailscale IP):- id: private-remote
config:
role: host
bindHost: 100.68.241.8
port: 47821
label: Windows 工作站New-NetFirewallRule -DisplayName "DSH Private Remote" `
-Direction Inbound -Protocol TCP -LocalPort 47821 `
-RemoteAddress 100.64.0.0/10 -Action Allow -Profile Private不要绑定 0.0.0.0,也不要把端口映射到公网。插件的配置校验只接受回环、RFC1918、 Tailscale 100.64/10、IPv6 私网或 *.ts.net 这类私网地址。
仓库与发布页:
发布资产:dsh-private-remote-0.1.0.tgz
Windows 上先正常打开一次官方 Desktop,让 desktop profile 初始化,然后完全退出 Desktop(不是最小化),在 PowerShell 中执行:
dsh plugin --profile desktop add `
https://github.com/MikyWang/dsh-private-remote/releases/download/v0.1.0/dsh-private-remote-0.1.0.tgzdsh 不在 PATH 时,换成官方 Desktop 自带的 CLI 完整路径。也可以从仓库根目录运行:
powershell -ExecutionPolicy Bypass -File .\install.ps1安装完成后重新打开 Desktop,打开“私人远程”。macOS/Linux 把同一 URL 交给 dsh plugin --profile add 即可。desktop profile 必须由 Desktop 初始化过, 并且安装时 Desktop 要完全退出;这是官方 CLI 的限制。
发布资产就是 bundle/ 的 npm pack 结果;安装时不需要构建,也不需要 npm 账号。
如果要从源码安装:
git clone https://github.com/MikyWang/dsh-private-remote.git
cd dsh-private-remote
npm run build
dsh plugin --profile <profile> add "$PWD/bundle"仓库根目录现在就是合法的 DSH bundle(package.json 含 dsh.bundle 和 dsh.client), 所以可以直接使用官方 Desktop 的 插件 → 添加插件 对话框:
输入:https://github.com/MikyWang/dsh-private-remote
安装源:npm 官方源(默认)点“安装”。插件管理器会把仓库作为 profile 层安装;安装完成后重启/刷新 Desktop, 侧栏出现“私人远程”。如果对话框更愿意接收本地目录,也可以填本仓库的绝对路径。 如果 GitHub 地址安装受网络影响失败,回退到 4.3 的 Release 资产 URL。
推荐并按当前设计采用 Tailscale IP 绑定:
tailscale ip -4,得到 100.x.y.z。bindHost,重启 Harness。http://100.x.y.z:47821;令牌从 Host 面板的“显示令牌”复制。平台。
如果已有可用的 SSH 隧道,也可以把远端桥的 loopback 端口转发到客户端本机,再填 http://127.0.0.1:47821;第一版不额外实现多套传输方案。
重新认证并重新读取状态。
Host 面板显示监听地址、设备名、平台、版本、配对令牌和已连接设备:
令牌本身从不传输;随后用 HKDF-SHA256 派生双向密钥,AES-256-GCM 加密每个帧, 64 位序号 + 滑动窗口拒绝重放/旧帧。
serverProof,客户端确认后才发送自己的证明,避免把凭据送给冒充的端点。
ctx.invoke、服务反射、终端、凭据、插件管理或通用工具远程入口。白名单见 docs/SECURITY.md。
$events 瀑布事件,答案通过 $events/result回到同一个 clientId + eventId;不默认自动批准。
private_remote_host_token);客户端令牌只在 Host 进程内存中,不写配置文件或 localStorage。客户端磁盘只保存远端 URL 和显示标签($DSH_HOME/private-remote/client.json)。
平台和错误码。
全部);没有独立审计日志;HTTP 只允许私网/Tailscale,公网地址必须 HTTPS;Tailscale 本身提供 WireGuard 传输加密。
完整威胁模型和“为什么可以创建 owner 等价 Peer”的说明见 docs/SECURITY.md。
npm run check:语法、静态规则、秘密扫描通过。npm test:30 个单元测试全部通过。npm run build / npm run verify:生成并校验 23 个文件的 bundle。npm run test:e2e:本机两个隔离 Harness 实例(Host + Client)跑通:远端工作区基线、会话列表/历史、新建会话、发送/流式回复、停止、审批、提问、 断开后拒绝本地回退、显式切回本机。