DeepSeek Harness · 安卓移植增强版
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
dsh plugin --profile web add guzhou079-arch/deepseek-harness-android状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
安装兼容性检查需源码安装仓库根目录无 package.json,浅层子目录有 5 份 dsh 插件清单(plugins/dsh-android-console/package.json、plugins/dsh-android-ui/package.json、plugins/whale-shota/package.json 等),无法唯一定位安装名
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 04:33:58
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
查看扫描证据(共 57 处,展示前 36 条)
- 发起网络请求plugins/dsh-android-console/lib/client.js:198
const res = await fetch('/life/api/status'); - 发起网络请求plugins/dsh-android-console/lib/client.js:248
const res = await fetch('/voice-hub/api/config'); - 发起网络请求plugins/dsh-android-console/lib/client.js:270
fetch('/voice-hub/api/config/save', { - 发起网络请求plugins/dsh-android-console/lib/client.js:280
const res = await fetch('/voice-hub/api/test/speak', { - 发起网络请求plugins/dsh-android-console/lib/client.js:299
const res = await fetch('/rag/api/list'); - 发起网络请求plugins/dsh-android-console/lib/client.js:316
const res = await fetch('/rag/api/search', { - 读取本地文件plugins/dsh-android-console/lib/index.js:10
const lifeScriptPath = packagedLife && existsSync(packagedLife) ? packagedLife : '/sdcard/DeepSeekHarness/tools/life.js'; - 读取本地文件plugins/dsh-android-console/lib/index.js:23
if (!existsSync(lifeScriptPath)) return { ok: false, skipped: 'no-life-script' }; - 执行外部命令来自配置/变量plugins/dsh-android-console/lib/index.js:25
const child = spawn(process.execPath, [lifeScriptPath, 'tick'], { detached: true, stdio: 'ignore' }); - 读取本地文件plugins/dsh-android-console/lib/index.js:35
['/life', packagedLife && existsSync(packagedLife) ? packagedLife : '/sdcard/DeepSeekHarness/tools/life.js', 'createHandler'], - 读取本地文件plugins/dsh-android-console/lib/index.js:117
try { raw = readFileSync(rolesFile, 'utf8'); } - 写入本地文件plugins/dsh-android-console/lib/index.js:163
writeFileSync(tmp, JSON.stringify(clean, null, 2) + '\n'); - 写入本地文件plugins/dsh-android-console/lib/index.js:164
renameSync(tmp, rolesFile); - 删除本地文件plugins/dsh-android-console/lib/index.js:166
try { unlinkSync(tmp); } catch (_e2) {} - 发起网络请求plugins/dsh-plugin-turn-notify/lib/index-v3.js:86
const req = http.request( - 写入本地文件selfbuild/lib/arsc-R.js:472
if (jsonOut) fs.writeFileSync(jsonOut, JSON.stringify({ stats: parsed.stats, entries: parsed.entries }, null, 2)); - 写入本地文件selfbuild/lib/arsc-R.js:477
fs.mkdirSync(path.dirname(out), { recursive: true }); - 写入本地文件selfbuild/lib/arsc-R.js:478
fs.writeFileSync(out, r.text); - 读取本地文件selfbuild/lib/dexinfo.js:173
return { data: fs.readFileSync(file), label: file }; - 读取本地文件selfbuild/lib/dexinfo.js:876
return { label: spec, data: fs.readFileSync(spec) }; - 读取本地文件selfbuild/lib/gen-manifest.js:17
const old = fs.readFileSync(manifestPath, 'utf8').split('\n'); - 读取本地文件selfbuild/lib/gen-manifest.js:26
if (!fs.existsSync(f)) { missing++; console.log(` ⚠ 缺失,原样保留: ${rel}`); out.push(raw); continue; } - 读取本地文件selfbuild/lib/gen-manifest.js:27
const buf = fs.readFileSync(f); - 写入本地文件selfbuild/lib/gen-manifest.js:35
fs.writeFileSync(manifestPath, out.join('\n')); - 读取本地文件selfbuild/lib/selfbuild.js:91
for (const n of fs.readdirSync(dir)) { - 读取本地文件selfbuild/lib/selfbuild.js:94
const st = fs.statSync(f); - 读取本地文件selfbuild/lib/selfbuild.js:98
else if (!/( (md5|sha256|bak)$)|( bak-)/.test(n)) map.set(r, fs.readFileSync(f)); - 写入本地文件selfbuild/lib/selfbuild.js:128
fs.writeFileSync(out, zlib.inflateRawSync(raw)); - 读取本地文件selfbuild/lib/selfbuild.js:130
log(`✓ 导出 ${ASSET} → ${out}(${fs.statSync(out).size} 字节,原 method=${p.method})`); - 读取本地文件selfbuild/lib/selfbuild.js:170
log(`✓ 写出 ${zipOut}(替换 ${rep},新增 ${add},总条目 ${es.length + add},${fs.statSync(zipOut).size} 字节)`); - 读取本地文件selfbuild/lib/selfbuild.js:199
const dbuf = dexPath ? fs.readFileSync(dexPath) : null; - 写入本地文件selfbuild/lib/selfbuild.js:253
fs.writeFileSync(tmp, JSON.stringify({ schema: 1, kind: 'packed-assets', assets }, null, 2) + '\n', { flag: 'wx' }); - 写入本地文件selfbuild/lib/selfbuild.js:254
fs.renameSync(tmp, assetReceipt); - 删除本地文件selfbuild/lib/selfbuild.js:282
if (!pkg) { fs.unlinkSync(tmp); die('payload 里没有 ' + KERNEL_PKG); } - 删除本地文件selfbuild/lib/selfbuild.js:284
fs.unlinkSync(tmp); - 写入本地文件selfbuild/lib/selfbuild.js:313
fs.writeFileSync(out, buf);
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
功能亮点
- 打包为安卓APK
- 免Termux免root
- 手机端编译签名发布
把 DeepSeek Harness 打包成能直接装的安卓 APK:不用 Termux、不用 root、不用配环境。它还能在手机上自己编译、打包、签名、发布。
README
由 DeepSeek 最新模型翻译生成展开完整文档(README 剩余 1 节)
DeepSeek Harness · 安卓移植增强版 把 DeepSeek Harness 装进安卓:一个 APK,不用 Termux、不用 root、不用电脑。 读屏、点击、输入、虚拟屏、定时任务都在 App 内跑,21 款技能随包,装上填个 API Key 就能用。 最不一样的地方:它能在手机上给自己出包 —— 改完代码直接在手机里 javac → dex → 重打包 → 签名 → 发版。 ⬇ 下载最新 APK(约 95 MB,Android 8.0+) · 安装与要求 · 常见问题 · 升级与救援 | 亮点 | 说明 | | 📱 手机自动化 | 无障碍读屏 / 点击 / 输入、虚拟屏、通知读取、定时任务;AI 在虚拟屏里干活,你的主屏照常用 | | 🐳 悬浮球 / 桌宠 | 单击即"说话":台词、账户余额、今日已用、上一轮消耗、峰谷提醒 | | ☁️ 流体云回复卡 | AI 写作时顶部浮出胶囊,点开成可上下翻的卡片 | | 🎛️ 内置控制台 | 引擎管理、救援模式、权限总览、插件开关、时光机备份 | | 🧩 21 款技能随包 | 架构图 · 演示稿 · 短视频分镜 · 记忆中枢 · Office 批处理 · Word/公文 · Excel 多表 · 会议纪要 · 邮件公函 · 本地 RAG · 全站备份 · 跨厂商会审 · 网页抓取 · 代码工程 · 数据洞察 · 深度调研 · 敏捷排期 · 生活中枢 · 语音交互 | | 🔧 手机上自己出包 | javac → d8 → 重打包 → 签名 → 发版,构建环境按需下载(约 193MB) | English — DeepSeek Harness as an installable Android APK: no Termux, no root, no PC. Screen reading, taps, typing, virtual display and scheduled tasks all run inside the app; 21 skills are bundled; and the app builds, signs and releases its own APK on the phone. 三步装好 1. 打开 Releases,下载最新的 DeepSeekHarness-vX.Y-dist.apk(约 95 MB,Android 8.0 及以上); 2. 安装后按首次引导给权限(无障碍、通知、悬浮窗等,可随时在系统设置里收回); 3. 在设置页填入自己的模型 API Key 就能开聊 —— 不用装 Termux、不用 root、不用连电脑。 🌐 国内直连 GitHub 打不开? 每个 Release 说明的第一条就是加速直链(ghproxy 等镜像前缀 + 官方直链,哪个通用哪个);也可以自己给官方直链加前缀: https://ghproxy.net/ 、 https://ghfast.top/ 、 https://gh-proxy.com/。 每个 Release 的说明里带该 APK 的 SHA-256,装前可以核对。 ⭐ 如果它帮你省了时间,给个 Star 是最好的反馈 —— 也让我知道继续维护值不值得。 装不上 / 怎么用 / 升级出问题 → Discussions;Bug 与建议 → Issue。 文档:安装与系统要求 · 权限与隐私 · 常见问题 · 升级与救援 · 自建环境与出包 相关:提问与交流(Discussions)配套插件:dsh-plugin-android-vscreen —— 让 AI 在虚拟显示器上操作别的 App(读屏、点击、滑动、截图),你自己的主屏照常用,互不打扰。同样的能力在这个 APK 里已经内置;电脑上的 DSH 想用同一套工具,可以单独装这个插件(走 adb): dsh plugin --profile web add https://github.com/guzhou079-arch/dsh-plugin-android-vscreen/releases/download/v0.1.0/dsh-plugin-android-vscreen-0.1.0.tgz ⚠️ 更新前必读 —— 只从本仓库 Releases 更新 本 App 用本项目自己的钥匙签名。安装其它来源的同名 App(官方原版 / 上游作者的包 / 别人转发的 APK)会因签名冲突无法覆盖安装;此时若选择「卸载重装」, App 私有数据会全部清空(会话历史、运行环境、配置;没做过备份的话通常找不回来)。 遇到 INSTALL_FAILED_UPDATE_INCOMPATIBLE 报错时:不要卸载 —— 这个报错正是在保护你的数据。 升级前先备份:App 内「控制台 → 救援 → 导出全部数据」(开发者也可用 selfbuild/scripts/backup-dshhome.sh)。 完整说明与救援步骤 → docs/升级与救援.md 本发布包是 DeepSeek Harness 的安卓移植与增强版,由个人制作。 以下如实说明各部分来源。 一、我做了什么(相对上游的改动) 上游 woaiys3/deepseek-harness-android-app 提供的是安卓壳骨架(WebView + Service 结构、 payload 打包、权限引导)。在这个底子之上,本版本包含大量适配与增强: 1. 安卓适配补丁(25 条) | 类别 | 内容 | | 系统能力 | NFC 读卡 · 无障碍读屏/点击/截图 · 虚拟屏 · 通知读取 · 特权通道(Shizuku)| | 引擎适配 | bash-local sandboxMode · flock 安卓回退 · session-persistence 硬链接绕行 | | 安全加固 | 静态资源门禁 · 客户端路由鉴权 · update-check 门禁 · 局域网绑定显式开关 | | 界面 | 账户 UI 解锁 · 自定义背景图 · 移动端布局改造 · 应用更新日志 | | 登录 | 授权链接改由系统浏览器打开 · 登录完成后自动回到 App | 2. 可以在手机上自己出包 整条链路(proot + Alpine + OpenJDK 17 → javac → d8 → 重打包 → 签名)都跑在手机里,不需要电脑。构建环境不进 APK,在「控制台 → 自建环境」里按需下载(约 193MB)。 怎么用、踩过哪些坑:docs/自建环境与出包.md。 3. 自研插件与补丁 - whale-shota —— 皮肤 / 桌宠扩展 - dsh-android-ui —— 安卓界面适配 - 背景图补丁、账户 UI 补丁 二、来源与许可 1. 安卓壳骨架 — MIT | 项 | 内容 | | 项目 | deepseek-harness-android-app | | 作者 | woaiys3 | | 仓库 | <https://github.com/woaiys3/deepseek-harness-android-app> | | 许可证 | MIT License,Copyright (c) 2026 woaiys3 | MIT 许可允许修改、分发与再发布,要求保留版权声明与许可证文本。 2. DSH 引擎内核 — 归 DeepSeek 所有 | 项 | 内容 | | 项目 | @deepseek-ai/dsh(DeepSeek Harness)| | 仓库 | <https://github.com/deepseek-ai/deepseek-harness> | | 许可证 | MIT License(版权归 DeepSeek,许可证全文随包) | | 说明 | 本包内含其构建产物;版权与许可归原作者,本项目不对其主张任何权利 | 3. 虚拟屏(vscreen)— LGPL-3.0 | 项 | 内容 | | 项目 | Operit — Android AI Agent | | 作者 | AAswordman | | 仓库 | <https://github.com/AAswordman/Operit> | | 许可证 | GNU Lesser General Public License v3.0(LGPL-3.0) | 虚拟屏功能的实现移植/对齐自 Operit 的 shower 模块。相关源文件已带原始许可声明,许可证全文见 licenses/lgpl-3.0.txt(LGPL-3.0 以 GPL-3.0 为基础,故同时提供 licenses/gpl-3.0.txt)。 三、免责 - 使用本包产生的任何后果由使用者自行承担 - 如对合规性有疑问、或发现归属遗漏,欢迎提 Issue 讨论 - 本包不修改、不绕过任何付费机制 四、许可全文位置 LICENSE MIT(本项目) licenses/lgpl-3.0.txt LGPL-3.0(虚拟屏部分) licenses/gpl-3.0.txt GPL-3.0(LGPL-3.0 的基础) THIRD_PARTY_NOTICES.md 第三方组件逐项声明
预览分享卡片长什么样 ↓
DeepSeek Harness · 安卓移植增强版