@vlln 的 dsh 插件 monorepo
August 29, 2026 · View on GitHub
本仓库是 @vlln 的 dsh 插件 monorepo(TypeScript 主语言):packages/* 下每个
目录是一个独立的官方 bundle 插件包(host 组合行 + Node half + 浏览器 half),各自可
独立安装、移除、分发。
注意:只有「已入库」的 4 个包开源、可远程安装;其余包在 .gitignore 中明确
排除,仅作者本地使用,不提交、不分发、不接受安装咨询。
插件清单
已入库(开源,可远程安装)
| 包 | 说明 |
|---|---|
packages/vscode-open(@vlln/dsh-plugin-vscode-open) | 会话头部「VSCode」按钮:用本机 VSCode 打开当前会话所属工作区 |
packages/better-sidebar-services(@vlln/dsh-plugin-better-sidebar-services) | 服务启动器 better-sidebar 页签:自动扫描当前会话工作区发现 NodeJS/Java 服务(浅层,不扫依赖树)+ dsh.services.json 项目描述文件(复杂项目显式声明 + 按组一键启动),树形快捷方式一键启停 + 实时日志查看 |
packages/better-sidebar-xueqiu(@vlln/dsh-plugin-better-sidebar-xueqiu) | 雪球行情 better-sidebar 页签:左栏入口按钮 + 行情/热榜/搜索/快讯/K线详情 + 一键 Chrome 抓取登录 Cookie;宿主数据层带请求闸门/TTL 缓存/Cookie 自愈 |
packages/taskboard(@vlln/dsh-plugin-taskboard) | AIDO(爱做)· AI 任务清单看板:工作区自动同步为项目 + 分类过滤 + 七状态任务生命周期 + 乐观版本 CAS + 人类专属验收 + 自动派工 Worker(执行模式按需选择,cwd 跟随工作区)+ Worker 会话分组/命名;浏览器 half 为 TSX 声明式 UI(严格类型,附 jsdom 内存浏览器冒烟测试) |
本地私有(.gitignore 排除,不入库、不分发)
以下包只能由作者在本机以 live link 方式安装使用,不出现在远程安装中:
| 包 | 说明 |
|---|---|
packages/hello(@vlln/dsh-plugin-hello) | 最小双半示例:验证「安装 → 生效 → 浏览器渲染」全链路 |
packages/frontend-slides(@vlln/dsh-plugin-frontend-slides) | Frontend Slides 幻灯片制作(纯 skill,无 Web UI):注册 frontend-slides skill + frontend_slides 工具(skill 内容取自工作区 frontend-slides/ 仓库,副本不入库) |
packages/noiz-voice(@vlln/dsh-plugin-noiz-voice) | NoizAI 语音套件(纯 skill,无 Web UI):注册 tts/characteristic-voice/sound-fx/speech-to-text/video-translation/daily-news-caster/chat-with-anyone 七个 skill + noiz_voice 工具(本地 Kokoro 免费合成,模型在 voice-output/) |
packages/kosho-tunnel(@vlln/dsh-plugin-kosho-tunnel) | 服务穿透(kosho-tunnel):独立 frpc 实例管理多条内网穿透隧道(配合面板型 frps 登记的隧道名+端口),支持热更新(admin reload)与逐隧道状态/设置页 UI;与 kosho-gate 完全隔离 |
快速开始
前置条件:Node.js ≥ 20、已安装 dsh CLI。
远程安装(使用者,无需克隆仓库)
上表「已入库」的 4 个包,构建产物(.dsh-plugin/)已提交仓库,远程安装即装即用:
无需克隆仓库、无需本地构建,也不会触发 prepare 构建授权。monorepo 按「仓库 +
子路径」挑包安装:
# 例:安装 taskboard。spec 含 # 和 &,shell 里必须加引号
dsh plugin --profile web add "github:xiao-an-c/vlln#main&path:packages/taskboard"
# 换 path: 末尾的目录名即安装其他已入库包,例如雪球行情页签
dsh plugin --profile web add "github:xiao-an-c/vlln#main&path:packages/better-sidebar-xueqiu"
安装后 dsh 会自动把带 dsh.bundle 声明的包并入 dsh.profile.bundles 层栈
(见 ~/.dsh/profiles/web/package.json),无需手改组合文件,重启 web 生效。
- 升级到
main最新:重新执行同一条 add 命令(pnpm 重新解析 git 依赖);若 版本未刷新,先remove再add即可。 - git 托管依赖若带 prepare 脚本,pnpm 首次安装会拦截构建,需在 profile 的
pnpm-workspace.yaml加allowBuilds白名单(CLI 会打印具体指引)。本仓库 产物已入库,正常不会遇到。
本地开发安装(live link,源码改动即时可见)
# 在 monorepo 根执行;`link:` 使 profile 的 node_modules 与源码保持符号链接
dsh plugin --profile web add link:./packages/hello
安装后 dsh 同样自动并入 bundle 层栈,无需手改组合文件。适合开发本仓库插件:
改源码 → pnpm build → 刷新页面/重启 web 即见效果,无需反复重装。
「本地私有」的 4 个包不入库,只能用这种方式安装。
常用命令
pnpm install # 安装 devDependencies(typescript / @deepseek-ai/cordis / @types 等)
pnpm typecheck # tsc --noEmit 类型检查
pnpm build # 编译所有包:src/ → .dsh-plugin/ 产物(node + client 两个 half)
pnpm build:node # 只编译 Node half
pnpm build:client # 只编译 client half
pnpm check # 产物新鲜度校验(CI 用,手改生成物会被拒绝)
生效规则(见 docs/bundle-contract.md)
| 改动面 | 生效方式 |
|---|---|
Node half(src/index.ts) | pnpm build + 重启 web(ESM 缓存) |
client 源码(src/client/) | pnpm build + 刷新页面即可(assets 路由按请求读盘) |
| 新增/移除插件 | 重跑 dsh plugin ... add/remove 后重启 web |
移除
dsh plugin --profile web remove @vlln/dsh-plugin-taskboard
对远程安装与 live link 安装同样适用,移除后重启 web 生效。
文档
- docs/bundle-contract.md —— 官方 bundle 插件契约 + TS 约定(已核实)
- docs/AGENTS.md —— 本仓库开发约定