packages/dsh-remote-web-ui
zhu1090093659/dsh-web手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
把手机变成你这台电脑上 DeepSeek Harness 的个人助理——扫一次码即可远程聊天、收发图片与文件、看回复流式输出,多台手机还能在同一会话里协作;连接方式可选局域网 / Tailscale / 公网隧道。附带安卓安装包、iOS 构建流水线,以及鸿蒙和 iOS 浏览器可直接用的网页版客户端。
DeepSeek Harness 插件:让手机以个人助理聊天的形式远程使用这台电脑上的 DSH —— 扫码绑定一次, 之后聊天、发图片/文件、看回复流式输出,多台手机还能在同一个会话里协作。
配套客户端:安卓 App、iOS 构建(EAS/CI 流水线)、以及零安装的网页版/PWA(鸿蒙 NEXT、 iOS Safari、任意手机浏览器都能用)。网页版由本插件自己提供,地址是 http://:8787/openwhale/app。
/openwhale 命令 / PNG / SVG),10 分钟有效、只能用一次自动 优先直连,公网隧道不抢占完整说明见仓库 README;安装与排错见 docs/install.md; 安全模型见 docs/security.md。
从 npm 安装(推荐):
dsh plugin --profile <你的profile> add dsh-openwhale或从 Release 的 tarball 安装:
dsh plugin --profile <你的profile> add ./dsh-openwhale-2.2.0.tgz然后重启 DSH,打开 http://127.0.0.1:8787/openwhale(或 DSH 端口下的 /openwhale)扫码。
自动 顺序改为「上次成功 → Tailscale → 局域网 → 公网隧道」;修掉「公网隧道被强制优先」的判定 bug。
chat/echo 广播 + 会话事件日志/游标追赶 + 在线成员,新加入或断线的手机能看到别人发的内容与正在生成的回复。
(设备, msgId) 幂等,离线队列重发不会再让 AI 回两遍;助手消息按 DSHmessageId 聚合,修掉协作模式下的回复重复拼接。
/openwhale/app,鸿蒙/iOS 浏览器可用,可添加到主屏幕。QR 编码器(src/qr.mjs)、WebSocket 服务端(src/ws.mjs)、线上协议(src/protocol.mjs)、 状态层、上传层、电源层全部自实现,只用 Node 内置模块。原因很实际:插件要靠一次复制装进 profile,任何依赖树或构建步骤都会变成装机失败点。
packages/protocol 是协议的唯一权威源(手机端/网页版也直接引用它)。插件内 src/protocol.mjs 是它的一份副本,由 npm run sync:protocol 生成,test/protocol-copy.test.mjs 保证不漂移。
为什么必须有副本:DSH 安装插件是复制包内容,任何 ../../ 形式的相对导入在装机后都会解析到 包外并失败。这个坑在真实装机中踩到过,所以现在有测试守着。
webchat/ 目录是零构建的网页版客户端(原生 ESM,无打包步骤)。插件在 /openwhale/app 提供它:开发时读仓库 packages/webchat,npm/打包安装时读包内 webchat/。
隧道/中继一律不可信:鉴权靠手机侧 Ed25519 私钥签名,hello/ack 带电脑签名与二维码指纹可校验, 重放由随机数防重放表拒绝。