Skip to content
dsh.fish
Bundle

@luoye233666/dsh-composer-tabs

输入框菜单 Tab 增强:为加号菜单与 / 弹窗添加「指令 | 我的技能 | 插件来源」分页 Tab

Source
W233666
License
MIT
Updated
Updated 22 hours ago

Readme

# dsh-composer-tabs —— 输入框菜单 Tab 分页插件

给 DeepSeek Harness(DSH)的输入框菜单加一层 **Tab 分页**:把原来挤在一个列表里的「指令、技能、插件自带的技能」按来源分成一个个页面,找东西更快更清楚。

不用改任何代码,装好重启后自动生效;以后新装插件带了新技能,也会**自动多出一个对应的 Tab**,旧的不受影响。

---

## 一、它做了什么?

在下面**两个菜单**里都加了 Tab 页:

1. 输入框左下角的 **加号(+)菜单**
2. 输入框打 **`/`** 弹出的菜单

Tab 的顺序是固定的:

```
① 指令          系统内置的指令(如 /plan、/goal、/permission …)
② 我的技能      你自己放进技能目录的技能文件
③ 创造模式技能   当前预设(preset)自带的技能;没有就不显示这一页
④ 各插件        每个插件带的技能各占一页(按名字排序)
⑤ 内置技能      随包分发的技能
⑥ 其他          无法归类的内容
```

每个页面内,条目上方会有一个灰色小标题标明来源,和原版菜单的分组标题样式一致。

**一句话概括**:原来的一个大列表,现在变成了「指令 / 我的技能 / 各插件」的分页,点一下 Tab 就切换。

---

## 二、怎么安装?

### 方式一:用 DSH 官方命令安装(推荐)

DSH 自带 `dsh plugin` 命令,一条命令就能装好(自动装依赖 + 自动挂载):

```sh
dsh plugin --profile web add @luoye233666/dsh-composer-tabs@latest
```

装完后**完全退出并重新启动 DSH** 即可生效(本插件有 Host 半区,需重启程序本体,光刷新网页不够)。

> 如果你的 DSH 版本较老、没有 `dsh plugin` 命令,用下面的方式二。

### 方式二:用 git 克隆 + 手动挂载

如果不想发布到 npm、或 DSH 版本不支持 `dsh plugin`,可以克隆源码后手动挂载:

```sh
# 1. 克隆到插件目录
cd G:\软件\deepseek-harness\插件
git clone <这个仓库的地址> dsh-composer-tabs

# 2. 在 profile 里登记依赖(路径用你实际 clone 的位置,注意用正斜杠 /)
#    打开 C:\Users\<你的用户名>\.dsh\profiles\web\package.json,
#    在 dependencies 里加一行:
#    "@luoye233666/dsh-composer-tabs": "link:G:/软件/deepseek-harness/插件/dsh-composer-tabs"
#    再在 dsh.profile.bundles 末尾加一行:
#    "@luoye233666/dsh-composer-tabs"

# 3. 安装并重启
cd C:\Users\<你的用户名>\.dsh\profiles\web
pnpm install
```

然后**完全退出并重新启动 DSH**。

### 更新

- npm 方式:`dsh plugin --profile web add @luoye233666/dsh-composer-tabs@latest`
- git 方式:进克隆目录 `git pull` 后 `pnpm install`

---

## 三、怎么使用?

装好重启后,什么都不用配:

- 点输入框左下角的 **加号(+)**,菜单顶部会出现一排 Tab
- 在输入框打 **`/`**,弹出的菜单同样有 Tab
- 点某个 Tab 就切换这一页的内容
- 点技能条目,会在输入框自动填好 `/技能名 `,回车即可使用

---

## 四、它是怎么分的?(原理,简单版)

插件不去猜「这个技能是哪个插件的」,而是直接问 DSH 要真实信息:

- **技能归属**:读技能文件真实路径(`node_modules\@某插件\...`、`~\.dsh\skills\...`、预设目录),由此判断它属于哪个插件、是不是你手放的、还是创造模式(preset)带的。
- **哪些是官方指令**:只有固定的几个内置指令(compact / export / feedback / goal / permission / plan / model)算「指令」,其余按来源归类。

所以它是**全自动**的——你装新插件、加新技能,重启后对应的 Tab 就会自己长出来。

---

## 五、常见问题

**装完没生效?**
确认重启的是 DSH 程序本体,不是刷新网页;确认 `pnpm install` 在 profile 目录跑过。

**不想用了怎么卸载?**
在 profile 的 `package.json` 里删掉上面加的两行(`dependencies` 里那行 + `bundles` 里那行),重启 DSH 即可,界面恢复原样。

**新插件带了技能,但没出现新 Tab?**
先重启 DSH 试试;如果还是没有,可能是该技能没有正确的来源信息,可以向作者反馈。

---

## 六、文件结构(谁是谁)

```
dsh-composer-tabs/
├── src/
│   ├── host/index.js     Host 端:读技能目录、判断归属
│   └── client/index.js   浏览器端:菜单 Tab 的注入与渲染
├── scripts/build.mjs     构建脚本
├── lib/                  构建产物(由 scripts/build.mjs 生成,不纳入 git)
├── cordis.patch.yml      挂载声明
└── package.json          插件名片
```

## 七、想自己改?

改完 `src/` 下的源码后,在插件目录运行:

```sh
node scripts/build.mjs
```

再重启 DSH 生效。

Install

dsh plugin --profile web add github:W233666/dsh-composer-tabs

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source