- Home
- Plugins
- Tools & Capabilities
- dsh-ops-console
dsh-ops-console
wendyltan/dsh-ops-console
DeepSeek Harness 的简洁远程访问面板:准备 Tailscale 入口、检查就绪状态并生成本地访问二维码。
Install
dsh plugin --profile web add github:wendyltan/dsh-ops-consoleREADME
dsh-ops-console
Mac 留在桌边,换到手机上继续用 Harness。
dsh-ops-console 是 DeepSeek Harness 的可选 Web 插件,入口在“设置 → 远程访问”。它把 Tailscale 入口设置、连接状态和访问二维码放在一起,让你不用手动拼命令、填写域名,就能准备好远程访问。
它不会把 Harness 默认公开到互联网。正常使用方式是:Mac 和手机都连接到获准访问的 Tailscale 网络,再通过二维码或地址打开 Harness。
它解决什么问题
远程打开 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 包设置中配置可信发布者。
许可
Related plugins
archify (deepseek-harness)
tt-a1i/archify
WeKnora (dsh-weknora)
tencent/weknora
weknora
tencent/weknora
BrowserSkill (dsh-plugin-browserskill)
tencent/browserskill