dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 插件安卓可移植性静态体检:17 条规则查一个插件装到 DSHA(Linux arm64 + glibc proot)上会不会直接跑不起来。Static portability audit for DeepSeek Harness plugins targeting Android.
发插件之前先量一下:这东西装到安卓手机上跑得起来吗?
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 用法错误。
依赖与清单(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,不联网 —— 纯静态读文本,安全到可以对着陌生仓库跑。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。
MIT