Перейти к основному содержимому
W

dsh-ops-console

wendyltan/dsh-ops-console

DeepSeek Harness 的简洁远程访问面板:准备 Tailscale 入口、检查就绪状态并生成本地访问二维码。

Установка

dsh plugin --profile web add github:wendyltan/dsh-ops-console

README

dsh-ops-console

Mac 留在桌边,换到手机上继续用 Harness。

dsh-ops-console 是 DeepSeek Harness 的可选 Web 插件,入口在“设置 → 远程访问”。它把 Tailscale 入口设置、连接状态和访问二维码放在一起,让你不用手动拼命令、填写域名,就能准备好远程访问。

它不会把 Harness 默认公开到互联网。正常使用方式是:Mac 和手机都连接到获准访问的 Tailscale 网络,再通过二维码或地址打开 Harness。

在 npm 查看 dsh-ops-console

它解决什么问题

远程打开 Harness,真正麻烦的往往不是得到一个网址,而是回答下面几件事:Tailscale 到底有没有连上?Harness 是否已经准备好?关掉入口会不会误伤其他服务?

dsh-ops 主要做四件事:

  • 准备入口:为 Harness 创建 Tailscale Serve 入口,并自动配置当前 Tailscale 地址;遇到冲突会停止,不直接覆盖其他服务。
  • 扫码打开:显示就绪状态、本地生成的二维码和可复制地址。开启与关闭入口只能在 Mac 本机操作。
  • 失败后能继续:如果入口已创建,但 Harness 设置没有保存成功,点“继续完成设置”即可重试,不必先关掉重来。
  • 发现公网配置时提醒:检测到直接指向 Harness 的 Funnel 配置时显示警告,暂停展示常规扫码入口,不自动修改其他服务。

dsh-ops 有意不做引擎管理:它不会安装、更新、重启或恢复 Harness,也不读取余额、日志、API Key、提示词或会话正文。这些本机能力由 dsh-desktop 负责。

开始使用

开始前,请确认这台 Mac 已经有可正常使用的 dsh Web profile、Node.js 18 或更高版本,并已安装和登录 Tailscale。

1. 安装插件

推荐从 npm 安装:

dsh plugin --profile web add dsh-ops-console

也可以安装 GitHub 版本:

dsh plugin --profile web add github:wendyltan/dsh-ops-console

本地开发时,也可以直接安装源码目录:

dsh plugin --profile web add /path/to/dsh-ops-console

安装后重新启动 dsh Web 服务,进入“设置 → 远程访问”。如果使用 dsh-desktop,请通过客户端的服务管理操作重启;只刷新网页不会加载新插件。

2. 在 Mac 上准备远程入口

点击“设置远程访问”。dsh-ops 会为 Harness 创建 Tailscale Serve 入口,并自动完成当前 Tailscale 地址所需的 Harness 设置;用户不需要填写自定义域名。

如果 HTTPS 根地址已经被其他服务使用,操作会停止并说明冲突,不会直接覆盖。页面提示“Harness 等待重启”时,重新启动 Harness 服务即可;下次加载后,dsh-ops 会再次确认设置是否已经生效。

如果提示“入口已创建,Harness 设置尚未完成”,按页面说明检查配置目录权限,然后点击“继续完成设置”。插件只补齐缺失设置,不重新创建已有入口。提示需要重新启动时,必须重新启动 Harness 服务;仅刷新网页不生效。

3. 扫码打开

入口就绪后,页面会直接显示二维码和 HTTPS 地址。在已经登录获准 Tailscale 账号的手机或电脑上扫码,或者复制地址打开即可。

正常使用 Serve 时,实际哪些用户和设备可以访问,由 Tailscale 的访问规则(ACL)决定;dsh-ops 不会绕过或替代这层权限。二维码只包含远程 HTTPS 地址,在 Mac 本地生成,不会把地址发送给第三方二维码服务。

扫码不是授权,也不是必经步骤。 已获准访问的设备直接输入同一个地址,也可以打开 Harness。

谁能做什么

能力Mac 本机Tailscale 远程设备
查看入口状态和复制地址可以可以
开启或关闭远程入口可以不可以
更新、重启、恢复引擎不属于 dsh-ops不属于 dsh-ops

关闭远程访问时,dsh-ops 只移除 Harness 自己的 Serve 入口,不执行全局 tailscale serve reset,因此不会删除其他 Tailscale Serve 配置。

