Repository navigation
Releases: 9931666/dsh-plugin-roundtable
Release list
RoundTable v1.0.0-rc.1
RoundTable v1.0.0-rc.1
第一个 1.0 候选版本。这一版不是加功能,而是把「插件能不能长期自己活下去」这件事补齐:
宿主支持矩阵成为可校验的单一来源、版本差异收敛进一个模块、发布与诊断变成可执行的门禁。
发行渠道:GitHub(本插件不发布到 npm —— 作者因个人原因无法注册 npm 账户,
@huanlinscope 拿不到,registry 上不存在这个包)。安装请从源码:
git clone https://github.com/9931666/dsh-plugin-roundtable→pnpm install→pnpm build→dsh plugin --profile web add .
下文出现的npm publish/npm dist-tag步骤仅作本轮发布过程记录,不要再执行。宿主基线:DeepSeek Harness 0.1.5-rc.3
0. 为什么是 1.0
此前插件的"成熟度"取决于维护者的记性:改动散在工作区、版本漂移靠人发现、
发布靠临场操作。这一版把这些变成了代码与门禁:
| 问题 | 之前 | 现在 |
|---|---|---|
| 支持哪些宿主? | 散落在 docs / package.json / 注释里各说各话 | compatibility.json 唯一来源,scripts/compatibility.mjs 强制一致 |
| 宿主 API 变了怎么办? | 散落 5 个文件里各自判断 | 收敛进 src/harness-compat.ts 一处 |
| 发布前该确认什么? | 靠记性 | scripts/release.mjs 九项检查,含产物 SHA-256 |
| 用户报"界面不见了"怎么查? | 来回猜、要日志 | scripts/doctor.mjs 一条只读命令给证据 |
1. 宿主支持矩阵(B2 · 新)
新增 compatibility.json 作为矩阵与能力清单的唯一来源,并由
scripts/compatibility.mjs 校验四份声明彼此一致:
- 矩阵里的
required/optional能力清单; package.json的devDependencies(类型基线)必须精确指向recommendedHost;package.json的peerDependencies区间必须覆盖该基线;src/harness-compat.ts的CAPABILITY_SPECS必须登记每个能力的探测点。
为什么这条最重要:devDependencies 决定使用者
pnpm install后拿到哪一版
类型。基线漂了,表现是"本机全绿、用户装完就坏",而这类故障最难查。
矩阵同时记录 baseline.packages(17 个包)与 previewTag。
2. 兼容边界集中化(B1 · 新)
新增 src/harness-compat.ts,所有与 DSH 版本相关的形状集中于此,做法借鉴社区
项目 dsh-agent-teams 的 harness-compat.ts:
CAPABILITY_SPECS:12 个探测点,每项记录用途、失效时用户看到什么、证据;optionalService()/webRouteHostOf()/workspaceRegistryOf():服务探测
统一入口,探测结果留痕(每个能力只记第一条,避免轮询刷爆);asDisposer()/effectWithOptionalDisposer():rpc.handle返回值形状判定;projectionValuesOf():sessionProjections读取,绝不抛错。
两条铁律写在模块头上:探测绝不成为新的加载门禁;降级必须留痕。
原先散在 index.ts / rpc.ts / token-usage.ts 的版本判断与结构式服务探测已迁移进来。
3. 修掉一处真实的类型基线漂移(体检发现)
按新门禁对 rc.3 跑体检时,compatibility.mjs 当场报出 19 项失败:
package.json没有显式的宿主基线声明;- 17 个 devDependencies 仍指向
0.1.5-rc.2,而本机运行的是0.1.5-rc.3; HARNESS_RANGE也硬编码着 rc.2。
全部对齐到 rc.3,并补上 package.json 的 roundtable.hostBaseline。
4. 修掉 cordis 混装导致的全量类型错误
对齐基线后第一次对 rc.3 类型跑 tsc,60+ 处报错,形如:
Property 'subagents' does not exist on type 'Context'
Argument of type '"subagent/end"' is not assignable to parameter of type 'keyof Events'
根因不是 rc.3 破坏了 API,而是两处 @deepseek-ai/cordis@4.0.2 是不同物理副本:
宿主与插件各有一份,TypeScript 视为两个不同模块,于是
declare module '@deepseek-ai/cordis' { interface Context { … } } 的声明合并失效。
把插件的 cordis 指向宿主那一个副本后,tsc 0 错误。
scripts/doctor.mjs 现在会主动比对这两条路径,并在不一致时给出上面这段解释。
这是本版最有价值的一条经验:rc 线上"类型全红"不一定是 API 破坏,先查是不是混装。
5. 发布门禁与产物验证(A1 · 新)
新增 scripts/verify-package.mjs(19 项检查):
files清单非空;main/types/exports/dsh.bundle.patch指向的文件
在仓库里真实存在;cordis.patch.yml在files里 —— 不在的话消费者装上后插件不会被注册;- 产物
lib/里没有.ts/.tsx残留; - 每个宿主侧源码模块都在产物里有痕迹(强检查:所有
lib/*.js拼起来必须
提到每个模块的导出符号)。
最后这条替代了原先的"相对导入 → 同名
.js"检查:打包器会做
code-splitting,那种检查恒真、等于没检查。
顺带省掉 557 kB:lib/client.js.map 此前被一起发布(占解包体积 36%),
而浏览器半体是宿主直接加载的 bundle,默认不会去取它。sourcemap 改为按需
(RT_SOURCEMAP=1)打开。
6. 发布护栏(A2 · 新)
新增 scripts/release.mjs:
- 渠道判定:预发布只能进
next,稳定版才允许进latest; - 防 latest 倒退:稳定发布前查 registry,比现有 latest 更低就拒绝;
- 首次发布识别 + scope 归属提醒(
@huanlin无权限时是 403 而非 404); - 产物指纹:打包候选 tarball 并输出 SHA-256 / SHA-1 / integrity。
刻意不调用 npm 命令:registry 走 HTTPS 直连、打包用内置 ustar 实现,
于是这个门禁在任何环境都跑得动(本机 npm 全局缓存在沙箱外,Windows 上脚本化
调用 npm.cmd 也会 EINVAL/EPERM)。
7. 只读诊断(A3 · 新)
新增 scripts/doctor.mjs:报告宿主/插件精确版本与位置、探测混装(同族包
多版本)、比对 cordis 实例同一性、打印能力清单。它不执行插件、不修改配置,
并且明确声明:通过 ≠ 插件能用,它只排除安装层故障。
8. 工程修补
- 补声明
@deepseek-ai/dsh-client-ui-renderer(dsh.client.inject里一直在用,
却不在任何 dependencies 中); HARNESS_RANGE与COMPATIBILITY.recommendedHost由测试强制一致;- 新增 npm scripts:
compatibility/verify:package/doctor/release/
publish:guard。
验证记录
| 项 | 结果 |
|---|---|
npm run typecheck(宿主 + 浏览器,对 rc.3) |
通过,0 错误 |
node --test |
132/132 通过,0 失败(15 个测试文件) |
npm run build |
通过 |
node scripts/compatibility.mjs |
45/45 通过 |
node scripts/verify-package.mjs |
19/19 通过(22 个模块全部命中) |
node scripts/release.mjs |
9/9 通过,产物已出指纹 |
node scripts/doctor.mjs |
宿主 0.1.5-rc.3;混装 ✓;cordis 同一性 ✓ |
| 候选产物 | 50 个文件,406.6 kB 打包 / 963.1 kB 解包(自建打包器) |
| npm 11 实测 | 51 个文件,404.6 kB 打包 / 921.5 kB 解包 |
已知边界
- rc.3 之外的宿主未验证。矩阵目前只有
0.1.5-rc.3一条;0.1.6-alpha.*是
另一条线,未纳入。 预发布升级路径:先发到next,自行安装验证后再
npm dist-tag add @huanlin/dsh-plugin-roundtable@1.0.0-rc.1 latest。
已作废:本插件不发 npm(见文首「发行渠道」)。预发布与稳定版的区别现在只体现在
GitHub Release 的prerelease标记上(.github/workflows/publish.yml自动判定)。- 前端测试仍为零:
RoundTableView.tsx(1,723 行)没有测试覆盖,因为它需要
先把纯逻辑从组件里抽出来。这是已知欠账,不影响本版发布。 git里的pnpm-lock.yaml与devDependencies已指向 rc.3,但本机
pnpm install因 store 数据库不可用而失败;node_modules的 rc.3 解析是手工
对齐的(junction 指向宿主副本)。在能跑 pnpm 的机器上重装一次即可复现。
生效方式
- 浏览器半体:重建后刷新页面即可。
- 宿主半体(
inject/ 事件 / RPC 通道):需要重启 DSH。
DSH-RoundTable v0.2.0
RoundTable v0.2.0 — 更新说明(Release Notes)
一句话:这一版把圆桌会议从"能开会",升级为"好用、省 token、还带厂商头像"。
本次更新内容(v0.1.0 → v0.2.0)
1. 🗑 会议可删除
- 右栏顶部新增「删除会议」按钮(确认弹窗后彻底删除磁盘文件 + 连带清里头的专家子代理,不留孤儿)
- 之前删除按钮挤在标题行最右、窄屏容易看不见,这次移到右栏固定位置
2. 📋 专家管理界面 + 用户行为记录(核心机制)
- 右栏「专家/分工」点「+」打开 专家管理弹窗:
- 列出所有专家(名称 / 角色 / 模型 / 状态),可直接删除
- 新增专家:填名称、角色,从模型下拉选厂商模型(支持 DeepSeek/GLM/千问/Kimi/MiniMax 等)
- 行为记录文档:你在 UI 里删/加专家,不会立刻改会议,而是先记入
user-actions.jsonl;主持人下一轮自动勘察并执行,全部完成后清空。UI 与主持人认知不再脱节 - 新专家会先显示"待生效",下一轮主持人才正式拉人进会
3. 📚 知识库(阅览版)
- 右栏「知识库」+,填一个电脑上的文件夹路径,即可列出里面的文件与格式(纯阅览,不打开文件、不上传)
- 勾选「已修改知识库部分内容」,主持人下一轮会重新阅览知识库、更新理解
- 省 token:主持人按需读取指定文件、优先给摘要、不整库搬运,避免"主持人读一遍+专家读一遍"的双倍消耗
4. 💰 回答限制(省 token)
- 设置页新增「回答限制」:
- 专家每轮输出上限:给每个专家模型调用设
max_tokens,防止单个专家一轮烧太多 - 每轮最多意见数:超过就收敛
- 专家每轮输出上限:给每个专家模型调用设
- 专家 prompt 内置"简洁约束":只答相关、不用假设、不举无关例子、无华丽修辞
5. 🔧 代码收尾
- 全量代码审查:清理死代码(含 8 处无效事件调用)、修复设置页一处重复文案、收敛 13 个工具的重复样板。行为不变,纯质量提升
6. 🎨 厂商 Logo 头像
- 专家头像从"缩写色块"升级为厂商真实 Logo:DeepSeek 蓝鲸 / GLM / Gemini / Claude / Kimi / MiniMax
- 圆形裁切、白底透明化、自动居中,深色 Logo 配深色圆底
- 内置 base64 管线,离线可用;没配 Logo 的厂商自动回退缩写
三大亮点(宣传口径 · 本次增强版)
- 多模型专家同台:不同厂商模型(DeepSeek / GLM / 千问 / Kimi / MiniMax)一起开会,各有品牌 Logo 头像、独立角色分工;分歧本身成为信息。
- 可视化拓扑 + 专家管理:环形拓扑图(连线箭头 / 呼吸灯 / 消息脉冲 / 拖拽连线),搭配极简两栏;现在还能在 UI 里直接加专家、选模型、删专家。
- 省 token 不失控:预算熔断(超轮数/Token 自动闭麦)+ 专家每轮输出上限 + 回答限制,多模型开会也不怕烧钱。
- 人类决策 + 主持人统筹:分歧时会议暂停、弹卡由你拍板;主持人再把全程压缩成结构化摘要收敛结案。
使用要点(升级用户)
- 会议状态在
<workspace>/.roundtable/<meetingId>/,历史会议与版本升级兼容,无需迁移 - UI 改动(专家管理、知识库、Logo、设置)全部刷新页面即生效;本次也含少量 Host 端改动,升级后重启一次 DSH 即可
- 专家管理的新增/删除走"下一轮生效",执行无误才会真正拉人/移除
说明
- 仓库:https://github.com/9931666/dsh-plugin-roundtable
- 版本:
v0.2.0 - 技术栈:DeepSeek Harness(DSH)Cordis 插件 · TypeScript + React + CSS Modules · tsdown 打包
