DSH Plugins Marketplace

DSH Plugins

Plugins

/

Vision & Multimodal

/

dsh-meeting-room

d

dsh-meeting-room

Manifest valid

Meeting notes for dsh: one meeting per conversation, transcribed and speaker-separated on the machine itself, with points, assignments, handwritten notes, reviews and monthly scores in the same panel.

UI (client)hasBundlePatch

dsh-meeting-room · 会议记录

版本 0.1.0-preview.6(预览版)

DeepSeek Harness 的会议插件:本机转写、发言人分离、要点与工作安排、手写笔记、复盘与纪要。

音频不出本机;转写默认用随 DSH 安装的 SenseVoice,手写识别用随插件安装的本地小模型。 模型可以在「会议管理 → 模型」里换(本地更强模型,或显式同意后的云端模型)。不登录也能写字、识别、建任务、出纪要。

本版新增(0.1.0-preview.6)

  • 开始页多一张「开始会议」卡片:和工作区文件/新终端/浏览器排在一起,点一下自动新建会话、 切到该会话、打开会议面板并开始录音,Agent 同时按 meeting-scribe 开工;已在录音时再点只把面板切到前台。
  • meeting-scribe 可以不带参数开始:说一句「开始记录」即可,Agent 自建会议、请求面板开录, 每 5 分钟整理要点与工作安排,第一轮用前 5 分钟内容补会议名称,停录后收尾并删掉提醒。
  • 面板点「开始记录」也会让 Agent 开工;起名框写明“可以留空”,留空则稍后自动命名。
  • 「模型」页统一管本地与云端:上半是本地模型(按语音识别/发言人声纹/手写识别分组), 下半是云端模型;顶部新增**「识别方式」三档**——只用本地(默认)/云端优先(失败降级本地)/ 只用云端(不降级,失败报错)。设置页因此收成五个 tab。
  • 断句与发言人更稳:0.7 秒停顿 + 最长 12 秒切句,碎片自动并句;短插话不新建声音, 短句带上文比对;每行最多多少字可调(默认 60)。
  • 停止录音的收尾提示:右下角「正在收尾… 剩余 N · 已等待 Ms」不自动消失,直到录音真正停止、 会议保存完成才撤;失败立即撤掉并报错。
  • 评分输入不再被往返打断、评分表读屏可用;记录页多一行「上次会议:名称 · 摘要」。

自动化冒烟 node smoke.mjs:206 项全绿(无需麦克风与模型,用临时数据目录)。

设计文档:

  • DESIGN.md——「会话 ↔ 会议」与「登录用户 ↔ 会话」的完整关系设计;
  • FEATURES.md——会议类型(晨会/复盘会/例会/总结会)、跨会提炼与月度评分的增量功能设计(含实现进度);
  • MODELS.md——语音与发言人识别增强、云端模型接口、可安装更强的本地模型 (进度表:M1–M4 已完成,重叠语音、热词注入、流式中间结果等条目按“受限/未做”如实标注);
  • TESTING.md——发布前系统化测试清单;
  • CHANGELOG.md——发布线每个预览版修了什么(装哪个版本先看它)。

分支约定:master 只放发布状态(发布由标签标记,如 v0.1.0-preview.6); 新功能在 develop 上做,稳定后再合回 master 并打新标签。

⚠️ 开发本插件时,工作目录必须停在 develop。 profile 里的插件目录通常是指向本仓库的 Junction/硬链接(例如 ~/.dsh/profiles/<名字>/node_modules/dsh-meeting-room → 本目录), 因此你切到哪个分支,DSH 加载的就是哪个分支的代码: 切到 master(只含发布修复)会让运行中的插件看起来"退回了发布版"(模型页签、云端设置都不见了), 而宿主半边每个进程只加载一次 —— 切回 develop 后还必须完整重启 DSH 才生效 (客户端半边刷新页面即可)。这个坑真实发生过,所以写在这里。

反馈

预览版就是要挑毛病的:发现任何问题、或想到任何改进意见,都请直接发邮件 —— 杨道泉 yangdaoquan@qq.com

信中麻烦附上:插件版本(面板「更多 → 关于」里可查)、DSH 版本、操作步骤、 以及面板上显示的错误文字或 $DSH_HOME/meeting-room/boot.log。有截图更好。

