前言¶
DeepSeek Harness(DSH)桌面壳默认只监听 127.0.0.1,浏览器要靠启动 token 才能连上本地 Web GUI。想在同一局域网里用手机或平板操作这台电脑上的 DSH,常见做法是 SSH 隧道或自己搭反向代理,还要单独处理认证和移动端布局。下面介绍社区插件 dsh-remote:随 DSH 启动的用户态反向代理加登录门,登录后浏览器里看到的就是同一套桌面 DSH 界面,并针对窄屏做了远程布局;仓库里还带有 Android WebView 外壳的工程方向。
这是什么¶
dsh-remote 由维护者 YiZhiQvQ 发布,分类为客户端插件。定位是:单管理员的局域网远程访问,外加 Android WebView 外壳(浏览器之外的原生入口,见仓库 docs/ANDROID.md)。它不提供成员账号、child host、工作区隔离、read guard 或模型网关——登录者权限与桌面 DSH 操作者一致。
当前 package 版本为 0.3.1(MIT),要求 Node >=22.19.0,DSH 引擎 >=0.2.1-rc.2 <0.3.0。
核心能力¶
反向代理与登录¶
插件随 DSH 启动,在 0.0.0.0:3080 监听,转发到本机 127.0.0.1:52551。手机或平板打开 LAN 地址后先进入登录页,输入管理员账号密码;登录成功后写入 30 天会话 Cookie,之后可免登录。
代理进程内部持有 DSH 启动 token,用它换取 host-bound 的 DSH Cookie;该 Cookie 只留在代理内存,不下发浏览器。手机端拿到的是完整桌面 DSH Web GUI;远程窄屏会自动切换为手机布局。
文件与上传¶
- 文件预览标题栏的「下载」可走原始产物下载(支持 Range,便于拖动播放)。
- 右侧「文件」标签支持把文件拖到目录行上传;LAN 页拖入聊天框会上传字节,而不是插入本机路径字符串。
- 上传接口为
POST /api/remote/upload,默认上限 512MB。
远程工作区¶
从手机页「添加工作区」会打开应用内目录浏览器(数据走 /api/remote/browse);本机 127.0.0.1 桌面窗口仍用原生目录对话框,插件不改本地习惯。没有工作区隔离:登录者可访问 PC 上 DSH 进程能读写的目录。LAN 页会隐藏「打开方式」等宿主动作;取文件用预览标题栏下载。
手机 UI¶
远程视口宽度 ≤900px(粗指针设备放宽到 1180px)时启用移动端布局;本地 Electron/127.0.0.1 窗口无论多窄都保持原生三栏。样式依赖 DSH DOM;启动时探测锚点表,必需锚点缺失则保留桌面布局并记录 data-dshm-caps,避免 DSH 升级后整页不可用。LAN 地址从快照读取(默认约 5 秒刷新,可配 lanSnapshotMs),排除 169.254 链路本地地址。
插件管理器里的「远程访问」总开关会重启 DSH 并切断代理页,因此被拦截;暂停/恢复应使用远程访问面板内的软开关(只停/启 3080 代理)。
安卓 App¶
除浏览器外,仓库提供 WebView 外壳方向(配对、原生登录、下载、文件选择、断线重连等),M1 工程在 android/,可编译 debug APK;细节见 docs/ANDROID.md。
安装与启用¶
把仓库克隆或解压到任意目录后,用下面任一方式安装,将 <本仓库路径> 换成该目录的绝对路径。
方式一:Plugin Manager(在 DSH 内)
plugin_manager install_bundle target=<本仓库路径>
方式二:DSH 自带 CLI(不要用全局 npm 里的旧版 dsh)
& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" `
plugin --profile desktop add <本仓库路径>
安装后必须确认 profile 的 package.json:
dependencies含dsh-remote;dsh.profile.bundles里也含dsh-remote,且排在@deepseek-ai/dsh-web-app之后。
仅有 dependencies 而没有 bundles 条目时,包会装上但 patch 不生效。然后完全退出 DSH 并重新启动——bundle 只在启动时装配。完整自检见仓库 docs/DEPLOYMENT.md。
首次登录与改密¶
若尚未设置密码,默认账号为:
用户名:admin
密码:dsh-remote
面板会提示仍为默认密码。可运行(不需要管理员权限):
<本仓库路径>\scripts\set-remote-password.ps1
按提示输入用户名和密码,脚本将 scrypt 哈希写入 %USERPROFILE%\.dsh\dsh-remote-auth.json,然后重启 DSH。也可在 profile 的 dsh-remote config 里设置 username/password(明文,不推荐)。优先级:dsh-remote-auth.json > config > 默认 admin/dsh-remote。
典型用法与自检¶
DSH 运行中时,可用 curl 检查远程 API(示例来自 README):
curl http://127.0.0.1:52551/api/remote/info
curl http://127.0.0.1:52551/api/remote/pairing
curl "http://127.0.0.1:52551/api/remote/download?path=..."
在同一 Wi-Fi 下用手机浏览器打开本机 LAN 地址对应的 3080 端口,登录后即可对话、管理文件与工作区。换 Wi-Fi 后一般无需改配置,地址由插件快照刷新。
适用场景与安全注意¶
适合谁: 个人或单管理员场景,在同一可信 LAN 内用手机/平板远程操作本机 DSH,不需要多账号隔离。
务必知晓:
- 插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,自行评估风险。
- 登录者与桌面操作者等价,可读写 DSH 可访问的任意文件。
- 当前为明文 HTTP;不可信网络下可能被嗅探会话 Cookie,可考虑 Tailscale 或在代理前做 TLS 终止。
- 登录失败 5 次/10 分钟会按来源地址临时限速;会话 Cookie 为 HttpOnly、SameSite=Lax、30 天,改密码会吊销所有会话。
DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-remote 把 DSH 桌面 Web GUI 的监听局限、启动 token 与移动端体验收进一个可随 DSH 启停的 LAN 代理里:单管理员登录、完整 GUI、远程布局与文件上传下载。需要源码、部署细节与移动端排查时,见 GitHub 仓库 与文内 docs/DEPLOYMENT.md、docs/MOBILE.md、docs/DESIGN.md。