🚀 dsh-ventus-plugins
August 27, 2026 · View on GitHub
English | 中文
Ventus 系列插件聚合版 —— 自定义选择性安装
把 14 个自装 DSH 插件整合为一个插件,功能与设置与多插件时代完全一致,并支持按需勾选安装(最小包只装用量监测,后续可随时补装其余)。 插件列表只显示一个入口,侧边栏、悬浮球、主题、搜索、桌宠、团队模式、用量统计全部保留。
聚合动机:插件列表越滚越长、每次升级要逐个同步。聚合后:
- 插件管理面板只出现
dsh-ventus-plugins一个条目;- 所有子插件共享同一个生命周期(host 聚合挂载 + client 单一 bundle);
- 自定义选择性安装:最小包起步,设置页勾选增量补装,只装要的,升级只换一个包。
✨ 功能总览
| 分类 | 子插件 | 说明 |
|---|---|---|
| 🎨 主题 | dsh-theme-endfield | 终末地工业编辑部风格主题:米纸底、墨字、信号黄强调、直角。等高线背景、ENDFIELD 水印、玻璃/纯色侧边栏表面(主题设置下拉框)、hero 贴底(可开关) |
| 📊 用量监测 | dsh-deepseek-usage | 右侧悬浮球:实时余额、今日 R0 涨价倍率、模型命中率徽标;展开面板:累计/今日消费、请求数、Tokens、分模型用量、趋势图、登录/退出、截图 |
| 📈 用量与技能 | dsh-usage-skill | Token 用量热力图(日/月/年)、多 Provider 余额卡、技能包管理面板(侧边栏入口已禁用,仅保留组件导出与字典) |
| 📁 右侧重栏 | dsh-better-sidebar | VSCode 式右侧栏:文件树 / 编辑器(CodeMirror 多语言高亮)/ 终端 / Git / 浏览器,按会话隔离;文件变化自动刷新、右键删除/撤回;文本编辑器底部信息栏(总字数 + 选中字数) |
| 🔍 搜索 | dsh-ventus-search | Bing / 360 / Bilibili 多引擎搜索 + Readability 正文抓取,注册为 DSH 搜索 provider,带设置卡与总开关 |
| 🐋 桌宠 | dsh-ventus-whale | 3D 虎鲸桌宠浮窗:拖拽 / 旋转 / 右键菜单,设置页配置大小、灵敏度、显示文字 |
| 📶 子代理进度 | dsh-ventus-progress | 解析子代理输出的 `progress-json` 进度模型,子代理条目悬停显示分段进度条与当前任务文字;自带 skill 引导 AI 输出进度模型 |
| 👥 工具链 + 团队模式 | @dsh-external/dsh-webui | 视图图块 / 消息导航 / 工具调用聚合 / Markdown 渲染 / 模型推理等级同步 / AnySearch / 右侧消息横条;悬浮侧边栏(三点浮窗不收起修复 + Ctrl+Alt+S / 双击 Escape 快捷键)与提示词优化浮窗;**多智能体团队模式**(角色/协作链编排、关系画布、执行 HUD、子代理与 llm 双通道、运行历史);**侧边栏「性能」栏**(各子插件体积占比进度条、占比/内存切换、可拖拽调高) |
| 🧩 模组注入 | @dsh-external/dsh-super-injector | 运行时注入任意本地 DSH 插件包(junction + loader.create,不重启),热重载 + 插件管理 UI |
| 👁️ 可视化 | @dsh-external/dsh-visualize | `visualize` 工具 + 配套 skill:模型渲染交互式 HTML 片段为沙箱卡片(Codex `/visualize` 语义) |
| 📄 文档解析 | @huanlin/dsh-plugin-mineru | MinerU PDF / 扫描件解析(本地自托管或 mineru.net 云端 API),API Key 文件兜底持久化(重启不重输) |
| 🧠 上下文 | dsh-context | 会话上下文管理(记忆/上下文项聚合) |
| 🔬 科研工作台 | dsh-ventus-research | 课题立项 → 证据 → 人工裁决的研究工作流(claim 状态机 + signature token);AskUserQuestion 工作台桥接(AI 提问在工作台作答) |
| ⚖️ 权限策略 | @nanmicoder/dsh-auto-mode | 沙箱优先的自动权限策略:工作区写 + 语义审查 + 一次性宽授权(**Auto 权限项**,已并入本包 patch) |
| 🌐 UA 中继 | dsh-ua-relay | B.AI(bankofai.io)UA 重写反代:绕过网关 UA 拦截,配置目标 `https://api.bankofai.io` |
@nanmicoder/dsh-agent-teams(多代理团队协作)保持禁用: 其 activity scanner 在历史日志异常后会反复全局扫描导致 UI 假死; host 不挂载、client 不内嵌,行为与多插件时代完全一致。
🧩 功能开关结构
整合包对外是一个插件,内部保留 14 个子插件各自的设置与开关。开关分两层:
第一层 · 子插件级(设置 → Ventus 插件 / 对应设置卡)
| 子插件 | 开关位置 | 关掉后的效果 |
|---|---|---|
dsh-theme-endfield | 主题设置卡「启用主题」 | 恢复官方外观,等高线/水印/雷霆大字一并停用 |
dsh-deepseek-usage | Ventus 设置卡「启用用量监测」 | 悬浮球与用量面板隐藏,停止后台轮询 |
dsh-ventus-search | Ventus 搜索卡总开关 | 搜索与抓取 provider 立即不可用 |
dsh-ventus-whale | 桌宠设置卡 | 3D 桌宠不挂载 |
dsh-ventus-progress | 进度设置卡 | 子代理进度条不渲染 |
dsh-better-sidebar | 右侧栏设置卡 | 右侧重栏(文件/终端/Git/浏览器)不挂载 |
@dsh-external/dsh-webui | 见第二层 | 逐项裁剪工具链功能 |
第二层 · webui 工具链细分(缺省启用,显式关闭才停用;host 与 client 同一份语义)
| 分组 | 可关闭的功能 |
|---|---|
| 对话体验 | 消息宽度、完成提示音、完成胶囊、审批提醒、Ctrl+Enter、会话切换过渡、置顶归档、标题点击重命名、对话退回、消息截图、提示词优化、中文思考、峰谷卡片、统计条、工具聚合 |
| 模型与供应商 | 推理等级同步、模型座位、供应商管理、辅助视觉/生图、AnySearch、邮箱验证码 |
| 技能与浏览器 | 技能导航、AI 浏览器 |
| 自动化与记忆 | 自动化任务、PlanWeave、记忆引擎 |
| 用量与文件 | 用量工作台、文件浏览器、目录选择器 |
| 外观与系统 | 玻璃质感、悬浮侧边栏、壳更新、网络代理 |
单独安装某个子插件时,它自己的开关照旧可用;整合安装则统一从上面两层入口管理。
各功能能力明细
🗨️ 对话体验
| 功能 | 能力 |
|---|---|
| 完成胶囊 donePill | 回合结束悬浮胶囊 + 记录面板:完成记录分组叠瓦、一键清空、展开/收起、健康提醒(凌晨/休息时段,可点击收起当天);平时轮播开心话术 / 凝聚态物理小知识 |
| 完成提示音 doneSound | 回合结束提示音 + 完成卡片 |
| 消息截图 screenshot | 单条消息渲染截图(Markdown → 卡片图)、会话长图导出 |
| 对话退回 rewind | 消息文件快照、上下文分支回退 |
| 置顶 / 归档 sessionPin | 会话置顶(折叠窗口补行)、一键归档、右键菜单(置顶/重命名/分叉/归档)、已归档区域(工作区同构,可收起展开,还原按钮) |
| 标题重命名 titleRename | 对话区标题点击即全选重命名(Enter 提交 / Esc 取消) |
| 工具聚合 tool-summary | 工具调用聚合 chip + 活动抽屉(思考过程 / 调用详情) |
| 提示词优化 | 输入框图标一键优化草稿(长度档位、设定目标、浏览器验证、注入记忆开关) |
| 其他小项 | 中文思考、峰谷卡片、统计条、审批提醒、Ctrl+Enter 换行、会话切换过渡、消息宽度 |
🔧 模型与供应商
| 功能 | 能力 |
|---|---|
| 供应商管理 providerHub | 对话 / 视觉 / 生图 / 生视频统一设置页、模型列表编辑器、供应商标识与能力区块、性能基准弹窗(/api/perf-bench) |
| 模型座位 modelSeats | 模型选择接管 + 推理等级滑动弹出 |
| 推理等级同步 | webui_sync_reasoning 工具按供应商模板自动补全推理等级 |
| 辅助视觉 / 生图 vision | vision_describe / generate_image、非多模态主模型的图片降级描述、图片缓存 |
| AnySearch | 多引擎网页搜索设置卡(与 ventus-search 并列可用) |
📁 侧边栏与文件
| 功能 | 能力 |
|---|---|
| 右侧重栏 better-sidebar | VSCode 式文件树 / 编辑器 / 终端 / Git / 浏览器,按会话隔离;文件/文件夹变化自动刷新(5s 轮询 + 窗口聚焦)、右键删除/撤回(删除确认 + 撤销栈恢复);外部链接与产物点击弹双按钮(新标签页/侧边栏、侧边栏编辑器/系统打开) |
| 悬浮侧边栏 sidebarFloat | 侧边栏可悬浮为独立窗口(设置项持久化);Ctrl+Alt+S 快捷键与双击 Escape 一键展开/收起(非固定模式,输入框聚焦时忽略) |
| 性能栏 perfPanel | 左侧边栏「已归档」下方第三栏「性能」:各子插件体积占比进度条(最大者 100%)、占比/内存切换按钮、可拖拽分隔条调高(与已归档一致)、可收起 |
| 文件浏览器 / 目录选择器 | 工作区文件树弹窗、目录选择器 |
📊 用量与进度
| 功能 | 能力 |
|---|---|
| 用量悬浮球 deepseek-usage | 余额 / R0 / 命中率悬浮球、开放平台数据轮询;缓存命中率按会话真实两位小数(杜绝恒 .00);设置页更新入口(安装确认 → 顶层多选安装/更新弹窗,仅更新勾选项) |
| 用量工作台 usage | 用量趋势 / 热力图 / 账户总览 |
| 子代理进度 ventus-progress | 子代理任务分段进度条(progress-json 协议 + skill 引导) |
🤖 自动化与记忆
| 功能 | 能力 |
|---|---|
| 自动化 automation | 定时自动化任务(cron/at/every) |
| PlanWeave | 计划项目工作台 |
| 记忆引擎 memory | 侧边栏记忆面板、注入开关、Memory Dream(合并/精炼/剪枝) |
👥 团队模式(多智能体编排)
| 功能 | 能力 |
|---|---|
| 角色 / 协作链 | 团队由多个角色组成(主脑 / 察 / 驳 / 策 / 匠 / 造 / 笔 等),协作链把角色串成执行序列,支持主脑整合步;每角色可独立配置模型、执行通道(subagent / llm 直跑)、工具与技能装配 |
| 关系画布 TeamBoard | 无限画布编排团队:节点任意位置拖动、单击选中(主题描边)、双击打开编辑、锚点连线、缩放平移;已归档式角色卡片 |
| 执行 HUD RunHud | 运行时对话区悬浮条:团队名 + 步骤圆点 + n/N 步 + 耗时,可展开为各角色运行卡(状态/模型来源/单步计时/流式摘要);贴输入框上方停靠,任意窗口打开时自动隐藏、点外自动收起 |
| 运行与通道 | 运行历史落盘(runs/ 目录),支持取消;子代理(subagents.start,带工具装配限制)与 llm 直跑双通道;超时/失败错误透传底层真实原因 |
| 出厂团队 | 小凉全能团、凝聚态理论计算团队、插件设计工坊等预设团队开箱即用 |
🎨 主题与系统
| 功能 | 能力 |
|---|---|
| 终末地主题 | 等高线背景、ENDFIELD 水印、玻璃/纯色侧边栏、hero 贴底、雷霆大字(任务开始/完成) |
| 玻璃质感 / 壳更新 / 网络代理 | 外观增强、DSH 壳更新管理、网络代理设置 |
| 3D 虎鲸桌宠 | 右下角拖拽桌宠,右键菜单配置 |
🧩 其它子插件:多引擎搜索 ventus-search(Bing/360/Bilibili + Readability 抓取)、模组注入 super-injector(运行时热加载插件)、HTML 可视化 visualize、Auto 权限策略 auto-mode、B.AI UA 中继 ua-relay、邮箱验证码 mail、技能导航 skills、AI 浏览器 browser
🚀 安装
⚡ 最小安装(推荐)
只含用量监测(悬浮球 / 消费 / Tokens / 命中率),体积小、依赖少,其余子插件按需补装:
dsh plugin --profile web add github:mmzm0808/dsh-ventus-plugins#min
补装引导(最小包安装后升级为完整整合包):
- 安装后重启 dsh;
- 打开 设置 → 插件 → dsh-ventus-plugins(Ventus 设置页);
- 点击右上角更新按钮,确认后打开安装窗口;
- 勾选要安装的子插件(主题 / 侧边栏 / 桌宠 / 搜索 / WebUI 工具链等),点「更新选中项」;
- 更新完成后重启 dsh 生效。
只对勾选项执行安装,未勾选的保持不装;已装插件在有新版时标记「可更新」,同样按勾选更新。
完整安装
全部 14 个子插件一次装齐:
dsh plugin --profile web add github:mmzm0808/dsh-ventus-plugins
两种形态是同一个插件(包名均为
dsh-ventus-plugins)。最小包补装后即变为完整整合包,之后继续用设置页的更新按钮增量更新。
本地开发安装
dsh plugin --profile web add "<本仓库本地绝对路径>"
- 仓库已提交完整
lib/构建产物与vendor/依赖,安装无需执行构建脚本(pnpm ≥10 的 allowBuilds 门禁不影响本插件) - 安装后重启 dsh(新 bundle 层在启动时加载;client 改动经 HMR 即时生效)
- 插件列表 / 设置入口 / 主题选择器均显示为
dsh-ventus-plugins
📖 使用
| 功能 | 入口 |
|---|---|
| 用量悬浮球 | 右侧悬浮球:拖动可上下移动,左半屏自动吸附;点击展开面板 |
| 用量面板 | 悬浮球点击 → 余额 / 消费 / Tokens / 分模型用量 / R0 / 趋势 / 登录 / 截图 |
| 终末地主题 | 设置 → 外观 → 主题 → dsh-theme-endfield;主题设置卡内:等高线开关、水印开关、侧边栏表面(透明/玻璃/纯色+调色盘)、圆角/直角、hero 贴底 |
| 右侧重栏 | 对话区右上角面板按钮:文件 / 终端 / Git / 浏览器标签 |
| 搜索 | 输入框 @ 或斜杠命令触发 ventus-search provider |
| 桌宠 | 右下角虎鲸;右键菜单配置 |
| 子代理进度 | 发起可多阶段拆分的子代理任务(AI 按 skill 约定输出 progress-json),悬停对话底部子代理条目查看分段进度条 |
| 模组注入 | 设置 → dsh-ventus-plugins → 注入管理:拖入本地插件包即热加载 |
🔑 配置
所有子插件设置集中在 设置 → 插件 → dsh-ventus-plugins(原各插件设置卡全部保留)。
常用持久化键(localStorage):
| 键 | 默认 | 说明 |
|---|---|---|
dsh-theme-endfield-enabled | 1 | 主题总开关 |
dsh-theme-endfield-contour | 0 | 等高线背景 |
dsh-theme-endfield-watermark | 1 | ENDFIELD 水印(hero 页) |
dsh-theme-endfield-watermark-persist | 0 | 水印在非 hero 页也显示 |
dsh-theme-endfield-sidebar-surface | glass | 侧边栏表面:glass / solid / 自定义 |
dsh-theme-endfield-hero-dock | 1 | hero 贴底(usage 插件设置项) |
dsh-theme-endfield-radius | square | 圆角/直角 |
dsh-theme-endfield-sidebar-solid-color | — | 纯色表面自定义颜色 |
🏗️ 架构(工程化说明)
整合包由四层组成:
dsh-ventus-plugins/
├── package.json # 单一包名;dsh.client.platform=web;34 个第三方依赖并集
├── cordis.patch.yml # bundle patch:permission presets(auto 权限项)+ insert 行
├── lib/
│ ├── index.js # host 聚合:逐个 ctx.plugin 挂载 10 个子插件(agent-teams 除外)
│ └── client.js # client 合并 bundle(build-client.mjs 生成,勿手改)
├── vendor/ # 14 个子插件的运行时产物(自包含,无外部插件依赖)
│ └── node_modules/ # junction 依赖链:第三方 → profile node_modules
└── scripts/
├── build-client.mjs # client 合并构建脚本
├── cdp.mjs # CDP 调试工具(开发用)
└── extract-dsu-css.mjs # CSS 常量提取(调试用)
host 聚合(lib/index.js)
const subPlugins = {
'dsh-better-sidebar': require('../vendor/dsh-better-sidebar/lib/index.js'),
// ... 14 个子插件
}
export function apply(ctx) {
for (const [id, plugin] of Object.entries(subPlugins)) {
ctx.plugin(plugin, subConfigs[id]) // cordis 按子插件自身 name 注入默认配置
}
}
- 子插件自带 name/inject/Config,
ctx.plugin挂载时按原插件语义解析——配置、服务依赖、持久化与多插件时代完全一致 subConfigs只覆盖需要显式值的插件(如dsh-ua-relay的 targets)- 容错动态加载:子插件产物缺失(最小安装 / 选择性更新只装了一部分)时打印 warning 并跳过, 其余照常挂载——包形态可从「最小」平滑升级到「完整」
client 合并(lib/client.js + scripts/build-client.mjs)
DSH 按包加载 /plugins/<id>/client.js,bundle 契约是 window.__ModuleLoader__.load({ id, factory })。
合并策略(不解析 / 不重写压缩代码):
- 把每个子 bundle 的
load调用原样内嵌进聚合 factory——执行时子 factory 注册进 loader(与多插件时代等价); - 聚合
apply用 loader 的require(id)按子 id materialize,依次调用其apply。
选择性构建(最小包 / 用户端更新场景):
VENTUS_ENTRY_FILTER=dsh-deepseek-usage:只内嵌白名单内的子插件(min 分支构建用);- 缺失产物的子插件自动跳过(用户端选择性更新后重建时本机只有部分子插件);
STAMP_SHA=<sha>:直接内嵌指定提交 sha 的版本戳(用户端更新后写入远程 sha), 不设时取当前 git HEAD(开发构建路径,与 stamp-commit.mjs 等效)。
关键点(踩坑记录):
- 服务注入用短服务名:聚合 bundle 的
exports.inject必须是子插件服务依赖的并集,且用短服务名(slots/sessions/connection/workspaces/locale/modules/settingsScope/conversationEvents/remote/layout)。写包名会永远 pending;留空则子 apply 因缺属性注入抛 "cannot get property without inject"。 - 变量作用域天然隔离:每个子 bundle 有独立 factory 函数作用域,同名顶层
const(如NS)互不冲突,node --check可验证。 - 样式归属必须显式:子插件手写
<style>要带data-plugin标记;theme 的幂等清理只认自己的专属标记(data-endfield-css),否则会误删其他插件的样式(实测事故:usage 的data-dsu-cssstyle 被 theme 清理逻辑删除,悬浮球变纯文本)。
patch 层(cordis.patch.yml)
permission.presets段:auto 权限项的定义(整段替换语义,必须完整重述官方默认 + auto 扩展);insert段:本插件挂载行。
vendor 依赖链
聚合包在 DSH_Anything 目录,第三方依赖无法从 profile 解析,故在
vendor/node_modules/ 建立 junction 链:第三方包 → profile node_modules,
@deepseek-ai/* → 扁平 fallback。
🧑💻 开发
# 改某个子插件源码后:
# 1. 在该子插件仓库构建(如 dsh-deepseek-usage: npm run build:client)
# 2. 同步产物到 vendor:
cp ../dsh-deepseek-usage/lib/client.js vendor/dsh-deepseek-usage/lib/client.js
# 3. 重建合并 bundle:
node scripts/build-client.mjs
# 4. 浏览器刷新即生效(client HMR);manifest/patch 变更需重启
min 分支维护
min 分支是同一插件的最小形态(只含用量监测),安装命令
dsh plugin --profile web add github:mmzm0808/dsh-ventus-plugins#min。
更新 min 分支内容(通常只在 usage 产物变化时):
git checkout min
# 同步本机 usage 产物(构建后)到 vendor/dsh-deepseek-usage/
cp -r ../dsh-deepseek-usage/lib/* vendor/dsh-deepseek-usage/lib/
# 只内嵌 usage 重建聚合 bundle(stamp 自动取 min 分支 HEAD)
VENTUS_ENTRY_FILTER=dsh-deepseek-usage node scripts/build-client.mjs
git add -A && git commit -m "sync: usage 产物" && git push origin min
git checkout master
验证矩阵
node --check lib/client.js:合并 bundle 语法(多 bundle 平铺冲突检测)- 启动后浏览器检查:插件列表只有一个
dsh-ventus-plugins;子插件 UI(悬浮球/侧边栏/主题)全部就位 dsh --profile web --dump-config:permission presets 与 insert 行生效- 会话日志(usage-stats 读取)无
corrupt session log报错
🐛 已知问题与修复记录
| 问题 | 根因 | 修复 |
|---|---|---|
| usage 悬浮球变纯文本、无交互 | theme 的 insertCss 幂等清理用 style[data-plugin=...] 泛化选择器,误删 usage 的 data-dsu-css style | theme 清理改用专属标记 data-endfield-css;usage style 自带 data-plugin=dsh-deepseek-usage |
| 侧边栏多出「用量/技能」按钮 | usage-skill 注册了 sidebar.footer.action 与官方技能按钮重复 | 该 slot 注册被禁用(字典保留) |
| agent-teams 404 轮询风暴 | 用户禁用 agent-teams 后 client 仍被内嵌并轮询 state 路由 | 从 CLIENT_ENTRIES 移除 |
| auto 权限项消失 | 聚合 patch 未迁移原插件的 permission.presets.auto 段 | 并入 cordis.patch.yml |
| 三点菜单浮窗导致侧边栏收起 | pointInside 纯几何判断,portal 浮窗不在侧边栏矩形内 | pointOverSidebarPopup:elementFromPoint 命中 Radix popper / menu / dialog 时只保活不折叠、不展开 |
| ENDFIELD 水印在新会话页对齐整窗 | hero 水印跟随 headline 中心,headline 宿主宽度随页面变化 | 改用 centerCol(对话区)中心对齐;headline 匹配放宽(hash 漂移免疫) |
| 有历史对话页水印位置不对(fixed 浮视口) | headline 在有消息页也存在,hero 模式误判 | data-chat-flow 存在时强制 persist(对话区背景层,随对话区布局) |
| 会话日志 seq gap / tool source / surface 校验失败 | 历史版本写入重复 seq、空 callId、replace 引用失效 | scripts/repair-session-log.mjs:重编号 seq + 重写事件内 seq 引用(surfaceOp/sourceEventSeqs)+ 补 source.callId,scanLog + foldSurface 双验证 |
| tool-summary 抽屉点击后内容变纯文本 | dsh-tool-summary-styles 等无主 <style> 启动早期被按插件清理逻辑误删 | 全部运行时 style 注入批量带 data-plugin=@dsh-external/dsh-webui(10 处) |
| ventus-progress skill 未安装 | 整合 vendor 缺 skills 目录 + DSH_HOME 未注入 | vendor 补齐 skills;installSkill 加 ~/.dsh fallback |
| 页面被 Edge 标记为英语 | 官方 index.html 声明 lang="en" | usage apply 运行时改回 zh-CN |
| 底栏缓存命中恒 .00 伪精度 | 由官方取整值反解区间中值,中值常落在整数 | host 按会话真实 token 分量算命中率(真两位小数),client 按官方文本配对注入(v4,配不上保留官方值) |
| 外部链接点击无反应(点不动) | 点击被静默吞进侧边栏,无任何反馈 | 链接点击弹双按钮(新标签页 / 侧边栏),产物 chips 弹「侧边栏编辑器 / 系统打开」 |
| 标题点击重命名未生效 | 官方标题是 crumbs 导航的 disabled 按钮,slot 文本节点选择器匹配不到 | 锚定 [data-conversation-scroll] 前兄弟 + pointerdown 矩形命中(disabled 按钮不派发 click) |
📜 License
MIT