安装

推荐用 Harness 自己的安装入口(Plugins 页,或 install_bundle / dsh plugin add), 因为它会一次把两件事都做对:写进 profile 的 dependencies,同时把包名追加进 dsh.profile.bundles。

dsh plugin --profile <你的profile名> add dsh-meeting-room

包已发布在 npm(dsh-meeting-room,国内自动走 npmmirror 镜像)。要求 DSH ≥ 0.2.0 (engines.dsh,不满足会被拦住)与 Node ≥ 20。 当前是预发布版,latest 与 preview 两个 tag 都指向它,所以上面这条按包名安装即可; 以后要用预发布线则写 dsh plugin add dsh-meeting-room@preview。

为什么是两件事(手工安装务必看)

插件是否被加载,取决于 profile package.json 里的 dsh.profile.bundles,不是 dependencies。 DSH 的插件管理器就是这么工作的(@deepseek-ai/dsh-plugin-manager 的 reconcile()): 它读取 after.dsh?.profile?.bundles,把新装的包追加进去;而且只有清单里声明了 dsh.bundle 的包才算"profile 层",否则 DSH 会打印一行警告:

dsh: warning: <包名> declares no dsh.bundle — installed as a plain dependency, not a profile layer

只用 pnpm add(或任何只写 dependencies 的方式)装,插件不会被加载。 手工安装请补齐第二步:

// <profile>/package.json
{
  "dependencies": { "dsh-meeting-room": "0.1.0-preview.6" },
  "dsh": {
    "profile": {
      "bundles": ["dsh-meeting-room"]   // ← 这一项才决定它被加载
    }
  }
}

装完自检(三件都过才算装好)

# 1) 名字在 bundles 里
grep -n 'dsh-meeting-room' <profile>/package.json      # 应出现在 dsh.profile.bundles 中
# 2) 这一层真的进了配置
dsh --profile <你的profile名> --dump-config            # 应出现一层 "# == dsh-meeting-room"
# 3) 宿主代码齐全(缺 host-*.js 就是装到了旧包)
ls node_modules/dsh-meeting-room/host-*.js             # 应列出 11 个

安装后需要重启 Harness:宿主半边每个进程只加载一次。

安装排错(先看这四条)

  1. 装完必须重启 Harness。宿主半边每个进程只加载一次,不重启就等于没装。

  2. 插件目录里只有几个 .js 文件 —— ...\node_modules\dsh-meeting-room\ 下只看到 index.js、client.js 与两个 worker 等少数文件,却没有 host-*.js,那么宿主半边会在 加载期就失败(index.js 引用了这些兄弟模块),表现是插件整个起不来、也没有 $DSH_HOME/meeting-room/boot.log。

    这是 0.1.0-preview.1 那份包的缺陷:发布清单(package.json 的 files)漏掉了多数 host-*.js,于是打出来的包里没有宿主代码。已修复:请使用 0.1.0-preview.2 或更新的版本 (v0.1.0-preview.2 标签)。本项目还为此加了发布清单守卫(node smoke.mjs 的前几项检查): 它会遍历 index.js 等文件的相对引用,逐条核对是否被 files 覆盖 —— 同类问题不会再漏出去。

    自检一行命令(在插件目录里):

    ls node_modules/dsh-meeting-room/host-*.js   # 应当列出 11 个 host-*.js
    
  3. sherpa-onnx-node 的 peer 警告可以忽略。profile 的 pnpm 通常 autoInstallPeers: false,所以它只被记录、不被安装;插件的转写走 DSH 自带的语音能力 (ctx.get('speechToText') 懒取),缺它只影响转写,其余功能不受影响。 想消除 WARN 可显式安装:

    pnpm add sherpa-onnx-node@1.13.8    # 在该 profile 目录里
    
  4. 插件装上了却完全不生效(Plugins 页里没有它、面板按钮不出现、dsh --dump-config 里 没有这一层)—— 最可能是只装了依赖、没进 bundles:pnpm add 只写 dependencies, 而决定加载的是 dsh.profile.bundles(见上面「为什么是两件事」)。 手工把包名加进 dsh.profile.bundles 后重启即可;用 DSH 自己的安装入口则不会踩到。

  5. 如果「开始记录」要点两次才录上,说明装的还是旧包(宿主路由缺失时,面板曾把探测失败 当成"就绪",于是第一次点击走了注定失败的直录路径)。0.1.0-preview.3 已修: 面板初始不再谎报就绪、404 不再冒充就绪、准备过程对终态与停滞都有明确出口, 并且会直接告诉你「宿主路由未注册……请更新到 0.1.0-preview.2 或更新版本」。

