dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness 的手机寻呼机:33 KB 安卓 App + DSH 插件。后台提醒、通知栏直接审批、服务端折叠省流量。A pager for DeepSeek Harness (unofficial).
DeepSeek Harness 的"寻呼机":一个 DSH 插件,加一个约 53 KB 的安卓 App;iPhone 把网页添加到主屏幕即可。 人不在电脑前,也能看进度、看改了哪些文件、发指令,并在通知栏里直接批准或拒绝。默认仅同步 DSH 自己的项目和对话;电脑上的 Claude Code / Codex 接入为显式开启的可选功能(见 docs/claude-code-codex.md)。
非官方社区项目,与 DeepSeek 没有关联。· English
MIT · Android 10+ · iOS / iPadOS 16.4+(主屏幕 Web App) · Windows & macOS 宿主 · DeepSeek Harness 0.2.1 / 0.1.1-rc.2 · Node.js 22+ · dsh-plugin
![]() | ![]() | ![]() |
| 首页 | 对话 | 在手机上审批 |
![]() | ![]() | ![]() |
| 看完整改动 | Claude Code 也能管 | 深色模式 |
截图来自演示模式(node plugin/dev.mjs --demo),数据全部是虚构的;演示包含可选的外部 Agent 接入,实际部署默认关闭。
1.6.2 跨平台完整版(Windows / macOS 宿主 + Android / iPhone / iPad):安卓与 iPhone 主屏幕 Web App 双端互通、三种语音交互(录音转文字 / 语音消息 / 实时语音通话)、运行中发消息「修改 / 引导 / 等待」三选一待发栏、Windows 与 macOS 原生桌面文件操作与区域截图/OCR/翻译、异步提问、原聊天自动任务与恢复、中文社区市场、上下文灰字智能建议。
先按完整扩展安装说明注册各模块;语音与社区市场需分别安装随仓库提供的固定版本扩展。APK 不捆绑电脑服务、语音模型、第三方播放器或私人配置。详见更新记录。
首页“插件”进入手机、平板插件市场:中文分类搜索、星标/下载排序、详情和电脑端安装回执。
手机和平板现可在输入框下方切换“只读 / 工作区写入 / 完全访问”,并远程浏览 Windows 磁盘或 macOS 主目录/桌面/文稿/磁盘卷创建工作区;电脑本机界面新增原生文件夹选择并添加工作区入口。用法及维护说明见 会话权限与电脑文件夹。
当 DSH 正在执行任务时,无论从手机端还是桌面端发送文字或语音消息,都会进入输入框上方的待发栏,提供 修改(编辑内容)、引导(立即插话送入当前运行回合)、等待(保持排队等当前回合结束后自动发送)三项选择。
有新版界面时,首页顶部会显示「界面有更新,点这里更新」。点击一次更新这台设备的整套界面,所有对话都生效;手机、平板分别更新一次。
旧界面首次升级:在首页点击「已连接」→「更新界面并重连」。之后可以使用首页的新版提醒。界面只在可见、联网时检查更新,不会自动刷新或打断播放;更新会保存文字草稿,待发送图片和进行中的消息操作需要先处理。
安卓安装包升级单独显示「App 安装包有新版本」。它仍使用系统安装确认;仅更新界面无需重新安装 APK。
DSH 的 Web 界面是为桌面设计的,直接拿手机打开会遇到三个问题:
dsh-pager 分别对应三件事:一套为手机重写的界面,在电脑上先折叠再下发的接口,以及常驻后台的提醒。
安卓 · dsh-pager App(约53 KB:WebView 外壳 + 常驻通知服务)
iPhone · 同一个界面,Safari "添加到主屏幕"(网页推送做锁屏提醒)
│ 你已有的远程通道:国内云服务器上的登录网关,或异地组网(与翻墙无关)
▼
DSH web(仍只绑 127.0.0.1,不改 DSH 源码)
└─ 插件 dsh-pager,挂在 /m
├─ /m/ 手机界面(由电脑提供,更新后在设备端刷新)
├─ /m/api/boot 工作区 + 会话列表(约 2 KB)
├─ /m/api/history 在电脑上折叠后的历史(4 MB 级 → 20–30 KB)
├─ /m/api/events 实时帧(流式文字每 90 ms 合并一次)
├─ /m/api/notify 后台提醒流(120 秒心跳,断线补发)
├─ /m/api/call|fs|raw 结果查看器:完整 diff 和输出、工作区文件、图片视频(只读,限工作区内)
├─ /m/api/push/* iPhone 锁屏提醒(网页推送,端到端加密)
├─ /m/api/agents/* Claude Code / Codex:钩子入口、会话记录、从手机继续
├─ /m/api/app/* App 内更新(安装包在你自己的电脑上)
├─ /m/api/usage 用量:token、缓存命中、上下文占用、耗时(读 DSH 自己记的数)
├─ /m/api/commands 快捷指令(存在电脑上,所有手机共用)
└─ /m/api/rpc|respond 发消息 / 停止 / 换模型 / 审批 / 回答提问(白名单)
1.6.1 已通过公开包签名兼容性与主机回归检查;本轮没有连接实体手机/平板,不把旧版体验当作新版完整设备验收。
实测环境:Redmi(HyperOS / Android 16)与华为平板(HarmonyOS 4.2),经公网链路连回家里电脑(2026-09-21 至 09-22)。
| 项目 | 结果 |
|---|---|
| 安装包 | 41 KB(5 个 Java 文件,零第三方库;1.3.2) |
| 打开 4 MB 级长会话 | 下发 28 KB,1.45 秒 |
| 首页(工作区 + 会话列表) | 2.4 KB |
| 冷启动 | 首帧 195 ms,0.39 秒出列表(本地缓存),0.87 秒刷新到最新 |
| 发消息到出第一段文字 | 1.8 秒,之后逐字流式 |
| 后台提醒 | 息屏状态下 2–30 秒送达;连续 15 分钟心跳,零重连 |
| 锁屏通知点"允许" | 华为平板锁屏下点击 → 弹出解锁 → 解锁后放行送达,真实 Claude Code 钩子收到结果 |
| App 内更新 | Redmi 从 1.3.0 在手机上完成到 1.3.2 的下载、校验和安装,全程未接电脑 |
同一套 App 还在华为平板上跑通了首次配置、地址校验和后台服务。
.env、名字带"密码"等的文件不显示,内容里有私钥的文件拒绝打开。
- **Claude Code / Codex 也能管(可选,默认关闭)**:
- 离开电脑时,它们的确认请求发到手机:电脑锁屏或 3 分钟没人操作就算离开,一回到电脑就交还。
- 完成时提醒;手机上能看它们的会话记录,也能从手机继续对话。
- **通知栏就能处理**:
- 允许(需先解锁)或拒绝;
- 选择题直接点选项;
- 完成后直接回复下一条指令。
- **App 内更新、分享到 DSH**:电脑上有新版本时,手机点一下就更新,不用再插线;在其他 App 里"分享"文字和图片给 DSH,选好对话即可。
- **用量**:每个会话的 token、缓存命中率、上下文占用、耗时和输出速度,以及最近 7 天的汇总(对话菜单"用量"、连接面板"最近 7 天用量")。上下文用到 70% 以上时,对话标题下会提示,该考虑开新对话了。数据是 DSH 自己记的,插件只是读出来。
- **桌面小组件**(App 1.4.0):不打开 App 就能看到"2 个等你确认 · 1 个在跑"、连接状态和最近完成的任务;数字由电脑推送,小组件自己不联网。
- **快捷指令**:"跑测试""总结改动"这类常用的话存在电脑上(`~/.dsh-pager/commands.json`),所有手机共用;输入框旁点 ⚡ 选一条就填进去,看一眼再发。
- **省流量**:插件在电脑上把原始事件折叠成"用户消息 / 回复 / 每个工具一行 / 回合结束",再压缩下发。
- **界面热更新**:界面跑在电脑上,App 只是外壳。改完界面,手机下拉刷新就生效,不用重装。
- **受限接口**:手机接口挂在 DSH 自己的 Web 服务上;本机截图使用独立回环端口、Origin校验及随机票据。不会替你把服务绑定到公网。
- 接口沿用 DSH 同款信任栅栏(Host / Origin / 跨站检查)。
- RPC 使用显式白名单;权限、文件夹、计划与提问使用专门校验接口,不提供任意设置或密钥写入入口。
- **不绑定通道**:走你已有的登录网关或异地组网,不内置第三方隧道或中继。流量不经过别人的服务器,用国内云服务器就能全程国内直连(作者自用的就是这样)。
- **基础界面复用 DSH 线协议**;新增桌面、模型及任务扩展使用宿主 SDK/插槽。DSH 升级须重新检查兼容性。
- **小而可审计**:
- 手机界面为原生 JS/CSS;基础 HTTP 服务使用 Node 内置模块,扩展复用 DSH SDK。可选语音和市场另有第三方依赖及许可。
- App 使用 Java、无 Gradle,构建步骤和签名要求见 Android 文档。
数据取自各项目的 README 和最新 Release(截至 2026-09-21)。"未提及"只表示 README 里没找到相关说明,不代表一定没有这个功能。
| 项目 | 形态 | 手机端界面 | 远程通道 | 认证 | 后台提醒 | 安装包 |
|---|---|---|---|---|---|---|
| dsh-pocket | 插件 + 改头反代 | 桌面界面原样 | 局域网 + cloudflared 隧道 | 访问密码 | 未提及 | 无 App(浏览器) |
| dsh-mobile-apk | 在手机本机运行 DSH(内嵌 Termux 运行时) | 响应式 Web 界面 | 不涉及(本机运行) | — | 前台服务保活引擎 | 160 MB |
| DshMobile | 原生 Android + iOS(KMP)+ 网关插件 | 原生 | 自备 wss 域名 | 扫码配对 | 仅 Agent 回合执行期间前台服务保持连接 | 34.4 MB |
| DSH Mobile (saya-ch) | 插件 + WebView 薄壳 | 触屏重排的 DSH 界面 | 局域网 / Tailscale Funnel / cpolar / cloudflared / FRP / 自有反代 | 配对 + 证书固定 | 需在 App 菜单中手动开启,依赖 WebView 页面存活(其 README 注明"不是通用的后台推送") | 1.8 MB |
| ds-harness-remote | 插件 + 桌面端 / 安卓 / 网页多端 | 复用 Harness 原生界面 | LAN → P2P → TURN → 托管中继(端到端加密) | 账号 + 设备授权 | 未提及 | 72.4 MB |
| dsh-remote-web-gateway | 网关插件 | 网页 | Cloudflare Quick Tunnel | GitHub 登录 + 一次性配对 + 设备撤销 | 未提及 | 无 App |
| DSH Mobile (sorsama) | 原生 Compose App + dsh-relay 插件 | 原生,功能对齐 GUI | 局域网 / relay / 自有反代 | relay 配对 + 固定公钥 | 前台服务:回合完成、目标完成或受阻、审阅或提问等待 | 14.5 MB |
| dsh-remote-mobile | 安全网关插件 + 移动端样式 | 桌面界面 + 移动端 CSS | 局域网 / Tailscale | 扫码 + RSA + 防爆破 | 未提及 | 无 App |
| dsh-pager(本项目) | 插件(挂 /m)+ 安卓 WebView 外壳 + iPhone 网页 App;也接 Claude Code / Codex | 为手机重写的界面,服务端先折叠;带结果查看器 | 任意现有通道,不内置隧道 | 交给你的登录网关或异地组网 | 安卓:常驻前台服务 + 专用低频流,通知栏直接允许/拒绝,断线补发;iPhone:网页推送 | 约53 KB(1.6.1) |
我们的定位:不是把桌面界面搬到手机上,而是做一个"寻呼机"。你锁屏时它替你盯着,需要你时叫你,点开就能处理。所以我们优先保证三件事:体积最小、流量最省、后台提醒最可靠。认证和隧道交给你已有的、更专业的工具。
目前的不足:
要求:DeepSeek Harness 0.1.1-rc.2(已验版本)(在 0.1.1-rc.2 上验证),Node.js 22 及以上。
git clone https://github.com/wg5759/dsh-pager.git
把 plugin/ 目录链接进 DSH profile 的 node_modules,名字用 dsh-pager:
:: Windows(目录联接,不需要管理员权限)
mklink /J "%USERPROFILE%\.dsh\profiles\web\node_modules\dsh-pager" "C:\path\to\dsh-pager\plugin"
# macOS / Linux
ln -s /path/to/dsh-pager/plugin ~/.dsh/profiles/web/node_modules/dsh-pager
在 ~/.dsh/profiles/web/cordis.patch.yml 末尾追加:
- insert:
- id: mobile
name: 'dsh-pager'
重启 DSH web,然后在电脑浏览器打开 http://127.0.0.1:3080/m/,能看到会话列表就说明插件装好了。
想卸载,删掉这几行 patch 再重启即可,DSH 会完全恢复原样;可选桌面入口随相应扩展卸载;不会将电脑界面替换成手机界面。
DSH 本身没有登录功能,所以千万别把它直接暴露到公网。常见做法有两种,都不需要翻墙,详见 docs/remote-access.md:
tools/forward.mjs 把 DSH 转发到电脑的组网地址上。它会拒绝监听公网地址和通配地址。
如果手机访问时用的地址不是回环地址,要在插件这一行加上 trustedHosts:
- insert:
- id: mobile
name: 'dsh-pager'
config:
trustedHosts: ['100.64.0.5:8080'] # 手机访问时用的 host:port
从 Releases 下载最新的 dsh-pager-v<版本>.apk,下载后请核对 SHA256SUMS,也可以按 docs/android.md 自己编译。
首次打开会让你填服务器地址,例如 https://pc.example.com:8443 或 100.64.0.5:8080,填完即可使用。
要收到后台提醒,还需要三个设置:
以后想换地址,点界面顶部的连接状态,选"切换服务器"。
iPhone / iPad(iOS 16.4+):用 Safari 打开 https://你的地址/m/ 并登录,点"分享"→"添加到主屏幕",从主屏幕图标打开后,点连接状态 →"开启锁屏提醒"。详见 docs/ios.md。
node tools/install-hooks.mjs claude # Claude Code
node tools/install-hooks.mjs codex # Codex(装好后在 Codex 里输入 /hooks 信任一次)
/m/api/* 沿用和 DSH 相同的 Host / Origin / 跨站检查。trustedHosts 里写错的条目会让插件在加载时直接报错,而不是悄悄放行。adb logcat -s DSHNotify)。~/.dsh-pager/,不在代码仓库里。~/.dsh-pager/hook.json 里的随机令牌与插件通信,令牌只在本机。从手机继续对话时,消息作为一个整体参数交给命令行工具,不经过 shell。cd plugin && npm test # 手机/HTTP回归,含RFC 8291测试向量
node --test tools/*.test.mjs # 转发器、钩子安装器单测
node tools/make-icons.mjs # 重新生成网页 App 图标
node plugin/dev.mjs # 独立开发服务器 http://127.0.0.1:3090/m/,直连本机 DSH,改服务端代码不用重启 DSH
node plugin/dev.mjs --demo # 演示模式:假的 DSH 后端 + 虚构的项目和会话,不需要 DSH,也不会显示真实数据
node tools/screenshots.mjs # 用演示模式和无头 Chrome / Edge 重新生成 docs/img/ 下的截图
bash android/build.sh public # 编译 App(无 Gradle,需 Android SDK build-tools 34 + JDK 17)
界面文件(plugin/www/)保存后即时生效;index.js / server.js / fold.js / notify.js 改动后需要重启 DSH。DSH 的线协议笔记见 docs/dsh-protocol-notes.md。
手机和平板的已完成长回复(超过 600 个字符或 12 行)默认显示原文开头的短摘要,点“查看完整结果”展开全部内容;视频卡片和工作区文件的“所在文件夹”入口始终可见。展开状态在当前会话页面内保留,展开/收起不重建播放器,复制仍取完整回复。短回复和出错、停止的结果直接显示。此项仅修改 /m 前端,更新界面即可获取,无须重启 DSH 或重新安装 App。
plugin/ DSH 插件:index.js 挂载 · server.js 接口与实时桥 · fold.js 事件折叠 · notify.js 提醒中枢
files.js 结果查看器(只读、限工作区)· push.js 网页推送 · commands.js 快捷指令 · www/ 手机界面、Service Worker、Web App 清单
agents.js Claude Code / Codex 钩子中枢 · presence.js 是否在电脑前 · transcripts.js 读它们的会话文件
demo/ 演示模式(fake-dsh.mjs 按 DSH 线协议提供虚构数据)
android/ App 外壳:MainActivity(WebView、首次配置、App 内更新、分享)· NotifyService(后台提醒)
UpdateReceiver · BootReceiver · build.sh
tools/ forward.mjs 转发到私有地址 · pager-hook.mjs 钩子命令 · install-hooks.mjs 安装钩子
make-icons.mjs 生成图标 · screenshots.mjs 生成截图
docs/ 远程访问 · Android · iPhone · Claude Code / Codex · DSH 协议笔记
MIT。"DeepSeek"及"DeepSeek Harness"是其各自所有者的商标。本项目是独立的社区插件,没有获得 DeepSeek 的认可或背书,也与其没有关联。
dsh-pager is a pager for DeepSeek Harness (DSH). It has two parts:
/m on DSH's own web server.Together they let you follow sessions, send prompts, and approve or reject tool calls from the notification shade while you are away from your PC. This is an unofficial community project, not affiliated with DeepSeek.
/m/api/* applies DSH's own Host/Origin fence, plus a 9-method RPC allow-list.Try the UI without DSH: node plugin/dev.mjs --demo serves made-up projects and sessions from a fake DSH at http://127.0.0.1:3090/m/ (the screenshots above come from it).
Quick start:
plugin/ into ~/.dsh/profiles/web/node_modules/dsh-pager.- insert: [{ id: mobile, name: 'dsh-pager' }] to cordis.patch.yml and restart DSH./m/ reachable from the phone through an authenticating gateway or a private network.MIT licensed.