🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

安卓进度监视 DEEPDIVE571/DSHWatch

DeepSeek Harness
DEEPDIVE57181 天前有提交已提供中文文档扫描:含敏感能力

在手机上实时查看智能体进度并远程授权

26.3/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add DEEPDIVE571/DSHWatch
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · other
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/7) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读取剪贴板或密钥环境变量
查看扫描证据(共 1 处,展示前 1 条)
  • 读取密钥环境变量
    bridge/dsh-lan-bridge.mjs:35
    const TOKEN = process.env.DSH_LAN_TOKEN || randomBytes(12).toString("hex");
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 实时查看智能体进度
  • 远程授权
  • 任务完成通知

DeepSeek Harness 的 Android 伴侣:局域网实时监控智能体进度,授权/任务完成通知

README

由 DeepSeek 最新模型翻译生成
DSH Watch — DSH 智能体进度监视 Android App 通过局域网实时查看 DeepSeek Harness(DSH)智能体的工作进度,并在需要新一轮授权时通过系统通知提醒你,支持从通知栏直接允许/拒绝。 特性 - 📡 局域网直连:App 通过 WebSocket 订阅 DSH 的事件流(/api/events.mux + /api/events.host),实时显示: - 会话列表(运行状态、标题、目标 goal、任务清单 todo 进度、统计) - 后台任务(jobs)状态(运行中/完成/失败) - 事件动态流(工具调用、消息、任务更新、授权请求) - 🔔 授权通知:智能体请求新一轮授权时推送高优先级通知(带声音/振动),通知栏即可点「允许」或「拒绝」,无需打开 App。 - ❓ 提问通知:智能体调用 ask_user_question 时推送通知,可在 App 内选择选项回答。 - 💾 后台常驻:前台服务(Foreground Service)+ 常驻通知 + 指数退避断线重连,对抗 Android 内存回收;START_STICKY 保证被系统回收后自动重建。 - 🔄 开机自启动:BOOT_COMPLETED 接收器 + 设置项控制(部分厂商 ROM 需额外授权,见下)。
展开完整文档(README 剩余 1 节)
DSH Watch — DSH 智能体进度监视 Android App

通过局域网实时查看 DeepSeek Harness(DSH)智能体的工作进度,并在需要新一轮授权时通过系统通知提醒你,支持从通知栏直接允许/拒绝。

特性

- 📡 局域网直连:App 通过 WebSocket 订阅 DSH 的事件流(/api/events.mux + /api/events.host),实时显示:
- 会话列表(运行状态、标题、目标 goal、任务清单 todo 进度、统计)
- 后台任务(jobs)状态(运行中/完成/失败)
- 事件动态流(工具调用、消息、任务更新、授权请求)
- 🔔 授权通知:智能体请求新一轮授权时推送高优先级通知(带声音/振动),通知栏即可点「允许」或「拒绝」,无需打开 App。
- ❓ 提问通知:智能体调用 ask_user_question 时推送通知,可在 App 内选择选项回答。
- 💾 后台常驻:前台服务(Foreground Service)+ 常驻通知 + 指数退避断线重连,对抗 Android 内存回收;START_STICKY 保证被系统回收后自动重建。
- 🔄 开机自启动:BOOT_COMPLETED 接收器 + 设置项控制(部分厂商 ROM 需额外授权,见下)。
- 🔐 安全:DSH 服务本身仍只监听 127.0.0.1;局域网访问通过独立的 dsh-lan-bridge 桥接器,并用共享 Token 做访问控制(非浏览器客户端不携带 Origin,可正常通过 DSH 的 browser-trust 围栏)。

架构

┌─────────────┐ WebSocket/HTTP ┌──────────────────┐ Host 重写 ┌──────────────────┐ │ Android App │ ────────────────► │ dsh-lan-bridge │ ───────────► │ DSH Web 服务 │
│ (前台服务) │ X-Dsh-Lan-Token │ (0.0.0.0:3081) │ 127.0.0.1 │ (127.0.0.1:3080) │
└─────────────┘ └──────────────────┘ └──────────────────┘