前提

依赖说明
SenseVoice 语音识别由 DSH 安装包提供(sherpa-onnx-node 声明为 peer 依赖,随安装解析;profile 若关闭 autoInstallPeers,缺它只影响转写,其余功能不受影响,见上面「安装排错」第 3 条)
onnxruntime-node随本插件安装,用于手写识别。若安装时 pnpm 提示忽略其构建脚本,Windows x64 上属正常现象,模块仍可加载;其他平台如加载失败,请在该 profile 里 pnpm approve-builds 后重装
pinyin-pro随本插件安装,用于会议术语的同音订正
Python + python-docx仅「导出 Word」需要。优先使用 DSH 运行时自带的 Python;若不含 python-docx,在其中 pip install python-docx。没有 Python 时其余功能不受影响

模型在首次使用时联网下载(不在包内),下载后校验大小与 sha256:

  • 语音转写模型(SenseVoice):由 DSH 的「语音输入」功能提供;
  • 发言人模型(约 28 MB):3D-Speaker CAM++;
  • 手写识别模型(约 77 MB):ModelScope DAMO 手写行识别。

自动下载:插件会主动检查这些模型是否就绪。语音模型未就绪时:

  • 打开会议面板即显示提示,面板内可直接点击「开始下载模型」,进度实时显示;
  • 点「开始记录」会弹出对话框,提示先下载模型(此时录制无意义);
  • 若「语音输入」功能尚未启用,点击「立即下载模型」会自动启用语音输入功能并下载模型,全程无需离开面板;
  • 下载中关闭面板再打开,会自动续读进度直到就绪。

下载源为 ModelScope 与 GitHub 代理;若全部不可达,对应功能会明确报错,其余功能不受影响。

麦克风权限:录制需要系统允许 DeepSeek Harness 访问麦克风。若点击「开始记录」后未进入录制状态,请到系统「设置 → 隐私 → 麦克风」确认已授权,并确认没有其它应用占用麦克风。

功能

会话与会议

  • 一会话、一会议(1:1):新建会话的那一刻就建好它的会议记录;录音、要点、任务、 笔记、文档全部写进同一份,换会话即换会议,彼此独立;
  • 子代理 / 团队成员等代理会话不单独建会议,它们的一切活动记到所属根对话的会议里;
  • 会话被分支(fork)时,新分支拿到自己的一份新会议;
  • 会话销毁时:空会议直接回收,不留空文件;有内容的会议保留为历史记录,可在 「会议管理」里回放或一键打开原会话;
  • 录音中的会话不能被静默归档;强制归档会在停止录音(文件补全后保存)之后进行;
  • 会议记录是本机产物:归本机会话所有,与登录账号无关,换账号登录不影响任何记录。

会议类型、周期与命名

  • 点「开始记录」先确认这场会议:名称、我的角色(主持人 / 参会人 / 旁听三个按钮, 右侧「其他」可自己写角色)、会议类型(通用 / 晨会 / 复盘会 / 例会 / 总结会);
  • 选类型会自动把标题填成「类型 · 日期」,也可自己改;不想命名就「暂不命名并开始记录」;
  • 周期由类型派生(日 / ISO 周 / 月),供跨会查询使用:晨会查昨天复盘、复盘核销当天晨会、 例会汇总本周、总结会统计本月评分;
  • 晨会会自动提示昨日复盘的遗留事项(条数 + 一键派活)。

打开会议与历史会议

  • 动作行「打开会议」是带搜索的下拉:按名称 / 日期 / 类型 / 实录关键词即时过滤, 滚动到底自动加载更多,每行两行显示(名称 + 摘要),点名称或整行即打开;
  • 查看历史会议时面板是只读的(不会改动历史内容),可「打开原会话」或「返回本会话」;
  • 切换前若当前会议有内容:3 秒倒计时自动保存后打开,也可「立即保存并打开」或 「不保存并打开」。

