Skip to content
dsh.fish
Bundle

dsh-plugin-zh-inventory

插件列表中文增强:为 DSH 设置页的插件列表添加分类标签、中文说明与简述。

Source
anxinyuanshiyu
stars
1 stars
License
MIT
Updated
Updated 15 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

Source