deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
简介:本仓库是 dsh-plugin-hub 0.1.6 的定制优化版。
<DSH_HOME>/plugins,插件以源码文件夹落盘并自动注册部署)、bundle 层入口 id 冲突检测(安装前拦截会导致整树崩溃的插件)、pnpm 自动寻路(任意终端可用)、准确的"重启生效"提示、启用超时透传真实错误、scoped 包支持,以及 3 项上游 bug 修复前置条件:官方 dsh CLI(npm install -g @deepseek-ai/dsh)、pnpm 10+(不在 PATH 上也没关系,商店安装插件时会自动寻找 harness 本地的 pnpm shim)。
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 刷新)。
dsh plugin --profile web add dsh-plugin-store-optimized
npm 包
dsh-plugin-store-optimized尚未发布;发布后此命令即可用。
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。
| 功能 | 说明 |
|---|---|
| 可配置插件下载目录 | 设置页(商店内设置 + 全局 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),不再留下半卸载状态。 |
<DSH_HOME>/plugins,留空恢复默认),商店初始化自动创建;插件以源码文件夹落盘并自动注册部署,卸载同步清理insert 入口 id,重复即拦截并列出冲突 id,防止整树启动崩溃@scope/name 包正确暂存与卸载(scope 父目录自动创建/回收)| 脚本 | 覆盖 |
|---|---|
tests/verify-install.mjs |
完整安装/卸载链路 10 项检查(假插件,含无 pnpm PATH 场景) |
tests/verify-scoped.mjs |
scoped 包名(@scope/name)安装/卸载回归 |
tests/install-pet.mjs |
宠物包下载 + 用插件自身 loader 验证 |
运行:node tests/verify-install.mjs(Windows 上建议带 PATH=...\.dsh-tools 前缀以保证 pnpm 可用;无 pnpm 时脚本会走 shim 回退)。
上游许可见 LICENSE(二次开发需保留原作者版权声明)。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: plugin-marketplace。