会议实录

  • 自动跟随最新发言:新 cue 到达自动滚到底;你往上滚即取消跟随,并出现「回到最新」;
  • 多条实录合并为一个任务:勾选若干条 → 「合并为任务」,按顺序用「;」连接成一个草稿任务;
  • 点某条实录从该句开始播放;每条右侧「转为任务」;「更多」可复制 SRT / 纯文本 / 给模型订正的请求。

录制与转写

  • 麦克风采集 → 停顿切分(0.7 秒静音、最长 12 秒一段)→ 本机 SenseVoice 转写;
  • 一句话就是一行:停顿切出来的碎片(「我们下周」/「把方案交上来」)在发言人判出后 自动并成一句,直到句号、问号或感叹号才断开;说话人一变立刻另起一句;
  • 发言人识别默认开启:每条讲话标注说话人;会议结束时对整场重聚类,同一声音统一编号; 很短的插话(<1.5 秒)只做「像谁」的匹配、不新建声音,匹配不上就沿用上一位, 避免一声「对」多出一个 S2;
  • 发言人命名:把 S1/S2 换成真实姓名;姓名在所有输出(实录、SRT、Markdown、纪要、给模型读的文本)生效,且会终重聚类后跟着声音走。

手写笔记

  • 面板的「手写笔记」按钮开合手写板(页签已取消,只剩手写这一种);
  • 本地手写识别:离线、约 43 毫秒一行、多行自动分行;
  • 圈选 / 轻点选字 / 长按开始圈选;选中后可「识别选中」或直接「转为任务」;
  • 识别结果按行各给一个「转为任务」,多行笔记可逐条建任务;
  • 「保存为图片」把整页存进会议记录;不录音也能写笔记、识别与转任务。

要点、工作安排与纪要

  • 页签里可直接增、改、删要点与任务(类型、内容、负责人、时限、优先级);
  • 负责人可从人员名册与已命名发言人里搜索选择;时间可选常用档位或精确日期时间;
  • 任务与评分在人工确认前都是草稿,且只有已确认任务会被推送;
  • 也可让 Agent 依据实录写:在对话里说一句,它用 meeting_write 落库(草稿);
  • 会议纪要有自己的页签:「生成纪要」出 Markdown、「导出 Word」出 .docx, 两者都会弹出浏览器的下载保存对话框,纪要同时留在会议里可随时打开。

复盘

  • 角色在「开始记录」的对话框里选:主持人 / 参会人 / 旁听三个按钮,或「其他」里自己写;
  • 「复盘会议」把整场实录发进当前对话,按角色给出关注点,要求模型只依据实录、标注不确定处,产出可存档文档;
  • 复盘文档通过工具写进会议记录,在面板「会议纪要」页签里可直接查看。

评分(月度总结会)

  • 类型为「总结会」时,面板多出评分页签;
  • 可从本月任务统计预填完成率,再逐人打分:课时、完成率、工作质量、学习参与,并写亮点、待改进与依据;
  • 总分按权重计算(质量 0.4 / 完成率 0.4 / 学习 0.2),一行一人;
  • 可导出 CSV 与 Excel;分数在人工确认前是草稿。

术语与纠错

会议术语每行一条,三种写法:

写法作用
错词=正确词字面替换
陈一鸣同音订正:听到「沉一明」也会改成它
*李连单字也按同音订正(单字容易误替换,只在对某个姓氏有把握时用)

原始转写永远保留:订正只写入 revised,界面、SRT、Markdown、纪要一律「订正优先、原文兜底」,鼠标停在句子上可看原文。

需要按上下文统一人名与错字时:用「更多 → 复制给模型订正」把实录发给模型,或直接让 Agent 用 meeting_revise 写回订正——每次订正都会留下订正对照,原文仍可追溯。

会议术语的编辑入口在「更多 → 会议术语」(内容与本机术语表同一份,边打字边保存)。

「更多 → 关于」显示本机实际安装的版本号、作者与邮箱,并可直接发邮件反馈问题或建议。

模型(会议管理 → 模型)

