Back to home

ZSLsherly

DSH-remote-console

No description

Stars
0
Language
TypeScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

DSH Remote Console

DSH Remote Console 是 DeepSeek Harness (DSH) Web profile 的移动端增强插件,插件 ID 为 dsh-mobile。它通过 Tailscale Serve 将本机 DSH 安全地提供给手机浏览器,无需在公网监听端口。

功能

  • 显示 DSH 连接、运行、等待操作和就绪状态。
  • 统计待处理/已完成会话,并跳转到下一个会话。
  • 在浏览器页面存活时提供待操作/任务完成通知。
  • 支持浏览器的“安装应用”提示。
  • 仅在手机/触摸屏布局中显示,不替换 DSH 原有界面。

设计

手机浏览器
    |
    | Tailscale HTTPS(Tailnet 内)
    v
Tailscale Serve :8443
    |
    | http://127.0.0.1:3080
    v
DSH Web + dsh-mobile
    |
    v
DSH 官方 Session / RPC / Permission / Reconnect

插件不解析会话 JSONL,不创建额外的 DSH 子进程,不提供终端或 bypassPermissions。客户端以附加项方式注册到官方 conversation.input.dock Slot。

环境要求

  • Windows 10/11
  • DSH 0.1.0-rc.6
  • Node.js 22.19+24+
  • Corepack
  • Tailscale(远程访问需要)

官方安装方式

DSH 官方插件分发路径是 dsh plugin --profile <name> add,支持 npm 包、tarball 和 GitHub 安装。

# 从 npm(发布后)
dsh plugin --profile web add @wahu/dsh-mobile

# 从本地 tarball
corepack pnpm pack
dsh plugin --profile web add ./wahu-dsh-mobile-0.2.0.tgz

# 从 GitHub Release tarball
dsh plugin --profile web add https://github.com/ZSLsherly/DSH-remote-console/releases/download/v0.2.0/wahu-dsh-mobile-0.2.0.tgz

# 从 GitHub(已提供 prepare 构建)
dsh plugin --profile web add github:ZSLsherly/DSH-remote-console

包名 @wahu/dsh-mobile,插件 ID 同为 dsh-mobile;包内已声明 dsh.bundledsh.client manifest。

安装

在 CMD 中执行:

git clone https://github.com/ZSLsherly/DSH-remote-console.git
cd /d DSH-remote-console
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\install.ps1

安装脚本会完成依赖安装、类型检查、测试、构建,然后把当前目录链接到 DSH web profile。

验证 profile:

dsh.cmd --profile web --dump-config | findstr /i dsh-mobile

本机使用

dsh.cmd --profile web --port 3080

浏览器打开 http://127.0.0.1:3080

手机远程访问

1. 首次配置

电脑和手机先登录同一个 Tailnet。在电脑 CMD 中执行:

cd /d DSH-remote-console
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\start-remote.ps1 -ConfigureServe

脚本会:

  1. tailscale status --json 读取当前设备的 MagicDNS 域名。
  2. 配置 Tailscale HTTPS 8443 代理到 127.0.0.1:3080
  3. 以该 MagicDNS authority 作为 --trusted-host 启动 DSH。
  4. 如果端口上已有符合安全要求的 DSH,则验证后复用它。

脚本输出的 Mobile URL 就是手机访问地址,例如:

https://device-name.example.ts.net:8443/

2. 手机登录

  1. 在 iOS/Android 安装 Tailscale。
  2. 登录与电脑相同的 Tailscale 账号,或加入同一 Tailnet。
  3. 确认手机 Tailscale 状态为已连接。
  4. 用手机浏览器打开脚本输出的 Mobile URL

DSH 没有额外的账号登录页;Tailnet 成员身份和 ACL 就是访问边界。

3. 日常启动

Tailscale Serve 配置会保留。电脑重启后只需:

cd /d DSH-remote-console
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\start-remote.ps1

如果脚本新启动了 DSH,该 CMD 窗口需要保持打开;按 Ctrl+C 停止。

4. 连通性验证

新开 CMD:

cd /d DSH-remote-console
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\check-remote.ps1

检查 Tailscale Serve 状态:

"C:\Program Files\Tailscale\tailscale.exe" serve status

远程打开本地工作区

DSH 出于安全限制,host.pickDirectory 只允许本机回环调用;手机通过 Tailscale 远程访问时调用它会返回 HTTP 403

手机远程访问时,本插件会接管 DSH 原生的 “选择工作区域 / 添加工作区” 流程:点击后会弹出路径输入框,输入电脑上的本地工作区绝对路径,插件会通过 DSH 的 workspace.create 接口直接注册并打开该目录,绕开被限制的原生目录选择器。对话输入区的 “打开工作区” 按钮也走同样的路径。

示例路径:

C:\my-project

电脑防睡眠

手机远程连接后,浏览器会每 20 秒向插件心跳端点发送一次请求。插件在电脑上收到心跳后,会通过 Windows SetThreadExecutionState 保持系统唤醒,避免电脑进入睡眠;超过 90 秒没有心跳后自动恢复系统正常睡眠策略。

该机制不修改电源计划,也不需要管理员权限。插件更新到本版本后需要重启一次 DSH,新的 Node 端才会生效。

安全边界

  • DSH 只监听 127.0.0.1,不使用 0.0.0.0
  • 远程脚本只配置 Tailscale Serve,不开启 Funnel。
  • --trusted-host 只加入当前设备的 MagicDNS :8443 authority。
  • Tailscale Serve 默认仅 Tailnet 内可见,请同时维护好 Tailnet ACL。
  • 页面通知不是 Web Push;浏览器必须保持页面存活。

停用 8443 代理:

"C:\Program Files\Tailscale\tailscale.exe" serve --https=8443 off

开发

corepack.cmd pnpm install
corepack.cmd pnpm run check

check 依次执行 TypeScript 类型检查、Vitest 测试和 Node/浏览器 bundle 构建。

License

MIT

生态标签

该仓库/包使用以下标签便于 DSH 插件市场与社区索引发现:

  • GitHub topics:dsh-plugindeepseek-harnessdshmobileremote-consoletailscale
  • npm keywords:dsh-plugindeepseek-harnessdshmobileremote-consoletailscale