@vlln 的 dsh 插件 monorepo

August 29, 2026 · View on GitHub

本仓库是 @vlln 的 dsh 插件 monorepoTypeScript 主语言):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-taskboardAIDO(爱做)· 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-slidesFrontend Slides 幻灯片制作(纯 skill,无 Web UI):注册 frontend-slides skill + frontend_slides 工具(skill 内容取自工作区 frontend-slides/ 仓库,副本不入库)
packages/noiz-voice@vlln/dsh-plugin-noiz-voiceNoizAI 语音套件(纯 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 依赖);若 版本未刷新,先 removeadd 即可。
  • git 托管依赖若带 prepare 脚本,pnpm 首次安装会拦截构建,需在 profile 的 pnpm-workspace.yamlallowBuilds 白名单(CLI 会打印具体指引)。本仓库 产物已入库,正常不会遇到。
# 在 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.tspnpm 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 生效。

文档