识别用哪个模型是数据,不是写死的:

  • 内置目录就是一直以来的两个固定模型(3D-Speaker CAM++ 声纹、DAMO 手写行识别), 文件、大小、sha256、落盘目录都与以前一致,所以升级不会动你的现有安装;

  • 想换更强的模型:下载并安装(边下边校验大小与 sha256,失败不留半个文件)、 从本地文件导入(离线机房、内网镜像、自己训练的模型都行)、启用、删除; 没装好或校验不通过不允许启用 —— 界面不会让你启用一个跑不起来的模型;

  • 自己加模型:编辑 $DSH_HOME/meeting-room/models.json(kind/来源与镜像/文件名+大小+sha256/ 目录/语言/说明/许可),页签里会列出来;写坏了会在页面上明确报错,不会被静默忽略;

  • 会议记录会写下这场用了哪个模型,日后排查识别质量时有据可查;

  • 页面分两栏:本地模型(按用途分组:语音识别/发言人声纹/手写识别,录音不出本机) 和云端模型(OpenAI 兼容 /audio/transcriptions,默认关闭,勾选同意才发音频);

  • 云端一栏顶部是**「识别方式」**,三选一:

    方式行为
    只用本地模型(默认)全程不进网络;即使地址、密钥都填好了也不发请求
    云端优先(失败降级本地)每段先发云端;连续失败 3 次自动回到本地并说明原因
    只用云端(不降级)只发云端;失败时保留本机文字并明确报错,不会悄悄用本机结果冒充云端结果

    下面一行「当前生效:…」显示的是已保存的选择(本地/云端/已回退本地),改了下拉框 还没点保存时不会变——避免“以为已经切到云端”的错觉。

  • 详细设计(云端接口、识别增强、分批计划)见 MODELS.md。

设置页的五个 tab

「会议管理 → 设置」按功能分成五个 tab,一次只展开一组,互不干扰:

tab管什么
推送与机器人推送方式(群机器人/工作通知/两者)、钉钉/企微 Webhook、钉钉应用凭据
实录与切句数字规整开关、最短/最长一段、停顿阈值、静音阈值、每行字数
发言人识别聚类阈值、结束录音时的全量重判、声纹库(忘记/清空)
评分权重质量/完成率/学习三项权重,合计必须 100%
提炼模板四类会议的一键提炼文案(留空用内置)

每个 tab 各有自己的保存按钮,切 tab 不会丢掉未保存的输入。

模型(含云端识别)不在这里,见上一节:所有“用哪个模型识别”的决定都在「会议管理 → 模型」 一页里,先本地、后云端,云端默认关闭。

实录怎么写(数字规整)与怎么切句

「会议管理 → 设置 → 实录与切句」:

  • 把数字、日期、时间写成平时写的样子(默认开):二零二六年十月十九号 → 2026年10月19日、 百分之三十 → 30%、三点半 → 3点半、三千五百元 → 3500元。 这是本机规则、不联网;只改"形状",不碰人名与版本号(版本二点零 保持原样), 而且识别原文永远保留在实录里,可随时对照。规则可逐条开关(接口里的 normalizeRules)。
  • 切句参数:最短一段、最长一段、停顿多久算说完、静音判定阈值、每行最多多少字。 录音在浏览器里切段 —— 停顿超过"停顿多久算说完"就结束一段,最短一段之内的停顿不算切点。 最长一段越小,文字上屏越快、请求越多;越大则相反。保存后立刻生效(作用于正在录的会议)。
  • 按语义断行:一段录音里常有好几句话(语速快时尤其明显)。宿主在识别后按标点拆行: 先按句号/问号/感叹号/省略号断句;一句仍超过"每行最多多少字"时,退到逗号/顿号/分号处拆; 实在没有标点才硬切。云端识别若返回 segments(Whisper 等模型自带语义分段), 直接采用它的分段与时间,比按字符估时更准。拆分后的每一行仍带原发言人与时间范围, 数字规整、术语订正也会跟着落到每一行。
  • 热词说明:本机识别(DSH 的语音能力)不接受热词参数,所以术语表在本机是识别后替换; 只有云端识别(见下节)会把术语表当热词发过去。

发言人识别(阈值、全量重判、声纹库)