如果设备丢失,应在 Tailscale 中撤销该设备或调整 ACL。若要关闭 Harness 的远程入口,可以在 Mac 本机展开“更多访问设置”操作;它不会修改 Tailscale ACL,也不会影响其他应用的 Serve 入口。

页面上的状态是什么意思

页面状态发生了什么你可以怎么做
Tailscale 未连接应用未运行、未登录或当前离线在 Mac 上打开并登录 Tailscale
入口未创建还没有为 Harness 配置 Serve在 Mac 本机点击“设置远程访问”
Harness 设置未完成入口已创建,自动保存配置尚未成功检查目录权限后点击“继续完成设置”
Harness 等待重启远程设置已保存,Harness 尚未载入重新启动 Harness 服务,不能只刷新网页
远程入口已开启Mac 端的三项配置已经就绪扫码或复制地址,在另一台设备打开
请检查公网访问配置检测到直接指向 Harness 的 Funnel 配置在 Mac 上核查并关闭对应入口的 Funnel
无法确认 Funnel 配置状态读取失败或配置无法识别检查本机 Tailscale;不要把“未知”当成“安全”

“检测连接”会从 Mac 本机访问远程 HTTPS 地址。它可以证明本机端配置完成,但不能代替你在手机或另一台电脑上的真实打开测试。

几个容易误会的地方

需要购买域名吗? 不需要。插件使用这台 Mac 的 Tailscale 地址,不提供自定义域名映射。

手机可以开关远程入口吗? 不可以。远程设备可以查看状态和复制地址,管理操作只在 Mac 本机开放。

为什么没有设备授权列表或确认码? 设备与人员权限由 Tailscale 管理。插件不再维护另一套容易让人误以为“确认过才有权限”的记录。

看到二维码,就表示手机一定能连上吗? 不表示。手机仍需连接 Tailscale,并具备访问这台 Mac 的权限;最终以实际打开并正常使用 Harness 为准。

安全和隐私

  • 开启和关闭入口同时要求同源请求、Mac 本机访问和本机管理令牌。
  • 正常 Serve 入口的访问资格由 Tailscale 账号、设备和 ACL 管理;二维码不承担身份验证。
  • 访问二维码由本机的 MIT 许可编码器生成,不调用外部二维码接口,只编码远程 HTTPS 地址。
  • 公共健康接口只返回插件可用性和版本,不公开 PID、端口、引擎版本或本机路径。
  • 自动写入当前 Tailscale 地址前最多保留五份配置备份,并采用同步落盘和原子替换。

公网提示依据 Tailscale 的 Serve 配置定义,按域名、端口及直接指向 Harness 的 HTTP/TCP 转发进行匹配,也检查前台配置。它只读配置,不开启 Funnel、不自动关闭其他服务。检测到相关 Funnel 或无法判断时,不展示常规扫码入口;必须先在 Mac 上核查对应配置。

“未发现”只表示没有匹配到这类直接转发配置,不是安全审计,不覆盖路由器端口映射、其他反向代理或间接转发,也不能证明手机端一定可达。

0.7.1 更新

  • 移除手动添加、删除访问域名的界面和接口,保留当前 Tailscale 地址的自动设置,不主动清理已有的其他地址。
  • 修复部分设置失败后没有继续入口的问题;重试只补齐缺失设置。
  • 新增针对 Harness 的 Funnel 公网配置提示;读取失败时显示未知状态,不误报安全。
  • 明确区分“需要重启服务”和“刷新网页”,避免配置已保存却尚未生效时反复尝试。

开发与发布

运行完整验证:

npm test

验证覆盖语法、权限边界、路由契约、页面状态、配置保存失败后的重试,以及一次临时 dsh Web 启动。Funnel 检测使用隔离配置,覆盖其他服务、不同端口、前台配置和无法解析的状态,不需要把真实服务公开到互联网。

仓库维护者或本机开发者验证通过后,可以部署到受保护的本机开发环境:

node scripts/deploy.mjs

普通用户不需要运行部署脚本,直接从 npm 安装即可。发布新版本前,可用 npm pack --dry-run 检查实际入包文件;仓库也提供 GitHub Trusted Publishing 工作流,需先在 npm 包设置中配置可信发布者。

许可

MIT

Похожие плагины