DeepSeekHarnessRemoteGatewayDeepSeek Harness plugin
一个轻量级 DeepSeek Harness 远程网关,让你通过 Web 或移动设备远程访问和控制本地 AI Agent
- Stars
- 22
- Forks
- 1
- License
- MIT
- Last commit
- Aug 14, 2026
- Latest release
- v0.1.0
Overview
一个轻量级 DeepSeek Harness 远程网关,让你通过 Web 或移动设备远程访问和控制本地 AI Agent
Original README
Cached from the project repository on Sep 3, 2026. This is source content, separate from the Agents.md review above.
DSH Remote Gateway
让 DeepSeek Harness Web 获得可被手机远程访问的能力
不修改 DeepSeek Harness 本体代码,默认生成随机公网 URL、随机 6 位密码和扫码二维码,手机端仅需浏览器即可访问。
安装说明 · 常见问题 · 发布检查清单 · Release 附件策略 · Release 文案模板 · 许可证
项目简介
让DeepSeek Harness 可以手机远程访问、操作的轻量 sidecar 网关。
在保留 DeepSeek Harness 现有 Web UI 的前提下,为本地运行中的 DSH 增加一层远程访问能力:
- 启动后自动生成随机公网 URL
- 默认自动生成随机 6 位密码
- 自动输出二维码,手机扫码即可访问
- 支持 Windows、macOS、Linux
- 适合临时远程访问、移动端查看和继续对话
为什么做这个
- DeepSeek Harness 本身已经有完整的 Web UI
- 真正缺的是“远程接入能力”,不是第二套前端
- 对移动端场景来说,更重要的是“继续任务”,而不是“重新设计界面”
- sidecar 形态更轻、更适合插件化复用,也更容易发布到
topics/dsh-plugin
核心特点
- 不修改 DeepSeek Harness 源码
- 默认随机公网 URL
- 默认随机 6 位密码
- 默认输出二维码
- 手机只需浏览器
- 支持 Cloudflare Quick Tunnel
- 支持按平台生成发布包
- 支持把 macOS / Linux 版本作为 GitHub Release 附件分发
截图预览
| 分享页 | 手机登录页 | 手机对话页 |
|---|---|---|
![]() | ![]() | ![]() |
30 秒上手
- 先在本地启动
dsh web,并确认它可通过http://127.0.0.1:3080访问。 - 准备
cloudflared,放到remote-gateway/bin/,或者确保系统PATH中可直接调用。 - 运行
npm run doctor做一次环境检查。 - 根据当前平台启动
start_Windows.bat、start.ps1、start_Mac_or_Linux.sh、start.sh或start.command。 - 用手机扫描启动后生成的二维码,输入 6 位密码即可访问。
更完整的安装和排障说明见 INSTALL.md。
默认行为
正常启动后,网关会自动完成以下动作:
- 在
127.0.0.1:8787启动本地 HTTP 网关 - 当未配置密码时,自动生成随机 6 位密码
- 当
cloudflared可用时,自动启动 Cloudflare Quick Tunnel - 在终端打印临时公网 URL、密码和二维码
- 在
runtime/share.html生成本地分享页 - 默认自动在桌面打开这个分享页
这个默认流程非常适合插件分发场景:不需要固定域名、不需要公网 IP、也不需要改动 DSH 核心代码。
当前限制
工作区切换
当前远程状态下,无法直接从手机端主动打开本地尚未打开的工作区。
如果需要切换工作区,仍然需要先在电脑端打开目标工作区,再从远程端继续访问和切换。
平台支持
- Windows
- macOS
- Linux
项目主体是纯 Node.js。平台差异主要集中在:
cloudflared二进制- 各平台启动脚本
- 发布包分发方式
它能做什么
- 提供一个简单的登录页
- 通过
HttpOnlyCookie 维护会话 - 反向代理 DeepSeek Harness Web UI
- 转发
/api/* - 转发 Harness 使用的两个 WebSocket 下行通道:
/api/events.mux/api/events.host
- 通过临时公网地址把本地网关暴露给手机端
它不做什么
- 不修改 DeepSeek Harness 代码
- 不自己提供 TLS 证书能力
- 不要求固定公网域名
配置文件
可编辑配置文件:
remote-gateway/config.json
如果 auth.password 为 null,则每次启动都会生成一个新的随机 6 位密码。
如需使用固定密码,直接在 config.json 中手动填写即可。
配置示例
json1{ 2 "server": { 3 "bindAddress": "127.0.0.1", 4 "bindPort": 8787 5 }, 6 "upstream": { 7 "origin": "http://127.0.0.1:3080", 8 "loopbackMode": null 9 }, 10 "auth": { 11 "password": null, 12 "sessionSecret": null, 13 "cookieName": "dsh_remote_session", 14 "sessionTtlHours": 168, 15 "secureCookies": false 16 }, 17 "dsh": { 18 "command": null 19 }, 20 "tunnel": { 21 "enabled": true, 22 "mode": "quick", 23 "cloudflaredPath": null 24 }, 25 "share": { 26 "openOnStart": true 27 } 28}
重要说明
Quick Tunnel 模式
默认隧道模式是 quick,会生成一个随机的 *.trycloudflare.com 地址。
当 upstream.loopbackMode 保持为 null 时,网关会在 Quick Tunnel 模式下自动启用 loopback 风格的上游请求头。这样每次随机域名变化时,不需要反复重启 dsh web。
这非常适合临时分享和插件分发,但它不是固定域名部署的最终形态。
cloudflared 二进制
默认查找顺序如下:
- Windows:
remote-gateway/bin/cloudflared.exe - macOS/Linux:
remote-gateway/bin/cloudflared
如果本地 bin/ 目录中没有对应文件,网关会回退到系统 PATH 中的 cloudflared。
你也可以在 config.json 或环境变量中显式指定 cloudflaredPath。
macOS/Linux 说明
如果将二进制放到 remote-gateway/bin/ 中,记得先赋予可执行权限:
bashchmod +x remote-gateway/bin/cloudflared
如果桌面环境没有 xdg-open,网关仍然可以正常启动,只是不会自动打开分享页,此时可手动打开输出的分享页路径。
环境变量覆盖
以下主要配置项都可以通过环境变量覆盖:
REMOTE_GATEWAY_BIND_ADDRESSREMOTE_GATEWAY_BIND_PORTREMOTE_GATEWAY_UPSTREAM_ORIGINREMOTE_GATEWAY_UPSTREAM_LOOPBACK_MODEREMOTE_GATEWAY_PASSWORDREMOTE_GATEWAY_SESSION_SECRETREMOTE_GATEWAY_COOKIE_NAMEREMOTE_GATEWAY_SESSION_TTL_HOURSREMOTE_GATEWAY_SECURE_COOKIESREMOTE_GATEWAY_DSH_COMMANDREMOTE_GATEWAY_TUNNEL_ENABLEDREMOTE_GATEWAY_TUNNEL_MODEREMOTE_GATEWAY_CLOUDFLARED_PATHREMOTE_GATEWAY_SHARE_OPEN_ON_START
直接运行
bashnode src/index.js
如果 share.openOnStart 为 true,会自动打开本地分享页。否则可以手动打开:
remote-gateway/runtime/share.html
一键启动
按平台选择合适的启动入口:
- Windows 资源管理器 / CMD:
remote-gateway/start_Windows.bat - Windows 兼容别名:
remote-gateway/start.bat - Windows PowerShell:
remote-gateway/start.ps1 - macOS/Linux 终端:
remote-gateway/start_Mac_or_Linux.sh - macOS/Linux 兼容别名:
remote-gateway/start.sh - macOS Finder 双击:
remote-gateway/start.command
这些启动器会自动完成三件事:
- 检查本机是否有 Node.js 22+
- 如果缺依赖,首次启动时自动执行
npm install - 按当前
config.json启动网关
macOS/Linux 首次使用前,建议先执行:
bashchmod +x remote-gateway/start.sh remote-gateway/start.command
Doctor 自检
首次启动前,建议先运行一次环境检查:
bashnpm run doctor
它会检查:
- Node.js 版本
config.json是否可解析- 上游 DSH 是否可达
cloudflared是否能被发现- 依赖是否已安装
- 当前密码模式是固定还是随机
适合发布的目录结构
- 运行时文件已通过
remote-gateway/.gitignore忽略 - 日志文件已通过
remote-gateway/.gitignore忽略 remote-gateway/bin/README.md说明了如何替换或内置cloudflaredremote-gateway/INSTALL.md提供首次安装步骤remote-gateway/FAQ.md提供常见问题答案remote-gateway/RELEASE_CHECKLIST.md提供发布前检查项remote-gateway/RELEASE_ASSETS.md说明 GitHub Release 附件策略remote-gateway/RELEASE_TEMPLATE.md提供 GitHub Release 文案模板
仓库结构
src/网关核心运行代码scripts/启动、自检、打包脚本bin/本地开发或直接运行时使用的cloudflaredvendor/cloudflared/按平台打包发布时使用的源二进制目录runtime/运行时生成的分享页和临时产物docs/screenshots/仓库首页和 Release 使用的截图目录INSTALL.md安装说明FAQ.md常见问题RELEASE_CHECKLIST.md发布检查清单RELEASE_ASSETS.mdGitHub Release 附件说明RELEASE_TEMPLATE.mdGitHub Release 文案模板
健康检查接口
GET /_gateway/health
该接口会返回网关状态、上游探测结果、当前公网 URL 和当前生效密码。


