dsh-idea-style
DSH 插件全家桶聚合包 —— 一条命令从 GitHub 装齐 Wilson-Lai-Ab 整理的全部插件。
dsh-idea-style 是一个 聚合(meta)插件:它自己不实现任何功能,而是把
各成员插件收拢进一个包,通过 DSH 官方的 dsh.bundle 机制一次性挂载。
用户只需要安装这一个插件,就装好了整个全家桶。
仓库: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 推送。用户侧:
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 加上(三端相同):
allowBuilds:
node-pty: true
protobufjs: true
sharp: true
esbuild: true
然后重启 dsh web。
已装 dshmarket 时:设置 → 插件市场,搜索 dsh-idea-style 一点安装(收录进 awesome-dsh-plugin 之后才会出现)。市场执行的仍是上面这条 github: 安装。
本机工作区开发
必须带 file: 前缀,让传递依赖 hoist 进 profile 的 node_modules:
# 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 时请单独安装那个仓库。
更新全家桶
dsh plugin --profile web update dsh-idea-style
卸载全家桶
dsh plugin --profile web remove dsh-idea-style
⚠️ 卸载聚合包会连同全部成员插件一起移除。若想保留其中某几个,请把它们
单独 add 为 profile 的直接依赖后再移除聚合包。
包含的插件
| 分类 | 插件 | GitHub | 作用 |
|---|
| 界面增强 | dsh-better-sidebar | 仓库 | VSCode 风格右侧侧边栏(活动栏):文件树 / 编辑器 / 终端 / Git / 浏览器 |
| 界面增强 | dsh-smooth-stream | 仓库 | 对话打字机流式渲染,字跟着模型走、减少闪烁 |
| 界面增强 | @omdsh-dev/dsh-genui | 仓库 | 助手回复里渲染交互 UI(dsh-ui 围栏):图表、表单、测验、mermaid、3D |
| 视觉与工具 | dsh-vision-router | 仓库 | 给纯文本模型加视觉:贴图问答、定位、裁剪、OCR 等像素工具 |
| 输入与搜索 | dsh-at-file | 仓库 | 输入框打 @ 搜索工作区路径,只引用路径、不注入内容 |
| 输入与搜索 | dsh-file-search | 仓库 | Quick Open 与 ripgrep 全文搜索 |
| 技能与工作流 | dsh-superpowers | 仓库 | Superpowers 方法论:bundled skills + 会话 bootstrap |
| 技能与工作流 | dsh-team-skills | 仓库 | 团队自有技能 hub:choosing-lightest-test-seam + hexin-oms-test-practices |
| 技能与工作流 | @michengai/dsh-skills-manager | 仓库 | 设置页管理本地 Skills:启用/禁用/上传/删除 |
| 技能与工作流 | dsh-routing-suite | 仓库 | 智能路由模式:按任务选择先查根因或直接执行 |
| 历史与状态 | dsh-local-history | 仓库 | 会话级本地历史 + AI 变更审查 |
| 历史与状态 | dsh-session-desk | |
每个插件的详细文档见各仓库 README。分类说明在工作区 docs/plugins/ 旁的 dhs-plugins/docs(本地工作区副本)。
工作原理
dsh plugin add git+https://github.com/Wilson-Lai-Ab/dsh-idea-style.git
执行 pnpm add,把聚合包及其依赖树(全部成员 GitHub 仓库)装进
profile 的 node_modules。
- DSH 插件命令的 reconcile 逻辑发现
dsh-idea-style 声明了
dsh.bundle.patch,自动把它加入 dsh.profile.bundles。
- 启动时,聚合包的
cordis.patch.yml 把成员插件逐个 insert 进组合树;
loader 从 profile 的 node_modules 解析每个成员并挂载。
- 成员的 client 半(
dsh.client 声明)由 client-modules 按 loader entries
自动合成进 __DSH_BOOT__ 图,浏览器端一并激活。
成员插件不需要各自声明 dsh.bundle —— 挂载统一由聚合包的 patch 完成,
这避免了多个 bundle 各自插入导致的重复挂载。
维护指南
新增一个成员插件(两步 + 推送)
- 在
package.json 的 dependencies 加一行 GitHub 源:
"my-new-plugin": "github:Wilson-Lai-Ab/my-new-plugin"
若包在仓库子目录:
"my-sub-plugin": "github:Wilson-Lai-Ab/my-monorepo#path:packages/my-sub-plugin"
- 在
cordis.patch.yml 的 - insert: 列表加一行:
- id: my-new-plugin
name: 'my-new-plugin'
- bump
version 并 git push 到 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 安装;不要对同一文件在两边各点一次拒绝。
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/)。更新:
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。成员插件各自保留其原作者许可。