「会议管理 → 设置 → 发言人识别」tab:

  • 聚类的严格程度:三个预设(人多 0.7/默认 0.6/人少 0.5)加手动值。 人多时调高(宁可多分几个声音,也不把两个人合成一个);人少、或同一人语气变化大时调低。 改阈值会在保存时自动重启识别进程(阈值是启动参数),界面会明说这一次重启;
  • 结束录音时全量重判(默认开):停录后的补标覆盖整场实录,替换旧的"只补最后 60 条" —— 长会议的标签不容易断裂。关掉它则退回按上限补标,上限可填;
  • 声纹库:给某个声音填上真实姓名时,把它记下来(只存质心向量,不存音频)。 之后同一场或别的会议再听到这个人,「发言人姓名」页会给出 「听起来像 X(相似度)」+「采用这个名字」——建议永不自动写入,必须你确认; 设置页可以逐个「忘记」,也可以清空。库文件是 $DSH_HOME/meeting-room/voices.json。

隐私上:向量从不出现在任何 HTTP 返回里(接口只回姓名与出现次数), 也不会被写进会议记录或工程包(落盘前剥离);「历史会议」视图下不能改姓名, 但可以勾选确认工作安排(见上)。

云端识别(默认关闭)

「会议管理 → 模型」页里的云端模型一栏是云端识别开关(和本地模型同一页,方便直接对比), 顶部「识别方式」决定本地还是云端干活:默认只用本地;选云端优先则失败 3 次自动降级; 选只用云端则失败就报错、不降级。 只有一条规矩:没有你的明确同意,一个请求都不发。

  • 不打开:全部在本机识别,插件对外零请求(这条有自动化测试盯着);
  • 打开:只把当前这一段音频(不是整场录音)发到你填的地址,走 OpenAI 兼容的 /audio/transcriptions(自建网关、各家云都能接),并在请求里声明不保留;
  • 设置页摊开显示音频将发往哪个域名,并有「测试连接」(发 0.1 秒静音,不传任何说话内容);
  • 密钥只存在本机设置里:界面只显示"已设置"、不回显原文,错误消息与日志里一律脱敏为 sk-***, 会议工程包里也不会有密钥(这三条都有测试断言);
  • 每分钟 60 次上限、单次 20 秒超时,连续失败 3 次自动回退本机识别并在设置页与面板说明原因 —— 不静默降级,也不反复重试;
  • 术语表作为热词随音频一起发过去(名字与行话正是通用模型最容易错的);
  • 识别结果会记下用了哪个模型(会议记录里的 asrModel)。

详细设计(声纹云端接口、识别增强、分批计划)见 MODELS.md。

识别不准时按这个顺序调

转写不准、断句不像人话、发言人串号,先把原因分开,不要一起调:

  1. 先补术语表(「更多 → 会议术语」):人名、地名、产品名、缩写写进去。 本机识别会在识别后按同音订正;云端识别会把它当热词随音频发过去。这一步通常收益最大。
  2. 断句:默认 0.7 秒停顿 + 最长 12 秒,识别后再按标点拆成「每行最多多少字」的行; 语速快、一行太长时把这个值调小(如 40),语速慢就调大(如 80)。 如果现场停顿多,把「停顿多久算说完」调到 0.9–1.2 秒,句子会更完整(代价是上屏慢一点)。 句子中间的碎片会自动并句,不需要手动合并。
  3. 发言人:人多时把阈值调高(0.7),人少或同一人语气变化大时调低(0.5); 确认「结束录音时全量重判」是开的;录完再点一次「重新识别发言人」可对整场重判。 叫错名字比不叫名字更糟,所以低于 1.5 秒的插话默认沿用上一位说话人。
  4. 换更强的模型:「会议管理 → 模型 → 云端模型」里勾选同意,填 OpenAI 兼容地址与密钥,例如:
    • baseUrl=https://api.openai.com/v1、model=whisper-1(或 gpt-4o-transcribe);
    • 国内网关:baseUrl=https://api.siliconflow.cn/v1、model=FunAudioLLM/SenseVoiceSmall (以服务商文档为准,接口都是 POST {baseUrl}/audio/transcriptions);
    • 自建 faster-whisper / FunASR 网关同样可用,只要兼容这个接口。 只发当前段音频,请求声明不保留;术语表作为 prompt 发过去;失败 3 次自动回本机。 会议记录会写下 asrModel,事后能对上是哪个模型出的字。
  5. 还不行:把某条实录用「更多 → 复制给模型订正」交给 Agent, 再用 meeting_revise 写回;订正与原文并存,随时可对照。

会议记录助手技能(meeting-scribe)

