Bundle
dsh-plugin-zh-inventory
插件列表中文增强:为 DSH 设置页的插件列表添加分类标签、中文说明与简述。
- Source
- anxinyuanshiyu
- stars
- 1 stars
- License
- MIT
- Updated
- Updated 14 days ago
Readme
# dsh-plugin-zh-inventory
**DeepSeek Harness (DSH) Web UI 插件 — 插件列表中文增强**
为 DSH 设置页的「插件列表」标签页添加**中文说明**、**分类标签**、**分组文件夹**与**启停开关**,让看不懂英文插件名的用户一目了然,并可直接管理第三方插件。
## 效果
设置 → 插件 → 插件列表(中文),插件按 6 个可折叠分组展示,每组显示「已启用 n/总数」:
| 分组 | 图标 | 内容 |
| --- | --- | --- |
| 📦 第三方插件 | 📦 | 非 @deepseek-ai 官方包(全家桶/皮肤/工具等),**仅此处显示启停开关** |
| 🧱 核心底层 | 🧱 | DSH 本体基础服务(框架/启动/会话/存储/沙箱/模型接入) |
| 🛠️ 功能工具 | 🛠️ | 工具、命令、子代理、工作流、终端、代码执行、技能 |
| 🎨 界面与皮肤 | 🎨 | 界面组件、皮肤、侧边栏、宠物、遥控面板 |
| 🧠 记忆与上下文 | 🧠 | 上下文压缩、会话持久化/投影/搜索、溢出存储 |
| 🤖 会话预设基础 | 🤖 | Agent 预设默认项(影响新会话默认工具集) |
每张插件卡片显示:
```
ssh [其他] [已启用]
SSH 远程运维:主机/执行/隧道/文件传输
```
- **第三方插件**卡片右侧有启停开关,点击即写入 `~/.dsh/cordis.patch.yml`,**热重载生效,无需重启**。
- **系统插件**(DSH 官方包)固定启用、不显示开关;关键组件(llm/agent/session/本插件等 26 项)显示 🔒 禁止关闭。
- 搜索框同时匹配 模块名 / 短名 / 中文描述 / 分组标题;分组折叠状态保存在 localStorage。
## 安装
### 方式一:本地插件(推荐,升级 DSH 不丢失)
```bash
# 1. 克隆本仓库
git clone https://github.com/anxinyuanshiyu/dsh-plugin-zh-inventory.git
# 或下载 ZIP 解压到任意目录,例如 ~/.dsh/plugins/dsh-plugin-zh-inventory
# 2. 把插件注册进 web profile 的 package.json
# 在 ~/.dsh/profiles/web/package.json 的 dependencies 中添加:
# "dsh-plugin-zh-inventory": "link:<插件绝对路径>"
# 并在 dsh.profile.bundles 数组末尾追加 "dsh-plugin-zh-inventory"
# 3. 安装依赖
dsh plugin --profile web install
# 4. 重启 dsh web
dsh web
```
> 插件会自动禁用内置的只读「插件列表」标签页,并用带中文说明的「插件列表(中文)」替代。
### 方式二:直接覆盖内置组件(临时方案)
将 `lib/client.js` 复制到
`node_modules/@deepseek-ai/dsh-client-ui-settings-plugin-inventory/lib/client.js`
并重启。⚠️ 此方式在 npm 升级 DSH 后会丢失,仅作临时使用。
## 目录结构
```
dsh-plugin-zh-inventory/
├── package.json # 插件声明(dsh.client + dsh.bundle)
├── cordis.patch.yml # 挂载配置:禁用内置插件列表 + 插入本插件
├── lib/
│ ├── index.js # host 侧:/api/zh-inventory/toggle 启停路由 + patch 管理
│ └── client.js # 浏览器端 UI:分组文件夹 + 卡片 + 启停开关
└── test/
└── host.test.mjs # host 纯函数单元测试(node test/host.test.mjs)
```
## 工作原理
- 通过 `dsh.bundle.patch` 在 Loader 中注册 `zh-inventory` 插件。
- 通过 `dsh.client` 声明浏览器端入口,`client-modules` 自动加载 `lib/client.js`。
- client 端在 `settings.plugins.tab` 插槽注册「插件列表(中文)」标签页,并禁用内置的 `ui-settings-plugin-inventory` 插件避免重复。
- 卡片渲染时按插件短名查表:分类标签(`categoryByShort`)+ 中文说明(`SHORT_ZH`)+ 详情简述行;第三方插件有独立分组与启停开关。
- **启停开关**:client 调用 host 路由 `POST /api/zh-inventory/toggle`,host 校验后把 `- id: <entryId>` + ` disabled: true|false` 写进 `~/.dsh/cordis.patch.yml` 的 managed 段(原子写入),DSH 配置监听器热重载,几秒内生效。
- **安全门禁**:host 只允许启停第三方插件;DSH 系统插件返回 400;关键组件(PROTECTED 集合)即使误调用也会被拒绝。
## 自定义
- 想修改某个插件的中文说明:编辑 `lib/client.js` 中的 `SHORT_ZH` 对象。
- 想调整分类:编辑 `categoryByShort` 函数。
- 想修改受保护组件清单:`lib/index.js` 与 `lib/client.js` 中的 `PROTECTED` 集合(两处需保持一致)。
## License
MIT
Install
dsh plugin --profile web add github:anxinyuanshiyu/dsh-plugin-zh-inventory#b8575d6c489cd95a1390fc949dfdde8eeba7a860
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-plugin-zh-inventory from the hub