Skip to content
dsh.fish
Bundle

dsh-idea-style

DSH 插件全家桶聚合包:一条命令从 GitHub 装齐界面增强 / 视觉与工具 / 输入与搜索 / 技能与工作流 / 历史与状态。

Source
Wilson-Lai-Ab
License
MIT
Updated
Updated 6 days ago

Readme

# dsh-idea-style

[![awesome · DSH plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)

> DSH 插件全家桶聚合包 —— 一条命令从 GitHub 装齐 `Wilson-Lai-Ab` 整理的全部插件。

`dsh-idea-style` 是一个 **聚合(meta)插件**:它自己不实现任何功能,而是把
各成员插件收拢进一个包,通过 DSH 官方的 `dsh.bundle` 机制一次性挂载。
用户只需要安装这一个插件,就装好了整个全家桶。

仓库:[Wilson-Lai-Ab/dsh-idea-style](https://github.com/Wilson-Lai-Ab/dsh-idea-style)。

依赖有两套,**不要混用**:

| 文件 | 给谁用 | 成员从哪来 |
|------|--------|------------|
| `package.json` | 本机工作区开发 | 相对 `file:../<成员目录>` |
| `package.publish.json` | 推 GitHub / 别人安装 | `github:Wilson-Lai-Ab/...` |

**禁止** `workspace:*`(独立 web profile 不是这个 pnpm workspace,解析失败)。  
**禁止** `dsh plugin add ./dsh-idea-style` 这种裸路径(pnpm 会做成 `link:`,成员不会 hoist 进 profile,`dsh web` 启动失败)。Windows / macOS / Linux 都一样。

---

## 快速开始

### 别人 / 发布版(GitHub)

推仓库前把 `package.publish.json` **整文件覆盖**成 `package.json`(或只同步 `dependencies`),再 bump 推送。用户侧:

```bash
dsh plugin --profile web add git+https://github.com/Wilson-Lai-Ab/dsh-idea-style.git
```

pnpm 11 会拦截 `node-pty` / `sharp` 等构建脚本。装之前在 `~/.dsh/profiles/web/pnpm-workspace.yaml` 加上(三端相同):

```yaml
allowBuilds:
  node-pty: true
  protobufjs: true
  sharp: true
  esbuild: true
```

然后重启 `dsh web`。

已装 [dshmarket](https://github.com/dsh-market/dsh-market) 时:设置 → **插件市场**,搜索 `dsh-idea-style` 一点安装(收录进 [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 之后才会出现)。市场执行的仍是上面这条 `github:` 安装。

### 本机工作区开发

必须带 `file:` 前缀,让传递依赖 hoist 进 profile 的 `node_modules`:

```bash
# Windows
dsh plugin --profile web add file:D:\work\dsh_pulgins\dsh-idea-style

# macOS / Linux(换成你的工作区绝对路径)
dsh plugin --profile web add file:/path/to/dsh_pulgins/dsh-idea-style
```

变更审查走聚合包里的 **dsh-local-history**(侧栏「改动审查」)。`dsh-vscode-review` **不在**本包内,需要 VS Code 行内逐段 AC/RJ 时请单独安装那个仓库。

### 更新全家桶

```bash
dsh plugin --profile web update dsh-idea-style
```

### 卸载全家桶

```bash
dsh plugin --profile web remove dsh-idea-style
```

> ⚠️ 卸载聚合包会连同全部成员插件一起移除。若想保留其中某几个,请把它们
> 单独 `add` 为 profile 的直接依赖后再移除聚合包。

---

## 包含的插件

| 分类 | 插件 | GitHub | 作用 |
|------|------|--------|------|
| 界面增强 | dsh-better-sidebar | [仓库](https://github.com/Wilson-Lai-Ab/dsh-better-sidebar) | VSCode 风格右侧侧边栏(活动栏):文件树 / 编辑器 / 终端 / Git / 浏览器 |
| 界面增强 | dsh-smooth-stream | [仓库](https://github.com/Wilson-Lai-Ab/dsh-smooth-stream) | 对话打字机流式渲染,字跟着模型走、减少闪烁 |
| 界面增强 | @omdsh-dev/dsh-genui | [仓库](https://github.com/Wilson-Lai-Ab/dsh-genui) | 助手回复里渲染交互 UI(dsh-ui 围栏):图表、表单、测验、mermaid、3D |
| 视觉与工具 | dsh-vision-router | [仓库](https://github.com/Wilson-Lai-Ab/dsh-vision-router) | 给纯文本模型加视觉:贴图问答、定位、裁剪、OCR 等像素工具 |
| 输入与搜索 | dsh-at-file | [仓库](https://github.com/Wilson-Lai-Ab/dsh-at-file) | 输入框打 `@` 搜索工作区路径,只引用路径、不注入内容 |
| 输入与搜索 | dsh-file-search | [仓库](https://github.com/Wilson-Lai-Ab/dsh-file-search) | Quick Open 与 ripgrep 全文搜索 |
| 技能与工作流 | dsh-superpowers | [仓库](https://github.com/Wilson-Lai-Ab/dsh-superpowers) | Superpowers 方法论:bundled skills + 会话 bootstrap |
| 技能与工作流 | dsh-team-skills | [仓库](https://github.com/Wilson-Lai-Ab/dsh-team-skills) | 团队自有技能 hub:choosing-lightest-test-seam + hexin-oms-test-practices |
| 技能与工作流 | @michengai/dsh-skills-manager | [仓库](https://github.com/Wilson-Lai-Ab/dsh-skills-manager) | 设置页管理本地 Skills:启用/禁用/上传/删除 |
| 技能与工作流 | dsh-routing-suite | [仓库](https://github.com/Wilson-Lai-Ab/dsh-routing-suite) | 智能路由模式:按任务选择先查根因或直接执行 |
| 历史与状态 | dsh-local-history | [仓库](https://github.com/Wilson-Lai-Ab/dsh-local-history) | 会话级本地历史 + AI 变更审查 |
| 历史与状态 | dsh-session-desk | [仓库](https://github.com/Wilson-Lai-Ab/dsh-session-desk) | 会话分组、回收站、缩略图、看板页、外观与宠物挂件 |

每个插件的详细文档见各仓库 README。分类说明在工作区 [`docs/plugins/`](https://github.com/Wilson-Lai-Ab/dsh-idea-style) 旁的 `dhs-plugins/docs`(本地工作区副本)。

---

## 工作原理

1. `dsh plugin add git+https://github.com/Wilson-Lai-Ab/dsh-idea-style.git`
   执行 `pnpm add`,把聚合包**及其依赖树**(全部成员 GitHub 仓库)装进
   profile 的 `node_modules`。
2. DSH 插件命令的 reconcile 逻辑发现 `dsh-idea-style` 声明了
   `dsh.bundle.patch`,自动把它加入 `dsh.profile.bundles`。
3. 启动时,聚合包的 `cordis.patch.yml` 把成员插件逐个 insert 进组合树;
   loader 从 profile 的 `node_modules` 解析每个成员并挂载。
4. 成员的 client 半(`dsh.client` 声明)由 client-modules 按 loader entries
   自动合成进 `__DSH_BOOT__` 图,浏览器端一并激活。

成员插件**不需要**各自声明 `dsh.bundle` —— 挂载统一由聚合包的 patch 完成,
这避免了多个 bundle 各自插入导致的重复挂载。

---

## 维护指南

### 新增一个成员插件(两步 + 推送)

1. 在 `package.json` 的 `dependencies` 加一行 GitHub 源:
   ```jsonc
   "my-new-plugin": "github:Wilson-Lai-Ab/my-new-plugin"
   ```
   若包在仓库子目录:
   ```jsonc
   "my-sub-plugin": "github:Wilson-Lai-Ab/my-monorepo#path:packages/my-sub-plugin"
   ```
2. 在 `cordis.patch.yml` 的 `- insert:` 列表加一行:
   ```yaml
   - id: my-new-plugin
     name: 'my-new-plugin'
   ```
3. bump `version` 并 `git push` 到 [Wilson-Lai-Ab/dsh-idea-style](https://github.com/Wilson-Lai-Ab/dsh-idea-style)。

### 移除一个成员插件

反向操作:删 `dependencies` 行 + 删 patch insert 行 + bump 推送。
用户侧执行 `dsh plugin --profile web update dsh-idea-style` 后,该插件
下次启动不再挂载。

### 本地开发 vs 发布

- 本机:保持 `package.json` 的 `file:../...`,改成员源码立刻被 profile 的 `file:` 安装看到。
- 发布:用 `package.publish.json` 覆盖 `package.json` 再 push。别人机器上没有工作区旁路目录,相对 `file:` 会装失败。
- `cordis.patch.yml` 的 insert `id` 必须与各成员自己的 patch 一致(已对齐)。这一层 Windows / macOS 无差别。

---

## 常见问题

**Q: 装了聚合包后某个插件重复出现 / 双实例?**
A: 说明该插件还被单独安装过(如从 dshmarket 单独点装)。聚合包已含全部成员,
不要单独安装成员插件;把重复的直接依赖移除后重启。

**Q: 还要 VS Code 行内逐段 Accept / Reject?**
A: 聚合包不含 `dsh-vscode-review`。审查走 **dsh-local-history**(侧栏「改动审查」)。
若仍要那套 VS Code 扩展,请单独 clone 并按 [dsh-vscode-review](https://github.com/Wilson-Lai-Ab/dsh-vscode-review) 安装;不要对同一文件在两边各点一次拒绝。

**Q: 安装时有 "ignored build scripts" 警告?**
A: 部分成员带原生依赖(better-sidebar 的 `node-pty`、vision-router 的
`sharp` / puppeteer-core)。pnpm 11 在 Windows / macOS / Linux 都会拦截。
在 `~/.dsh/profiles/web/pnpm-workspace.yaml` 加 `allowBuilds`(见上文),
然后重跑 `dsh plugin --profile web add …`。macOS 一般有预编译二进制,
比 Windows 少需要 Xcode CLT;逻辑与 id 对齐与系统无关。

**Q: 能不能把现在这份 `package.json` 直接 push?**
A: 不能。里面的 `file:../dsh-at-file` 只在本机工作区有效。对外必须用
`package.publish.json` 里的 `github:` 源。

**Q: 成员的版本在 package.json 里看不到?**
A: 成员是 GitHub HEAD(或 lockfile 钉住的 commit)。查来源用
`dsh plugin --profile web why <成员名>` 或看 profile 的 `pnpm-lock.yaml`。

**Q: Windows 装完侧边栏还是顶部 Files / +(本地是右侧活动栏)?**
A: 那是旧 UI。发布源必须是 `github:Wilson-Lai-Ab/dsh-better-sidebar`(仓库已提交 `lib/`)。更新:

```bash
dsh plugin --profile web update dsh-idea-style
```

然后重启 `dsh web`,浏览器硬刷新(Ctrl+Shift+R)。

**Q: 启动报 duplicate loader entry id / 整棵插件树挂掉?**
A: `cordis.patch.yml` 的 insert `id` 必须和各成员自己的 patch 一致
(`better-sidebar` / `vision-router` / `skills-manager` / `smooth-stream` /
`genui` / `session-desk` 等)。`a30ea3b` 已对齐;不要把聚合包的 id 改成
`dsh-better-sidebar` 这种和成员 patch 不一致的值。

---

## 许可

MIT。成员插件各自保留其原作者许可。

Install

dsh plugin --profile web add github:Wilson-Lai-Ab/dsh-idea-style

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source