Bundle
dshm-ui
dshm 壳专属移动 UI: UA 识别(仅 DSHM 壳激活), 移动设置面板 + 目录选择器 + 界面适配 CSS
- Source
- knGear
- License
- MIT
- Updated
- Updated 21 days ago
Readme
# dsh-mobile
**非侵入 · 轻量 · 灵活**的移动适配 —— DeepSeek Harness(dsh web)的 Android 移动前端。
dsh 是 DeepSeek 官方的 AI 编码/任务框架,Web UI 运行在 `http://127.0.0.1:3080`。
本项目**零 fork**:不修改 dsh 本体,通过**薄壳 + 本地插件**为它适配移动端体验,
上游升级零冲突。**灵活**:插件实时加载——改 UI 刷新即所见即所得、改逻辑重启即生效,
随时二次开发,绝大部分改动无需重新编译 APK。
> **与 DeepSeek 官方无关**:本项目是独立开源项目,非 DeepSeek 出品、未经其认可或赞助;
> "DeepSeek" 及相关商标归其各自所有者所有。
## 核心设计
| 原则 | 做法 | 收益 |
|---|---|---|
| **非侵入** | 不 fork、不改上游;只依赖稳定语义锚点(`data-*` / `role=` / 事件名 / 官方接口) | 上游升级零冲突,永久可跟进 |
| **轻量** | 薄壳只管平台能力(WebView / 通知 / 安全区),UI 全在本地插件 | 改 UI 不重建 APK,插件即插即用 |
| **适配** | 移动端体验层:全面屏安全区 / 侧栏抽屉 / 通知状态机 / 移动设置 | 手机成为 dsh 的一等客户端 |
| **灵活** | 插件实时加载:client 改动刷新即见、host 改动重启即生效;仅壳层需重编译 | 随时二次开发,所见即所得 |
## 界面预览
| 对话 | 移动设置 | 排版优化 |
| --- | --- | --- |
|  |  |  |
## 特性
**壳(APK)**
- 深色一体化:状态栏/手势条与页面同色,edge-to-edge 全面屏
- 原生 insets 安全区:内容自动避开状态栏/挖孔/手势条/输入法键盘,上下偏移可调
- 离线自动重试 + 内置离线页(远程连接 / 连接历史 / Termux 直链 / 一键启动 / 一键安装)
- 界面语言自动跟随系统(中/英)
**通知(本地插件)**
- 会话运行常驻通知(不可滑关)+ 完成/提问/截断/故障横幅,一会话一通知
- 手动暂停静默退出;点按通知跳转对应会话;重启无残留
- 声音/震动开关、AI 动作摘要(可选,额外消耗)
**移动 UI(本地插件)**
- 对话栏移动端适配(竖屏不溢出、统计条自适应转行、头部紧凑排布)
- 活动计数按钮(运行中/已完成未读,面板展开跳转)
- 移动端设置:连接地址 / 通知 / 全面屏 / 重启 / 安全模式(一键回原版)
## 安装
### ① termux 直装(推荐)
1. 安装 [Termux](https://f-droid.org/packages/com.termux/)(F-Droid 版,不要用 Play 商店版)
2. Termux 里执行(脚本自动:初始化 pkg → 工具链 → 装 dsh → 原生依赖修补 → SELinux 检测 → 插件挂载):
```bash
pkg install -y curl
curl -L -o dsh-install-termux.sh https://raw.githubusercontent.com/knGear/dsh-mobile/main/scripts/dsh-install-termux.sh
bash dsh-install-termux.sh
```
3. 安装 APK:点击 [Releases](https://github.com/knGear/dsh-mobile/releases) 下载最新版即可
4. 配置 API → 享用
### ② termux-ubuntu(稳定)
1. 安装 [Termux](https://f-droid.org/packages/com.termux/)(F-Droid 版)
2. Termux 里执行(脚本自动:初始化 → 安装 Ubuntu → 装 dsh → 插件挂载):
```bash
pkg install -y curl
curl -L -o dsh-install-linux.sh https://raw.githubusercontent.com/knGear/dsh-mobile/main/scripts/dsh-install-linux.sh
bash dsh-install-linux.sh
```
3. 安装 APK:点击 [Releases](https://github.com/knGear/dsh-mobile/releases) 下载最新版即可
4. 配置 API → 享用
### ③ addone-mobile(已有 dsh 追加)
适用于 PC / 服务器 / Termux 等任意环境。若尚未安装 dsh,先用官方命令安装:
**官方安装 dsh:**
```bash
npm i -g @deepseek-ai/dsh
dsh web
```
> ⚠ npm 直装的 dsh 直接跑 `dsh web` 可能加载不到本地插件(bin.js 缺 `--expose-internals`)。
> 两个安装脚本会自动生成 dsh wrapper 解决;手动环境可让 AI 按仓库脚本处理。
然后安装移动端插件,按你的平台选一个(任选其一,重复运行 = 更新到最新版):
**bash 版(Linux / macOS / Termux):**
```bash
curl -L -o dsh-addone-mobile.sh https://raw.githubusercontent.com/knGear/dsh-mobile/main/scripts/dsh-addone-mobile.sh
bash dsh-addone-mobile.sh
```
**Node 跨平台版(Windows 等任意平台,需 Node 18+):**
```powershell
curl.exe -L -o dsh-addone-mobile.mjs https://raw.githubusercontent.com/knGear/dsh-mobile/main/scripts/dsh-addone-mobile.mjs
node dsh-addone-mobile.mjs
```
或者,复制下面的仓库链接直接贴给 AI,让它帮你完成安装配置:
```text
https://github.com/knGear/dsh-mobile
```
最后安装 APK:点击 [Releases](https://github.com/knGear/dsh-mobile/releases) 下载最新版即可,连接本机(默认 `127.0.0.1:3080`)或远程(离线页输入 `IP:端口`),配置 API → 享用。
## 从源码构建
```bash
# 环境: proot Debian(Trixie) + aapt/javac/d8/zipalign/apksigner
git clone git@github.com:knGear/dsh-mobile.git
cd dsh-mobile && bash build.sh
# 产物: out/DSHM-v<版本>.apk
```
> ⚠ 老 d8 不支持 lambda(`Unable to find method metafactory`)——Java 代码一律用匿名类。
## 项目结构
```
apk/ # Android 壳 (com.dshm, minSdk 26 / target 34)
src/main/java/ # MainActivity(冷启动/连接/JS桥) + GuideActivity + ShellBridge 等
src/main/assets/ # first.html(引导页: 初始化/离线/设置统一)
src/main/res/ # 图标/主题/多语言 strings
build.sh # 构建脚本(proot Debian 混合构建)
release.keystore # 发布签名(alias dshmobile, 密码随仓库公开——FOSS 实践)
icon-master.svg # 图标源
plugins/
cordis.patch.yml # 插件挂载示例
dshm-ui/ # 移动 UI 插件(UA门控/移动设置/目录选择器/界面适配)
# dsh-agenttask 有独立仓库 1.0, 不在此管理
task.md # task 相关处理记录(重启包装脚本等)
START.md # 移动端体验需求规格(跑分题原文)
scripts/
dsh-install-termux.sh # Termux 原生一键安装(含插件)
dsh-install-linux.sh # Termux 内 Ubuntu 一键安装(含插件)
dsh-addone-mobile.sh # 已有 dsh 追加插件(bash 版)
dsh-addone-mobile.mjs # 已有 dsh 追加插件(Node 跨平台版)
PROMPT.md # 项目总提示词(需求规格, 可作跑分题)
AGENT.md # AI 开发地图(铁律/修改路径/待办)
docs/ # 架构/壳/双插件/自定义/构建发布指南
```
## 文档体系(AI 与维护者)
- `PROMPT.md` —— 需求规格(跑分题:功能/约束/验收,无实现线索)
- `AGENT.md` —— 开发地图(铁律/修改路径/待办/教训)
- `docs/` —— 架构总览、壳指南、双插件指南、自定义速查、构建发布
## 插件挂载
```yaml
# ~/.dsh/profiles/web/cordis.patch.yml
- insert:
- id: mobile-notify
name: 'mobile-AndroidNotify'
- id: mobile-ui
name: 'mobile-ui'
```
⚠ 带 client 的包 `exports` 必须包含 `"."` 与 `"./package.json"`;插件 id 全树唯一,用 `mobile-` 前缀避免与上游撞名。
## 兼容性
- dsh:`@deepseek-ai/dsh@0.1.0-rc.6`(npm)
- Android:minSdk 26 / target 34(Android 8.0+)
- 界面语言:自动跟随系统(中/英,与官方一致,无切换按钮)
- **无 root 可用**:安装/通知/远程连接均不依赖 root(仅旧版设备的 SELinux 补丁为可选步骤,失败自动跳过)
## 版本历史
- **v0.01** — 首个公开版(本地 0.17 迭代重编号)
## Credits
本程序使用 **DeepSeek Pro / DeepSeek Flash** 进行构建(DeepSeek Harness agent 辅助开发)。
## License
MIT © knGear
Install
dsh plugin --profile web add github:knGear/dsh-mobile
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dshm-ui from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.