dsh-android-portability
Manifest validDSH 插件安卓可移植性静态体检:17 条规则查一个插件装到 DSHA(Linux arm64 + glibc proot)上会不会直接跑不起来。Static portability audit for DeepSeek Harness plugins targeting Android.
dsh-android-portability
发插件之前先量一下:这东西装到安卓手机上跑得起来吗?
DSHA(DeepSeek Harness for Android)里跑的是 Linux arm64 + glibc 的 proot 容器,不是你的 Windows 台式机。 一个在电脑上完美运行的 DSH 插件,搬到手机上最常见的死法有三种:
- 依赖
sharp/better-sqlite3/node-pty这类要编译的原生模块 —— arm64 预编译包多半没有,现编译又没有工具链; - 代码里写死
C:\Users\...、%APPDATA%、powershell.exe—— 安卓容器里这些一个都不存在; - 下载逻辑只认
x64,装到 arm64 上直接下错二进制然后崩。
这个插件在装之前把这些都指出来,逐条给 文件:行 + 原文片段 + 改法。只读源码文本,不执行、不装依赖、不联网。
装
dsha-plugin install Liaoyun666/dsh-android-portability
装完在任意会话里直接问模型「帮我查一下这个插件能不能装到手机上」,或者显式调工具:
dsh_check_android_portability—— 查一个插件目录dsh_scan_profile_android—— 批量查/root/.dsh/profiles/*/node_modules里已装的插件
命令行
也能脱离 DSH 单独跑(CI 里很好用):
node tools/cli.js ./my-plugin # 人看的报告
node tools/cli.js ./my-plugin --json # 机器读
node tools/cli.js ./my-plugin --github # GitHub Actions 注解,直接标在文件的对应行
node tools/cli.js . --verbose # 每处都列出来(默认每组只列 3 处)
node tools/cli.js . --strict # 警告也算失败
node tools/cli.js --list-rules # 看 17 条规则
退出码:0 可装 / 1 有问题 / 2 用法错误。
17 条规则
依赖与清单(D 组)
| 号 | 查什么 | 级别 |
|---|---|---|
| D1 | dependencies 里有原生模块(sharp、better-sqlite3、node-pty…) | 阻断 |
| D2 | optionalDependencies 里只有 win32/darwin 二进制,缺 linux-arm64 那份 | 阻断 |
| D3 | 安装期跑 node-gyp / node-pre-gyp / prebuild-install / cmake-js | 阻断 |
| D4 | 包里带 binding.gyp 或 .node 二进制(.wasm 只提示) | 阻断 |
| D5 | os / cpu 字段排除了 linux / arm64 | 阻断 |
| D6 | files 白名单漏了入口文件 | 阻断 |
| D7 | engines.node 要求高于容器的 Node | 阻断 |
| D8 | 开发依赖里有原生模块 | 提示(开发期无所谓) |
源码(S 组)
| 号 | 查什么 | 级别 |
|---|---|---|
| S1 | Windows 绝对路径(C:\ E:\) | 阻断 |
| S2 | %APPDATA% 这种 Windows 环境变量 | 阻断 |
| S3 | 调 cmd.exe / powershell | 阻断 |
| S4 | 引用 .bat / .ps1 / .exe | 警告 |
| S5 | 只写了 win32/darwin 分叉,安卓走 else | 警告 |
| S6 | 下载逻辑里出现 x64 | 警告 |
| S7 | 写死 /bin/bash(容器里通常只有 sh) | 警告 |
| S8 | 直接 require('./x.node') | 阻断 |
| S9 | child_process 调外部程序(PATH 很短) | 提示 |
注释行不算 —— 写了「不要用 C:\ 路径」的注释不会被误报。
误报怎么办
规则定义文件、测试样本里天然带着一堆坏例子(不然怎么测)。用 .portabilityignore 排除:
# 一行一个,支持三种写法
lib/rules.js # 精确路径
tests/ # 目录前缀
*.min.js # 通配符
也可以写在 package.json:
{ "dsh": { "androidPortability": { "ignore": ["generated/"] } } }
两处叠加生效。
它不做什么
- 不执行插件代码,不
npm install,不联网 —— 纯静态读文本,安全到可以对着陌生仓库跑。 - 不替你改代码,只给结论和改法。
- 扫不到运行时才暴露的问题(比如某个 API 在安卓上行为不同)。静态检查的边界就到这。
开发
node --test tests/rules.test.js tests/scan.test.js tests/report.test.js tests/cli.test.js
node tools/check-manifest.js
node tools/cli.js . # 自检:本插件自己也得是可移植的
零运行时依赖,纯 ESM,node >= 20。
License
MIT
Comments
Loading…
Similar plugins
by liujianqiao701
DSH(DeepSeek Harness)插件兼容性体检:预警下次启动会被拒绝加载的插件,并在页面上按键一键隔离/卸载修掉它(改前自动备份、失败自动回滚)。Plugin compatibility vet for DeepSeek Harness.
★ 0
MIT
JavaScript
Sep 30, 2026
dsh plugin --profile web add dsh-compat-vetby jkrandom-sudo
Security audit for DeepSeek Harness plugins: static permission profile with file/line evidence + a runtime sentinel gating credential access and unknown-host egress · DSH 插件安全审计:静态权限画像(附文件/行号证据)+ 运行时哨
★ 4
↓ 85/wk
MIT
TypeScript
Sep 11, 2026
dsh plugin --profile web add dsh-plugin-auditby 618527
DeepSeek Harness 插件安装前兼容性预检守卫:检查 Node/engines、@deepseek-ai 核心包 peer 版本与 dsh 清单,支持隔离试启动与确认后修复安装,防止版本不兼容导致崩溃。
★ 0
MIT
JavaScript
Aug 30, 2026
dsh plugin --profile web add dsh-install-guardby feely0208
装第三方插件之前,先看它会动什么 —— 静态审查一个包的代码能力(执行/读凭据/出网/装时钩子)
★ 1
MIT
Shell
Oct 21, 2026
dsh plugin --profile web add @deepwhale-cn/dsh-tool-vetby ZSeven-W
DeepSeek Harness plugin for Android — build, run, and interact with a live emulator or USB device stream inside a conversation, driven entirely through adb.
★ 210
MIT
TypeScript
Oct 8, 2026
dsh plugin --profile web add @zseven-w/dsh-androidby cheng-wj
DSH plugin: restart / update / inspect the DeepSeek Harness desktop app from the model side (Windows)
★ 0
MIT
JavaScript
Oct 21, 2026
dsh plugin --profile web add dsh-app-control