- Accueil
- Plugins
- Améliorations UI
- dsh-ui-mobile
dsh-ui-mobile
jasondu/dsh-ui-mobile
Mobile-first DeepSeek Harness UI with an installable PWA, responsive navigation, and Web Push notifications when an agent completes successfully.
Installer
dsh plugin --profile web add github:jasondu/dsh-ui-mobileREADME
dsh-ui-mobile
中文 | English
把 DeepSeek Harness 变成一套真正适合在手机上持续使用的工作台:侧栏可单手操作、输入区不会被键盘挤走、可安装为独立 App,并能在 agent 成功完成后主动提醒你回来查看结果。
dsh-ui-mobile 是 DeepSeek Harness Web Shell 的移动端插件。它不重写会话界面,而是在手机宽度下把现有三栏 Shell 转换为更适合触控、PWA 安装和任务完成通知的体验;桌面与平板布局保持原样。
为什么安装
如果你会通过手机查看或发起 Harness 任务,这个插件解决的是高频摩擦,而不是只换一套样式:
- 添加到桌面,获得类 App 体验:把 Web GUI 添加到主屏幕后,可从图标独立启动、没有浏览器地址栏;agent 成功完成时还能收到系统推送,不必反复打开页面确认。
- 手机上也能高效操作:边缘滑动、抽屉导航、新会话菜单和键盘“发送”让核心操作无需放大、缩小或寻找小控件。
- 不牺牲桌面工作流:改动只在 768px 以下启用,电脑与平板继续使用原生 Harness 三栏界面。
- 安装后即可用:插件自带 PWA、Service Worker 和 Web Push 路由,不需要维护 Harness 的 fork 或额外改 Web 源码。
适合需要在移动端跟进长任务、外出时临时发起任务,或希望把 Harness 作为桌面图标中的轻量工作 App、把任务完成提醒交给系统通知的使用者。
你会得到什么
- 手机端抽屉导航:侧边栏与详情面板从屏幕两侧滑出;轻点遮罩、点菜单或从左侧边缘右滑都能管理侧边栏。
- 连续的会话入口:普通会话和空白新会话都提供左上菜单;抽屉打开后会覆盖按钮,避免层级冲突。
- 更适合手机的输入区:输入框固定在可视区底部,防止 iOS 缩放;隐藏 Session log 下载,将 Access mode 放到工具栏最右侧;键盘主操作显示为“发送”。
- 独立 PWA:添加到主屏幕后,从桌面图标启动即获得无地址栏的类 App 体验;插件提供 manifest、图标、Service Worker、启动骨架和安装引导,无需修改 Harness Web 源码。
- 任务完成通知:已安装的 PWA 可在 agent 成功完成时收到 Web Push 通知;通知只在成功完成时发送。
安装
需要一个运行中的 DeepSeek Harness Web Shell。本包是客户端插件,不是独立 Web 应用。
# 从 npm 安装到某个 DSH profile
dsh plugin --profile <profile> add dsh-ui-mobile
# 或从当前仓库 / GitHub 安装
dsh plugin --profile <profile> add github:jasondu/dsh-ui-mobile
插件自带 cordis.patch.yml:它会禁用宿主内置的 ui-mobile,再挂载本插件,以避免两个 PWA 路由和两套移动端样式同时生效。通常不需要手动编辑宿主的 patch 文件。
@deepseek-ai/dsh-client-*是运行时 peer dependencies。应在拥有相应 Harness 依赖的 DSH Web 环境中安装本插件。
手机上的使用方式
| 场景 | 操作 |
|---|---|
| 打开侧边栏 | 点左上菜单,或从屏幕最左侧 24px 向右滑。 |
| 关闭侧边栏 | 点菜单或抽屉外的暗色区域。 |
| 新开会话 | 空白会话顶部同样保留菜单入口。 |
| 发送消息 | 手机键盘显示“发送”;按回车沿用 Harness 的正常发送流程。 |
| 使用桌面 | 宽度达到 768px 后恢复 Harness 原始三栏布局。 |
侧边栏在手机上使用紧凑宽度 min(78vw, 300px),列表保持可读,同时保留足够的遮罩关闭区域。
安装到主屏幕(PWA)
插件的宿主部分会在服务页面时注入 manifest 与 iOS PWA 标签,并通过 /pwa/ 提供图标、manifest 和 Service Worker。
- Android Chrome / Edge:浏览器可安装时会显示一次性安装引导;点“安装”使用浏览器原生流程。
- iOS Safari:引导提示“分享 → 添加到主屏幕”。关闭后不会在该浏览器中再次自动显示。
- 从主屏幕启动:以独立 PWA 运行,不显示浏览器地址栏;普通 Safari 访问仍保留浏览器外壳,这是平台行为。
任务完成 Web Push
插件只在 agent 成功完成时(turn/end,reason.kind: completed)发送通知。为 Web 服务设置 VAPID 和订阅存储路径;私钥与订阅文件不可提交到仓库。
# 三项同时设置;首次运行时将其写入 DSH_WEB_PUSH_VAPID_PATH。
DSH_WEB_PUSH_VAPID_SUBJECT=mailto:ops@example.com
DSH_WEB_PUSH_VAPID_PUBLIC_KEY=<base64url-public-key>
DSH_WEB_PUSH_VAPID_PRIVATE_KEY=<base64url-private-key>
# 后续启动只需保留此路径;文件权限应为 0600。
DSH_WEB_PUSH_VAPID_PATH=/var/lib/dsh/vapid.json
DSH_WEB_PUSH_STORE_PATH=/var/lib/dsh/push-subscriptions.json
在已安装的 PWA 中点按“开启任务完成通知”并授予系统权限即可订阅。iOS 需要 iOS 16.4 或更高版本;DSH_WEB_PUSH_VAPID_SUBJECT 必须是有效邮箱或真实 https:// URL,不能使用 .invalid 占位域名。
架构边界
插件通过 Harness 已公开的 slot、服务与稳定 data-* 属性组合功能:它不复制 Shell,也不修改 Harness 源码。移动端控制器读取现有 AppFrame 状态,响应式样式只针对插件标记的属性;PWA 与 Web Push 路由由插件的 node 部分提供。
模型体验
移动布局、PWA 和通知不改变模型请求、系统提示词、工具 schema 或会话内容。Web Push 仅在宿主已判定 agent 成功完成后向已订阅设备发送事件。
KV Cache 影响
无。本插件不参与请求组装。
已知限制
- 抽屉是 CSS 驱动的固定宽度面板,手机端不支持拖拽调宽。
- 侧边栏支持左边缘滑入;关闭操作为点遮罩或菜单,不支持滑动关闭。
- PWA 安装与键盘“发送”文案受浏览器和系统版本控制;插件提供的是标准 Web 平台提示。
- 任务完成通知需要 HTTPS、有效 VAPID 配置和用户授权。
开发与发布
pnpm install
pnpm bundle
pnpm test
推送 v* 标签会触发 GitHub Actions:安装依赖、构建、运行 publint,再发布到 npm。正式版本使用 latest,预发布版本使用 next。
License
MIT — see LICENSE.
Plugins associés
dsh-web-ui (dsh-web-ui-all)
zhu1090093659/dsh-web-ui
DSH-better-sidebar
omdsh-dev/dsh-better-sidebar
dsh-TUI
ccch1mneyyy/dsh-tui
dsh-at-file
omdsh-dev/dsh-at-file