- DSH Web 服务:官方明确禁止 --host 0.0.0.0(会暴露远程代码执行到网络),因此保持只监听回环地址。
- dsh-lan-bridge:在 PC 上运行的零依赖 Node 代理,监听 0.0.0.0:3081,把请求转发到 127.0.0.1:3080,并把 Host/Origin 头重写为回环地址,从而通过 DSH 的 browser-trust 围栏(该围栏校验 Host 头,非浏览器请求无 Origin 也可放行)。
所有请求必须携带 X-Dsh-Lan-Token(或 WebSocket 查询参数 ?token=),否则 401。
- Android App:前台服务持有 WebSocket 连接并解析 DSH 的 RPC 帧协议(server-request 信封 + mux/host 帧),维护可观察状态,驱动 UI 与通知。

目录结构

dsh-android-watch/
├── bridge/
│ └── dsh-lan-bridge.mjs # PC 端局域网桥接器(零依赖,Node 运行) ├── app/ # Android 工程(Kotlin + Jetpack Compose) │ ├── setup-toolchain.ps1 # 一次性:安装 JDK17/Android SDK/Gradle 到 ..\.tools │ ├── build.ps1 # 构建 debug APK │ └── app/src/main/java/com/dshwatch/app/ │ ├── data/ # 协议解析、OkHttp 客户端、监控状态机 │ ├── service/ # 前台服务、开机自启、通知 │ └── ui/ # Compose 界面(概览/动态/设置) └── README.md

快速开始

1) 在 PC 上启动桥接器

需要 Node.js 18+(DSH 环境自带)。

cd dsh-android-watch/bridge
node dsh-lan-bridge.mjs

启动后控制台会打印:

dsh-lan-bridge 已启动监听 : 0.0.0.0:3081 -> 上游 http://127.0.0.1:3080 Token: a1b2c3d4e5f6a7b8c9d0e1f2 局域网地址: http://192.168.1.100:3081

也可以用环境变量固定令牌:DSH_LAN_TOKEN=my-secret node dsh-lan-bridge.mjs (端口/上游地址可用 DSH_LAN_PORT / DSH_UPSTREAM 调整)。

注意:请确认 Windows 防火墙放行 TCP 3081(首次运行时系统会弹窗询问)。

2) 构建并安装 App

构建需要 JDK 17 + Android SDK 34 + Gradle 8.9(网络受限环境脚本已用国内镜像):

cd dsh-android-watch/app
.\setup-toolchain.ps1 # 一次性安装工具链(下载约 470MB) .\build.ps1 # 构建,产出 app\build\outputs\apk\debug\app-debug.apk

把 APK 传到手机安装(或用 adb):

adb install -r app\build\outputs\apk\debug\app-debug.apk

3) 配置 App

1. 打开 DSH Watch,授予通知权限(Android 13+ 会弹窗询问)。
2. 进入「设置」,填写:
- 服务器地址:桥接器打印的局域网地址,如 http://192.168.1.100:3081
- 访问令牌:桥接器打印的 Token
3. 点「测试连接」→ 显示「连接成功 · DSH x.x.x · 模型」即 OK。
4. 点「保存并重连」。切到「概览」即可看到会话、任务与进度;「动态」是实时事件流。

4) 验证授权通知

让智能体发起一个需要授权的操作(例如请求沙箱升级)。App 会立即弹出高优先级通知:

需要授权:pwsh 智能体请求执行需要授权的操作
[允许] [拒绝]

点「允许」即向 DSH 发送 allowed-once,智能体继续执行。

Android 后台与自启动说明

Android 会按内存压力回收后台进程。本 App 的对抗手段:

1. 前台服务 + 常驻通知:启动后进程处于 foreground 状态,优先级远高于普通后台。
2. START_STICKY:即使被系统杀掉,系统也会重建服务并自动重连(指数退避)。
3. 开机自启:RECEIVE_BOOT_COMPLETED + 设置项「开机自启动」。
4. 电池优化豁免:设置页可一键请求 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS。

