yiqizhuapangxiema / harness-plugin-store-optimized

Listed

Harness 插件商店优化版:图形化浏览/搜索/一键安装 DSH 插件,评分评论、依赖拓扑、审计日志、质量门一应俱全;本 fork 新增可配置插件下载目录、bundle 层冲突检测、pnpm 自动寻路,并修复多项上游 bug

mainOther View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:yiqizhuapangxiema/harness-plugin-store-optimized

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 9409785Synced Aug 18, 2026

Harness Plugin Store Optimized

简介:本仓库是 dsh-plugin-hub 0.1.6 的定制优化版。

  • 继承原版全部功能:深度集成 Harness Web UI 的图形化插件商店 —— 浏览 / 搜索 / 一键安装、本地评分评论、依赖拓扑图、操作审计日志、插件开发脚手架、安装前质量门与安全扫描、健康度排行榜、信任徽章
  • 本 fork 的修改优化:插件下载目录可配置(默认 <DSH_HOME>/plugins,插件以源码文件夹落盘并自动注册部署)、bundle 层入口 id 冲突检测(安装前拦截会导致整树崩溃的插件)、pnpm 自动寻路(任意终端可用)、准确的"重启生效"提示、启用超时透传真实错误、scoped 包支持,以及 3 项上游 bug 修复

下载与安装

前置条件:官方 dsh CLI(npm install -g @deepseek-ai/dsh)、pnpm 10+(不在 PATH 上也没关系,商店安装插件时会自动寻找 harness 本地的 pnpm shim)。

方式一:克隆本仓库安装(推荐,替换 registry 版)

git clone https://github.com/yiqizhuapangxiema/harness-plugin-store-optimized.git
cd harness-plugin-store-optimized
dsh plugin --profile web add file:<本仓库绝对路径>

profile 的依赖规格会变成 file: 指向本仓库,重启 dsh web 后生效(浏览器 Ctrl+F5 刷新)。

方式二:npm 安装(发布后可用)

dsh plugin --profile web add dsh-plugin-store-optimized

npm 包 dsh-plugin-store-optimized 尚未发布;发布后此命令即可用。

方式三:给已装的 registry 版打补丁

cd <DSH_HOME>/profiles/web/node_modules/dsh-plugin-hub
git apply --ignore-whitespace <本仓库>/patches/installer.js.patch
# 其余 4 个补丁同法:index.js / conflict-check.js / remote.js / client.js

上游(原作者)发布新版本后,升级并重新打补丁即可。

注意:不要与 registry 版的 dsh-plugin-hub 同时安装 —— 两者插入相同的 loader 入口 id 会导致插件树崩溃。安装前先卸载旧版:dsh plugin --profile web remove dsh-plugin-hub

本 fork 新增的功能

功能说明
可配置插件下载目录设置页(商店内设置 + 全局 DSH 设置)新增「插件安装目录」项。默认 <DSH_HOME>/plugins;留空保存 = 恢复默认。商店初始化时自动创建该目录。
插件源码目录管理商店安装的每个插件都会以真实包文件夹形式落到配置目录(如 plugins/<名称>/,作用域包为 plugins/@scope/名称/),再通过 file: 依赖 + bundles/补丁激活自动注册进 profile。卸载时同步删除文件夹(及空的 scope 父目录)。
bundle 层冲突检测(第 4 项检查)激活前将新插件 bundle 补丁中 insert 的入口 id 与现有所有 bundle 层逐一比对,重复即拦截并列出冲突 id(如把 TUI 插件装进 web profile 的场景)—— 防止整树启动崩溃(duplicate loader entry id)。
pnpm 自动寻路先搜 PATH 中的 pnpm,找不到则回退到 harness 本地 shim(<harness 根目录>/.dsh-tools/pnpm.cmd<harness 根目录>/.bin/pnpm.cmd)。任意终端启动都能正常安装插件,即使 pnpm 不在 PATH 上。
准确的重启提示bundles 层插件只在启动时组合,安装回执现在明确提示「重启 dsh 后生效」(restartRequired: true),不再谎称热加载;对"已安装但未加载"的插件执行启用/禁用也会返回同样的明确提示。
启用超时透传真实错误插件启用超时时的报错会附上条目真实的初始化失败原因(如 no pet packages found in ~/.codex/pets),不再只有干巴巴的「超时」。
作用域包支持@scope/name 包可正确暂存(自动创建 scope 父目录、暂存目录名扁平化)。
上游 bug 修复① yaml 的 map.get('insert') 返回 YAMLSeq 节点,原代码用 Array.isArray 误判导致 owned 补丁行卸载时永远删不掉;② 补丁完整性检查用正则扫原始文本(引号不剥离、注释碎片被当成包名)→ 平台包(@deepseek-ai/*)被误拦,已改为结构化 YAML 解析;③ 容忍 pnpm 卸载后置失败(已删除但退出码 1),不再留下半卸载状态。

更新日志

0.2.0(2026-08-17)

  • 可配置插件下载目录:设置页新增「插件安装目录」(默认 <DSH_HOME>/plugins,留空恢复默认),商店初始化自动创建;插件以源码文件夹落盘并自动注册部署,卸载同步清理
  • bundle 层冲突检测(第 4 项检查):安装前比对新插件与现有 bundle 层的 insert 入口 id,重复即拦截并列出冲突 id,防止整树启动崩溃
  • pnpm 自动寻路:PATH 无 pnpm 时自动回退 harness 本地 shim,任意终端可用
  • 准确的提示:bundles 插件安装回执明确「重启 dsh 后生效」;启用/禁用超时附上条目真实初始化错误
  • scoped 包支持@scope/name 包正确暂存与卸载(scope 父目录自动创建/回收)
  • 上游 bug 修复:① yaml YAMLSeq 误判导致 owned 补丁行无法卸载清理;② 补丁完整性检查正则误报(引号/注释)→ 改为结构化 YAML 解析;③ 容忍 pnpm 卸载后置失败(已删除但退出码 1)

回归测试

脚本覆盖
tests/verify-install.mjs完整安装/卸载链路 10 项检查(假插件,含无 pnpm PATH 场景)
tests/verify-scoped.mjsscoped 包名(@scope/name)安装/卸载回归
tests/install-pet.mjs宠物包下载 + 用插件自身 loader 验证

运行:node tests/verify-install.mjs(Windows 上建议带 PATH=...\.dsh-tools 前缀以保证 pnpm 可用;无 pnpm 时脚本会走 shim 回退)。

其他文档

上游许可见 LICENSE(二次开发需保留原作者版权声明)。

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
DocumentationDetected

Repository information

Language
JavaScript
License
MIT
Last updated
Aug 17, 2026, 11:16 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.