dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness App 让你在手机上使用这台电脑或服务器上的 DeepSeek Harness。手机和平板都能用,安卓和苹果都支持。在手机上可以继续对话、查看文件、管理插件,也可以从正在用的这一台连上其他几台上的 DeepSeek Harness,分别打开来用。
电脑上开着的 DeepSeek Harness,手机上接着用。
AI-HUB 的手机端插件。 装在电脑这边,手机 App 就通过一条中转隧道或局域网配对连进你的 DeepSeek Harness —— 看会话、接着聊、管理文件和工作区,进度实时同步。
它和绝大多数 DSH 插件不一样的一点:不需要桌面外壳,也不需要 Electron。同一份包可以单独跑在没有图形界面的服务器上,当作无头宿主用 —— 手机连的是一台根本没有屏幕的机器。
手机连的是你自己那台电脑上的 DeepSeek Harness,不是某个云端服务。电脑不用公网 IP,也不用在路由器上开端口:插件从内网主动往外建一条隧道,手机沿这条路回来。
在家里的 A 电脑打开插件控制台的「远程电脑」,生成并复制绑定信息,再到随身的 B 电脑粘贴添加。绑定信息十分钟内有效、只能使用一次;两台电脑都需要安装支持远程电脑的插件。
绑定后在 B 点击「在桌面端打开」,即可通过本机地址使用 A 的完整 DSH 网页,不需要域名或手机参与。默认自动选择局域网、直连、IPv6、中转或可用隧道;网络变化后重新选路,正常的实时连接不会因细小测速差异被打断。完整网页授权具有远程操作该 DSH 的能力,只向自己信任的电脑发放。
点击后优先由插件随包分发的桌面显示壳开窗口,而不是交给系统默认浏览器。它不是给最终用户双击安装的独立应用,也不做安装器:按平台作为插件的可选依赖 dsh-mobile-shell-<os>-<cpu> 一起装,插件把一次性地址和可选的设备名作为命令行参数交给它。一次点击启动一个进程、开一个窗口,窗口标题带设备名;同一台 B 电脑可以同时开多台 A 电脑的窗口,互不干扰。平台包的版本独立于插件,壳没改就不抬版本,插件更新不会重下它;机器上没装对应平台包时自动回退到原来的系统浏览器路径,远程电脑功能照常可用。
每次网页访问允许一小时,临近到期会提示;在 B 的插件控制台主动续期才能继续,到期后须重新打开,绑定关系保留。停止访问、插件退出或 A 撤销授权会断开网页连接,不停止 A 上已经运行的任务。A 可在「可访问本机的电脑」中撤销 B;B 可移除自己保存的绑定。
网页字节在两端插件之间加密,线路只转发密文;长期绑定凭据由宿主凭据存储保存,浏览器只持有本次访问的临时会话。默认只监听本机回环,不把浏览器入口开放给局域网。
移动 API 只开手机需要的口子(/api/mobile/v1/*)—— 不暴露 shell、系统设置与任意文件写入。
装好手机 App 只是第一步,插件装在这边才算接通。
在 DSH 的 设置 → 插件 里搜索并安装 dsh-mobile-plugin,然后打开 设置 → 移动端 → 打开配置页面 做配对。插件市场负责检查和安装更新,通常更新后不用重启 DSH。
装完以后,入口在 DSH 的「设置 → 移动端」:点「打开配置页面」,那里有配对二维码、当前监听地址和中转状态。手机上的所有功能都从这一页开始。
需要 Node.js、pnpm,以及可用的 DSH 插件宿主依赖。仓库里的 host.js 就是独立入口:
pnpm install --frozen-lockfile
DSH_HOME=/opt/dsh-mobile/.dsh DSH_MOBILE_PROFILE=mobile node host.js
DSH_HOME 是数据根目录,默认 ~/.dsh;DSH_MOBILE_PROFILE 是 profile 名称,默认 mobile。无头 Host 的 Web 服务默认只监听 127.0.0.1:3080,不对局域网直接开放。
配置接口只限本机访问,看状态和拿配对信息:
curl http://127.0.0.1:3080/api/relay/status
curl http://127.0.0.1:3080/api/relay/pairing
无头服务器上,启动器和插件本体是分开管的:启动器由部署流程同步到 /opt/dsh-mobile/,插件本体装进 profile:
cd <DSH_HOME>/profiles/<profile>
pnpm add dsh-mobile-plugin@<版本>
宿主优先挂 profile 里装的那份,没装才用源码树版本。设备凭据库随 npm 包一起发,不用单独装。仓库锁文件用 pnpm install --frozen-lockfile。
别用
npm install --legacy-peer-deps装插件;正式安装走 DSH 插件市场。
无头运行时用这几个本机接口管远程连接:
POST /api/relay/toggle:开或关远程控制。POST /api/relay/regenerate:重新生成配对码。POST /api/relay/config:设置 relayUrl、lanEnabled、lanPort、name 和 pairingPolicy。POST /api/relay/reconnect:重连隧道与局域网代理。移动 API 要 Bearer token。设备事件流 GET /api/mobile/v1/events/stream 用 SSE 转发宿主事件。建会话时可以传 workspaceId 或 cwd,前者优先,并会把会话归进那个工作区;手机端的排序同样会同步到宿主工作区。
配对策略默认 code,凭配对码放行;设成 deny 就拒绝所有新配对。配对请求可以带设备信息,App 会发 id、deviceId、name、platform、osVersion 和 appVersion,局域网代理与中转会补上它们观察到的手机 IP。
session_cleanup 能归档会话,也能永久删除归档过的会话,删除前要显式确认,删掉不可恢复。删除是排队的:会话立刻从列表里消失,日志和投影缓存等宿主下次启动才从磁盘上清掉 —— 宿主没有「删除会话」的接口,运行中从它脚底下删文件会带走整个宿主进程。
DeepSeek Harness 跑在电脑上,但我不是一直坐在电脑前。出门、在别的房间、躺床上,想知道刚才那个任务跑到哪一步了,或者它正卡在一个要我点的审批上,只能走回去。
这个插件的出发点就这么窄:不是把整个 DSH 塞进手机屏幕,而是让人离开电脑之后,还能看见、还能接着聊、还能把该点的那一下点掉。
所以有两条线是硬的。一条是网络:不要求公网 IP、不要在路由器上开端口、不要为了用一次去配 DDNS,插件从内网主动往外出,手机顺着回来。另一条是能力:手机上只开需要的那几个口子,能看会话、能审批、能传文件、能改点配置,但不把 shell 和任意文件写入递到手机上 —— 手机丢了或者被人捡到,损失是可估的。
用手机浏览器开 DSH 的网页:不用装东西,但每次都得记住地址,界面按桌面尺寸排,在手机上要靠缩放拖拽;没有推送,离开页面就什么都不知道;审批那种要点准的东西最难用。
远程桌面:本质还是操作那块屏幕,手机只是个显示器。网络断了就是黑屏,小屏上做任何事都要先放大。
各家 AI 助手的手机 App:那些跑在厂商的服务器上,会话、文件和额度都在别人那儿。这里连的是你自己电脑上那个 DSH,模型是你配的,文件在你硬盘上。
写在这里的是我们确实还没做到的,不是待办清单的美化版。
dsh-mobile-plugin 自己卸掉这台手机就再也连不上了,所以入口不给;另外手机上卸完要等电脑下次启动 DSH 才真的不在。扫上面的码进企业微信群。这个码更新于 2026-11-09,如果扫不出来或者提示已过期,说明二维码已经换了,发邮件到 admin@wnluo.com 索取新的,或者直接提 issue。
不方便的话发邮件到 admin@wnluo.com 或 wnluo2@gmail.com。用着顺手就给仓库点个 star,这是最实在的支持。
隐私政策见 PRIVACY.md,常见问题见 SUPPORT.md。
pnpm install --frozen-lockfile
npm test
改过 React/ 面板源码,先在该目录跑 pnpm run build,并把生成的 lib/panel/index.html 和源码一起提交。
MIT,见 LICENSE。