Repository navigation
Releases: tianye1999/dsb
Release list
DSB v1.0.3 | 逗沙包 v1.0.3
Security update for the installer. The App is unchanged since v1.0.1, so this release ships no new APK. Keep using DSB-1.0.1.apk; it is the one this installer pins.
Fixes
- zod upgraded to 4.6.7 inside DSH (GHSA-mrhx-c7xc-m3w5). zod before 4.6.6 can exhaust memory while validating oversized collections that have a size limit. About 50 DSH packages pinned zod 4.4.3; the installer's DSH runtime now overrides them to 4.6.7. DSH listens on 127.0.0.1 only, so the practical exposure was a local denial of service. To pick up the fix on an existing install, rerun the installer with the v1.0.3 package.
- Termux proot 5.1.107.99 install issue resolved. proot 5.1.107.100 fixes the
signal 11crash during Ubuntu package installs (termux/proot#420). If you held proot to work around it, runapt-mark unhold proot && pkg upgrade.
Everything from v1.0.2 is included: the private ADB runtime survives pkg upgrade, and the public docs are English-first.
Checksums are in SHA256SUMS. APK signing certificate SHA-256: 0dd2b79bfb74c54413baf13d593ba6d28d88d53eb023fe46fcf1d1b3df649b36. The installer is still a candidate. Validation so far is limited to the maintainer's device and an arm64 emulator.
安装器安全更新。App 自 v1.0.1 起没有变化,本版不发新 APK。继续使用 DSB-1.0.1.apk,本安装包固定的就是它。
- DSH 内部的 zod 升到 4.6.7(GHSA-mrhx-c7xc-m3w5)。 zod 4.6.6 之前的版本,在校验带长度上限、但实际超大的集合时可能耗尽内存。DSH 有约 50 个子包写死了 zod 4.4.3,安装器现在把它们统一覆盖为 4.6.7。DSH 只监听 127.0.0.1,实际影响是本地拖垮服务。已安装的用户用 v1.0.3 安装包重跑安装器即可获得修复。
- Termux proot 5.1.107.99 安装问题已解决。 proot 5.1.107.100 修复了安装 Ubuntu 软件包时的
signal 11崩溃(termux/proot#420)。如果你之前 hold 了 proot,请运行apt-mark unhold proot && pkg upgrade。
v1.0.2 的内容都包含在内:私有 ADB 运行库在 pkg upgrade 后照常工作,公开文档改为英文在前。
校验值见 SHA256SUMS。APK 签名证书 SHA-256 与之前相同。安装器仍是候选版,验证范围目前限于维护者的一台真机与 arm64 模拟器。
DSB v1.0.2 | 逗沙包 v1.0.2
Installer update: the private ADB transport now survives pkg upgrade. The App's behaviour is unchanged since v1.0.1 (the source only gained compiler-warning annotations and comments), so this release ships no new APK. Keep using DSB-1.0.1.apk; it is the one this installer pins.
Fixes
pkg upgradeno longer breaks private ADB. The hardened ADB server runs a frozen copy of theadbbinary. When Termux upgraded the shared libraries it links against, such as Abseil or protobuf, that copy could fail to start withcannot locate symbol, and DSB lost phone control. We reproduced this with a realpkg upgradeon an emulator. The installer now gives the ADB backend its own private, hash-locked copy of exactly the libraries it needs, about 8 MB. Termux's public libraries can be upgraded freely, and no new hold is added on public shared library packages.- Clear failure instead of silent breakage. If the private runtime is missing, modified or fails to load, ADB calls are refused (the guard also pauses ADB) and
doctorreportsADB_PRIVATE_RUNTIME_DRIFT,ADB_PRIVATE_RUNTIME_LOAD_PATHorADB_BACKEND_LOAD_FAILEDwith the next step. DSB never falls back to TCP port 5037. - Refreshing the private runtime. The private libraries do not receive Termux security updates automatically. Run
bash ~/dsb-installer/install.sh refresh(or rerun the installer) to refresh the backend and its libraries as one generation. The device does not need to be online. See docs/INSTALL.md. - Safer recovery and rollback. An interrupted install, refresh or rollback now completes the verified private deployment, or refuses with a clear reason. If the public libraries have moved on and the original
adbcan no longer load, rollback refuses before changing anything. - Faster doctor. Everyday ADB calls use a metadata quick check, and the full audit runs in native Termux.
doctordropped from about 33 s to about 8 s on the emulator. - Code quality. Strict compiler warnings and linters now run in CI:
javac -Xlint:all -Werror, ruff, shellcheck andnode --check. DSB holds the OpenSSF Best Practices passing badge.
Known issue: Termux proot 5.1.107.99
Update 2026-10-24: resolved. proot 5.1.107.100 fixes this (termux/proot#420), and 5.1.107.98 is no longer in the Termux index. Just run
pkg upgrade; if you held proot, runapt-mark unhold proot && pkg upgradefirst.
Termux released proot 5.1.107.99 on 2026-10-23. With it, installing Ubuntu packages inside the container can stop with proot warning: signal 11 received from process -1. We reproduced this on an arm64 emulator; 5.1.107.98 works. The installer reports the failure and does not claim success. Until a fixed proot is released, install the previous version and hold it before installing:
pkg install proot=5.1.107.98 && apt-mark hold prootRemove the hold with apt-mark unhold proot once a fix is out. Upstream: termux/proot#420.
Checksums are in SHA256SUMS. APK signing certificate SHA-256: 0dd2b79bfb74c54413baf13d593ba6d28d88d53eb023fe46fcf1d1b3df649b36. The installer is still a candidate. Validation so far is limited to the maintainer's device and an arm64 emulator.
安装器更新:私有 ADB 传输在 pkg upgrade 之后也能正常工作。App 行为自 v1.0.1 起没有变化(源码只加了编译告警注解和注释),本版不发新 APK。继续使用 DSB-1.0.1.apk,本安装包固定的就是它。
pkg upgrade不再弄坏私有 ADB。 加固后的 ADB server 用的是一份冻结的 adb 副本。Termux 升级它依赖的共享库(例如 Abseil、protobuf)后,这份副本可能因为cannot locate symbol起不来,逗沙包随之失去对手机的控制。这个问题已在模拟器上用真实的pkg upgrade复现。现在安装器给 ADB 后端准备一份私有、锁定哈希的依赖库副本,只包含它实际需要的库,约 8 MB。Termux 的公共库可以照常升级,不新增任何公共共享库的 hold。- 明确报错,不再悄悄失效。 私有运行库缺失、被改动或加载失败时,ADB 调用会被明确拒绝(guard 也会暂停 ADB),
doctor报出ADB_PRIVATE_RUNTIME_DRIFT、ADB_PRIVATE_RUNTIME_LOAD_PATH或ADB_BACKEND_LOAD_FAILED和下一步,绝不退回 TCP 5037。 - 刷新私有运行库。 私有副本不会自动获得 Termux 的安全更新。运行
bash ~/dsb-installer/install.sh refresh(或重跑安装器),把后端和依赖库作为一代整体刷新,不要求设备在线。见安装说明。 - 更稳的恢复与回滚。 安装、刷新或回滚中途被打断时,会补完已验证的私有部署,或明确拒绝并说明原因。公共库已升级、原版 adb 无法加载时,回滚会在改动任何东西之前拒绝。
- doctor 更快。 日常 ADB 调用走元数据快检,完整审计在原生 Termux 里做;模拟器上
doctor从约 33 秒降到约 8 秒。 - 代码质量。 CI 已接入严格的编译警告和 lint 检查,项目获得 OpenSSF 最佳实践 passing 徽章。
更新(2026-10-24):已解决。 proot 5.1.107.100 已修复(termux/proot#420),5.1.107.98 已不在 Termux 仓库中,直接 pkg upgrade 即可;如果你之前 hold 了 proot,先运行 apt-mark unhold proot && pkg upgrade。
已知问题:Termux proot 5.1.107.99。 Termux 于 2026-10-23 发布了 proot 5.1.107.99,用它在容器里安装 Ubuntu 软件包时可能报 proot warning: signal 11 received from process -1 而停止(已在 arm64 模拟器上复现;5.1.107.98 正常)。安装器会如实报错。修复版发布前,请先运行 pkg install proot=5.1.107.98 && apt-mark hold proot 再安装,修复后用 apt-mark unhold proot 解除。上游:termux/proot#420。
校验值见 SHA256SUMS。APK 签名证书 SHA-256 与之前相同。安装器仍是候选版,验证范围目前限于维护者的一台真机与 arm64 模拟器。
DSB v1.0.1 | 逗沙包 v1.0.1
Security and documentation update for DSB v1.0.0. Upgrading is recommended. The App installs over v1.0.0 (same signing key, data kept).
Fixes
- App: output paths are confined. Observation, gesture and clipboard receipts can only be written as direct children of the App's external files directory.
../, path traversal and symlinks are rejected, and the atomic-write fallback that deleted the target before retrying is gone. Command nonces are validated before use. - App: no regex backtracking in speech cleanup. Markdown links are now stripped with a linear scan, with the same output as before.
- Bridge: errors no longer leak internals. Clients receive stable error codes only. Exception text and stack traces stay out of responses, and local diagnostics record frame locations without exception messages, which can contain task text.
- Installer: patched DSH transitive dependencies.
@modelcontextprotocol/client/core2.3.0 andfflate0.8.3, via exact npm overrides (GHSA-6prh-2h8m-c8cw, GHSA-px8p-9vwx-vf98). DSH itself stays at 0.2.1-rc.2. An OSV check of all 682 lockfile entries found 0 advisories. - Docs: English-first README.
README.mdis now English and the Chinese version isREADME.zh-CN.md. The release tarball ships both.SECURITY.mdlinks directly to private vulnerability reporting.
Verify
Checksums are in SHA256SUMS. APK signing certificate SHA-256: 0dd2b79bfb74c54413baf13d593ba6d28d88d53eb023fe46fcf1d1b3df649b36 (unchanged). Install steps: docs/INSTALL.md.
The installer is still a candidate. Validation so far is limited to the maintainer's device and an arm64 emulator.
逗沙包 v1.0.0 的安全与文档更新,建议升级。App 可以直接覆盖安装 v1.0.0(签名密钥相同,数据保留)。
- App:限制写出路径。 观测、手势、剪贴板回执只能写到 App 外部文件目录下的直接子文件,拒绝
../、目录穿越和符号链接,去掉了「先删目标再重试」的降级写法。命令 nonce 在使用前统一校验。 - App:朗读清洗不再有正则回溯。 Markdown 链接改为线性扫描去除,结果与原来一致。
- 任务桥:错误不再泄露内部信息。 客户端只收到稳定的错误码,响应里不带异常文本和堆栈。本地诊断只记栈位置,不记可能含任务原文的异常消息。
- 安装器:修补 DSH 的间接依赖。 用精确的 npm overrides 把 MCP client/core 升到 2.3.0、fflate 升到 0.8.3(对应 GHSA-6prh-2h8m-c8cw、GHSA-px8p-9vwx-vf98)。DSH 本体仍为 0.2.1-rc.2。锁文件共 682 项,OSV 检查 0 命中。
- 文档:首页英文在前。
README.md改为英文版,中文版为README.zh-CN.md,发布包同时带上两份。SECURITY.md直接链接到私密漏洞报告入口。
校验值见 SHA256SUMS。APK 签名证书 SHA-256 为 0dd2b79b…9b36,与 v1.0.0 相同。安装器仍是候选版,验证范围目前限于维护者的一台真机与 arm64 模拟器。
DSB v1.0.0 | 逗沙包 v1.0.0
逗沙包(DSB)首个公开版本:可信的手机 AI 代理,构建在 DeepSeek Harness(DSH)之上,默认使用 DeepSeek API。非 DeepSeek 官方项目。
包含什么
- App
DSB-1.0.apk(com.dsb.assistant,Android 11+,arm64):聊天界面、悬浮球、无障碍观测。命令入口要求系统权限INJECT_EVENTS,普通 App 发不了命令。 - 一键安装器
dsb-installer.tar.gz(候选版):在官方 Termux 里部署 Ubuntu 容器、Node/DSH、Python/OCR、scrcpy 和运行文件。唯一需要的服务配置是一个 DeepSeek API Key(隐藏输入一次)。配对、授权等系统规定必须本人点的步骤由脚本引导。 - ADB 私有传输(默认尝试):ADB server 只监听 Termux 私有目录里的文件套接字,不开 TCP 5037。每个连接先过本机身份挑战再绑定。预检不满足时会明确提示「ADB 未加固」,不冒充已加固。
安装
按 docs/INSTALL.md 操作:装官方 Termux 和逗沙包 → 在 Termux 里跑一条下载并校验 SHA-256 的命令 → 填 Key → 按系统提示配对和授权 → doctor。
校验值见本 Release 附带的 SHA256SUMS。APK 签名证书 SHA-256:0dd2b79bfb74c54413baf13d593ba6d28d88d53eb023fe46fcf1d1b3df649b36。
已验证到什么程度
- 离线测试与 CI 全部通过。
- arm64 Android 模拟器:从首装到 doctor 通过;8 个并发冷启动调用只起 1 个 server;guard 能收敛重复的受管 server。
- 维护者真机:私有传输与任务通道已切换,经过一次重启验收;体检、后台虚拟屏、真实任务均通过。
已知限制
- 安装器是候选版,只在一台真机和 arm64 模拟器上验证过。其他 ROM、x86_64 Android、软件包升级场景还没有验收。
- 闸门不是绝对保证;OCR 和视觉判断可能出错。哪些数据会离开手机,见 README「边界与数据流」与 威胁模型。
- 模拟器上见过一次无线调试 TLS 握手失败导致的连接核验失败。
- scrcpy 录制在人为放慢初始化的条件下会崩溃,属于上游时序问题,真机日常使用没有出现。
First public release of DSB, a trust-first phone AI agent built on DeepSeek Harness (DSH), using the DeepSeek API by default. Not an official DeepSeek project.
- App
DSB-1.0.apk(Android 11+, arm64). Its command entry requires theINJECT_EVENTSsystem permission. - One-command installer
dsb-installer.tar.gz(candidate). Sets up Termux + Ubuntu, Node/DSH, Python/OCR, scrcpy and runtime files with a single DeepSeek API key. Steps that Android requires you to approve yourself are guided, not automated. - Private ADB transport (attempted by default). The ADB server listens only on a private filesystem socket, never TCP 5037. Each connection passes a same-device identity challenge before it is bound. If preflight cannot harden ADB, doctor clearly warns "ADB not hardened".
- Verification. Offline tests and CI pass. A fresh install was validated through doctor on an arm64 emulator; the maintainer's device was migrated to the same private transport layout and passed acceptance including one reboot.
- Not yet validated. Other ROMs, x86_64 Android and package upgrades. See docs/THREAT-MODEL.md for boundaries.
Checksums are in SHA256SUMS. APK signing certificate SHA-256: 0dd2b79bfb74c54413baf13d593ba6d28d88d53eb023fe46fcf1d1b3df649b36.