DSH 兼容层(Termux/Linux):可选的加载器补丁让单个坏插件不再整页白屏,弹层改实色渲染,装插件前用 doctor 体检清单与客户端依赖。加载器补丁仅锚定 DSH 0.2.2-rc.1。
安装
# Release 预构建包
dsh plugin --profile web add "https://github.com/Starsky16/dsh-compat/releases/latest/download/dsh-compat.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Starsky16/dsh-compat
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
让 DeepSeek Harness(dsh)的插件在 Termux / Linux 上「装得上、崩了不连坐、坏了看得见」的兼容层。
一个插件加载失败时,dsh 默认会整页白屏(应用完全起不来);移动端弹层还可能整体透明。dsh-compat 解决这两个问题,外加一个装插件前的体检工具。
它解决什么问题
| 你遇到的症状 | 对应组件 | 效果 |
|---|---|---|
| 装了个坏插件,dsh 整页白屏起不来 | L2 加载器隔离补丁 | 只有坏插件被停用并给出原因,其它插件和页面照常 |
| 弹出菜单/下拉是透明或半透明的,看不清 | L3 客户端垫片 | 菜单/弹层改为不透明实色(自动适配深浅色),模糊一并关闭 |
| 手机上 UI 动画卡顿 | L3 客户端垫片 | 触屏设备自动关闭高开销的模糊与动画 |
| 不知道一个插件能不能装 | L4 doctor 体检 | 装前检查平台声明与依赖,装不了会告诉你为什么 |
安装
环境要求:dsh(官方版或 termux-dsh);Node ≥ 24.2。
三种方式任选其一(装完即生效,无需手工改配置):
# ① 一行命令直装(推荐,自动跟随 GitHub 仓库)
dsh plugin --profile <你的profile名> add https://github.com/Starsky16/dsh-compat.git
# ② 锁定版本:从 https://github.com/Starsky16/dsh-compat/releases 下载 .tgz 后
dsh plugin --profile <你的profile名> add ./dsh-compat-0.1.5.tgz
# ③ 本地开发:clone 后指向目录
git clone https://github.com/Starsky16/dsh-compat.git
dsh plugin --profile <你的profile名> add ./dsh-compat
体检工具(doctor)单独用,不用装进 profile:
git clone https://github.com/Starsky16/dsh-compat.git
node dsh-compat/bin/doctor.mjs # 逐个报告 profile 里插件的体检结果
各平台支持情况
| 平台 | 隔离补丁(L2) | 垫片(L3) | 体检(L4) |
|---|---|---|---|
| Termux(termux-dsh) | ✅ 全部 | ✅ | ✅ |
| Linux / macOS 桌面 | 自动探测,没找到相关组件就静默跳过 | ✅ | ✅ |
| Windows 桌面 | ❌ 不支持(官方 dsh 的核心文件打包在 app.asar 内,不可修改) | ✅ | ✅ |
装完重启 dsh 即生效。之后升级 dsh 后如果看到「L2 补丁未就绪」的提示,按提示重跑一次补丁命令即可(见进阶说明)。
常见问题
装完没有效果? 重启 dsh(插件在启动时注入)。Termux 用户确认用的是 termux-dsh 的 dsh。
「L2 补丁未就绪」警告是什么? 你刚升级过 dsh,隔离补丁被覆盖了。警告不影响启动,按提示重打即可恢复隔离能力。
想关掉某个功能? 环境变量 DSH_COMPAT_DISABLE_L2_SELFCHECK=1 关闭补丁自检;L3 的弹层修复与性能开关随插件启停,卸载插件即全部还原(补丁用 bin/patch.mjs --revert 撤销)。
菜单还是半透明的? 0.1.3 起 L3 会把菜单材质锁定为不透明(不再跟随宿主主题,也没有开关);如果仍是半透明,说明新版没加载——重启 dsh,并确认 profile 里的 dsh-compat 是 0.1.3 及以上。
插件本身有 bug? 本仓只管「装得上、崩了不连坐」,不修插件业务逻辑——那要找插件作者。
更多文档:
- CONTRIBUTING.md —— 补丁机制原理、doctor 判据、环境变量开关、仓库结构、参与开发
- docs/compat.md —— 各环境兼容性覆盖矩阵(已验证 / 未验证 / 不支持)
- docs/spike-loader-isolation.md —— 加载器机制勘察报告
AI 辅助声明
本仓库的代码与文档在 AI 辅助下编写,经人工审阅与测试。
License
MIT,见 LICENSE。上游与第三方归属见 NOTICE。
链接
同类插件
yjh051108/dsh-routing-suite★ 6994
一个仓库三件套:DSH 插件包的运行时注入器(注入、热重载、卸载、开发侧挂区一键转正、路由自愈,外带设置页插件管理:列出、卸载、拖入文件夹内化)、任务感知的思维模式路由 agent 预设(router-standard / router-spec / router-react)、以及分级两级任务协议(commit_star / lock_stage / revise_do / edit_plan / mark_task / redteam_verdict 六个工具,任务状态落盘)。注入器实现直接在库内,安装的是它自己的行为而不是一份依赖清单。
strukto-ai/mirage#dsh★ 3762
把文件系统与 bash 提供者换成 mirage 虚拟工作区:文件工具与 shell 命令作用于挂载的资源(RAM、S3、Redis、Slack、Gmail、Notion、Postgres)而非宿主磁盘,支持按挂载点设置读/写/执行模式、按命令选择沙箱(进程内 monty、pyodide、quickjs;远程 docker、e2b、daytona),并可在虚拟终端中安装 CLI(git、gh、slack、linear、ntn、gws,或自行注册的程序树)作为命令头词。
first-fluke/oh-my-agent#dsh★ 1357
在工具执行前后以及尝试结束当前轮次时运行项目 OMA 检查。随插件安装 OMA CLI 依赖,并在首次使用时初始化未配置的项目。需要 Node.js 22+;首次初始化需要网络连接和项目目录写入权限。
MichengAI/dsh-skills-manager★ 444
在设置里管理本地 DSH 技能,并只读查看公共 Agent 技能。
hust-open-atom-club/oh-dsh★ 324
社区发行版:TUI、桌面端与 Web UI 统一体验,分层安装、一步到位。
Fishquito7/dsh-skill-mcp-panel★ 248
在 DSH Web 设置中管理技能与 MCP 服务器:技能卡片热启停、工作区作用域、分组、批量迁移与拖拽导入,以及 stdio/HTTP MCP 增删改查、连接测试、密钥脱敏,并附带统一 dsh-panel 命令行。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。