插件装好后,技能列表里会多一个 meeting-scribe。它把「边开会边整理」串成一条流程:

  • 直接说「开始记录」,或者不带任何参数调用 meeting-scribe,就可以开始,不需要先起名字:
    1. meeting_session {action:"create"} 自己建会(用户说了类型才设类型,周期自动推导);
    2. meeting_session {action:"record"} 请求面板自动开始录音——麦克风仍在浏览器里, 面板几秒内自己开(第一次会询问权限);被浏览器拦住时面板会说明原因;
    3. 建一个 5 分钟循环提醒,每轮用 meeting_read 读新增实录, 用 meeting_write 把要点(决定/信息/风险/待定)与工作安排(负责人、时限、原话) 写回会议,都是草稿,等你在面板确认;
    4. 第一轮(约 5 分钟)按前 5 分钟内容补会议名称(6–16 字):只补空名或 「类型 · 日期」占位,用户起的名字永远不改;
    5. 每轮先查 meeting_session 的 recording:录音一停就补齐剩余内容、 写一份会议小结、自动删除那条提醒,并告诉你共整理了多少条。
  • record 只是请求:它不绕过浏览器权限,也不会替你点停止;你停录后它会在下一轮(≤5 分钟)收尾。
  • 会议名称来不及起时不用停:先录,第一轮会自动补一个能认出来的名字。
  • 开始页的引导列表(工作区文件 / 新终端 / 浏览器那一列)里有 「开始会议」: 一点就开录并打开会议面板,Agent 同时开始整理。
  • 起名框里标题可以留空:点「留空并开始(稍后自动命名)」,头 5 分钟的内容会替你起标题。
  • 直接点面板的「开始记录」也一样:录音开始后,面板会替你把「按 meeting-scribe 开始工作」 这层意思交给 Agent(和你在聊天框里说一句等价),Agent 随即开始整理,不需要再打字。
  • 不想用技能时,直接在对话里让 Agent 整理,效果一样。

保存为文件与导入(会议工程包)

  • 「更多 → 保存为文件」→ 弹出浏览器保存对话框,把这场会议打成一个 zip:
    • manifest.json(格式与版本)、meeting.json(完整记录:实录、要点、任务、评分、 发言人标签与姓名、文档索引)、audio/<录音>、files/<纪要等产出>;
  • 在「会议管理 → 记录」里点「导入会议」选择该 zip,即可导入本机:
    • 导入的是一场新会议(不覆盖已有记录、不挂在任何会话上),内容原样保留, 重名文件自动改名,来源会议记在 importedFrom;
    • 因此可以把一场会议作为工程带到另一台 DSH 上打开。
  • 归档格式由 host-package.js 用 Node 自带 zlib 直接按 ZIP 规范读写,不引入第三方依赖, 任何常规解压工具都能打开。

推送到钉钉 / 企业微信

在左侧「会议管理」页配置:

  • 机器人设置 tab:群机器人 webhook、推送方式(群机器人 / 工作通知 / 两者都发)、钉钉企业内部应用(AppKey / AppSecret / AgentId);
  • 人员管理 tab:名册(姓名 / 手机号 / 钉钉 UserId),可手工维护,也可从钉钉同步——先「读取部门」,再选某个科室或全部组织导入。

推送时按负责人分组、每人一条消息:群机器人用手机号 @人,工作通知私发给该负责人的 UserId。

通讯录同步与工作通知都需要企业内部应用具备相应权限;user/list 返回手机号还需字段权限,没有该权限时只同步到姓名与 UserId。

数据位置

位置内容
$DSH_HOME/meetings/录音 WAV、导出的 SRT / Markdown / Word、手写笔记 PNG
$DSH_HOME/meeting-room/meetings/会议结构化记录(要点、任务、笔记、订正、发言人姓名),重启后自动恢复
$DSH_HOME/meeting-room/webhooks.json机器人地址、企业内部应用凭据、人员名册
$DSH_HOME/speech-to-text/speakers/发言人模型
$DSH_HOME/handwriting/手写识别模型

已知限制

  • 转写是请求/响应式的,不是流式:文字在说话人停顿后成段出现(最长 5 秒一段),没有逐字上屏;
  • 一条 cue 若跨说话人,只记主要的那一位;
  • 手写识别是整行模型:请横向书写、字距不要太挤,连笔过多会影响准确率;
  • 录音只写 WAV;会议结构化记录不自动清理,需自行管理磁盘。

