前言¶
DeepSeek Harness (DSH) 采用插件化架构,其官方 Web UI 主要针对桌面端优化。对于需要在移动端处理会话、审批或查看 Agent 问题的用户,直接使用浏览器访问桌面界面往往体验不佳。dsh-pwa 插件旨在解决这个问题,它通过将一套运行在手机浏览器中的全屏应用界面挂载到 DSH 服务器上,提供类似原生 App 的体验,且无需在手机上安装任何应用。
插件定位¶
dsh-pwa 是一个由 jackxu925 维护的客户端插件。它本身是一个纯静态文件的 Web 应用,挂载在 DSH Web 服务器的 /m 路径下。插件与桌面 GUI 使用相同的 /api 接口,这意味着它直接复用了 DSH 的会话管理和 Agent 能力。
核心功能¶
插件提供了手机端操作所需的核心交互能力:
- 会话管理:支持会话列表展示、工作区分组、搜索以及下拉刷新。具备真实的“待处理”筛选功能,可快速定位待审批会话和 Agent 问答。
- 流式对话:支持流式响应,包含乐观发送、队列消息可见性、每日时间分割线和时间戳。支持代码块的复制按钮和全屏图片查看器。
- 审批与交互:将审批请求和 Agent 问题呈现为可点击卡片。对于危险命令,界面会显示红色二次确认提示。
- 多媒体支持:支持从相机、相册或剪贴板粘贴发送图片,并自动压缩至模型限制以内。
- 会话创建:支持在新建会话时选择 Agent 预设。
- 交互细节:支持触觉反馈、深色/浅色主题切换、会话草稿自动保存,以及带有手动重连按钮的连接状态指示。
- 桌面端联动:桌面 GUI 的“设置”菜单中会新增“手机端”入口,显示当前手机访问地址并提供一键复制功能。
安装与启用¶
安装前需确保桌面端已安装 dsh CLI。
- 创建或复用一个 Web 专用的配置文件,例如
~/.dsh/profiles/web/package.json,并在dependencies中引入dsh-pwa。
{
"name": "dsh-profile-web",
"private": true,
"dependencies": {
"dsh-pwa": "latest"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-pwa"
]
}
}
}
- 进入该配置目录并执行安装。
cd ~/.dsh/profiles/web && npm install
- 启动 DSH Web 服务器。为了在手机上访问,需配置
--trusted-host以允许跨域访问。
dsh --profile web --host 0.0.0.0 --port 3080 --trusted-host <your-access-domain>
典型用法¶
- 手机访问:在手机浏览器中打开
http://<host>:3080/m/,点击“分享”或“添加到主屏幕”,即可获得全屏 PWA 应用体验。 - 远程访问:若在非局域网环境使用,可配合 Tailscale。确保手机和服务器均在同一账号的 Tailnet 中,并在服务器启动命令中添加 Tailscale 的主机名到
--trusted-host,随后访问http://<tailscale-hostname>:3080/m/。
注意事项¶
- 无需安装 App:这是一个网页应用,但通过 PWA 机制可以实现类似原生 App 的全屏体验。
- 安全模型:与
dsh web保持一致。任何能够访问该 URL 的人都可以控制你的 Agent。 - 离线限制:插件不支持离线使用,手机必须保持与 DSH 服务器的网络连接。
- 版本依赖:由于插件直接调用 DSH 的
/api接口,它会跟随 DSH 版本更新。若 DSH API 发生破坏性变更,插件可能需要同步更新。
总结¶
dsh-pwa 为 DeepSeek Harness 提供了一个轻量级且无需安装 App 的移动端解决方案。它通过复用现有的 API 协议,在手机浏览器中实现了会话管理、流式对话、审批交互及多媒体支持。对于需要在移动端处理 Agent 任务的开发者而言,这是一个务实的工具。