DSHBox
Health Gecti
- License — License: GPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 616 GitHub stars
Code Basarisiz
- exec() — Shell command execution in browser/browser-bridge/src/main/assets/browser/lib/browser-serve.cjs
- fs module — File system access in browser/browser-bridge/src/main/assets/browser/lib/browser-serve.cjs
- network request — Outbound network request in browser/browser-bridge/src/main/assets/browser/lib/browser-serve.cjs
- fs.rmSync — Destructive file system operation in browser/browser-bridge/src/test/js/browser-project-proof.test.cjs
- fs module — File system access in browser/browser-bridge/src/test/js/browser-project-proof.test.cjs
- fs module — File system access in browser/browser-runtime/src/test/js/BrowserDomScriptBehaviorTest.js
- fs module — File system access in browser/browser-runtime/src/test/js/BrowserOverlayObservationTest.cjs
- fs module — File system access in browser/browser-runtime/src/test/js/BrowserSameDocumentHistoryScriptTest.cjs
- fs module — File system access in browser/browser-runtime/src/test/js/browser-wait-selector.test.cjs
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
DSHBox — 移动端本地运行和远程操控 DeepSeek Harness。自带终端、文件管理器、浏览器、手机操控等工具,致力打造一站式随身 AI 工作台,免 ROOT 和 Termux。
English | 简体中文
DSHBox — DeepSeek Harness on Android: Run Locally or Connect Remotely
DSHBox is an open-source mobile app for DeepSeek Harness (DSH). It can run DSH locally on your phone or tablet, or connect to DSH remotely, with a terminal, file manager, browser automation and phone control in one app — a personal AI workbench you can carry. No root or Termux required.
DSHBox 是一款 DeepSeek Harness(DSH) 的移动端开源应用,既可以移动端本地运行 DSH,又可以远程连接 DSH。配套终端、文件管理、浏览器自动化、手机操控等工具,组成个人随身 AI 工作台。无需 Root,也无需 Termux。
快速安装
| 项目 | 说明 |
|---|---|
| 系统要求 | Android 10+ · ARM64 |
| 权限 | 日常使用无需 Root · 无需 Termux;开发者模式中的 Root 通道为可选能力 |
| 发布版本 | 系统 WebView 版:APK 较小,复用手机系统 WebView;内置 Gecko 版:随包提供 GeckoView 158,不依赖系统 WebView |
| 本地运行 | 在移动端装配 PRoot + Debian 沙箱,内置 Node.js 与 DSH 0.2.2-rc.1 运行层,本地运行 DSH |
| 远程连接 | 扫码或粘贴配对链接,连接同一局域网或公网上的 DSH;支持代理 / 直连与多设备管理和切换 |
| 首次准备 | 按新手引导分步安装精简 Debian 与 Node.js 两个运行环境,支持多镜像源检测、失败重试或离线导入; |
| 安装包如何选择 | **系统 WebView 版:**系统 WebView 较新且工作正常时(或有能力升级系统 WebView 版本时),可优先选择体积较小的系统 WebView 版安装包; **内置 Gecko 版:**系统 WebView 较旧、受厂商定制影响升级困难,可能导致 DSH 页面空白、加载失败或工作区加载等各种报错,选择 Gecko 版安装包。 两个 APK 同包名、同签名,可互相覆盖安装,保留数据。 |
下载系统 WebView 版或内置 Gecko 版 → 覆盖安装 → 启动应用 → 按引导获取运行环境(在线多镜像源,或沿用离线导入)→ 打开 DSH。
更新记录
当前版本 v1.5.2(2026-11-11):远程连接 · 本地 DSH 局域网访问 · DSH 0.2.2-rc.1 · 通知与交互优化。
- 新增远程连接:扫码或粘贴配对链接,连接同一局域网或公网上的 DSH 插件与网页版 Agent;支持代理 / 直连、多设备管理与快速切换;
- 新增本地 DSH 局域网访问:同一网络内的设备可经局域网网关打开本机 DSH 页面,支持访问密钥、二维码与在线设备查看;
- 随包 DSH 升级至
0.2.2-rc.1:层内容保持上游纯净,按版本仲裁装配; - 移动端页面适配与端口修复:移动端页面适配插件(已改名)不再干扰页面排版;本地 DSH 端口自适应,不再锁死 3080;
- 通知与交互优化:系统通知动作精简为启动 / 重启 / 关闭;设置新增顶部通知栏与回车键选项;悬浮球贴边隐藏,Gecko 版可打开配置文件。
各版本完整变更见 CHANGES.md。
核心特性
一、远程连接(v1.5.2 新增)
首页新增「远程」页签,用于连接电脑或其他设备上的 DSH。远程会话与本地 DSH 共用同一套宿主、文件交付与诊断能力。
- 扫码 / 粘贴配对:扫描电脑端远程插件的配对码,或粘贴含令牌的配对链接;配对前先展示确认卡,确认后才建档。
- 已适配插件:dsh-remote-web-gateway、dsh-full-remote、dsh-bridge、dsh-pocket、通用 URL 票据、dsh-Remote scheme、ChongYep、saya-ch / dsh-mobile,以及 ZCode 工作区、DSH Remote 等账号型直连入口。
- 代理与直连:代理模式经手机本机回环转发,兼容局域网明文与自签证书;直连模式由渲染器直接访问 HTTPS 地址,路径更短。两种模式可在端点级切换。
- 多设备管理:设备按分组管理,可新建、重命名、移动分组、删除;每个端点保存目标地址、通道类型、会话模式与保留策略。
- 稳定隔离:每台设备绑定独立回环 IP,每个端点分配稳定端口并持久化;删除设备时回收槽位并退役端口。
- 会话保留:支持默认档、端点级覆盖与「永久」档;热池按容量保留页面,切走再回不重载。
- 外链与附件:远程页内同上游链接就地打开,站外 http(s) 与页面打开请求交系统浏览器;文件选择复用本机七来源附件面板。
- 远程下载:页面下载统一落到
DSHBox/download-remote,提供底部下载器、结果提示、打开文件与打开文件夹;跨源<a download>命中已批准文件 CDN 时取消导航并转下载器。 - dsh-mobile / saya-ch:解析 JSON 描述符与 URL 配对链接,校验实例指纹与会话 CA;native-pair 兑换会话 Cookie 与 CSRF,设备凭据持久化并支持 native-renew 自动续期;iroh 传输地址显式拒绝,引导改用局域网或 Cloudflare 模式。
- 网页端 Agent:WorkBuddy、MiniMax 等网页端 Agent 可按远程页面接入;WorkBuddy 下载支持腾讯云对象存储 CDN 租户前缀。
- 六语界面:远程面板、配对、扫码、设置、错误提示与下载器提供中、英、阿、西、法、俄六语文案。
二、DeepSeek Harness 全内嵌本地运行与双渲染
(1)DeepSeek Harness 本地全内嵌运行
- DSH
0.2.2-rc.1随 APK 内置,层内容保持上游纯净;首启按版本仲裁装配到runtime-current/dsh,换层时旧层单份备份到previous/dsh,不触碰用户数据。 - 运行期硬链接兼容垫片:安卓应用数据分区(FBE/FUSE)拒绝硬链接,而 DSH 使用
link()作为“不覆盖发布文件”的原语,会导致会话持久化、文件工具和附件发布失败。App 启动时通过node --import替换node:fs/promises.link;遇到平台拒绝时退化为保留不覆盖语义的内容拷贝。 - DSH 源码零修改:兼容逻辑位于 App、渲染适配层、内置扩展和运行环境接线;随包 DSH 层保持上游文件与业务逻辑不变。
- 全屏 DSH 工作区:DSH 标签页在本地地址上自动解析 launchToken、使用移动 UA、处理键盘与视觉视口并支持双指缩放;可拖动悬浮球继续提供刷新和首页、文件、终端、Browser 快捷切换,首页保留“浏览器”和“更 多”入口。
(2)DeepSeek Harness 访问设置
DSH 本地访问设置:首页 DSH 卡片可进入全屏访问设置页,查看并复制带 token 的完整地址、设置外部打开方式、复制连接信息并查看运行时间。本地 DSH 启动前探测可用端口,不锁死 3080;页面、通知与局域网网关按实际地址更新。
DSH 局域网访问设置:
a.局域网网关:同一网络内的设备可打开本机 DSH 页面;支持访问密钥、含/不含密钥的地址、二维码、在线设备数与「全部断开并重置密钥」。
b.访问控制:密钥持久化、常量时间比较、门禁 Cookie 签名校验与失败限速;密钥轮换后旧链接与旧会话同步失效。
c.网络适配:检测 Wi-Fi 私网地址并绑定;系统 VPN 占用时绕行非 VPN 网络并给出提示。
前台服务通知带「启动 / 重启 / 关闭」快捷操作;
页面刷新和重新认证统一使用当前 launchToken,DSH 重启或健康循环换 token 后不会继续请求旧地址。
(3)WebView 双渲染
- 系统 WebView 版 / 内置 Gecko 版:两个发布变体共用唯一 DSH 页面、宿主导航、文件交付、诊断与日志实现,差异集中在 Renderer Adapter;两个 APK 同为
com.dshbox.app、同一签名,可覆盖切换并保留filesDir。 - 系统 WebView 兼容:在 DSH 主脚本执行前补齐启动期所需 API,并通过单次 document-start 注入进入页面;支持 document-start 的内核继续复用系统 WebView,不支持的内核会明确阻止导航并提示升级。
- 内置 GeckoView 158:完全使用随包渲染内核,不依赖系统 WebView,不静默回退;处理 DSH 账号 popup、外链、401、文件选择、页面状态、右侧栏和键盘视口等差异。
三、内嵌 AI 自动化浏览器(Browser)
独立的内置浏览器工作区,通过随包 browser-use 插件与沙箱 CLI 向 DSH 开放 24 项工具。新用户默认装配,可在首页 Cordis 页签的「DSH浏览器自动化」开关中独立控制。
- 网页操作:搜索、导航、多页面管理、读取内容、定位元素、点击、输入、滚动及条件等待;搜索引擎可选必应、谷歌和百度,默认必应。
- **视图选择:**可选移动端视图和桌面端视图。
- 选区反馈与本地预览:选取网页元素或区域,附截图和评论提交给已绑定的 DSH 会话;沙箱中的 HTML 等文件可通过 CLI 启动本地静态服务,也可登记已有服务,在 Browser 中预览并反馈修改意见。
- 截图与调试:支持前台和后台网页截图;普通后台截图失败时,已开启高级调试才会串行尝试 CDP 后备,否则返回明确提示。高级调试提供 DOM、控制台、脚本求值及网络抓取、HAR 导出等能力,请求拦截、修改与重放按独立授权开放。
- 文件与记录:持久历史、收藏、多页面和下载管理;AI 可准备上传文件,经用户批准后交给网页。任务记录可查看、编辑、删除并向 AI 发送续接摘要。
- 控制权与界面:用户接管 AI 操作前确认,AI 控制关闭时可申请授权;支持主题与六语跟随、移动/桌面/宽屏模式、可设置的闲置关闭时间,以及点击 AI 标记快速返回 DSH。
Browser 负责内置网页,Pilot 负责手机原生应用,由 DSH 选择调用。复杂跨页面任务恢复、长时流式响应及部分媒体、站点兼容场景仍待完善,不保证所有任务均可全自动完成。
四、手机操控(Pilot)
(1)安全可控手机助手通道(APP提供审批拦截)
内建 39 项手机操控能力表,并在内嵌沙箱与安卓应用层之间建立一条信箱通道(文件投递,无网络、无共享内存),让沙箱内的 DSH 安全可控地操控与连接手机。采用「UI 适配 + 内核平台」两层结构嵌入;内核以 Apache-2.0 独立发布于 interlock-relay 仓库,本仓库调用并做 UI 层适配。
| 执行通路(三类) | 说明 |
|---|---|
| 无障碍模式 | AI 在前台直接操控屏幕:点击、滑动、长按等等 |
| Shizuku 特权模式 | 打通系统 shell 级(adb)权限;危险操作(如删除类)被严格限制,部分权限留给用户自行开启、风险自担 |
| 平台直连调用 | 走系统正常渠道的一系列功能调用 |
| 执行模式(两种) | 说明 |
|---|---|
| 前台 | 用户可见地直接操作,配合无障碍 / 平台直连通路 |
| 后台虚拟屏 | 用户在前台正常使用设备、AI 在后台操控;在部分应用的限制下自动降级回前台操作 |
- 审批与交互约束:上述每条链路都施加约束,可按能力选择「禁止 / 询问审批 / 完全访问」;通过弹窗与用户交互。
- 悬浮窗提问:离开 DSHBox 页面时,AI 可召唤悬浮窗提问来与用户实现沟通,用户可选择相关条目、全部驳回或重新提问。
- 给 DSH 的原生工具:随包 DSH 插件
@local/mobile-pilot提供一组phone_*工具,agent 可直接调用我们的内核信箱机制。此插件可在「Cordis」内的「DSH连接手机」处自由开启。
(2)开发者模式(ADB+root,权限完全交给用户)
从 Pilot 进入独立的“开发者模式”面板。该面板提供的是面向高级用户的完整能力,不属于 Pilot 手机助手的受控审批体系:
| 通道 | 能力与边界 |
|---|---|
| ADB | 开关开启时把完整 ADB 客户端及依赖挂载到 Debian 沙箱,关闭时移出;支持本机服务、无线调试配对、外部设备调试、端口与自定义密钥。 |
| Root | 使用设备现有的 su 实现,在 guest 内提供 android-root CLI;支持访问码、失败锁定、Unix/TCP 传输与权限预检。 |
- 与手机助手隔离:ADB / Root 不经过 Pilot 的“禁止 / 询问审批 / 完全访问”逐项审批、权限分级或动作拦截。用户开启开关后自行决定用途,并对自己执行的调试、系统或 Root 操作及其后果负责;原手机助手通道继续保留受控权限和审批保护。
- 与 Shizuku 隔离:开发者模式 ADB 不依赖 Shizuku,可作为部分 Shizuku 兼容性或未解决问题的替代路径;两者的开关、密钥、server 配置和生命周期独立。
- 外部设备调试:该 ADB 不仅能连接手机本机服务,也可通过网络连接其他设备。ADB 通道关闭后,相关命令、server 入口和挂载均从沙箱撤除。
- 使用前须知:无线调试要求设备支持该能力且网络可互通;Root 要求设备已有可用
su,并可能受 Magisk、KernelSU、APatch、隐藏策略和厂商 ROM 差异影响。
五、插件管理与插件市场
从首页 Cordis 页签进入,插件相关能力集中管理:
| 能力 | 说明 |
|---|---|
| 随包自制插件开关 | 「DSH移动端页面适配」(dsh-mobile-adapt)、「DSH连接手机」(mobile-pilot)与「DSH浏览器自动化」(browser-use);新用户默认装配,升级保留明确关闭的设置,装配与更新按 DSH 就绪状态处理。 |
| DSH 官方插件 | 把上游默认关闭的官方条目做成开关(如右侧边栏内置浏览器) |
| 安全模式 | 不加载任何第三方插件启动,用于第三方插件导致 DSH 崩溃时恢复启动 |
| 插件加载记录 | 按启动分段查看插件加载情况,便于排错 |
| 崩溃修复辅助 | 内置终端 Agent opencode,一键安装 / 更新 / 卸载;终端输入 opencode 唤起 TUI,用自然语言交互,完成修复 |
| 插件市场 | 位于 App 层,提供分类浏览、搜索、兼容判定、安装守卫及第三方插件安装 / 更新 / 删除入口 |
| 已安装插件 | 先显示本地清单,再异步加载远程目录;区分已生效、重启后生效、待停用、宿主拒绝、不兼容和损坏状态,避免弱网下整个页面持续等待 |
| 随包插件保护 | 移动端适配、Pilot 与 browser-use 写入 profile dependencies;安装、更新或删除第三方插件后,不会被 pnpm 重算 node_modules 顶出 |
插件市场内置 awesome-dsh-plugin 与 awesome-dsh-mobile-plugins 两大实时数据源,后者为 DSHBox 专为移动端 DSH 插件生态新建的仓库,用户可以提交 PR,共建生态。
- 内置 pnpm 11.1.2:随包提供 Corepack 缓存,预置 npm 官方与中国大陆镜像探测;pnpm 的 store、registry 和 Corepack 环境在 DSH、官方“添加插件”入口、插件市场与终端中使用同一配置。
- 官方“添加插件”已接通:支持输入包名或链接后拉取插件信息、安装及卸载;修复
pnpm找不到、registry 参数不被接受和 store 路径不一致等问题。 - 已安装状态按生效时机展示:启用或停用后需要重启 DSH 才能生效的条目会显示“重启后生效”,宿主拒绝、不可兼容、基础库与市场自身等不可操作项不再显示无效开关。
- 兼容边界:市场会提前检查已知宿主版本、载体和依赖问题,但不能保证所有第三方插件在任意 DSH 版本上可用。升级 Alpha 前仍应备份;从 Alpha 回退 RC 可能出现会话数据兼容问题。
六、DSH 移动端与双渲染适配
内置 DSH 已升级到 0.2.2-rc.1。System WebView 与 Gecko 两条渲染路径共用同一套 DSH 页面和宿主逻辑;适配集中在 App、Renderer Adapter、内置页面兼容资源与扩展中,不修改 DSH 源码或业务逻辑:
| 组件 | 移动端差异或断点 | 处理方式 |
|---|---|---|
| System WebView 启动 | 旧内核缺少 DSH 依赖的标准 API,或没有 document-start 能力 | 在页面脚本执行前补齐能力;无法安全进入启动前阶段的 provider 明确阻断并提示升级 |
| Gecko 页面桥接 | GeckoView 不具备 System WebView 相同的回调和扩展环境 | 使用内置扩展、页面状态桥、导航代次和原生事件实现 DSH 所需能力 |
| 账号登录 | DSH 先打开空白 popup,再异步取得授权地址;不同内核处理不同 | System 与 Gecko 都在受信 DSH 来源下识别 popup,需要浏览器授权时跳转系统默认浏览器 |
| DSH 内链接 | 直接在主框架加载链接会覆盖当前工作区;侧边栏 iframe 需要保留 | “默认浏览器”把顶层非同源 HTTP(S) 交给系统浏览器;“应用内侧边栏”目标保持 iframe,不误拦截 |
| 401 与重新登录 | 并发导航、重定向和迟到回调可能把状态归到错误文档 | 以导航 nonce、请求头状态和文档状态关联当前代次;旧代次结果丢弃 |
| 附件上传 | 文件选择、多选和来源判定需要原生接线 | 提供拍照、录像、相册、手机文件、音频、工作区与共享区;去重多选结果并清理 accept 哨兵 |
| 语音输入 | WebView 录音需要额外的音频设置权限 | 声明所需权限并接入 DSH 语音输入 |
| 右栏文件预览 | 非标准 scheme 的 authority/host 解析存在内核差异 | 在 App 层补齐 dsh-resource:// 解析;System 与 Gecko 使用同一语义 |
| “打开配置文件” | 旧方案依赖页面拦截,插件关闭或执行时机会导致失败 | 运行环境提供原生 xdg-open 链接,由 App 打开配置文件查看器;已存在文件不覆盖 |
| 键盘与顶栏 | Gecko 弹起键盘时可能上移整个布局视口 | 仅对 Gecko 补足视觉视口差额并固定会话顶栏;System WebView 保持原行为 |
| 右侧边栏终端 | guest 的 passwd 缺运行期 uid,os.userInfo() 可能失败 |
运行期把当前 uid 补齐进 guest passwd |
| 右侧边栏浏览器 | 上游默认关闭对应官方插件 | 在插件管理面板提供开关,重启 DSH 后生效 |
| 拍照 / 录像 | DSH 页面需要系统相机 / 录像入口 | 通过 onShowFileChooser 的 accept 哨兵改走系统拍摄界面 |
| 页面诊断 | 加载完成不等于页面已就绪,主线程能力也不等于 Worker 能力 | 诊断分别记录文档、主线程 API、Worker、Gecko 与页面状态,不伪造“已支持” |
设备返回键、自动聚焦、悬浮快捷切换和附件来源面板沿用 v1.5.0 完成的能力。v1.5.1 进一步把与插件开关绑定的 URL 解析、配置文件打开和 Gecko 键盘处理迁入 App 或明确限定为 Gecko 分支,使 System WebView 不会被 Gecko 专属逻辑干扰。
七、文件管理
- 分区
| 区域 | 功能 |
|---|---|
| 沙盒文件 | 整个 Debian 沙箱文件 |
工作区 /root/projects |
应用内私有目录,专门划分给DSH的工作区,内部数据始终保护,不会被沙箱重置清理 |
共享区 /root/share |
授权后在手机公共存储创建或沿用 DSHBox 文件夹;系统共享文件目录,可控的让用户选定其他系统公共目录,以独立名称挂载到沙箱共享区;取消挂载只解除关系,不删除源目录或文件。公共共享目录内容不会随 App 卸载或重装而自动删除 |
目录与视图:工作区
/root/projects、沙盒根(叠加 node、DSH 层)与共享区入口,面包屑导航、列表 / 网格、按名称 / 时间 / 大小排序、新建文件夹、多选批量操作新建文件(v1.4.0 新增):可在当前目录直接创建空文件
安装到沙箱(v1.4.0 新增):选中
.deb可直接解包安装进沙箱移动到指定文件夹:全屏目标选择器(沙盒 / 工作区切换、可新建文件夹、源自身及子孙目录置灰防环、跨挂载点落点提示);冲突三策略(覆盖 / 跳过 / 自动改名 + 应用到其余全部);同卷
renameTo优先、失败复制兜底(保留权限位 / 时间戳);「重命名」走同一引擎导入:文件多选批量导入、压缩包解压导入,逐件冲突决策、可取消、完成汇总;ZIP 中文名编码修复,加密 zip 明确拒绝
导出:多选导出到目录(SAF),或打包为 ZIP
外部接收与分享(v1.5.0 新增):接收其他应用「分享到」或「用其他应用打开」的文件并选择保存目录,支持多文件与纯文字;文件菜单可直接调起系统分享面板,与导出功能分开
全局搜索:跨沙盒 + 工作区,同时搜文件名与内容,结果带匹配片段
风险保护:系统目录 / node / DSH 层 /
.dsh分级标注,写操作前强确认通用文件查看器 / 编辑器 —— 魔数 + 内容嗅探 + 扩展名三级分类,任何文件必有界面:
| 类型 | 能力 |
|---|---|
| 文本 / 代码 | Sora Editor 编辑(行号 / 撤销重做 / 搜索 / 自动换行),json / yaml / shell / python / js / java+kotlin 高亮;编码自动探测 + 手动切换,有损解码强制只读;大文件分级(≤2MB 可编辑 · 2–10MB 确认后编辑 · >10MB 只读尾窗);原子保存 + 外部变更检测 + 未保存拦截 |
| 图片 | 双指缩放 / 双击放大,超长图条带加载,GIF / 动态 WebP 动图,AVIF(Android 12+) |
| 原生分页渲染;加密 PDF Android 15+ 可输密码,低版本引导外部打开 | |
| 压缩包 | zip / jar / apk / epub 与 tar 系只读浏览(目录折叠、加密条目标记)、包内文本预览、单条目 / 全部导出;ZIP 中文名不乱码;7z / RAR 信息卡 + 外部打开 |
| 十六进制 | 偏移 / Hex / ASCII 三栏,64KB 块随机读,熵估计 |
| Office | docx / xlsx 抽纯文本只读;doc / xls / ppt 信息卡 + 外部打开 |
| Markdown / HTML / SVG | md 源文编辑 + Markwon 预览(含表格);html / svg 离线 WebView 渲染(禁 JS、禁网络、退出即销毁) |
| 未知 / 二进制 | 十六进制查看 + 文件信息卡;外部打开 / 编辑 / 分享 / 导出兜底 |
八、终端
- 多窗口:沙盒终端(PRoot Debian 完整环境,bash / vim / htop / node / npm / apt / git / python3 / ssh 开箱可用)/ 受限 shell 兜底,浮动控制面板新建 / 切换 / 关闭
- 直接操作 DSH CLI(v1.4.0 新增):沙箱内可直接运行官方
dsh命令(web / headless / tui / plugin),与网页端同一份 DSH、同一个 profile - 开发者模式命令:开启对应开关后,sandbox 内可使用完整
adb;Root 通道开启且设备已授权时,可使用android-root。关闭开关会撤除对应命令入口 - 随包小工具补齐(v1.4.0 新增):
jq、sqlite3、patch、nano、strings(binutils)等 AI 执行任务时常用的系统工具;工具包自愈 —— 换层或升级后检测到缺失会自动补装,不必清数据重来 - 两行辅助按键栏(ESC / TAB / HOME / END / CTRL 粘滞 / 粘贴 / 方向键 / 翻页 / 退格 / 删除,DECCKM 感知),双指缩放字号 8–40sp
- 基于 Termux terminal-emulator / terminal-view(v0.118.0,未修改)+ 自研
terminal-session会话层
九、设置页
(1)DSH版本选择与运行环境管理(DSH版本可自由选择,不锁死)
| 功能 | 说明 |
|---|---|
| 更新 DSH(在线) | 并行探测 npm 官方 / 阿里 / 腾讯云 / 华为云镜像的版本与延迟 → 选源选版本(降级二次确认)→ 沙箱内 npm 拉取完整依赖树 → 换层自动重启;后台运行、实时日志、可取消(进程树 SIGKILL) |
| 更新 DSH(离线导入) | 单文件层包 .tar.zst / .tar.gz / .tar / .tgz(或 zip 内含层包),暂存解压 → 形态校验 → 原子换层,失败不留半成品 |
| 在线获取运行环境 | 按 Node 层 / 精简 Debian 层 分别探测对应镜像源(可达性与延迟)、下载、GPG 验签、裁剪与组装成层;分步进度、可取消,失败按原因分类提示(镜像缺包 / 验签失败 / 空间不足等);可随时重置任意层 |
| 离线导入运行环境包 | 整包替换 base / node / android-side,逐层 SHA-256 校验,previous/ 单份可回滚(详见下文);v1.4.0 起不随 APK 分发,但仍会在 Release 页面单独提供,与在线获取等效。 |
(2)诊断与日志
DSH / 沙箱 / 访客命令日志可滚动、复制与导出;渲染诊断区分 System provider、Gecko 版本、页面文档状态、主线程 API、Worker 环境和已知视觉能力,不把加载完成或版本号单独当作页面可用结论 |
(3)存储占用与清理
- 占用按系统同口径统计(分配块、硬链接去重、含应用缓存),进设置页自动刷新、可手动刷新
- 清理项独立勾选:应用缓存 / 访客临时文件(运行中仅清 24h 前条目)/ 运行日志(截断)/ apt 下载缓存;回滚备份可选并明确警告
- 清理与后台安装 / 导入互斥,绝不触碰
user-data/.dsh与运行环境本体
十、多语言适配
- 界面全面本地化:联合国六种官方语言——English / 简体中文 / العربية / Español / Français / Русский;默认跟随系统,未支持语言回退英文
- 设置 → 外观新增「语言」选择器:六语 + 跟随系统,即选即生效、无需重启;通知、弹窗、终端菜单等均随语言切换
- 数量文案按语言复数规则处理(阿拉伯语 6 形态 / 俄语 4 形态等);文件大小、时间戳、Hex 偏移等技术性数字保持西文
- 布局方向:全局恒 LTR(阿拉伯语文本按 Unicode bidi 正常渲染),页面导航与布局不整体镜像
- 内置 i18n 一致性门禁(键位 / 占位符 / 复数形态 / 硬编码扫描),随 CI 校验六语资源
十一、PRoot 分层运行环境(无需 Root)
四层独立装配,PRoot 用户态沙箱与 Android 宿主隔离,运行环境与用户数据(user-data/ → guest /root/projects)互不写入:
| 层 | 内容 | guest 挂载点 |
|---|---|---|
| base | Debian 13 (trixie) 精简版 rootfs | /(rootfs) |
| node | Node.js 24(npm / npx / corepack) | /usr/local |
| dsh | DeepSeek Harness 0.2.2-rc.1(npm 包,纯净上游) |
/opt/dshapp/runtime |
| android-side | PRoot / loader / shmem(宿主侧) | — |
- 沙箱 keepalive 与 DSH 为两个独立 PRoot 进程;停机按
/proc枚举整棵进程树、子进程优先 SIGKILL,不留孤儿、不占端口 - 每层带 SHA-256 哨兵,启动时逐层校验完整性,损坏可识别、可重装
- v1.4.0 起,
base与node两层不再随包内嵌(APK 内只留dsh与android-side):它们由「在线获取运行环境」(精简 Debian 层 / Node.js 层,多镜像源可选、可重置)或「离线导入整包」安装。在线组装出来的层会裁掉非必要语言包与文档等无关组件(即「精简 Debian」),占用更小
界面(底部 5 个标签)
| 标签 | 功能 |
|---|---|
| 首页 | 控制 / Pilot / Cordis / 远程 四页签:沙箱与 DSH 状态控制、系统状态、手机操控入口、插件管理、远程连接;设置入口位于右上角 |
| 文件 | 工作区 / 沙盒 / 共享区浏览、移动 / 重命名 / 删除、多选批量、导入 / 导出 / 分享、外部文件接收、查看器 / 编辑器、搜索 / 排序、新建文件 / 文件夹、.deb 安装到沙箱 |
| DSH | 使用 System WebView 或内置 GeckoView 加载 http://127.0.0.1:3080,自动认证、键盘与页面兼容、悬浮球刷新和模块快捷切换;也可承载远程连接页面 |
| 终端 | 多窗口终端、辅助按键栏、控制面板、可直接运行 dsh CLI |
| Browser | 内置浏览器与 AI 网页助手、元素 / 区域反馈、本地网页预览、历史 / 收藏 / 下载及调试设置 |
设置已迁至首页右上角,保留外观(主题 / 语言)、存储与清理、App 更新、DSH 与运行环境更新 / 导入、诊断日志、反馈与关于。
已知限制
- System WebView 兼容范围取决于 provider 能力:已实测部分 WebView 101 / 124 环境可完成主要 DSH 页面流程;缺少 document-start 或所需标准 API 的旧内核会被阻止进入并提示升级。系统 WebView 版本号不能单独保证所有页面均正常。
- Worker / PDF 不等同于主页面兼容:System WebView 的 Worker 使用独立环境,当前提供诊断而不注入 Worker 兼容补丁;PDF、Excel 或依赖高版本 Worker API 的流程可能需要更新 WebView,或使用内置 Gecko 版。
- 两个 APK 不能同时安装:系统 WebView 版与 Gecko 版同包名、同签名,只能互相覆盖;安装另一个版本不会清空 Debian、sandbox、user-data 或已创建的工作区。
- 开发者模式属于高级能力:ADB / Root 不经过 Pilot 审批体系。用户应理解无线调试、外部设备访问和 Root 命令的风险,并自行承担操作后果。不同 ROM 的
su、无线调试、隐藏与授权行为可能不同。 - 插件兼容由宿主与插件共同决定:市场会检查已知宿主能力、载体和依赖差异,但不能保证任意第三方插件在所有 DSH 版本上均可安装或运行。
- 远程连接依赖对端插件与网络:需要电脑端安装并开启对应远程插件;代理模式要求手机能访问对端地址,直连模式仅支持 HTTPS。不同插件的登录、Cookie 与下载行为可能存在差异。
- iroh 传输暂不支持:saya-ch / dsh-mobile 的 iroh 地址会被明确拒绝,请改用局域网或 Cloudflare 等普通 HTTPS 模式。
- 远程下载有来源限制:仅同源或已批准的文件 CDN 会转交下载器;其它跨源下载可能仍由页面或系统处理。
- 局域网访问需要同网段与密钥:手机与电脑需在同一局域网,DSH 已就绪,并持有当前访问密钥;密钥重置后旧链接与旧会话失效。
- Gecko 静态 content script 在个别新系统上存在平台差异:当前需要桥接的登录、外链、配置文件与导航关键路径已使用原生事件、扩展状态桥或运行环境链路;未来新增页面主世界注入功能时仍需重新验证。
- 升级 Alpha 前应备份:从稳定 RC 升级到 DSH Alpha 后,回退 RC 可能出现会话数据兼容问题。
从源码构建
| 环境 | 版本 |
|---|---|
| JDK | 21(官方 CI 使用 Temurin 21) |
| Android SDK | compileSdk 37.2 · targetSdk 36 · minSdk 29 |
| Gradle | wrapper 9.5.0(AGP 9.3.1 · Kotlin/Compose 编译插件 2.4.20) |
| Kotlin | 编译器版本 2.4.20;源码语言/API 固定 2.2,JVM target 17 |
运行环境大层不在本仓库;由于体积较大,改为在 GitHub Release 中作为独立附件发布(见下节)。构建前请先获取
../runtime/。
./gradlew :app:testDebugUnitTest
./gradlew :app:assembleSystemWebViewRelease :app:assembleGeckoRelease
pwsh tools/assemble_release_apks.ps1
Release 归档后输出:
apk/dshbox-v<version>-system-release.apkapk/dshbox-v<version>-gecko-release.apk
归档脚本会继续执行发布契约门禁,检查两个 APK 的 DSH 兼容资产、Gecko 扩展权限、脚本哈希、包名和签名。
| 模块 | 职责 |
|---|---|
app |
全部 UI(5 个标签页、DSH 访问设置、查看器、设置 / 诊断 / 更新页)、双渲染变体、前台服务、在线更新编排与运行环境获取 |
remote-connection |
远程连接:设备/端点档案、回环代理与直连会话、配对解析、扫码、远程面板与会话显示槽、下载器 |
dsh-renderer |
api 共享渲染契约、导航鉴权与文件交付;system 系统 WebView 兼容与能力探针;gecko GeckoView 158 渲染、扩展、弹窗与文件选择 |
sandbox-manager |
分层运行时装配、PRoot 进程管理、DSH 层仲裁与更新、导入 / 校验 / 清理 |
common |
常量、npm 镜像源、版本比较、日志脱敏 |
bridge |
WebView JS Bridge 安全框架(预留 stub) |
terminal-session |
终端会话层(多窗口、PRoot 终端命令构建) |
terminal-view / terminal-emulator |
Termux 终端库(v0.118.0,未修改) |
plugin-manager |
插件管理:装配控制、插件市场(目录取数 / 兼容判定 / 安装守卫)、官方插件开关、绝对安全模式、插件加载记录、崩溃修复辅助(opencode) |
pilot(interlock-relay-core + dshbox-adapter + developer-access) |
手机助手内核与 UI 适配;开发者模式的 ADB、Root、无线配对、设备、密钥和通道面板 |
browser(browser-api / browser-runtime / browser-bridge / browser-devtools) |
浏览器契约、WebView 会话运行时、沙箱工具桥接与受控高级调试;界面由 app 接入 |
运行环境层构建脚本见 runtime-bundle/(各层 tar.zst 由 build_base.sh / build_node.sh / build_android_side.sh 在 Linux/WSL2 构建);构建手册见 docs/BUILD_RUNBOOK.md,预检脚本 tools/pipeline_dryrun.sh。注意:开发者基于源码自行构建时,必须先从 Release 发布的运行环境压缩包中解压并提取 android-side 层,放到构建所需的 runtime/android-assets/runtime/android-side.tar.zst;否则编译出的 APK 缺少该运行层,无法正常安装运行环境。
注:Release 页面随版本一并提供打包好的运行环境整包(三层:base / node / android-side,独立于 APK),可直接下载使用。v1.4.0 起 APK 内只内嵌 dsh 与 android-side 两层;base 与 node 两层不再进包,由「在线获取运行环境」现场组装,或由该整包离线导入。
运行环境大文件(不在本仓库)
| 发布包内路径 | 内容 |
|---|---|
runtime/android-assets/runtime/android-side.tar.zst |
宿主侧 PRoot / loader / shmem,带 .sha256 侧车(内嵌进 APK) |
runtime/android-assets/dsh/0.2.2-rc.1.tar.zst |
DSH 层 + .sha256(纯净上游,不打补丁;内嵌进 APK) |
runtime/offline-baseline/{base,node}.tar.zst |
Debian 层与 Node 层,各带 .sha256 侧车与 runtime-profile.json;不进 APK,作为离线整包的一部分交付 |
runtime/dshapp-runtime-debian-arm64-0.1.0.zip |
对外交付的运行环境整包(离线导入用) |
- 引用方式:
app/build.gradle.kts通过assets.directories.add("../../runtime/android-assets")引用发布目录,构建时内嵌进assets/runtime/*与assets/dsh/*- 判定机制就在这句话里:放进
assets.directories.add指向的目录才会进包;base/node移到runtime/offline-baseline/之后即不再内嵌。实测 APK 内条目与此吻合——只有assets/dsh/*与assets/runtime/android-side.tar.zst
- 判定机制就在这句话里:放进
- 构建前置:
assembleSystemWebViewRelease/assembleGeckoRelease前需先获取runtime/,目录缺失则无法内嵌完整运行环境;v1.4.0 起该前置只对dsh与android-side两层成立 - 签名密钥(
keystore.properties、local.properties)不在仓库内:用tools/create_keystore.sh自建开发签名,未配置时 release 构建回退 debug 签名
离线导入运行环境包
- 交付形式:单文件
dshapp-runtime-debian-arm64-0.1.0.zip(release页发布),设置页「离线导入运行环境包」选择即可;与「在线获取运行环境」并存 - 布局与格式:外层 zip / tar;层归档
.tar.zst / .tar.gz / .tar / .tgz / .bz2 / .xz(按魔数识别),兼容一层目录前缀与外层 tar 装层归档 - 校验:逐层 SHA-256(侧车与
runtime-profile.json交叉核对)+ Zip-Slip 防护;损坏 / 截断 / 加密包返回可读错误 - 替换:旧本体移入
previous/(单份可回滚),绝不触碰 DSH 层与user-data/.dsh - DSH 离线更新走「更新 DSH(离线导入)」单文件层包(如
0.2.2-rc.1.tar.zst),与在线更新并存。
用户交流与反馈
- QQ交流群:2163082322
- Bilibili账号:搜索“文大师啵啵”
- 问题反馈:GitHub Issues
许可证
本项目采用 GPL v3(见 LICENSE)。第三方组件按其各自原许可继续适用,详见 THIRD_PARTY_NOTICES.md:
- PRoot(GPL-2+)· talloc(LGPL-3+)· Debian rootfs(按各包 Debian 版权文件)
- DeepSeek Harness / Cordis(MIT)· Node.js(MIT)
- Termux terminal-emulator / terminal-view(Apache-2.0,v0.118.0 未修改)
- GeckoView 158(MPL-2.0 及内含组件各自许可;仅内置 Gecko 版包含,未修改上游 AAR)
- ZXing Core 3.5.3(Apache-2.0,开发者模式访问码二维码)
- sora-editor(LGPL-2.1-or-later,aar 未修改)· Markwon(Apache-2.0)· commons-compress(Apache-2.0)· zstd-jni(JNI 包装层 BSD-2-Clause,Zstandard 内核 BSD-3-Clause)
- interlock-relay-core(Apache-2.0,手机助手平台层,独立发布,源码随本仓库分发)· Shizuku(MIT,手机助手的 shell 身份执行通路)
三个自有插件 dsh-mobile-adapt、mobile-pilot 与 browser-use 各附完整 LICENSE、NOTICE,并声明为 GPL-3.0-only;第三方依赖保留各自原许可。可在「设置 → 关于 → 开源许可」离线查看随包许可,来源与源码重建说明见 licenses/README.md。
品牌标识不在上述授权范围内。 App 名称、应用图标与应用内自有品牌图形(清单见 TRADEMARK.md)由项目权利人独占持有,全部权利保留;未经许可不得用于修改版 / 衍生版,或用于可能造成混淆的标识。
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi