npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

seminar-copilot-dsh-plugin

v0.3.1

Published

DeepSeek Harness Web GUI plugin for Seminar Copilot: one-click local seminar recording, ASR backend settings (local MLX Whisper / Aliyun Bailian), auto-start of the dev stack.

Readme

seminar-copilot-dsh-plugin

把 Seminar Copilot 接入 DeepSeek Harness Web GUI 的外部动态插件(宿主侧 + 客户端)。

功能

  • 在右侧栏「开始」引导页的「新建终端」下方新增「会议录音」入口(guide order 30)。
  • 点击后打开嵌入 http://127.0.0.1:5173(Vite dev server)的侧栏 tab。
  • 自动启动:服务未运行时,客户端请求插件宿主侧的 127.0.0.1:8766 控制端点, 由 DSH 主进程拉起 scripts/dev.sh(FastAPI 8765 + Vite 5173),页面显示启动 进度并轮询就绪后自动加载 iframe;控制端点不可用时回退为手动命令提示。
  • 识别设置面板:在线视图右上角「识别设置」可在本地 Whisper 与阿里云百炼 两种 ASR 后端间切换,填写 DashScope API Key、识别模型与语言,支持 「保存并重启」。配置保存于 ~/.dsh/seminar-copilot/config.json(0600), 由宿主在拉起 dev.sh 时以进程级环境变量注入——不注册全局环境变量, 不写 shell 配置;API Key 在任何接口中只返回掩码。
  • keepMounted: true:录音中的 iframe 在切换 tab / 会话 / 折叠侧栏时保持挂载。

安装

前提:已克隆 seminar-copilot 仓库并完成其前后端依赖安装(见仓库 README)。

从 npm 安装到 DSH web profile:

pnpm dsh plugin --profile web add seminar-copilot-dsh-plugin

首次使用打开「会议录音」tab → 右上角「识别设置」,把「Seminar Copilot 仓库路径」 改为你机器上仓库克隆的绝对路径,保存即可。之后打开 tab 会自动拉起服务。

本地开发(file: 依赖是拷贝而非符号链接,修改后需重新同步):

pnpm dsh plugin --profile web add file:/path/to/seminar-copilot/dsh-plugin
cp dsh-plugin/{index.js,client.js,package.json} ~/.dsh/profiles/web/node_modules/seminar-copilot-dsh-plugin/

新增/移除插件包或宿主侧(index.js)变更需重启 Web GUI(dsh-web.sh restart)生效。

配置项(~/.dsh/seminar-copilot/config.json)

| 键 | 取值 | 说明 | | --- | --- | --- | | asrBackend | mlx(默认)/ bailian | 识别后端 | | dashscopeApiKey | 字符串 | 百炼模式的 DashScope Key,仅存本地、掩码展示 | | bailianModel | paraformer-v2(默认) | 百炼识别模型 | | asrLanguage | auto / zh / en | 识别语言 | | repoPath | 绝对路径 | seminar-copilot 仓库克隆位置 |

注入后端进程的环境变量(仅当对应功能启用时):SEMINAR_ASR_BACKEND 始终注入; 百炼模式额外注入 DASHSCOPE_API_KEY、SEMINAR_BAILIAN_MODEL、 SEMINAR_ASR_LANGUAGE(非 auto 时)。进程环境变量优先于仓库 .env.local (dev.sh 自 0.3.0 起按「补默认」方式加载该文件)。

宿主侧控制端点(127.0.0.1:8766,仅 loopback)

  • GET /status → { backend, frontend, managed, config }:前后端健康状态与公开配置。
  • POST /start → { result }:幂等启动;已在运行的外部实例直接收养,不重复拉起。
  • POST /stop / POST /restart:停止 / 重启插件拉起的实例;外部启动的实例返回 409。
  • GET /config → 当前配置(API Key 只返回掩码)。
  • POST /config → 更新配置;dashscopeApiKey 缺省/空串=保持不变,null=清除。

dev.sh 以独立进程组 detached 启动,日志写入 /tmp/seminar-copilot-dev.log; DSH 宿主退出时按进程组 SIGTERM 回收自己拉起的进程。

结构

  • package.json:声明 main(宿主侧)与 exports["./client"](浏览器侧), 以及 dsh.bundle.patch / dsh.client.platform。
  • cordis.patch.yml:向 cordis 插件树插入一行(id seminar-copilot)。
  • index.js:宿主侧——控制端点 + 配置持久化与进程级注入 + 按需拉起 dev.sh。
  • client.js:浏览器侧模块,经 window.__ModuleLoader__.load 注册, React 与 @deepseek-ai/dsh-client-ui-primitives 由宿主外部化提供。

约束

  • 后端 CORS 仅允许 5173 源,因此服务健康探测使用 mode: "no-cors"(不透明响应); 8766 控制端点是插件自己的服务,主动设置 Access-Control-Allow-Origin: *。
  • iframe 需要 allow="microphone";5173 localhost 属于安全上下文,麦克风可用。
  • 百炼模式下录音片段会上传到阿里云识别,请在设置面板确认隐私提示后再启用。
  • 8766 仅监听 loopback、无任何鉴权:本机任何进程都能触发启动与改配置。 这与本地优先的定位一致,但不要把 DSH 暴露到局域网(--host 0.0.0.0)。