🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

手机端独立运行版 huyang218/dsh-android

DeepSeek Harness
huyang21872 天前有提交已提供中文文档扫描:含敏感能力

把宿主与客户端装进手机,离线也能读写文件聊模型

30.6/100
综合分
9
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:仓库根目录无 package.json,浅层子目录有 6 份 dsh 插件清单(packages/storage-no-hardlink/package.json、packages/tool-doc/package.json、packages/web-search-tencent/package.json 等),无法唯一定位安装名。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add huyang218/dsh-android
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · market
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 72 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录无 package.json,浅层子目录有 6 份 dsh 插件清单(packages/storage-no-hardlink/package.json、packages/tool-doc/package.json、packages/web-search-tencent/package.json 等),无法唯一定位安装名

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-android(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:08:30

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
  • 读取本地文件
    packages/storage-no-hardlink/lib/attachment.js:141
    if (digest(new Uint8Array(await readFile(target))) !== sha256) {
  • 删除本地文件
    packages/storage-no-hardlink/lib/attachment.js:148
    await rm(temporary, { force: true })
  • 删除本地文件
    packages/storage-no-hardlink/lib/attachment.js:152
    await rm(temporary, { force: true })
  • 写入本地文件
    packages/storage-no-hardlink/lib/publish.js:76
    await mkdir(target, { recursive: true, mode: DIR_MODE })
  • 写入本地文件
    packages/storage-no-hardlink/lib/publish.js:77
    await chmod(target, DIR_MODE)
  • 写入本地文件
    packages/storage-no-hardlink/lib/publish.js:105
    await rename(tmp, finalPath)
  • 删除本地文件
    packages/storage-no-hardlink/lib/publish.js:107
    if (tmp !== undefined) await rm(tmp, { force: true })
  • 删除本地文件
    packages/storage-no-hardlink/lib/publish.js:108
    await rm(finalPath, { force: true })
  • 写入本地文件
    packages/storage-no-hardlink/lib/session-persistence.js:45
    await mkdir(this.root, { recursive: true, mode: DIR_MODE })
  • 写入本地文件
    packages/storage-no-hardlink/lib/session-persistence.js:47
    await mkdir(project, { recursive: true, mode: DIR_MODE })
  • 写入本地文件
    packages/storage-no-hardlink/lib/session-persistence.js:49
    await mkdir(dir, { recursive: true, mode: DIR_MODE })
  • 发起网络请求
    packages/web-search-tencent/lib/index.js:106
    response = await fetch(`https://${options.host}/`, {
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 手机端独立运行
  • 离线读写文件
  • 离线对话模型

把 DeepSeek Harness 的 host 和 client 一起装进 Android 手机:不连服务器、不依赖另一台电脑。非官方项目,不上架,GitHub 直发 apk。

README

由 DeepSeek 最新模型翻译生成
dsh Android test DeepSeek Harness(dsh)的 Android 应用:把 dsh 的 host 和 client 一起装进手机,不连任何服务器,也不依赖任何一台开着的电脑。 非官方项目,与 DeepSeek 无隶属关系,也未获其背书。与 dsh-desktop 是兄弟项目,共享同一套立意——运行时、存储、进程全部由应用自己持有——但不共享代码:桌面端是 Electron 外壳,这里是 Android 应用加一个嵌入式 Node 运行时。 为什么不是“手机连电脑” 因为那要求另一台机器一直开着。这个项目的前提是手机上独立可用:飞行模式下打不开模型,但应用本身、会话历史、文件都还在手上。 代价写在下面的形态决策里,不小,先看清楚再决定要不要做。 形态决策 | 决策 | 结论 | 为什么 | | 平台 | 仅 Android | iOS 上没有 JIT、不允许 fork/exec、审核不允许下发可执行代码。三条里任意一条都足以否决,而这三条都不是靠工程能绕过去的。 | | agent 能力面 | 没有 shell | node-pty 是 @deepseek-ai/dsh-subprocess-local 的顶层静态 import,而 subprocess 是 dsh-base 出厂编排里的一行。
展开完整文档(README 剩余 1 节)
dsh Android

test

DeepSeek Harness(dsh)的 Android 应用:把 dsh 的 host 和 client 一起装进手机,不连任何服务器,也不依赖任何一台开着的电脑。

非官方项目,与 DeepSeek 无隶属关系,也未获其背书。与 dsh-desktop 是兄弟项目,共享同一套立意——运行时、存储、进程全部由应用自己持有——但不共享代码:桌面端是 Electron 外壳,这里是 Android 应用加一个嵌入式 Node 运行时。

为什么不是“手机连电脑”

因为那要求另一台机器一直开着。这个项目的前提是手机上独立可用:飞行模式下打不开模型,但应用本身、会话历史、文件都还在手上。

代价写在下面的形态决策里,不小,先看清楚再决定要不要做。

形态决策

| 决策 | 结论 | 为什么 |
| 平台 | 仅 Android | iOS 上没有 JIT、不允许 fork/exec、审核不允许下发可执行代码。三条里任意一条都足以否决,而这三条都不是靠工程能绕过去的。 |
| agent 能力面 | 没有 shell | node-pty 是 @deepseek-ai/dsh-subprocess-local 的顶层静态 import,而 subprocess 是 dsh-base 出厂编排里的一行。手持端换一份不含该行的 composition,就永远不会加载它。换来的是:文件系统 + LLM + 会话 + 附件,能读能写能对话,不能跑命令。 |
| Node 从哪来 | 嵌进 apk,作为独立进程运行 | dsh 要 Node ≥ 22。Termux 的 aarch64 仓库里 nodejs 26.4.0 和 nodejs-lts 24.18.0 都是现成的,证明 Node 22+ 在 bionic 上能跑;但 Termux 的二进制把前缀写死在 /data/data/com.termux/files/usr,不能直接搬,要按它的配方用自己的前缀重编。 |
| 分发 | 不上 Google Play,GitHub 直发 apk | 同时解开两道锁:targetSdk 28 保留真实 POSIX 路径(否则 agent 没有工作区,这比没有 shell 严重得多),且可执行文件能从数据目录 exec(否则 Node 得编成共享库嵌入)。详见 docs/packaging.md。 |
| UI | WebView + 自己的 client 名册 | dsh 的浏览器客户端是一份由 host 推送的插件名册,shell 本身不做任何编排决策。所以手机 UI 不是 fork 上游布局,而是换一份名册。上游给的是三层杠杆:名册层(哪些 ui- 包不出现)、主题层(--dsw- token)、布局层(顶掉三栏 AppFrame)。前两层是配置级的,布局层要自己写一个包——详见 feasibility 第四节。 |
| 移动 UI 插件放哪 | 本仓库 packages/mobile-layout/ | 它是这个应用的一部分,跟着 apk 走版本,不是通用插件,所以不放 dsh-plugins。目录仍按那边的一层平铺姿势(packages//),保留将来单独发到 npm 的余地。 |
| host↔client 传输 | 进程内,不走网络 | @deepseek-ai/dsh-client-connection 的 in-process carrier 与浏览器 carrier 满足同一抽象。同一台设备上没有远程,也就没有鉴权层要写——上游那道 /api trust fence 天然是 loopback。 |

状态

装完就能用了。 2026-08-21,Android 15 / API 35 模拟器上:一个 84 MB 的 apk 里带着 Node 二进制和 dsh 运行时快照,首次启动自己解包,前台服务拉起 host,WebView 里建会话、发消息、拿到了模型回复。开发机上没有任何进程参与,adb 只用来装 apk。

一路上撞到的、值得单独记住的三件事:

- SELinux 不给应用做硬链接,而 dsh 用 link(2) 发布会话日志和附件——表现是每个新会话的第一条消息必失败。已由 packages/storage-no-hardlink/ 顶掉那两处。
- transform 会俘获 position:fixed 的后代,于是从侧边栏打开的 Settings 被压进抽屉那 300px 里。抽屉改用 left 位移。
- AAPT 会把 .gz 资产解开并改名,/data/user/0/ 本身又是个符号链接——两条都只在真机上才会告诉你,细节在 docs/packaging.md。

还没做的:用自己的前缀重编 Node(现在是 Termux 的二进制,是探针不是发行方案)、
真机验证(目前只跑过模拟器)、附件路径、进程守护与退避重启。

两条并行的线:

- 线 A(证伪点已过,运行时已进 apk):剩重编 Node、进程守护、双槽位更新。
- 线 B(工作量大头):移动端的 client 插件。它不依赖线 A——在 Mac 上起
dsh web、浏览器开手机视口就能开发,反馈快得多。

- 可行性结论与证据:docs/feasibility.md
- 分发与打包形态:docs/packaging.md

与 dsh-desktop 的关系能借鉴的是思路,不是代码:双槽位运行时更新、进程归属与守护、数据快照与恢复、插件管理——这些问题在手机上同样存在,而桌面端已经把答案写过一遍。但实现要重写,因为承载它们的东西从 Electron 主进程换成了 Android 的前台服务。

相关项目

| 项目 | 是什么 |
| DeepSeek Harness | 本应用装进手机的那个运行时,也就是 dsh 本身 |
| dsh-desktop | macOS 与 Windows 桌面应用:安装并更新运行时、持有服务进程与存储、在窗口里管理插件。上面那些问题的桌面版答案都在它的 README 里 |
| dsh-plugins | dsh 的通用插件仓库:模型可调用的能力、运行时包装、Web 客户端扩展。本仓库的 packages/ 只放属于这个应用的插件,通用的都在那边 |

三者出自同一作者,均为非官方项目,与 DeepSeek 无隶属关系。
预览分享卡片长什么样 ↓huyang218/dsh-android
分享 · DeepSeek Harness Hub
huyang218/dsh-android

把宿主与客户端装进手机,离线也能读写文件聊模型

这是你的仓库?认领条目

回到顶部