基于Webview的DeepSeek Harness安卓发行版。采用Ubuntu Proot以增加兼容性。
46.6/100
综合分
30
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装;安装清单取自 profile/package.json。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add itiswdwa/dsh-android该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/21) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装;安装清单取自 profile/package.json
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-profile-web(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 08:39:51
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 30 处,展示前 25 条)
- 删除本地文件递归docs/repair-profile-test.mjs:34
rmSync(SEED, { recursive: true, force: true }); - 写入本地文件docs/repair-profile-test.mjs:35
mkdirSync(join(SEED, "profiles", "web"), { recursive: true }); - 执行外部命令来自配置/变量docs/repair-profile-test.mjs:41
return execFileSync(process.execPath, [SCRIPT, SEED, home], { encoding: "utf8" }); - 读取本地文件docs/repair-profile-test.mjs:45
return JSON.parse(readFileSync(path, "utf8")); - 删除本地文件递归docs/repair-profile-test.mjs:51
rmSync(home, { recursive: true, force: true }); - 写入本地文件docs/repair-profile-test.mjs:53
mkdirSync(join(dir, "node_modules"), { recursive: true }); - 写入本地文件docs/repair-profile-test.mjs:55
mkdirSync(join(dir, "node_modules", pkg), { recursive: true }); - 写入本地文件docs/repair-profile-test.mjs:56
writeFileSync(join(dir, "node_modules", pkg, "package.json"), JSON.stringify({ name: pkg, version: "1.0.0" })); - 写入本地文件docs/repair-profile-test.mjs:58
writeFileSync(join(dir, "package.json"), JSON.stringify({ - 写入本地文件docs/repair-profile-test.mjs:61
writeFileSync(join(dir, "cordis.patch.yml"), "# user patch layer\n- id: ui-theme\n config:\n preference: light\n"); - 读取本地文件docs/repair-profile-test.mjs:107
check(existsSync(join(dir, "node_modules", LOCAL_MARKET, "package.json")), "and its files are not deleted"); - 读取本地文件docs/repair-profile-test.mjs:108
const before = readFileSync(join(dir, "package.json"), "utf8"); - 读取本地文件docs/repair-profile-test.mjs:110
check(readFileSync(join(dir, "package.json"), "utf8") === before, "…byte-identical"); - 删除本地文件递归docs/repair-profile-test.mjs:147
rmSync(home, { recursive: true, force: true }); - 读取本地文件docs/repair-profile-test.mjs:152
const before = readFileSync(join(dir, "package.json"), "utf8"); - 读取本地文件docs/repair-profile-test.mjs:162
check(readFileSync(join(dir, "package.json"), "utf8") === before, "…and the file is byte-identical"); - 删除本地文件递归docs/repair-profile-test.mjs:174
rmSync(SEED, { recursive: true, force: true }); - 发起网络请求plugin/dsh-plugin-android/lib/client.js:631
const response = await fetch(api.base + path, { - 写入剪贴板plugin/dsh-plugin-android/lib/client.js:2026
navigator.clipboard.writeText(value); - 写入剪贴板plugin/dsh-plugin-android/lib/client.js:2054
navigator.clipboard.writeText(value); - 读取剪贴板plugin/dsh-plugin-android/lib/client.js:4419
clipboard.readText().then((text) => input.pasteText(text), () => onMessage(t("termPasteHint"))); - 写入剪贴板plugin/dsh-plugin-android/lib/client.js:4434
clipboard.writeText(text).then(() => onMessage(t("termCopied")), () => onMessage(t("termCopyHint"))); - 发起网络请求plugin/dsh-plugin-android/lib/client.js:5246
fetch(`${endpoint.url}/sessions/${ptyId}`, { - 写入本地文件plugin/dsh-plugin-android/lib/index.js:207
mkdirSync(dirname(cfg.diagFile), { recursive: true }); - 写入本地文件plugin/dsh-plugin-android/lib/index.js:208
appendFileSync(cfg.diagFile, `${JSON.stringify({ at: Date.now(), ...entry })}\n`);
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
3 张 · 点击查看大图功能亮点
- 安卓端运行Harness
README
由 DeepSeek 最新模型翻译生成dsh-android
把 DeepSeek Harness 装进安卓手机。
一个 APK 搞定:不需要 Termux、不需要 root、不依赖任何其他应用。 应用自带一套 Ubuntu 运行时,在手机本地把 harness 跑起来,界面就是 harness 自己的 Web UI。
这是什么
DeepSeek Harness 官方以 npx @deepseek-ai/dsh web 的形式在电脑上跑。这个项目的做法是:把整套运行时(Ubuntu rootfs + Node + harness 及其依赖)打进一个 APK,用 PRoot 在手机里启动它,再用 WebView 打开它的界面 —— 于是手机上得到的就是原样的 harness,不是重做的客户端。
能干什么
- 完整的 Harness:会话、工具调用、子代理、Agent Teams、workflow、计划模式、技能,和桌面端同一套代码。
- 原生观感的设置页:设置 → 安卓沙箱 直接复用 harness 的组件库与主题令牌(按钮、开关、状态点、描边卡片都是原生的那几个),和「通用设置」同一个模子,深浅色自动跟随。
- 沙箱终端:左侧栏 >_ 图标,沙箱里的真 PTY。带命令输入栏(中文输入法在终端里会乱灌候选,所以输入走独立输入框)、历史命令、粘贴。
展开完整文档(README 剩余 1 节)
dsh-android 把 DeepSeek Harness 装进安卓手机。 一个 APK 搞定:不需要 Termux、不需要 root、不依赖任何其他应用。 应用自带一套 Ubuntu 运行时,在手机本地把 harness 跑起来,界面就是 harness 自己的 Web UI。 这是什么 DeepSeek Harness 官方以 npx @deepseek-ai/dsh web 的形式在电脑上跑。这个项目的做法是:把整套运行时(Ubuntu rootfs + Node + harness 及其依赖)打进一个 APK,用 PRoot 在手机里启动它,再用 WebView 打开它的界面 —— 于是手机上得到的就是原样的 harness,不是重做的客户端。 能干什么 - 完整的 Harness:会话、工具调用、子代理、Agent Teams、workflow、计划模式、技能,和桌面端同一套代码。 - 原生观感的设置页:设置 → 安卓沙箱 直接复用 harness 的组件库与主题令牌(按钮、开关、状态点、描边卡片都是原生的那几个),和「通用设置」同一个模子,深浅色自动跟随。 - 沙箱终端:左侧栏 >_ 图标,沙箱里的真 PTY。带命令输入栏(中文输入法在终端里会乱灌候选,所以输入走独立输入框)、历史命令、粘贴。 - 挂载手机文件夹:把任意目录挂进沙箱,agent 和终端直接读写。选目录时用系统文件夹选择器。 - 导出文件到手机:沙箱里的文件一键复制到手机 Download,文件预览页和设置页都有入口。 - 操作手机本身(可选,需要 Shizuku):内置 shiz 命令,以 Android shell 身份执行 —— 打开应用、看屏幕截图、调亮度、开关勿扰、读通知、装 APK……随附的 phone-control 技能会教 agent 怎么用。 - 恢复模式:harness 起不来时也能进沙箱 —— 连续几次启动失败后应用会自己切换到恢复模式,不加载 harness,直接起来一个 SSH 服务和一个 shell(密码是每次进入时新生成的令牌)。详见 docs/RECOVERY.md。 - 跟随系统主题:浅色/深色、连图标都会反色;Android 13+ 还支持主题化图标。 安装 要求:Android 8.0 以上、arm64 手机(绝大多数现代手机)。 1. 下载 dsh-android.apk(见 Releases;如果还没有发布包,可以按 构建文档 自己打一个),拷到手机。 2. 在文件管理器里点它安装,按提示允许「未知来源」。 3. 打开应用。首次启动需要解包约 400 MB 的运行时,大约 2 分钟(只有这一次);屏幕上会显示进度,之后每次冷启动约 5 秒。 第一次用 1. 配置模型:设置 → 模型 → 填 DeepSeek API Key(也可以用其他 OpenAI 兼容的端点)。想省事的话,在 设置 → 安卓沙箱 → API Key 里填也行,它会作为环境变量注入沙箱。 2. 选工作区:点「选择工作区」,选一个目录,然后就能开始对话了。 3. (可选)授权 Shizuku:设置 → 安卓沙箱 → Shizuku → 请求授权。授权后 agent 才能操作手机本身(截图、开关应用、改设置……)。 4. (可选)挂载文件夹 / 共享手机存储:设置 → 安卓沙箱 → 挂载。首次会申请存储权限,授权后沙箱里的 /sdcard 就是你手机上的共享存储。 更新 分两条通道,因为代价差很多: | | 包含 | 体积 | 怎么做 | | 热更新 | 插件、技能、系统提示词、沙箱脚本 | 几十 KB | 设置 → 安卓沙箱 → 检查更新 → 一键应用 | | 重要更新 | 外壳:界面、图标、新接口 | ~143 MB | 同上,点「前往下载」装新 APK | 应用启动后会自己检查一次,设置页里也能随时手动检查。 不想联网也没关系:拿到 dsh-hot.zip 之后放进手机的 Download 目录、重开应用,同样会导入。 装新 APK 是覆盖安装,你的会话、API Key、挂载和设置都会保留。 常见问题 首次启动卡在「正在安装内置沙箱」很久? 正常,它在解包约 400 MB 的运行时。2 分钟左右,只做一次。请确保手机有足够空间(约 1 GB 余量)。 为什么抓网页失败,报 WEB_BLOCKED_URL / non-public IP? 手机开了 fake-IP 模式的代理(Clash 之类)时,所有域名都解析到 198.18.0.0/15,harness 的 SSRF 防护会按设计拒绝。让 agent 用 bash + node fetch 绕过即可 —— 附带的技能里已经写明。 沙箱里看不到我的文件? 去 设置 → 安卓沙箱 → 挂载,把要用的目录加进来;或者在系统设置里授予存储权限后用 /sdcard。注意:guest 里是 Linux 路径,手机上的 Download 在沙箱里是 /sdcard/Download。 服务起不来 / 白屏怎么办? 右上角会出现 ≡ 按钮(服务没起来时它才出现),点开是控制台:能看日志、启停服务、导入 rootfs。如果连重启几次都起不来,用控制台里的恢复模式:它不加载 harness,只起来一个 SSH 和一个 shell,让你进沙箱把 profile、依赖或磁盘修回来 —— 面板上会给出连接命令和本次会话的令牌。同一 Wi-Fi 用 ssh -p 8022 root@<手机 IP>,插着线用 adb forward tcp:8022 tcp:8022,只有手机就点「手机内控制台」。详见 docs/RECOVERY.md。 耗电吗? 服务在前台服务里跑,带一个 CPU 保持唤醒的锁,好让长时间任务不被系统冻结。 不想要的话,设置 → 安卓沙箱 → 关掉「后台保活」。不用的时候点「停止」即可。 支持哪些设备? arm64(arm64-v8a)的 Android 8.0+ 设备。x86 设备、32 位设备不支持。 已知限制 - APK 有 143 MB —— 因为它自带一整套 Linux 运行时,这是刻意的取舍(见 docs/ARCHITECTURE.md)。 - 没有 root。需要 root 的操作做不到。 - 非官方项目,与 DeepSeek 没有隶属关系。 反馈 有问题或建议请开 Issue。附上 设置 → 安卓沙箱 → 日志 里的内容会很有帮助。 许可与致谢 MIT。这是 DeepSeek Harness(MIT)的非官方安卓移植,其中的品牌标识、Ubuntu、Node 及各 npm 依赖的版权归各自所有者,详见 THIRD_PARTY.md。 想自己构建、看架构设计或踩坑记录?docs/BUILD.md · docs/ARCHITECTURE.md · docs/FINDINGS.md · docs/RECOVERY.md · docs/CI.md · docs/UPGRADE-DSH.md · 每个版本改了什么见 CHANGELOG.md
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
itiswdwa/dsh-android
基于Webview的DeepSeek Harness安卓发行版。采用Ubuntu Proot以增加兼容性。
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2
这是你的仓库?认领条目