目录结构

路径作用
index.js宿主半边:事件接线(会话↔会议生命周期、归档准入)、路由注册、工具注册(meeting_read / meeting_write / meeting_note_write / meeting_revise / meeting_save_document);业务逻辑在 host-*.js
client.js浏览器半边:采集、会话右侧面板、会议管理页
speaker-worker.js子进程:说话人向量提取与画廊
handwriting-worker.js子进程:本地手写识别
host-package.js会议工程包的打包与导入(ZIP 读写只用 Node 自带 zlib)
smoke.mjs发布前自动化冒烟:node smoke.mjs
TESTING.md发布前系统化测试清单(自动化 + 手动 A–Q 组)
minutes-docx.py用 python-docx 把纪要渲染成 Word
cordis.patch.yml组合包 patch,把宿主行插进 profile 层栈
tools/recognize-note.mjs开发工具:对一张手写 PNG 直接跑识别

制作

本插件由博尔塔拉融媒体中心媒体传播与认知重点实验室制作。

许可

MIT,全文见 LICENSE:

Copyright (c) 2026 博尔塔拉融媒体中心媒体传播与认知重点实验室(杨道泉)

也就是说:可以自由使用、修改、再分发(含商用与机构内部部署),只需保留版权与许可声明; 软件按"现状"提供,不含担保。

本插件调用的第三方组件与运行时下载的模型(onnxruntime-node、pinyin-pro、sherpa-onnx-node、 3D-Speaker CAM++ 声纹模型、DAMO 手写模型等)各自适用其作者的条款,来源与校验值见 THIRD-PARTY-NOTICES.md。

Comments

Loading…

Similar plugins

dsh-voice-chat

by maoyuching

Doubao-style voice chat for DSH: press-and-hold mic in the composer converts speech to text and auto-sends, and AI replies are read aloud. Optional LLM condensing (long replies summarized into short s

Vision & MultimodalTerminal & ClientsManifest valid

★ 3

↓ 649/wk

MIT

JavaScript

Sep 25, 2026

dsh plugin --profile web add dsh-voice-chat

by liaowenqi123

DSH 多 Agent「会议室」插件:会议室会籍 + fork 上下文入场 + 主持人控场多轮讨论 + 会后各自压缩纪要并回到工作区继续干活。基于 dsh-std 元协议(Community v0.15)。

Workflow & AutomationSessions & MessagesManifest valid

★ 1

MIT

TypeScript

Sep 24, 2026

dsh plugin --profile web add dsh-meeting-coordinator

by theskywilldawn

星辰会议室:让分散在不同会话里的 AI 坐进同一间房开会 —— 主持人开房定题,按序邀请成员逐一发言,轮次用满即收会出纪要。 LittleStar Meeting Room: bring AI sessions that cannot see each other into one room — one host sets the topic, members speak in turn, and the meeting ends with written minutes.

Workflow & AutomationDevelopment & InfrastructureManifest valid

★ 1

MIT

JavaScript

Oct 14, 2026

dsh plugin --profile web add dsh-littlestar-meeting

by huangfuren

Conversation outline panel for the DSH web surface: user questions as root nodes (index, time, tool count and text volume per turn) with the Markdown headings of assistant replies hanging beneath them

UI & ExperienceManifest valid

★ 0

MIT

JavaScript

Oct 9, 2026

dsh plugin --profile web add dsh-conversation

DSH 工作区长期记忆:索引式简报省 token、轮末相关召回、memory 工具按需读写、版本链与体检、轮次结束自动提炼(可草稿审批),设置面板里可视化查看与管理。

Terminal & ClientsMemory & ContextManifest valid

★ 0

dsh plugin --profile web add @bangbang-03/dsh-memory

by supersyh-sss

Voice assistant for dsh web: say the wake phrase (e.g. "小鲸") to activate hands-free dictation — what you say is transcribed and typed into the chat box automatically. Supports spoken edit commands (se

Tools & CapabilitiesVision & MultimodalManifest valid

★ 3

↓ 202/wk

MIT

JavaScript

Sep 2, 2026

dsh plugin --profile web add dsh-voice-assistant