用手机密码登录,随时查看对话并审批工具调用
27.3/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Gao-Yee/dsh-mobile-gateway该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 78 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 19 处,展示前 19 条)
- 写入本地文件gateway.js:30
try { fs.appendFileSync(LOG_PATH, line + '\n'); } catch (_) {} - 读取本地文件gateway.js:55
if (fs.existsSync(CONFIG_PATH)) { - 读取本地文件gateway.js:57
config = JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8')); - 写入本地文件gateway.js:83
fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n'); - 读取本地文件gateway.js:93
const config = fs.existsSync(CONFIG_PATH) - 读取本地文件gateway.js:94
? JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8')) - 写入本地文件gateway.js:97
fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n'); - 发起网络请求gateway.js:321
const preq = http.request( - 发起网络请求gateway.js:352
const preq = http.request( - 读取本地文件gateway.js:413
if (fs.existsSync(pagePath)) { - 读取本地文件gateway.js:415
fs.createReadStream(pagePath).pipe(res); - 读取密钥环境变量test-model.js:8
const PASSWORD = process.env.DSH_GW_PASSWORD || process.argv[2]; - 读取本地文件test-model.js:14
const html = fs.readFileSync(path.join(__dirname, 'mobile.html'), 'utf8'); - 发起网络请求test-model.js:27
const loginResp = await fetch(BASE + '/login', { - 读取密钥环境变量ui-test-controls.js:7
const PASSWORD = process.env.DSH_GW_PASSWORD || process.argv[2]; - 写入本地文件ui-test-controls.js:16
fs.mkdirSync(SHOTS, { recursive: true }); - 读取密钥环境变量ui-test.js:6
const PASSWORD = process.env.DSH_GW_PASSWORD || process.argv[2]; - 写入本地文件ui-test.js:15
fs.mkdirSync(SHOTS, { recursive: true }); - 发起网络请求ui-test.js:191
await page.evaluate((bid) => { fetch('/api/session.cancel', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 密码登录访问
- 手机查看对话
- 审批工具调用
让手机(同一 Wi-Fi / Tailscale)通过密码登录安全访问本机 DeepSeek Harness Web GUI 的零依赖 Node 反向代理网关,附手机专用 SPA 界面
README
由 DeepSeek 最新模型翻译生成dsh-mobile-gateway
让 iPhone(或任何手机/平板)通过密码登录安全访问电脑上的 DeepSeek Harness,并附带一个手机专用轻量界面(看对话/发消息、审批工具调用、回答提问、查看任务)。
架构
iPhone Safari(同一 Wi-Fi / Tailscale 虚拟网) │ http://:3081 │ 密码登录 → 签发 HttpOnly 会话 Cookie ▼ dsh-mobile-gateway(Node,零依赖,监听 0.0.0.0:3081) │ 校验 Cookie → 透传 HTTP / SSE / WebSocket │ ├─ /m 手机专用界面(同源 SPA) │ ├─ /login 登录页 │ └─ /api/* 与 WS 透传给 DSH ▼ DSH Web GUI 127.0.0.1:3080(保持原样,只监听本机,永不对外暴露)
手机界面(推荐入口)
登录后(或登录页点「📱 手机版界面」)打开 http://:3081/m,功能:
- 会话列表按工作区分组(一级=工作区,二级=会话;组头+号可一键在该工作区新建会话),会话带运行状态、一键停止、待处理审批/提问徽标
- 会话卡片「⋯」菜单:重命名 / 归档(归档二次确认,电脑端可恢复)
- 对话:流式显示消息与思考过程、工具调用/结果折叠卡片、加载更早消息
展开完整文档(README 剩余 1 节)
dsh-mobile-gateway 让 iPhone(或任何手机/平板)通过密码登录安全访问电脑上的 DeepSeek Harness,并附带一个手机专用轻量界面(看对话/发消息、审批工具调用、回答提问、查看任务)。 架构 iPhone Safari(同一 Wi-Fi / Tailscale 虚拟网) │ http://:3081 │ 密码登录 → 签发 HttpOnly 会话 Cookie ▼ dsh-mobile-gateway(Node,零依赖,监听 0.0.0.0:3081) │ 校验 Cookie → 透传 HTTP / SSE / WebSocket │ ├─ /m 手机专用界面(同源 SPA) │ ├─ /login 登录页 │ └─ /api/* 与 WS 透传给 DSH ▼ DSH Web GUI 127.0.0.1:3080(保持原样,只监听本机,永不对外暴露) 手机界面(推荐入口) 登录后(或登录页点「📱 手机版界面」)打开 http://:3081/m,功能: - 会话列表按工作区分组(一级=工作区,二级=会话;组头+号可一键在该工作区新建会话),会话带运行状态、一键停止、待处理审批/提问徽标 - 会话卡片「⋯」菜单:重命名 / 归档(归档二次确认,电脑端可恢复) - 对话:流式显示消息与思考过程、工具调用/结果折叠卡片、加载更早消息 - 审批工具调用:实时弹出「允许一次 / 拒绝」卡片 - 回答提问:选项 / 自定义输入 / 取消(实时流不打断输入焦点) - 任务面板:当前会话的 jobs 实时状态;agent 出错有提示 - 选择对话模式:新会话发送首条消息前,可在输入框上方切换 Agent 预设(标准 / PTC / 极简 / 创造模式及自定义预设);会话开始后模式固定,chip 变为只读(电脑端切换会实时同步到手机) - 选择模型与思考强度:输入框上方 chip 实时显示当前模型与强度档位,点开底部弹层按提供商分组切换模型、单独调整思考强度(off / high / max 等,随模型目录而定) - 移植 Web 端原有 UI:/m 直接复用 DSH Web 客户端的原始 CSS 变量、侧栏会话行、消息气泡、思考/工具行与输入卡视觉(仅做手机尺寸适配),不再使用自创的玻璃拟态风格 - 深色 / 浅色主题切换:列表页底部与对话页头部均有切换按钮,选择持久化(localStorage),刷新保持 - 断线自动补漏:手机锁屏/切 App 导致 WS 断开后,重连自动重放历史尾页(按 seq 去重) - iOS 安全区适配、PWA manifest,可「添加到主屏幕」当 App 用 桌面端完整界面仍在 http://:3081/(与原来一致)。 界面预览 ipad版会话列表(浅色模式,部分本地路径已模糊处理) 手机版对话界面(新建会话) 文件说明 | 文件 | 作用 | | gateway.js | 网关主程序(登录、限速、会话、反向代理、/m 路由) | | mobile.html | 手机专用 SPA(零构建单文件,对接 DSH /api RPC 与 WS 事件流) | | config.example.json | 配置模板(可复制为 config.json 使用,空字段会在首次启动时自动生成) | | config.json | 运行时配置(端口、密码哈希、会话密钥)——首次运行自动生成,已被 .gitignore 排除 | | gateway.log | 运行日志——已被 .gitignore 排除 | | package.json | npm 脚本与可选开发依赖(playwright-core,仅 UI 测试使用) | | 启动网关.bat / 停止网关.bat | 双击即用的开关(推荐日常使用,无需开 PowerShell) | | start-gateway.ps1 | 后台启动网关(自动读取 config.json 中的端口) | | stop-gateway.ps1 | 停止网关(自动读取 config.json 中的端口) | | register-autostart.ps1 | 注册/取消开机自启(当前未启用,手动开关模式) | | probe-ws.js | 诊断工具:WebSocket 握手探针 | | probe-frames.js | 诊断工具:读取 mux/host 实时帧 | | test-model.js | 模型逻辑回归测试(真实登录 + 真实 API + 合成帧,20 项断言) | | ui-test.js | 浏览器 UI 回归测试(iPhone 15 Pro Max 视口,需 npm i playwright-core 与本机 Chrome) | | ui-test-controls.js | 新功能 UI 测试:主题切换 / 对话模式选择 / 模型与思考强度弹层(同上依赖) | 快速开始(PC 端) 1. 确认 DSH 正在运行:浏览器能打开 http://127.0.0.1:3080 2. 双击 启动网关.bat(或在 PowerShell 中运行 .\start-gateway.ps1) 3. 查看 gateway.log,里面会列出本机局域网地址,如 http://192.168.x.x:3081 手机接入 方式一:同一 Wi-Fi 直连(最简单) 1. iPhone 与电脑连同一个 Wi-Fi 2. Safari 打开 http://:3081/healthz —— 显示 ok 说明网络通 3. 打开 http://:3081 → 输入访问密码 → 进入 DSH 4. 建议:分享按钮 →「添加到主屏幕」,像 App 一样使用 电脑 IP 可从 gateway.log 查看,或在电脑上运行 ipconfig 查看 WLAN 的 IPv4 地址。 方式二:Tailscale(推荐:全程加密,出门在外也能用) 1. 电脑安装 Tailscale(https://tailscale.com/download),登录你的账号 2. iPhone App Store 安装 Tailscale,登录同一个账号 3. 电脑上获取 Tailscale IP(托盘图标菜单中显示,或命令行 tailscale ip -4,形如 100.x.y.z) 4. iPhone Safari 打开 http://:3081 → 登录使用 首次使用注意(防火墙) 如果手机打不开 /healthz,是 Windows 防火墙拦截了 3081 端口。在管理员 PowerShell 中运行一次: netsh advfirewall firewall add rule name="dsh-mobile-gateway" dir=in action=allow protocol=TCP localport=3081 profile=private 如果你的 Wi-Fi 被 Windows 识别为「公用网络」,请把命令中的 private 换成 any。 Tailscale 访问若被拦,也建议使用 profile=any 的规则。 密码管理 - 首次运行:自动生成随机密码,只在启动日志中显示一次 - 修改密码:node gateway.js --set-password ,然后重启网关生效(stop-gateway.ps1 → start-gateway.ps1) - 忘记密码:同样用上面的命令直接设置新密码 - 密码只以 SHA-256 哈希保存在 config.json,不存明文 - 改密码不影响已登录设备的会话(Cookie 签名制);如需强制重新登录,在设备上访问 /logout 常用操作 | 操作 | 命令 | | 启动 | 双击 启动网关.bat(或 .\start-gateway.ps1) | | 停止 | 双击 停止网关.bat(或 .\stop-gateway.ps1) | | 开机自启 | 需要时再启用:.\register-autostart.ps1(取消:.\register-autostart.ps1 -Remove) | | 修改密码 | node gateway.js --set-password (需重启网关生效) | | 退出登录 | 手机浏览器访问 http://:3081/logout | | 诊断 WS | node probe-ws.js | 当前为手动开关模式:开机不会自动启动网关,用手机前先双击「启动网关.bat」。 开发与测试 运行测试前请先启动网关,并确保 DSH 后端(http://127.0.0.1:3080)可用。 UI 测试依赖 playwright-core 与本机 Chrome/Edge: npm install 模型逻辑回归测试(需要访问密码,二选一) node test-model.js DSH_GW_PASSWORD= node test-model.js 浏览器 UI 测试(需本机 Chrome) DSH_GW_PASSWORD= node ui-test.js DSH_GW_PASSWORD= node ui-test-controls.js 非 Windows 或 Chrome 不在默认路径时,通过环境变量指定浏览器 DSH_CHROME_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe" node ui-test.js 测试脚本不会读取或保存明文密码;请通过环境变量 DSH_GW_PASSWORD 或第一个命令行参数传入访问密码,不要硬编码到代码中。 开源协议 MIT。gateway.js 与 mobile.html 为零依赖实现,仅使用 Node.js 内置模块;UI 测试使用 playwright-core 作为可选开发依赖。 安全说明 - 鉴权:所有请求(含 WebSocket 升级)都必须携带有效会话 Cookie,否则 401/跳转登录页 - 限速:同一 IP 连续 5 次密码错误锁定 10 分钟 - 会话:HMAC 签名 + 有效期(默认 30 天,config.json 中 sessionDays 可调),HttpOnly 防脚本窃取 - 隔离:DSH 本体(3080)始终只监听 127.0.0.1;网关 3081 是唯一网络入口 - 传输加密:直连模式下为 HTTP 明文(依赖家庭 Wi-Fi 的 WPA 加密);Tailscale 模式下全程 WireGuard 端到端加密,外出使用请务必走 Tailscale 常见问题 | 现象 | 原因与解决 | | /healthz 打不开 | 防火墙未放行 3081,见上文管理员命令;或电脑/手机不在同一网络 | | 登录后页面 502 | dsh web 未运行,先在电脑上启动 DSH | | 手机登录页正常但会话频繁失效 | 手机时间与电脑偏差过大,校准时间 | | 忘记密码 | node gateway.js --set-password | | 想改端口 | 编辑 config.json 的 port,重启网关(同时更新防火墙规则) |
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Gao-Yee/dsh-mobile-gateway
用手机密码登录,随时查看对话并审批工具调用
相关插件 · 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,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目