远程安全访问代理 IslandManSwevo/deepseek-harness-tailscale
DeepSeek Harness经 Tailscale 从手机安全远程操控 Web UI
28.6/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add IslandManSwevo/deepseek-harness-tailscale该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 零配置启动器
- 内置文件查看器
从任意设备通过 Tailscale 安全运行 DeepSeek Harness(dsh)Web UI——零配置启动器、兼容 WebSocket 的反向代理、内置文件查看器。
README
由 DeepSeek 最新模型翻译生成DeepSeek Harness · 随时随地,通过 Tailscale 访问
在一台机器上运行 DeepSeek Harness(dsh)——通过私有 Tailscale 网络,从你的手机、平板和笔记本电脑安全地远程操控它。
零配置启动器 · WebSocket 安全反向代理 · 内置文件查看器 · 自动更新 · 可选 HTTPS
环境要求: Windows(PowerShell + Windows 防火墙)· Node.js ≥ 24 · 主机及所有连接设备上均安装 Tailscale。
为什么需要这个项目
dsh 拥有一个非常出色的 Web UI——但它拒绝绑定到 127.0.0.1 以外的地址,这是有意为之,因为它可以在你的机器上执行代码。开箱即用的情况下,你只能在运行它的同一台电脑的浏览器中使用它。
最朴素的解决方案——在它前面放一个反向代理——会以看似灾难性的方式失败:
- 你刷新页面后,工作区和历史记录就"消失"了。 客户端只有在两个 WebSocket 连接建立后才会加载它们。一个损坏的代理会悄无声息地杀掉这些连接,于是 UI 就停留在"添加工作区 / 选择工作区",而你在一旁惊慌失措。
- 从手机创建工作区 → HTTP 403(原生文件夹选择器仅限回环地址)。
展开完整文档(README 剩余 1 节)
DeepSeek Harness · 随时随地,通过 Tailscale 访问 在一台机器上运行 DeepSeek Harness(dsh)——通过私有 Tailscale 网络,从你的手机、平板和笔记本电脑安全地远程操控它。 零配置启动器 · WebSocket 安全反向代理 · 内置文件查看器 · 自动更新 · 可选 HTTPS 环境要求: Windows(PowerShell + Windows 防火墙)· Node.js ≥ 24 · 主机及所有连接设备上均安装 Tailscale。 为什么需要这个项目 dsh 拥有一个非常出色的 Web UI——但它拒绝绑定到 127.0.0.1 以外的地址,这是有意为之,因为它可以在你的机器上执行代码。开箱即用的情况下,你只能在运行它的同一台电脑的浏览器中使用它。 最朴素的解决方案——在它前面放一个反向代理——会以看似灾难性的方式失败: - 你刷新页面后,工作区和历史记录就"消失"了。 客户端只有在两个 WebSocket 连接建立后才会加载它们。一个损坏的代理会悄无声息地杀掉这些连接,于是 UI 就停留在"添加工作区 / 选择工作区",而你在一旁惊慌失措。 - 从手机创建工作区 → HTTP 403(原生文件夹选择器仅限回环地址)。 - 从手机打开生成的文件 → HTTP 403(host.openPath 仅限回环地址)。 本项目真正解决了以上全部三个问题。 它是什么 | 组件 | 作用 | | start-harness.ps1 | 一条命令搞定。自动检测 Node.js、你的 dsh 安装位置以及你的 Tailscale 身份,然后在端口空闲时启动代理(如果端口空闲)并启动 dsh(如果端口空闲)。幂等——无需编辑配置文件。如果登录时 tailnet 仍在连接中,它会在后台持续轮询,并在 Tailscale 就绪后自动启动代理。 | | web-proxy.js | 加固的 Node 反向代理:忠实转发 WebSocket 升级请求(/api/events.mux、/api/events.host),因此刷新后能恢复你的历史记录;规范化 Host/Origin,使 dsh 的浏览器信任围栏得以通过;注入在纯 HTTP 下所需的 crypto.randomUUID polyfill。 | | web-files.js + web-files-page.html | 位于 /__files 的内置文件浏览器/查看器/编辑器——从手机点击生成的文件即可打开,而不会返回 403。 | | check-updates.ps1 | 当有更新的 dsh 可用时发出通知(或自动更新,并备份 ~/.dsh)。 | | 可选 HTTPS | 通过 tailscale serve + 免费的 Let's Encrypt 证书实现。Tailscale 原生——不向公共互联网暴露任何内容。 | 快速开始 1. 在主机上安装 Tailscale 并登录。在 Tailscale 管理控制台中启用 HTTPS 证书(DNS → HTTPS Certificates)。 2. 安装 harness:npm install -g @deepseek-ai/dsh(Node.js ≥ 24)。 3. 将本仓库的文件复制到一个文件夹中,例如 %USERPROFILE%\dsh\。 4. 将代理端口限制为仅 tailnet 可访问(如果你更改了 DSH_PROXY_PORT,请相应调整 -LocalPort): New-NetFirewallRule -DisplayName 'DeepSeek Harness (Tailscale only)' -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3080 -RemoteAddress 100.64.0.0/10, fd7a:115c:a1e0::/48 5. 启动它(幂等——可安全重复运行): powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\dsh\start-harness.ps1" 6. 可选 HTTPS:tailscale serve --bg http://127.0.0.1:3080 7. 从任意 Tailscale 设备访问:https://..ts.net 就这么简单。 启动器会自动从你的 Tailscale 身份中推导出受信任主机列表。关于登录时自动启动的计划任务、停止方法、所有配置选项以及深入故障排除,请参阅 完整部署指南。 别人都没搞对的部分 刷新 → 历史记录丢失不是数据问题——你的数据从未丢失(工作区和会话都存放在 ~/.dsh 中)。这是一个 WebSocket 问题:dsh 只有在 /api/events.mux 和 /api/events.host 连接之后才会拉取其工作区/会话基线。大多数代理能正常转发 HTTP,但会破坏 101 升级握手,因此 UI 看起来像是被清空了。本代理正是为解决这两个握手问题而构建的——并且部署指南中包含了能证明这一点的原始握手测试。 安全模型 - dsh 保持仅限回环;代理拥有面向 tailnet 的端口,是唯一的入口。 - Windows 防火墙规则仅允许来自 Tailscale CGNAT 范围(100.64.0.0/10、fd7a:115c:a1e0::/48)的流量访问代理端口——不会向公共互联网暴露任何内容。 - 每个请求都要通过浏览器信任围栏:仅限回环或受信任的 Tailscale 权威来源;跨站以及 Origin/Host 不匹配的请求会被拒绝。 - /__files 查看器仅支持读写(不执行代码),路径限制在 DSH_FILES_ROOT 内,并拒绝 ..、符号链接逃逸和空字节遍历。 提醒: 你 tailnet 上的任何设备都可以通过代理访问该 harness。这正是其设计目的——但请确保 tailnet 中只有你信任的人。dsh 没有登录功能;在共享 tailnet 上,请通过 Tailscale ACL 限制谁可以访问此节点的 :3080/:443,而不要仅依赖 tailnet 成员身份。 配置 每项设置都是可选的且会自动检测;可通过环境变量覆盖(DSH_NODE、DSH_DSH_BIN、DSH_TS_HOST、DSH_TS_IP、DSH_TS_WAIT_SECONDS、DSH_TS_RETRY_SECONDS、DSH_PROXY_PORT、DSH_WEB_PORT、DSH_UPDATE_TRACK、DSH_AUTO_UPDATE、DSH_FILES_ROOT)。如果登录时 Tailscale 仍在连接,启动器会轮询等待它(DSH_TS_WAIT_SECONDS,默认 60),然后启动后台重试(DSH_TS_RETRY_SECONDS,默认 600),以便在 tailnet 出现后自动启动代理。详情见部署指南。 故障排除一览 - 刷新后历史记录“消失” → WebSocket 代理问题;运行 start-harness.ps1 -Verify(一次性健康检查)或指南中的原始握手测试。 - 手机上 UI 正常但没有历史记录,而 PC 上正常 → dsh 运行时缺少其 --trusted-host 列表(它在 Tailscale 就绪之前就启动了)。重新运行 start-harness.ps1(它现在会自我修复此问题),并用 -Verify 确认。 - 从手机创建工作区时出现 HTTP 403 → 启动器设置了 SSH_CONNECTION=remote 以启用浏览器内目录选择器。 - 从手机打开生成的文件时出现 HTTP 403 → 使用内置的 /__files 查看器。 测试 node --test 针对进程内的假上游运行代理和文件查看器测试套件——无需 dsh 或 Tailscale: - WebSocket 101 中继和上游拒绝透传 - 突然断开的韧性(代理必须在手机中途断流时存活,而不是崩溃) - Host → Origin 规范化 - polyfill + 集成脚本注入(包括文档已经引用 crypto.randomUUID 的情况) - /__files 路径包含、信任围栏和保留 CRLF 的写入 对于实时部署健康检查,运行 start-harness.ps1 -Verify:它断言组件所有权、dsh 携带其 --trusted-host 列表,以及两个 WebSocket 握手都返回 101 并带有 tailnet Origin(手机的确切请求路径)。 常见问题 - 这是公共互联网服务吗? 不是——设计上仅限 tailnet(通过 Tailscale 实现防火墙 + HTTPS)。 - 它会取代 dsh 吗? 不会——它部署并安全地暴露真实的 @deepseek-ai/dsh Web UI。 - 为什么需要代理? 因为 dsh web 故意拒绝绑定到回环地址之外。 - 它能在 macOS/Linux 上运行吗? 脚本面向 Windows(PowerShell、Windows 防火墙、计划任务)。代理本身是纯 Node,可以适配。 许可证 MIT。欢迎提交 Issue 和 PR。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
IslandManSwevo/deepseek-harness-tailscale
经 Tailscale 从手机安全远程操控 Web UI
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,362已汉化DSH
71.4
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,076已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,814已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。