@restregular/dsh-pocket
为 DSH 单独做的窄屏移动端 Web 服务,不是把桌面 GUI 缩放塞进手机:自带会话列表与聊天流,随机访问令牌保护,可走局域网、cloudflared / localtunnel / localhost.run 隧道或自有服务器 SSH 反向转发。手机上流式看助手文本、思考、工具调用与结果,能发提示词、停止当前回合、回答阻塞提问与工具审批(含其它会话里等待的),切换模型 / 思考等级 / 权限预置,发送最多 4 张手机上压缩过的照片,并可一键让电脑常亮。
安装
dsh plugin --profile web add @restregular/dsh-pocket
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
<div align="center">
<img src="icon.svg" width="80" alt="Pocket Access" />
<h1>Pocket Access · dsh-pocket</h1>
<p><strong>把本机的 DeepSeek Harness 装进口袋。</strong></p>
<p>在手机上继续会话、盯住流式输出、回答问题与审批、下载产物。<br />
轻量界面为小屏重写;需要完整桌面能力时,一键直通宿主 Web GUI。</p>
<p>
<a href="https://www.npmjs.com/package/@restregular/dsh-pocket"><img src="https://img.shields.io/npm/v/@restregular/dsh-pocket?style=flat-square&logo=npm&label=npm" alt="npm version" /></a>
<a href="https://www.npmjs.com/package/@restregular/dsh-pocket"><img src="https://img.shields.io/npm/dm/@restregular/dsh-pocket?style=flat-square" alt="npm downloads" /></a>
<img src="https://img.shields.io/badge/node-%3E%3D22.13-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js >= 22.13" />
<a href="LICENSE"><img src="https://img.shields.io/npm/l/@restregular/dsh-pocket?style=flat-square" alt="MIT License" /></a>
<img src="https://img.shields.io/badge/DeepSeek%20Harness-plugin-4f8cff?style=flat-square" alt="DeepSeek Harness plugin" />
<a href="https://dsh-plugin.org/plugins/restregular/dsh-pocket"><img src="https://dsh-plugin.org/badges/listed.svg" alt="Listed on dsh-plugin.org" /></a>
</p>
</div>
Pocket Access 是 DeepSeek Harness 的移动端伴侣插件。插件列表与侧栏的显示名为 随身访问;包名为 @restregular/dsh-pocket。
English — A mobile companion for DeepSeek Harness. It serves a purpose-built phone UI and can reverse-proxy the full desktop GUI, with live sessions, prompts, tool approvals, file downloads, LAN/tunnel access, one-tap keep-awake, and one-tap restart or shutdown of DSH.
<p align="center">
<img src="preview/hero.jpg" width="100%" alt="Pocket Access:手机端的会话、聊天与文件下载" />
</p>
目录
- [为什么是 Pocket](#为什么是-pocket)
- [功能一览](#功能一览)
- [两种界面,按场景选择](#两种界面按场景选择)
- [界面预览](#界面预览)
- [快速开始](#快速开始)
- [安装](#安装)
- [从手机访问](#从手机访问)
- [远程访问](#远程访问)
- [移动端能力](#移动端能力)
- [桌面 Pocket 面板](#桌面-pocket-面板)
- [安全模型](#安全模型)
- [配置](#配置)
- [HTTP 接口](#http-接口)
- [已知限制](#已知限制)
- [开发](#开发)
- [反馈与贡献](#反馈与贡献)
- [License](#license)
为什么是 Pocket
DeepSeek Harness 的 Web GUI 为桌面设计。Pocket 不要求你在手机上重新适应一套缩水界面,也不要求插件作者为移动端再写一遍 UI;它提供两条互补的路径:
- 两种界面,同一套能力。 默认的轻量页为窄屏重写会话流与输入流程,首屏小、打开快;需要终端、插件市场、文件预览或任何第三方插件面板时,一键切到「桌面直通」,手机加载的就是桌面端同一份渲染代码。
- 不只是看,而是接管。 发送提示词、停止回合、切换模型与思考等级、选择权限预设、处理阻塞式提问和工具审批,全部可以在手机上完成;手机离线时自动回落到桌面。
- 为真实网络设计。 局域网直连、Cloudflare Quick Tunnel、localtunnel、localhost.run、自有服务器 SSH 反向转发,或自定义命令;桌面面板生成带令牌的二维码,扫一下就进入。
- 手机端细节不是事后补的。 发图前本地压缩、工作区文件直接下载到手机、跨会话提问提醒、跟随系统主题、主屏幕图标、保持电脑常亮、一键重启/关闭 DSH——都按移动端使用习惯处理。
- 边界清晰的安全模型。 128 位随机令牌;桌面面板只接受回环请求;文件读取限制在会话 cwd 或已登记工作区;GUI Cookie 留在 Pocket 内部,不交给手机。
- 轻量、无构建。 移动页面是原生 ESM,唯一的运行时依赖是
ws;二维码编码器随包内嵌,不需要前端构建链。
功能一览
类别 · 能力
会话 · 按桌面工作区顺序分组、折叠、搜索、新建、置顶、重命名、归档/取消归档、复制 Session ID
实时对话 · WebSocket 流式输出、历史快照分批到达、思考过程折叠、工具调用参数与结果、token 用量
远程控制 · 发送 / 排队 / 插话、停止回合、模型与思考等级、权限预设、/技能 引用
人机交互 · 阻塞式提问直接作答、工具审批「允许一次 / 拒绝」、跨会话提醒、手机回答后撤回桌面弹窗
文件与媒体 · 工作区文件树、文本/图片预览、@路径 引用、文件下载到手机、最多 4 张图片消息与本地压缩
外观与体验 · 跟随系统 / 浅色 / 深色、历史截断设置、回到底部、PWA 主屏幕图标
宿主能力 · 账户余额、保持电脑常亮、一键重启/关闭 DSH、桌面 Pocket 面板、扫码连接、令牌轮换
远程访问 · 局域网、Cloudflare、localtunnel、localhost.run、自有服务器 SSH、自定义隧道、固定 publicUrl
两种界面,按场景选择
Pocket 的核心差异是:手机界面不是桌面界面的降级版,而是一个可切换的完整方案。
· 轻量界面(默认) · 桌面直通
首屏 · 为小屏重写的会话列表与聊天流,加载快 · 完整的桌面 bundle(含全部插件)
插件 UI · 重写核心会话、文件、审批流程 · 插件面板、设置、终端、市场原样复用
适合 · 日常查看、回复、审批、下载产物 · 需要桌面专属功能或第三方插件界面
代价 · 新插件不会自动出现在轻量页 · 首屏更大;触摸交互不如原生移动页顺手
切换 · 手机设置 →「界面」;或桌面 Pocket 面板 →「设置 → 手机端界面」 · 同上,也可访问 GET /__pocket/surface?to=desktop
桌面直通不是简单的 iframe:Pocket 把宿主 Web GUI 整页反向代理给手机,并处理两层认证——手机仍先过 Pocket 令牌/Cookie,Pocket 再用进程启动令牌换取绑定回环 authority 的 GUI Cookie。隧道地址变化不影响使用。
界面预览
<table align="center">
<tr>
<td align="center" width="50%">
<img src="preview/mobile-home.png" width="250" alt="手机会话列表与余额" /><br />
<sub><b>会话列表</b> · 工作区分组、搜索、置顶与归档</sub>
</td>
<td align="center" width="50%">
<img src="preview/mobile-chat.png" width="250" alt="手机实时对话" /><br />
<sub><b>实时对话</b> · 流式输出、思考过程、工具卡片与 Markdown 表格</sub>
</td>
</tr>
<tr>
<td align="center" width="50%">
<img src="preview/mobile-preview.png" width="250" alt="文件预览与下载" /><br />
<sub><b>文件下载</b> · 预览底部、文件树每行都能直接保存到手机</sub>
</td>
<td align="center" width="50%">
<img src="preview/mobile-settings.png" width="250" alt="手机设置" /><br />
<sub><b>界面切换</b> · 轻量界面与桌面直通,按场景选择</sub>
</td>
</tr>
</table>
截图使用演示会话、演示余额与演示地址;二维码和令牌均为示例,真实值以你本机面板显示为准。
快速开始
1. 安装插件:在 Plugin Manager 中安装 @restregular/dsh-pocket,或使用本地目录安装。
2. 打开面板:刷新一次 Web GUI,在侧栏的全局面板列表里打开 随身访问 / Pocket Access。
3. 扫码进入:手机相机扫描面板里的二维码;隧道在线时指向公网地址,否则指向局域网地址。首次打开会写入一个 30 天有效的 HttpOnly Cookie。
装好后建议把手机页面「添加到主屏幕」;iOS 使用 180/192 PNG 图标,避免 SVG 在主屏幕上显示空白。
安装
一条命令从 npm 安装(Web profile):
dsh plugin --profile web add @restregular/dsh-pocket
也可以在 Plugin Manager →「安装 Bundle」里安装(或调用 plugin_manager 的 install_bundle),包名:
@restregular/dsh-pocket
也可以安装本目录(Plugin Manager →「本地目录安装」):
D:\DeepseekHarnessProjects\dsh-pocket
本包以link:方式安装到 profile 时,pnpm 不会替被链接的目录安装它自己的可选依赖。若要让 Windows x64 自动带上 cloudflared,请先在本目录执行一次pnpm install(只影响本目录的node_modules)。从 npm 正式安装时这一步由包管理器自动完成。
从手机访问
1. 打开桌面侧栏的 随身访问 / Pocket Access。
2. 手机相机扫描「扫码连接」里的二维码。
3. 首次打开会种下 30 天有效的 HttpOnly Cookie;也可以直接收藏地址。
也可以手动复制面板里的「本机 / 局域网 / 公网」地址。
链接里带有访问令牌,等同于本机 DSH 的钥匙。 不要发到公开群聊或截图分享。令牌泄露时,在面板点「轮换令牌」;旧链接会立即失效。
远程访问
隧道怎么选
方式 · 适合 · 说明
cloudflared(推荐) · 大多数场景 · Quick Tunnel 无需账号,没有浏览器拦截页。Windows x64 会通过可选依赖 agentroam-cloudflared-win32-x64 使用经过校验的官方二进制;其他平台把 cloudflared 放进 PATH,或设置 cloudflaredPath。
localtunnel · 已有 lt 命令 · 浏览器首次访问会经过 localtunnel 的 511 提示页,需要输入本机公网 IP 作为 tunnel password。
localhost.run · 出站 22 端口可用 · 通过 ssh -R 建立隧道,不需要额外客户端。
ssh · 有自有服务器 · 不要求服务器开启 GatewayPorts,也不改 sshd;见下一节。
custom · 已有 frp / rathole 等 · 任何能在 stdout/stderr 打印公网 URL 的命令
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:31,最后更新 2026-11-06