roundtable V1.0.0把一次 DeepSeek Harness 会话,从"你和 AI…
39.6/100
综合分
13
GitHub 星标
409
npm 周下载
—/5
用户评分
数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @y9931666/dsh-plugin-roundtablenpm 源 · @y9931666/dsh-plugin-roundtable 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@y9931666/dsh-plugin-roundtable @ 1.0.0-rc.3
✓Node 引擎要求 >=22.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 15:54:15
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 31 处,展示前 23 条)
- 读取本地文件lib/index.js:63
const info = await stat(entry.path); - 读取本地文件lib/index.js:2576
info = await stat(resolved); - 读取本地文件lib/index.js:3795
const text = await readFile(file, "utf8"); - 写入本地文件lib/index.js:3824
await mkdir(dirname(file), { recursive: true }); - 删除本地文件lib/index.js:4051
await rm(meetingDirOf(stateRoot, meetingId), { - 读取本地文件lib/index.js:4122
info = await stat(resolved); - 读取本地文件lib/index.js:4261
info = await stat(dir); - 读取本地文件lib/index.js:4274
entries = await readdir(dir, { withFileTypes: true }); - 发起网络请求lib/client.js:43
const response = await fetch("/plugins/dsh-plugin-roundtable/rpc", { - 发起网络请求lib/client.js:79
const response = await fetch(`/plugins/dsh-plugin-roundtable/state${query}`, { cache: "no-store" }); - 删除本地文件lib/state-BzBQig2q.js:42
await rm(meetingDirOf(stateRoot, meetingId), { - 写入本地文件lib/state-BzBQig2q.js:88
await writeFile(tmp, text, "utf8"); - 写入本地文件lib/state-BzBQig2q.js:89
await rename(tmp, file); - 读取本地文件lib/state-BzBQig2q.js:109
const raw = await readFile(join(stateRoot, meetingId, "meeting.json"), "utf8"); - 写入本地文件lib/state-BzBQig2q.js:120
await mkdir(dir, { recursive: true }); - 写入本地文件lib/state-BzBQig2q.js:216
await mkdir(dir, { recursive: true }); - 写入本地文件lib/state-BzBQig2q.js:217
await appendFile(join(dir, "transcript.jsonl"), JSON.stringify(utterance) + "\n", "utf8"); - 读取本地文件lib/state-BzBQig2q.js:223
const raw = await readFile(join(stateRoot, meetingId, "transcript.jsonl"), "utf8"); - 读取本地文件lib/state-BzBQig2q.js:240
return (await readdir(stateRoot, { withFileTypes: true })).filter((entry) => entry.isDirectory()).map((entry) => entry.name); - 写入本地文件lib/state-BzBQig2q.js:252
await mkdir(dir, { recursive: true }); - 读取本地文件lib/state-BzBQig2q.js:259
const raw = await readFile(join(stateRoot, meetingId, "user-actions.jsonl"), "utf8"); - 读取本地文件lib/state-BzBQig2q.js:311
const raw = await readFile(join(meetingDirOf(stateRoot, meetingId), "review.json"), "utf8"); - 读取本地文件lib/state-BzBQig2q.js:401
raw = await readFile(join(meetingDirOf(stateRoot, meetingId), "kb-digest.json"), "utf8");
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery@deepseek-ai/dsh-agent@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-tool@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-llm给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 多AI圆桌会议
- 主持人协调
- 专家AI参与
最近更新
在 GitHub 查看全部 →v1.0.0-rc.12026-09-24预发布
· RoundTable v1.0.0-rc.1
第一个 1.0 候选版本。这一版不是加功能,而是把「插件能不能长期自己活下去」这件事补齐:
宿主支持矩阵成为可校验的单一来源、版本差异收敛进一个模块、发布与诊断变成可执行的门禁。
发行渠道:GitHub(本插件不发布到 npm —— 作者因个人原因无法注册 npm 账户,
@huanlin scope 拿不到,registry 上不存在这个包)。安装请从源码:
git clone → 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 校验四份声明彼此一致:
1. 矩阵里的 required / optional 能力清单;
2. package.json 的 devDependencies(类型基线)必须精确指向 recommendedHost;
3. package.json 的 peerDependencies 区间必须覆盖该基线;
4. 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+ 处报错,形如:
v0.2.02026-08-26
· 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 的厂商自动回退缩写
---
· 三大亮点(宣传口径 · 本次增强版)
1. 多模型专家同台:不同厂商模型(DeepSeek / GLM / 千问 / Kimi / MiniMax)一起开会,各有品牌 Logo 头像、独立角色分工;分歧本身成为信息。
2. 可视化拓扑 + 专家管理:环形拓扑图(连线箭头 / 呼吸灯 / 消息脉冲 / 拖拽连线),搭配极简两栏;现在还能在 UI 里直接加专家、选模型、删专家。
3. 省 token 不失控:预算熔断(超轮数/Token 自动闭麦)+ 专家每轮输出上限 + 回答限制,多模型开会也不怕烧钱。
4. 人类决策 + 主持人统筹:分歧时会议暂停、弹卡由你拍板;主持人再把全程压缩成结构化摘要收敛结案。
---
· 使用要点(升级用户)
· 会议状态在 /.roundtable//,历史会议与版本升级兼容,无需迁移
· UI 改动(专家管理、知识库、Logo、设置)全部刷新页面即生效;本次也含少量 Host 端改动,升级后重启一次 DSH 即可
· 专家管理的新增/删除走"下一轮生效",执行无误才会真正拉人/移除
---
· 说明
· 仓库:
· 版本:v0.2.0
· 技术栈:DeepSeek Harness(DSH)Cordis 插件 · TypeScript + React + CSS Modules · tsdown 打包
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-roundtable 圆桌会议把一个 DeepSeek Harness 会话,变成一场可视化、可辩论、可拍板的圆桌会议。
一句话
你只负责抛出议题。DeepSeek 成为主持人,在拓扑图上拉起一圈专家节点,用带箭头的连线组织协作,经过汇聚网关汇总,遇到分歧时把决策权交还给你。
特性
会议组织
| 能力 | 说明 |
| 左主持 + 右圆桌拓扑 | 会话视图新增「圆桌会议」Tab:左侧主持人锚点、右侧环形专家节点、中央汇聚网关,连线带方向箭头,开会过程全程可视化。 |
| 持久子代理专家 | 每位专家都是独立可续聊的子代理,带着《全局协作总纲》(目标 / 角色边界 / 协作协议 / 安全红线)入会,可指定不同厂商模型。 |
| 可视化连线 | 悬停节点拖拽「+」拉出连线;右键连线切换单向/双向通道或删除;双向通道两端各有一个箭头。 |
| 厂商 Logo 头像 | 专家头像显示真实厂商 Logo(DeepSeek / GLM / z.ai / Gemini / Claude / Kimi / MiniMax / 千问),未收录厂商自动回退为"品牌色块 + 缩写"。logo 图片可自行替换 src/client/assets/logos/ 后重跑 node scripts/generate-logos.mjs 再构建。
展开完整文档(README 剩余 1 节)
dsh-plugin-roundtable 圆桌会议把一个 DeepSeek Harness 会话,变成一场可视化、可辩论、可拍板的圆桌会议。
一句话
你只负责抛出议题。DeepSeek 成为主持人,在拓扑图上拉起一圈专家节点,用带箭头的连线组织协作,经过汇聚网关汇总,遇到分歧时把决策权交还给你。
特性
会议组织
| 能力 | 说明 |
| 左主持 + 右圆桌拓扑 | 会话视图新增「圆桌会议」Tab:左侧主持人锚点、右侧环形专家节点、中央汇聚网关,连线带方向箭头,开会过程全程可视化。 |
| 持久子代理专家 | 每位专家都是独立可续聊的子代理,带着《全局协作总纲》(目标 / 角色边界 / 协作协议 / 安全红线)入会,可指定不同厂商模型。 |
| 可视化连线 | 悬停节点拖拽「+」拉出连线;右键连线切换单向/双向通道或删除;双向通道两端各有一个箭头。 |
| 厂商 Logo 头像 | 专家头像显示真实厂商 Logo(DeepSeek / GLM / z.ai / Gemini / Claude / Kimi / MiniMax / 千问),未收录厂商自动回退为"品牌色块 + 缩写"。logo 图片可自行替换 src/client/assets/logos/ 后重跑 node scripts/generate-logos.mjs 再构建。 |
| 状态呼吸灯 | 专家工作时节点边缘呼吸灯闪烁——纯 CSS 状态反馈,不消耗任何 Token。 |
| 画布图例(模式语义) | 画布左上角写明「这张图在当前模式下怎么读」:主持人统筹=逐次派发、多模型平等=专家直达互辩、针锋相对=只挑毛病;系统补出来的骨架通道会标注「虚线 = 骨架通道,不是真实流转」。同一张图在三种模式下含义不同,图例把它写在图上是刻意的——不写清楚,用户会把它读成一张控制流程的路径图。图例右上角有叉号可关闭(关闭状态写进全局偏好,刷新后依然是关的);随时可在设置页「画布图例」里重新打开——关掉必须还能找回来,否则"删除"就成了单向操作。 |
| 节点状态如实显示 | 节点直接显示持久子代理的真实状态:工作中 / 空闲 / 就绪 / 未唤醒 / 宿主失联 / 已退出(悬停可看完整说明)。刻意不发明「已完成 / 已失败」——子代理跑完一轮回到空闲,仍可被再次唤醒,说它"结束了"是错的。状态词刻意取短:节点只有 68px 宽,长标签会换行、溢出圆形卡片(就绪(可唤醒) 就这么翻过车),所以语义细节交给悬停提示,标签本身强制单行省略号。 |
协作与辩论
| 能力 | 说明 |
| 双协作模式 + 红队模式 | 「主持人统筹」一切经由主持人转达;「多模型平等」专家直达互辩,超预算自动闭麦;「针锋相对」专家只对定稿方案挑毛病。设置里切换,平等模式强制要求安全限制。 |
| 汇聚网关 | 所有发言经过确定性结构化归并,主持人一键拉取摘要,上下文不被十份报告淹没。 |
| 代理思考 | 黑盒干活模型(视频/图片生成等)也有透明思考链:导演模型先写 [DeepSeek 代理思考] 再翻译参数,UI 全程标注 [渲染中]。 |
| 人类决策卡片 | 专家分歧或需要拍板时,主持人发起决策、会议暂停,你来选方案 A / B 或自定义输入。 |
针锋相对评审
| 能力 | 说明 |
| 评审全流程 | 定稿方案 → roundtable_start_review 记录"问题 + 方案"(首轮 reviewPass=1)→ 拉红队专家(只挑毛病、不给替代方案)→ roundtable_collect_review 收集观点 → Web 评审弹窗自动打开。 |
| 逐条三态表态 | 每个观点独立一张卡片,可单独「支持 / 驳回 / 取消」(三态互切,支持可取消);驳回必填理由(C2,无理由拒绝提交,理由计入 user-action 供主持人修订对照);已认定数只计「支持」,缺陷进入下一轮方案修改。 |
| 观点证据分级 | 拆分时按观点给出证据(C1):代码/bug 类附可复现步骤(repro),设计类缺陷附论证链(argument,不强制伪复现);观点卡按类型展示证据徽标。 |
| 闭环复审(最多 3 轮) | 用户表态 + 主持人修订后,roundtable_finish_review 结束本轮(落 done 并附修订说明);再开下一轮复审(reviewPass+1,只核对旧缺陷是否修复)。maxReviewPass=3(首轮 + 最多复审 2 次),超上限继续须用户显式批准(C3,杜绝无限循环)。 |
| 影响概览 | 评审弹窗顶部显示已认定/已驳回/未表态计数;认定数 ≥ 3 提示"建议重新协商方案"(C4)。 |
| Markdown 导出 | roundtable_export_review 把全部轮次/观点/表态/驳回理由/修订对照导出为一份交付物(C5),可留存或贴入 GitHub issue。 |
| 观点自动拆分 | 专家一条发言自动拆成多条独立观点,每条带维度标签 + 原文引用 + 观点序号 + 证据;拆分 LLM 优先,失败自动降级为本地按「观点 N」段落结构切分(零 token,不会整段糊在一起)。 |
成本与状态
| 能力 | 说明 |
| 预算熔断 | 轮数与 Token 双预算,超限自动「闭麦」,可补预算继续或汇总收场。⚠️ Token 数是「发言文本量」的粗估(中文约 0.6 token/字),不含 system prompt、专家 persona、历史上下文与工具调用开销,不等于真实账单——把它当「说了多少」的刻度,而不是成本表。 |
| 回答限制 | 专家每轮输出上限(模型 max_tokens)+ 每轮最多意见数;专家 prompt 内置简洁约束(只答相关 / 不用假设 / 不举无关例子 / 无修辞)。 |
| 匿名反馈回路 | 会议结束后 1 键有用度询问 + 可选一句「最卡的点」(E1);匿名聚合到工作区级 feedback.jsonl(E3,只记模式/模型/轮数/Token/时间戳 + 用户主动填写内容,绝不记对话),设置页可查看/一键清空/关闭(E4)。 |
| 知识库摘要缓存 | 主持人读过的 KB 文件按 path + size + mtimeMs 记下要点摘要(kb-digest.json);roundtable_status 直接标 [HIT] / [STALE],命中的不必重读——省掉「主持人读一遍 + 专家读一遍」的双倍 token。缓存本身不耗模型 token,超 50 条按最旧淘汰。 |
| 持久化 | 会议状态落盘于 <workspace>/.roundtable/<meetingId>/(meeting.json + transcript.jsonl + review.json + user-actions.jsonl + kb-digest.json),重启后可恢复拓扑与历史;roundtable_export_meeting 另写一份 export.md。 |
会议设置确认与 Skill 接入(v0.2.31)
| 能力 | 说明 |
| 开会前先确认设置 | 每次开会(哪怕只有一位专家)都会先弹一张设置卡片:专家名单 + 协作模式 + 轮数/Token 预算 + 知识库 + 选中 skill。主持人只出草案,确认后才创建会议。 |
| 卡片上即可初次修改 | 选「我要修改」并在输入框写明改动(例:「把 reviewer 换成 zai-coding-cn/glm-5.2、预算降到 5 轮」),主持人更新草案后再弹一次;每轮都标注「已按你的意见更新」。 |
| skill 选择 | 卡片上的 skill 清单来自 DSH 原生 ctx.skills(目录发现,非插件自造)。把 skill 放进 <工作区>/.dsh/skills/、<工作区>/.agents/skills/ 或 <DSH_HOME>/skills/ 即出现在清单里;会议选中后记录到会议状态,右栏「已选 skill」面板可查。 |
| 两种传递方式 | 设置页可切换:主持人中转(主持人读正文、按需转交,省 token、行为可预测)或专家直接调用(专家自己用原生 skill 工具加载,更自主、但各自读取一遍)。会议创建时固化该选择,专家 persona 会被告知可用 skill 清单与使用方式。 |
角色预设、整场导出与摘要缓存(v0.2.35)
| 能力 | 说明 |
| 自建角色预设 | 设置 → 圆桌会议 → 「角色预设」自己建模板(名称 + 角色说明必填,模型可选 = 继承主持人),支持新建 / 编辑 / 删除。插件不预置任何内置角色;预设是全局偏好,改动不影响已创建的会议。 |
| 整场会议导出 | roundtable_export_meeting 把会议整体(元数据头 / 议题 / 专家名单 / 决策记录 / 逐轮发言 / 评审记录 / 用户调整记录)渲染成 Markdown,同时写入 <meetingDir>/export.md,可直接留存或贴进 issue;进行中的会议也能导(头部标「进行中快照」)。 |
| 版本号单一来源 | 导出头部统一读 src/version.ts 的 PLUGIN_VERSION——此前评审导出头部硬编码的 v0.2.21 已经写进过交付物;test/version.test.mjs 会在它与 package.json 不一致时直接失败。 |
| 统一原子写 | user-actions.jsonl / feedback.jsonl 的写入与清空改走同一套「同目录 tmp + rename」原子写,并与 UI 追加共用一把串行锁;清空时若发现坏行会返回 malformed 计数,主持人必须如实告知用户,不再静默丢操作。 |
阵容预设(一次套用多位专家)
| 能力 | 说明 |
| 自建阵容 | 设置 → 圆桌会议 → 「阵容预设」把常用组合存成一条阵容(名称 + 多位成员,每位成员含专家 key、角色、模型)。同样不预置任何内置阵容。 |
| 右栏一键套用 | 专家管理面板选中阵容 → 成员逐位排进待加入队列,主持人下一轮照常 roundtable_add_node。已存在或已在队列里的 key 会被跳过并如实告知,不静默覆盖。 |
| 边界写死在类型里 | 阵容只回答「谁来开会」:没有节点顺序、没有连线、没有依赖与分支。因此它与「会议模板 / 流程图」是两个概念——这条边界是被一次红队评审认定过的缺陷(模板与角色预设边界不清),现在用类型与文案同时钉住。 |
界面可靠性修复(v0.2.36)
| 修复 | 说明 |
| 页签/设置页不再整体消失 | 插件曾把可选能力写进 cordis 的 inject——而 inject 是加载门禁(没有「可选注入」这种形式),缺一个服务就整个插件不加载:工具、数据路由、GUI 页签、设置页一起消失且不报错。现已收敛为真正必需的服务,可选能力(skill 目录、用户问答、connection 兜底传输)改为运行时 ctx.get(...) 可选读取。宿主侧改动需重启 DSH 生效。 |
| 崩溃不再无声无息 | DSH 会静默摘掉渲染抛错的 slot 条目(隔离正确,但用户只看到「页签不见了」)。两个界面入口现在都包在错误边界里:崩溃渲染成可读报错面板 + 控制台完整堆栈,可直接贴 issue。客户端改动刷新页面即生效。 |
| 防回归闸门 | test/inject.test.mjs 直接对构建产物断言上述两条不变量(含「没有 connection 服务时仍必须注册两个入口」),旧产物必然失败。 |
视觉与布局(v1.0.0-rc.4)
| 改动 | 说明 |
| 设置页轻分组 | 刻意不套卡片:用「细线 + 组标题」分组,避免与针锋的卡片语言冲突。控件统一 32px 高 / 8px 圆角 / 320 宽,面板开关改为等宽网格。 |
| 拓扑节点名可读 | 显示时去掉专家共有的 expert- 前缀并允许两行(expert-lifecycle → lifecycle),完整 key 仍由悬停 title 提供。 |
| 连线可读性 | 专家间连线从最低对比边框色改为次级文字色,线宽 1.6、圆端点。 |
| 右栏面板 | 面板标题升为正文色 + 字距,内容内边距加大,面板间距 12px。 |
| 区块图标 | 设置页各分组标题前加 16×16 内联 SVG 图标(零依赖、随主题变色)。 |
界面操作
| 能力 | 说明 |
| 专家管理界面 | 右栏「+」直接加/删专家、从模型下拉选厂商;改动记入 user-actions.jsonl,主持人下一轮自动执行,UI 与主持人认知同步。 |
| 角色预设一键填充 | 专家管理表单顶部多了一个「角色预设」下拉:选中即自动填好角色说明与 provider/model(专家 key 仍由你填)。预设为空时给出「去设置页新建」的指引。 |
| 右栏面板显示开关 | 设置 → 圆桌会议 → 「右栏面板显示」:点亮的圆圈 = 显示、暗掉的 = 隐藏(专家 / 分工 / 知识库 / 已选 skill / 发言记录 / 分针记录 / 产出文件)。关掉不常看的面板,右栏立刻变短(拓扑页本身不放提示框,保持工整)。 |
| 知识库(阅览版) | 填一个文件夹路径即列出文件与格式;专家需要资料时由主持人按需读取转交,不整库搬运,避免 Token 双倍消耗。 |
| 会议删除 | 右栏一键删除会议(确认弹窗 + 磁盘彻底删除 + 连带清理专家子代理)。 |
| 互通开关 | 设置里可只显示当前对话开的会议,或查看工作区全部会议。 |
安装(一分钟)
[!NOTE]
需要已安装 DeepSeek Harness(0.2.0-rc.2+)。
v1.0.0-rc.2 是宿主适配版。 宿主 0.2.0-rc.2 动了两处真正破坏兼容的地方: ① settings 服务被重构成 SettingsForms(插件不再能注册自己的配置命名空间, SettingsScope 类型消失)→ 本插件的偏好持久化改为自管(<DSH_HOME>/roundtable/preferences.json);② MessageSourceMap 移除了 catch-all 的 plugin kind(改为「每个生产者在自己的模块里声明」)→ 本插件自声明 roundtable kind。0.1.5-rc.3 及更早的宿主不再受支持(peer 区间与类型基线各只能有一个版本)。详见 release-notes/v1.0.0-rc.2.md。
dsh plugin --profile web add @y9931666/dsh-plugin-roundtable@next
装完重启 DSH(关窗口 → 重新启动)→ 刷新 Web UI → 设置 → 圆桌会议能读出默认值即可。
[!IMPORTANT]
包名是 @y9931666/...,不是历史文档里的 @huanlin/...。 作者手上的 npm 账户是 y9931666,而 @huanlin 这个 scope 属于另一个用户(他也在发 DSH 插件)。
历史 release-notes 里 @huanlin/dsh-plugin-roundtable 的安装命令一律不可用。
这一版是预发布(1.0.0-rc.2),所以装的时候要带 @next。 npm 对带预发布后缀的版本不会更新 latest 标签,dsh plugin add @y9931666/dsh-plugin-roundtable 会报找不到 latest;@next 就是本插件预发布版的固定入口。稳定版发布后才可以省掉 @next。
从源码构建(要改源码时用;本地安装链接当前目录):
git clone https://github.com/9931666/dsh-plugin-roundtable
cd dsh-plugin-roundtable
pnpm install
pnpm build
dsh plugin --profile web add .
装完重启 DSH(关窗口 → 重新启动)→ 刷新 Web UI → 设置 → 圆桌会议能读出默认值即可。
从旧版升级:宿主必须先升到 0.2.0-rc.2;然后 git pull && pnpm install && pnpm build,重启 DSH。历史会议记录(.roundtable/)本版数据格式未变,可直接沿用;从更早版本(0.1.x 宿主时代)跨上来的会议建议先导出留档。
⚠️ 偏好位置变了:从宿主 settings.yaml 的 roundtable 命名空间搬到 <DSH_HOME>/roundtable/preferences.json。旧命名空间里的值不会自动迁移,到「设置 → 圆桌会议」重设一次即可(不设也能用,默认值与旧版一致)。
更新到最新版
git pull && pnpm build
插件以 link: 挂在本地目录上,重建后重启 DSH 即可。刷新 Web UI 后,直接在对话里用自然语言开会:
开个圆桌会议,评审 v0.5 的架构方案,从性能、安全、成本三个角度各安排一位专家,最后给我一份汇总报告。
或指定平等辩论模式:
用多模型平等模式开一场辩论会,议题是「单体 vs 微服务」,每位专家可以互相反驳,最多 3 轮,最后让我拍板。
或发起红队评审:
方案已定稿,开个针锋相对评审,拉两位红队专家专门挑毛病。
使用界面
- 聊天:自然语言直接触发即可(例:「开个圆桌会议讨论 X」「让几个专家辩论 Y」「用 RoundTable 决定 Z」)。本插件不提供 /roundtable 斜杠命令——V1 规格书里列过这个入口,但从未实现,本版明确不做,也不再承诺。
- 「圆桌会议」Tab:会话视图顶部切换,实时拓扑图 + 预算进度 + 网关摘要;拖拽连线、右键改通道方向。
- 设置页:设置 → 圆桌会议,配置默认协作模式、预算默认值、专家回答限制、skill 传递方式、右栏面板显示与自建角色预设。
协作模式
| | 主持人统筹 orchestrated | 多模型平等 egalitarian | 针锋相对 redteam |
| 主持人角色 | 决定谁发言、转达观点、语义仲裁 | 退居发牌 + 计时 + 裁判 | 记录议题与方案、收集红队观点 |
| 专家之间 | 都经由主持人 | 直达消息互相辩论 | 都经由主持人 |
| 连线含义 | 协作关系声明 | 允许互发消息的通道 | 协作关系声明 |
| 终止方式 | 主持人判断完成 | 轮数 / Token 预算超限自动闭麦 | 主持人判断完成 |
选择「多模型平等」时,界面会弹出安全限制设置(最大轮数、最大 Token 量),超限即闭麦暂停。选择「针锋相对」时,charter 自动附加红队评审协议(只挑毛病、不给替代方案)。
配置
默认配置开箱即用。Profile 可覆盖:
- id: roundtable
config:
stateDir: .roundtable # 会议状态目录(工作区下) memberProvider: spawn # 专家节点子代理后端(spawn / fork) maxNodes: 8 # 单场会议专家上限 defaultMode: orchestrated # 默认协作模式 memberMaxDepth: 1 # 专家再委派深度上限 promptSectionOrder: 116 # 使用策略提示段顺序
运行时偏好(默认模式与预算默认值、专家回答限制)在「设置 → 圆桌会议」中修改,持久化到 <DSH_HOME>/roundtable/preferences.json(插件自管 —— 宿主 0.2.0-rc.2 起 settings 服务不再接受插件注册配置命名空间,见 release-notes/v1.0.0-rc.2.md):
| 偏好 | 默认 | 说明 |
| 默认协作模式 | orchestrated | 主持人统筹 / 多模型平等 / 针锋相对 |
| 最大轮数 / 最大 Token | 10 / 200000 | 会议预算,超限闭麦 |
| 互通开关 | 开 | 只看当前对话会议 / 看全部 |
| 专家每轮输出上限(token) | 0(不限制) | 专家组模型 max_tokens |
| 专家每轮最多意见数 | 0(不限制) | 专家 prompt 约束 |
| 反馈开关 | 开 | 会议结束后是否询问 1 键有用度(关闭即永久不再弹) |
| skill 传递方式 | 主持人中转 relay | skill 由主持人读后转交 / 专家自行用 skill 工具加载(direct) |
工具一览(模型可见协议)
| 工具 | 作用 |
| roundtable_plan_meeting | 开会第一步:出会议草案卡片(专家名单 + 全部参数 + 选中 skill),阻塞等用户确认;返回 approved(按此创建)/ revise(附用户意见,改完再弹)。不创建会议。 |
| roundtable_create | 建会,调用者成为主持人(v0.2.31 起支持 kb_path / skills / skill_delivery,按卡片确认值创建) |
| roundtable_add_node / remove_node | 增删专家节点(可续聊子代理 + 总纲 persona);add_node 可选 reasoning_effort(取值由模型能力定义,不传即继承主持人) |
| roundtable_connect / disconnect | 建/删连线(单向 / 双向) |
| roundtable_speak | 发言写入会议记录(可定向,不填交网关) |
| roundtable_send_message | 直达消息(平等模式专家互辩) |
| roundtable_summarize | 拉取汇聚网关结构化摘要 |
| roundtable_request_decision | 暂停会议、请求人类决策 |
| roundtable_status | 会议全景(节点活动、连线、预算、待决策、待办行为记录、知识库缓存命中/失效) |
| roundtable_actions_clear | 清空用户的待办行为记录(UI 改专家后主持人执行完清空);返回 {cleared, malformed},malformed > 0 表示有操作因坏行丢失、必须告知用户 |
| roundtable_set_budget | 调整预算 / 闭麦恢复 |
| roundtable_proxy_think | 代理思考:导演为黑盒模型做思考铺垫 + 参数翻译 |
| roundtable_start_review | 发起针锋相对评审:记录用户问题与主持人方案(首轮 reviewPass=1;上一轮 done 后再调 = 新一轮复审,需不超过 maxReviewPass=3,超上限须 user_approved_extra_pass=true) |
| roundtable_collect_review | 收集红队专家发言为观点(LLM 拆分含证据分级,失败本地兜底),打开评审弹窗 |
| roundtable_finish_review | 结束本轮评审(→ done),附修订说明;闭环复审由此进入下一轮 |
| roundtable_export_review | 导出完整评审记录(多轮/观点/表态/驳回理由/修订对照)为 Markdown 交付物 |
| roundtable_export_meeting | 导出整场会议(元数据头/议题/专家/决策/逐轮发言/评审/用户调整)为 Markdown,并写入 <meetingDir>/export.md(传 save: false 只取文本) |
| roundtable_kb_digest | 记下某个知识库文件的要点摘要(插件自己 stat 出 size/mtime 作失效键);下次 roundtable_status 显示 [HIT] 即可复用,不必重读 |
| roundtable_close | 结束会议(记录保留) |
使用边界与注意事项
- 一个主持人同一时间只能带一场活动会议:新开会前先 roundtable_close。
- 专家是回合制子代理:消息唤醒 → 干一整轮 → 空闲;「辩论」是消息驱动的异步轮流对话,不是实时并发。
- 子代理的最终回复不可被程序直接读取:专家必须通过 roundtable_speak 把产出写入会议记录,汇聚网关与主持人从记录读取。这是协议约束,不是 bug。
- 设置卡片没有富表单:原生 userQuestions 只有「选项列表 + 一个自由文本框」,所以「可改全部」靠自由文本 + 回流重建实现(写明改动 → 主持人重出草案再确认),而不是点选式表单;点选式编辑面板属后续版本。
- skill 由 DSH 原生发现:插件不做导入动作,只读 ctx.skills 清单与正文;导入 = 把 skill 文件放进官方目录。若宿主未挂载 skill 服务,卡片上的清单为空、direct 模式自动降级为「不要调用 skill 工具」,插件本身照常工作。
- 会议已选 skill 在创建时固化:会议中途无法改会议的 skill 清单;需要新资料时走 relay 路径由主持人转交。
- 人类决策依赖 userQuestions 服务(标准 Web profile 自带);其他 profile 若无此服务,决策功能不可用,设置卡片会返回 decision="unavailable" 让主持人改用文字确认。
- 状态为文件级持久化:单 DSH 进程内串行操作;多进程同时改同一会议不保证一致,请勿在多个 DSH 实例中开同一场会。
- 删会议 = 删整个 .roundtable/<id>/ 目录:不可恢复,删除前确认。
- 第三方模型要显式指定:拉取 zai / GLM 等厂商专家时,在 UI 下拉或消息中说明 provider/model(如 zai/glm-5.2),否则可能路由失败或模型不符。
已知限制(迭代中)
| 限制 | 影响 | 现状 |
| 跨 Session 越权(A1) | RPC 通道(connection 与插件自有 web 路由)不暴露调用者的 session 身份,因此同进程内其他会话只要知道会议 id,理论上就能调用该会议的读写端点(改连线、改知识库路径、评审表态、专家增删队列)。现有防线是「会议归属校验 + 状态机校验」,不是身份校验。 | 本版接受现状:单人 / 单工作区使用无实际影响。多人共用同一 DSH 实例、或不信任同实例其他会话时,请把该实例视为同一信任域。彻底收紧需要宿主 connection 暴露调用者身份,属后续版本。 |
| Host 侧并发写竞态 | 插件生命周期事件(stop/dispose)与会议文件写操作并发时,理论上可能交错写入 / 丢行 | 已知风险暂缓;单进程内的会议级写操作已由 withMeetingLock 串行化,正常使用基本不会触发 |
v0.2.35 已修复(原「已知限制」条目):user-actions 的清空原先是非原子的直接截断——崩溃或与 UI 追加交错时可能留下半行 JSON,而读取侧静默跳过,那条用户操作就永久消失且无人知道。现在追加与清空共用一把串行锁、都走「同目录 tmp + rename」的原子写;清空时若确实读到坏行,会通过返回值 malformed 暴露出来,主持人必须如实告知用户。
评审与反馈设计(v0.2.2)
- 闭环复审:maxReviewPass=3(首轮 + 最多 2 次复审)。每轮用户表态后主持人修订方案并 roundtable_finish_review(附修订说明);复审只核对上一轮已认定缺陷是否修复。想突破 3 轮上限,必须用户显式同意(工具参数 user_approved_extra_pass=true),否则拒绝——防无限循环。
- 驳回必填理由:前端驳回会先要求填理由;留空会失败。理由随 user-action 回传给主持人,修订方案时可逐条回应「为何驳回」。
- 反馈隐私边界:feedback.jsonl 仅含协作模式、专家 provider/模型、轮数/Token、时间戳与用户主动填写的说明,不含任何对话/发言内容;建议把该文件加入工作区 .gitignore;设置页可随时一键清空或关闭询问。
开发
pnpm install
pnpm typecheck # 双端 tsc:host(tsconfig.json)+ client(tsconfig.client.json)
pnpm test # 零依赖 node --test:Node 24 原生剥离类型,直接 import src/.ts
pnpm build # typecheck + tsdown(lib/index.js + lib/client.js)+ 双端 .d.ts
pnpm test:inline # 同上,但测试在同一进程内跑(不 spawn 子进程 / 不占用管道)
node scripts/generate-logos.mjs # 替换 src/client/assets/logos/ 下图片后重跑,再 pnpm build
pnpm test 用的是 Node 标准测试运行器(每个测试文件一个子进程)。在禁止子进程管道的环境里(例如 DSH 自带沙箱)它会以 spawn EPERM 失败——那是环境限制,不是测试失败;改用 pnpm test:inline 即可(需要 Node ≥ 22.8)。
工程门禁(v1.0.0-rc.1 新增)
pnpm compatibility # 宿主支持矩阵一致性:矩阵 / devDeps / peer / 源码能力清单
pnpm verify:package # 发布门禁:files、入口文件、.ts 残留、每个模块在产物里有痕迹
pnpm doctor # 只读诊断:宿主与插件版本、混装、cordis 实例同一性
pnpm release # 发布护栏:渠道判定、防 latest 倒退、产物 SHA-256(不自动发布)
pnpm publish:guard # 上面三项串起来跑一遍,全绿才算可发(渠道是 GitHub,不发 npm)
宿主基线是唯一真话:compatibility.json 的 recommendedHost 决定 package.json 的 devDependencies 该指向哪一版——它决定使用者 pnpm install 之后拿到哪一版类型。改基线时四处一起改,pnpm compatibility 会替你验证。
宿主升级后的固定动作(详见 docs/host-contract.md):
1. 改 compatibility.json 的 recommendedHost 与 package.json 的 roundtable.hostBaseline;
2. 同步 devDependencies 到该版本,pnpm install;
3. pnpm typecheck && pnpm test;
4. pnpm doctor —— 先看混装与 cordis 同一性,再怀疑 API 破坏;
5. pnpm compatibility && pnpm verify:package;
6. 重建 lib/;宿主半体的改动需要重启 DSH。
⚠️ cordis 必须是同一个物理副本。宿主与插件各带一份 @deepseek-ai/cordis 时,TypeScript 会当成两个模块,declare module 的 Context 声明合并失效,表现为编译期大片 Property 'subagents' does not exist on type 'Context'。这不是 API 破坏——pnpm doctor 会直接告诉你是不是混装。
发布(npm + GitHub Release)
本插件的发行渠道是 npm,包名 @y9931666/dsh-plugin-roundtable;GitHub Release 同时打,用来留档与通知。
pnpm build && pnpm publish:guard # 全绿才算可发
npm publish # 预发布自动进 next,稳定版进 latest
git tag v<version> && git push origin v<version> # GitHub Release 的触发点
- scripts/release.mjs 只做产物快照:渠道判定、防 latest 倒退、产物 SHA-256 与候选 .tgz(写到 .git/pack-preview/)。它不调用 npm,也不会替你发布——npm publish 那一步永远由人显式执行。
- 先构建再发布:lib/ 不进 git(.gitignore 排除了它),npm publish 打的是你本地磁盘上的 lib/。忘了 pnpm build 就会把上一次的旧产物发出去。
- 用户端装预发布版要带 @next:dsh plugin --profile web add @y9931666/dsh-plugin-roundtable@next。
- 本机若 pnpm install 报 ERR_SQLITE_ERROR / unable to open database file,那是 pnpm store 数据库不可用(不是依赖问题):换一个可写的 store 路径,或在能跑 pnpm 的机器上重装后同步 node_modules。此状态下也可以直接运行 scripts/.mjs(它们不依赖 pnpm)。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
9931666/dsh-plugin-roundtable
roundtable V1.0.0把一次 DeepSeek Harness 会话,从"你和 AI…
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,173已汉化DeepSeek 客户端
74.4
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,197已汉化DSH
71.7
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,308已汉化DSH
71.3
智能体运行框架路由HarnessRouter/harnessrouter
智能体运行框架的统一接口。
★ 3,897已汉化DSH
71.2