# dsh-mobile **Repository Path**: wowokcode/dsh-mobile ## Basic Information - **Project Name**: dsh-mobile - **Description**: deepseek harness 手机版本,感谢梁圣 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2026-08-23 - **Last Updated**: 2026-09-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DSH Mobile **把 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 装进一部安卓手机:无需电脑、无需 Termux,APK 装完即用。** > 非官方第三方发行版,与深度求索公司无隶属关系。命名遵循上游 > [品牌使用规范](https://github.com/deepseek-ai/deepseek-harness/blob/main/BRAND_GUIDELINES.zh.md)。 内嵌 Node.js 24 运行时与完整 dsh 服务端,WebView 直连本机 `127.0.0.1:3080` 的 Web GUI——手机本身就是宿主机。 ## 功能 - **完整 Agent 引擎**:与桌面端同一套 dsh(Cordis 插件运行时 + Web UI), 会话、子代理、工作流、附件、设置全部可用,数据都在手机本机。 - **微信式移动界面**(注入 CSS/JS):绿色气泡、鲸鱼头像、按轮折叠的执行过程、 表情面板、附件芯片条、深浅色主题跟随。 - **手机本体操作能力**:`phone-look / phone-tap / phone-input / phone-key / phone-see / phone-vision` 工具链——读屏、点按、输入、截屏、VLM 视觉闭环 (无障碍服务优先,uiautomator 兜底)。 - **内置 adb,免装 Shizuku**:无障碍自动读取「无线调试」配对码完成授权, `sush` 以 shell(uid=2000) 执行系统命令;adb server 空闲自动回收。 - **本机 APK 构建链**(可选导入):aapt/dx/ecj/apksigner/zipalign, Agent 可在手机上现场构建并安装 APK。 - **回环安全**:3080/8599 全部 token 鉴权 + 收养握手 + 页面身份校验, 密钥经 Android Keystore 加密(详见下文)。 ## 截图 (补充:欢迎 PR 贡献界面截图) ## 构建 依赖:Python 3.9+(Pillow)、Node.js 18+(npm)、JDK 17/21、Android SDK(compileSdk 35)。 ```bash # 1) 下载 Termux 依赖包 + npm 依赖(首次约 200MB) py tools/fetch_deps.py # 2) 组装 bootstrap 树并打包 assets/bootstrap.tar(约 216MB) py tools/assemble_bootstrap.py # 3) 构建 APK(无 keystore.properties 时输出 unsigned release) ./gradlew assembleRelease ``` 签名:复制 `keystore.properties.example` 为 `keystore.properties`, 填入你自己的密钥路径与密码(该文件不入库)。 图标:默认使用自绘鲸鱼图标(`tools/gen_icon.py`)。个人自用构建可运行 `py tools/gen_icon_official2.py` 使用官方站点图标(素材构建期获取、不入库; 公开分发请遵守上游品牌规范,保留自绘默认)。 升级 dsh 版本:改 `dsh-stage/package.json` 的钉死版本 → `npm install` → `DshService.BOOSTRAP_VERSION` 加一 → 重跑 2)、3)。 ## 安全模型 安卓的 `127.0.0.1` 回环对设备上所有 App 共享,不能当作进程边界。因此: - **3080 Web 服务**:App 生成随机 token(App 私有目录)。WebView 以 `/?token=…` 首访种下 HttpOnly SameSite=Strict cookie;无 token 一律 403; WebSocket 升级同样校验。 - **8599 执行端点**:`/exec`、`/a11y` 必须携带同一 token(常量时间比对)。 - **端口收养握手**:`/__dsh_handshake` nonce 回显验证,防止同机恶意服务占 3080 骗取 WebView 加载。 - **内置 adb**:server 空闲 90 秒自动 kill-server;密钥存 App 私有目录。 - **密钥存储**:DeepSeek / VLM API Key 经 Android Keystore(AES-256-GCM)加密。 ## 已知限制(安卓平台原生组件缺失) - 交互式 PTY 终端不可用(node-pty 无安卓预编译,已替换为安全 stub)。 - 图片附件不做重采样(sharp 禁用,改为头部解析;>2000px 图片会被部分模型拒收)。 - Landlock 沙箱 fail-closed 不可用,bash 工具以 full-access 模式运行。 - python3 / git / tmux 未内置。 ## 工程结构 ``` app/ Kotlin 壳:WebView + 前台服务 + 无障碍 + AdbShell src/main/assets/ phone-tools/ phone-look/tap/vision 等工具脚本与 Agent 预设 bootstrap.tar 构建产物(assemble_bootstrap.py 生成,不入库) tools/ fetch_deps.py 下载 Termux debs + npm install assemble_bootstrap.py 组装 bootstrap 树(含安卓平台补丁)并打包 tar gen_icon*.py 图标生成(自绘默认 / 官方素材可选) dsh-stage/package.json dsh npm 依赖(版本钉死) bootstrap-pkg/ 解包后的 Termux 数据树(fetch_deps 生成,不入库) ``` 安卓平台补丁(打包期应用,见 assemble_bootstrap.py):webserver token 网关、 HMR 无 flag 降级、fs 原子写 link 兜底、图片头部解析、node-pty/sharp/koffi 桩、 subprocess-local 顶层 koffi 调用中和等。 ## 许可证 本项目代码以 [Apache-2.0](LICENSE) 发布;第三方组件见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。