厂商 ROM 额外设置(小米/华为/OPPO/vivo/荣耀等默认会杀后台):

| 厂商 | 设置路径 |
| 小米 MIUI | 设置 → 应用设置 → 应用管理 → DSH Watch → 省电策略 → 无限制;安全中心 → 应用自启动 → 允许 |
| 华为/荣耀 | 设置 → 应用 → 应用启动管理 → DSH Watch → 关闭「自动管理」→ 手动允许「自启动/关联启动/后台活动」 |
| OPPO | 设置 → 电池 → 应用耗电管理 → DSH Watch → 允许后台运行;设置 → 应用 → 自启动 → 允许 |
| vivo | i管家 → 应用管理 → 权限管理 → 自启动 → 允许;设置 → 电池 → 后台耗电管理 → 允许后台高耗电 |
| 三星 | 设置 → 电池 → 后台使用限制 → 从不休眠 |

常见问题

Q: 测试连接失败?
A: ① 桥接器是否在运行(PC 控制台可见)② 地址端口是否一致 ③ Token 是否正确 ④ 手机与 PC 是否同一局域网 ⑤ Windows 防火墙是否放行 3081。

Q: 手机连不上,但 PC 上 localhost 正常?
A: 确认桥接器监听 0.0.0.0(默认),并检查防火墙。可用手机浏览器直接访问 http://:3081 测试(会要求 Token 或直接看到 DSH Web UI)。

Q: 授权通知没声音/不弹?
A: 检查通知渠道设置(长按通知 → 允许提醒);确认 App 已授予通知权限;部分 ROM 需要单独允许「通知」并关闭「静默通知」。

Q: 为什么 DSH 服务不能直接监听 0.0.0.0?
A: DSH 官方出于安全有意禁止(--host 0.0.0.0 会被拒绝:会把远程代码执行能力暴露给整个局域网)。本方案用带 Token 的桥接器实现安全可达性。

安全说明

- Token 是唯一的访问控制层(DSH 的 browser-trust 围栏明确不是鉴权层)。
- 请勿把 Token 明文分享给不可信设备;桥接器只应在可信局域网运行。
- 桥接器会把 Host 重写为回环地址以通过围栏,等效于信任局域网内持有 Token 的设备。
- 若对安全性要求更高,建议改用 Tailscale/WireGuard 等 VPN 后再桥接。

协议参考(供二次开发)

- 事件流:WebSocket ws:///api/events.mux 与 /api/events.host (普通 HTTP GET 会被 DSH 以 426 拒绝,必须 WebSocket 升级)。
- 帧格式:{"type":"server-request","rpcId":"","method":"","payload":{...}}
- 授权请求:approval/requested → payload 含 approvalId/toolName/reason
- 授权结果:approval/resolved → outcome(allowed-once/rejected/cancelled/unavailable)
- 提问:question/requested → questions[];question/resolved
- 任务:session/jobs → jobs[](id/kind/label/status/startedAt/finishedAt)
- 事件:session/event → event{type,seq,time,data}(turn/start、turn/end、 tool/call、todo/write、message、approval/asked…)
- 投影:session/projection → key: title/goal/sessionStats/todos
- 会话生命周期(host 流):host/session-added、host/session-removed、host/session-status
- unary:POST /api/,信封 {"type":"client-request","rpcId","method","payload"}
- session.list、host.describe 等
- 应答:POST /api/respond,信封 {"type":"client-response","rpcId","result":{...}}
- 批准:result.value = {approvalId, sessionId, outcome:"allowed-once"}
- 拒绝:outcome:"rejected"
- 回答提问:result.value = {sessionId, answer:{answers:[{id, selected:[...]}]}}

License

MIT
预览分享卡片长什么样 ↓DEEPDIVE571/DSHWatch
分享 · DeepSeek Harness Hub
DEEPDIVE571/DSHWatch

在手机上实时查看智能体进度并远程授权

这是你的仓库?认领条目

回到顶部