🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

圆桌会议 whateverboy2333/dsh-round-table

DeepSeek Harness
whateverboy233329 天前有提交已提供中文文档扫描:含敏感能力

让多个 Agent 同场讨论并生成任务卡协作交付

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/7 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add whateverboy2333/dsh-round-table
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/11/05·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 29 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/11/5) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 79 处,展示前 74 条)
  • 读取本地文件
    lib/index.js:21
    const manifest = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
  • 写入本地文件
    lib/meetings.js:159
    await writeFile(temporary, content, { encoding: 'utf8', flag: 'wx' });
  • 删除本地文件
    lib/meetings.js:162
    await rm(temporary, { force: true }).catch(() => undefined);
  • 写入本地文件
    lib/meetings.js:167
    await rename(temporary, file);
  • 写入本地文件
    lib/meetings.js:177
    await writeFile(file, content, 'utf8');
  • 删除本地文件
    lib/meetings.js:182
    await rm(temporary, { force: true }).catch(() => undefined);
  • 读取本地文件
    lib/meetings.js:197
    raw = await readFile(join(root, meetingId, 'meeting.json'), 'utf8');
  • 读取本地文件
    lib/meetings.js:215
    const entries = await readdir(root, { withFileTypes: true });
  • 写入本地文件
    lib/meetings.js:269
    await mkdir(dir, { recursive: true });
  • 读取本地文件
    lib/meeting-folder.js:27
    stat = await lstat(cursor);
  • 读取本地文件
    lib/meeting-folder.js:36
    const canonical = await realpath(cursor);
  • 写入本地文件
    lib/meeting-folder.js:44
    await mkdir(path);
  • 读取本地文件
    lib/meeting-folder.js:49
    } await guard(base, path); if (!(await lstat(path)).isDirectory())
  • 读取本地文件
    lib/meeting-folder.js:53
    const stat = await lstat(path);
  • 删除本地文件
    lib/meeting-folder.js:89
    await unlink(tmp);
  • 删除本地文件
    lib/meeting-folder.js:96
    await unlink(tmp).catch(() => { });
  • 读取本地文件
    lib/meeting-folder.js:207
    const workspacePath = await realpath(w.path);
  • 读取本地文件
    lib/meeting-folder.js:215
    const contents = await readdir(path);
  • 写入本地文件
    lib/meeting-folder.js:332
    await rename(tmp, path);
  • 删除本地文件
    lib/meeting-folder.js:337
    await unlink(tmp).catch(() => { });
  • 写入本地文件
    lib/tasks.js:20
    async function write(path, value) { await mkdir(join(path, '..'), { recursive: true }); const temp = `${path}.${randomUUID()}.tmp`; await writeFile(te
  • 写入本地文件
    lib/tasks.js:20
    async function write(path, value) { await mkdir(join(path, '..'), { recursive: true }); const temp = `${path}.${randomUUID()}.tmp`; await writeFile(te
  • 写入本地文件
    lib/tasks.js:20
    async function write(path, value) { await mkdir(join(path, '..'), { recursive: true }); const temp = `${path}.${randomUUID()}.tmp`; await writeFile(te
  • 读取本地文件
    lib/tasks.js:22
    const value = JSON.parse(await readFile(file(root, meetingId, taskId), 'utf8'));
  • 删除本地文件
    lib/tasks.js:39
    await rm(file(root, meetingId, task.taskId), { force: true });
  • 读取本地文件
    lib/member-session-state.js:20
    raw = await readFile(identityFile(id), 'utf8');
  • 写入本地文件
    lib/member-session-state.js:52
    await mkdir(directory, { recursive: true });
  • 写入本地文件
    lib/task-relay.js:12
    throw new Error('会议不存在'); const task = await createTask(meetingId, toSessionId, title, prompt); const inbox = join(root, meetingId, 'inbox', `${toSess
  • 写入本地文件
    lib/task-relay.js:12
    throw new Error('会议不存在'); const task = await createTask(meetingId, toSessionId, title, prompt); const inbox = join(root, meetingId, 'inbox', `${toSess
  • 读取本地文件
    lib/meeting-management.js:18
    const rootStat = await lstat(base).catch((e) => { if (e.code === 'ENOENT')
  • 读取本地文件
    lib/meeting-management.js:24
    const stat = await lstat(target).catch((e) => { if (e.code === 'ENOENT')
  • 读取本地文件
    lib/meeting-management.js:28
    const actualBase = await realpath(base);
  • 读取本地文件
    lib/meeting-management.js:30
    const s = await lstat(path);
  • 读取本地文件
    lib/meeting-management.js:33
    const actual = await realpath(path), r = relative(actualBase, actual);
  • 读取本地文件
    lib/meeting-management.js:37
    for (const entry of await readdir(path))
  • 删除本地文件递归
    lib/meeting-management.js:130
    await rm(checked, { recursive: true, force: false });
  • 写入本地文件
    lib/meeting-ux.js:175
    await mkdir(join(dir, 'assets'), { recursive: true });
  • 读取本地文件
    lib/meeting-ux.js:186
    const stat = await lstat(originalPath);
  • 读取本地文件
    lib/meeting-ux.js:189
    const original = await readFile(originalPath);
  • 读取本地文件
    lib/meeting-ux.js:230
    const data = await readFile(join(dir, 'assets', id));
  • 写入本地文件
    lib/meeting-file-upload.js:68
    await rename(tmp, path);
  • 删除本地文件
    lib/meeting-file-upload.js:72
    await unlink(tmp).catch(() => { });
  • 读取本地文件
    lib/meeting-file-upload.js:104
    const st = await lstat(path);
  • 写入本地文件
    lib/meeting-file-upload.js:119
    await rename(tmp, path);
  • 删除本地文件
    lib/meeting-file-upload.js:122
    await unlink(tmp).catch(() => { });
  • 读取本地文件
    lib/meeting-file-upload.js:175
    if ((await readdir(directory(mid, id))).length)
  • 读取本地文件
    lib/meeting-file-upload.js:292
    const st = await lstat(path);
  • 删除本地文件
    lib/meeting-file-upload.js:295
    await unlink(path);
  • 读取本地文件
    lib/secretary-log-artifacts.js:14
    const actualBase = await realpath(base);
  • 读取本地文件
    lib/secretary-log-artifacts.js:20
    const stat = await lstat(cursor).catch((error) => { if (error.code === 'ENOENT')
  • 读取本地文件
    lib/secretary-log-artifacts.js:22
    if (stat && (stat.isSymbolicLink() || !stat.isDirectory() || await realpath(cursor) !== cursor))
  • 读取本地文件
    lib/secretary-log-artifacts.js:26
    const stat = await lstat(directory).catch((error) => { if (error.code === 'ENOENT')
  • 读取本地文件
    lib/secretary-log-artifacts.js:62
    const stat = await lstat(absolute);
  • 读取本地文件
    lib/secretary-log-artifacts.js:65
    const actual = await realpath(absolute);
  • 删除本地文件
    lib/secretary-log-artifacts.js:121
    await unlink(path);
  • 读取本地文件
    lib/meeting-file-io.js:17
    stat = await lstat(p);
  • 读取本地文件
    lib/meeting-file-io.js:24
    if (stat.isSymbolicLink() || !same(await realpath(p), p))
  • 写入本地文件
    lib/meeting-file-io.js:29
    await mkdir(path);
  • 读取本地文件
    lib/meeting-file-io.js:34
    } await guardOwnedFilePath(base, path); if (!(await lstat(path)).isDirectory())
  • 读取本地文件
    lib/meeting-file-io.js:38
    const before = await lstat(path);
  • 删除本地文件
    lib/meeting-file-io.js:94
    await unlink(tmp).catch(() => { });
  • 删除本地文件
    lib/meeting-file-io.js:110
    await unlink(tmp);
  • 删除本地文件
    lib/meeting-file-io.js:116
    await unlink(tmp).catch(() => { });
  • 写入剪贴板
    lib/client/ChatDiscussion.js:84
    return _jsxs("article", { id: `flow-${m.id}`, "data-flow-message": m.id, className: `rt-chat-row ${own ? 'own' : ''}`, children: [_jsx("button", { cla
  • 发起网络请求
    lib/client/LegacyDrafts.js:14
    return; let alive = true; void fetch('/plugins/round-table/meetings?view=summary').then(r => { if (!r.ok)
  • 写入剪贴板
    lib/client/LegacyDrafts.js:84
    await navigator.clipboard.writeText(entry.text);
  • 发起网络请求
    lib/client/MeetingPanel.js:60
    const response = await fetch(url, { headers: cached ? { 'if-none-match': cached.etag } : {} });
  • 发起网络请求
    lib/client/MeetingPanel.js:76
    const response = await fetch(url, {
  • 发起网络请求
    lib/client/MeetingPanel.js:116
    const response = await fetch('/api/session.history', {
  • 发起网络请求
    lib/client/MeetingPanel.js:314
    const response = await fetch(MEETINGS_URL, { method: 'POST', headers: { 'content-type': 'application/json', 'x-round-table-scope': scope }, body: JSON
  • 写入剪贴板
    lib/client/MinutesPanel.js:69
    setBusy(undefined); }); }, children: "\u9884\u89C8\u8BFB\u53D6\u8303\u56F4" }), _jsx("button", { type: "button", style: button, disabled: !ready || !!
  • 发起网络请求
    lib/client/SessionPicker.js:58
    useEffect(() => { let alive = true; void fetch('/plugins/round-table/meetings', { method: 'POST', headers: { 'content-type': 'application/json' }, bod
  • 发起网络请求
    lib/client/asset-upload-client.js:52
    const response = await fetch(`/plugins/round-table/meetings/${encodeURIComponent(meetingId)}/asset-download`, { method: 'POST', headers: { 'content-ty
  • 发起网络请求
    lib/client/ui-state.js:58
    throw Object.assign(Error('DSH 实例已变化,请重新打开圆桌'), { status: 409, requestState: 'rejected', retryable: false }); const response = await fetch(`/plugins/r
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-ui-sidebar@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-tools@deepseek-ai/schemastery@deepseek-ai/dsh-agent@deepseek-ai/dsh-session@deepseek-ai/dsh-subagent@deepseek-ai/dsh-persona@deepseek-ai/dsh-llm@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-api-workspace-controller
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 多Agent同场讨论
  • 可编辑任务卡
  • 成员工作流协作

圆桌会议、可编辑任务卡和成员工作流,为 DeepSeek Harness 桌面端而生。

README

由 DeepSeek 最新模型翻译生成
dsh-round-table · 圆桌骑士 让多个 Agent 原窗口在同一场会议中讨论、协作和交付。普通问答直接发送;需要执行时,由所选成员生成任务卡,核对后发布。成员工作日志、共享资料、自由步骤和独立秘书纪要集中在会议内,成员保留原会话与上下文。 当前版本1.0.0。 本版仅调整版本编号,功能沿用已验收的0.1.18。 安装 宿主要求:Windows DeepSeek Harness 0.2.0-rc.2,目标 profile 为 desktop。 在桌面「插件」页添加 dsh-round-table@1.0.0,然后从应用菜单或托盘退出并重新打开,点击侧栏「圆桌」。仅关闭窗口不等于完全退出。
展开完整文档(README 剩余 1 节)
dsh-round-table · 圆桌骑士

让多个 Agent 原窗口在同一场会议中讨论、协作和交付。普通问答直接发送;需要执行时,由所选成员生成任务卡,核对后发布。成员工作日志、共享资料、自由步骤和独立秘书纪要集中在会议内,成员保留原会话与上下文。

当前版本1.0.0。 本版仅调整版本编号,功能沿用已验收的0.1.18。

安装

宿主要求:Windows DeepSeek Harness 0.2.0-rc.2,目标 profile 为 desktop。 在桌面「插件」页添加 dsh-round-table@1.0.0,然后从应用菜单或托盘退出并重新打开,点击侧栏「圆桌」。仅关闭窗口不等于完全退出。

也可使用桌面发行版自带的 CLI;先退出应用,不使用 PATH 中可能属于其他安装的裸 dsh:

$desktopCli = Join-Path $env:LOCALAPPDATA 'Programs/DeepSeek Harness/resources/runtime/cli/bin/dsh.cmd'
& $desktopCli --version # 应为 0.2.0-rc.2 & $desktopCli plugin --profile desktop add 'dsh-round-table@1.0.0'

npm本版入口 · GitHub Release 与本地安装包 · 完整安装、构建与恢复指南

五步开始

1. 建会并选人: 填写目标、背景与工作区,邀请已有窗口或从宿主预设新建成员。创建会发送入会简报,成员可能回应;每会有独立秘书。
2. 先讨论: 输入 @ 并从菜单选成员,发送普通问题;没有选人时只记录到会议。图片、文档可拖入,截图可粘贴。Enter发送/记录,Ctrl/⌘+Enter换行。
3. 需要工作时生成卡: 已@成员后点击「任务卡生成」,正文可为空。每个待办返回一张卡;生成和调整不执行卡内工作,不自动识别聊天意图来派任务。
4. 核对后发布: 直接修改正文,或让原生成者按意见调整;保存、确认责任成员并选择卡片,再确认发布。批准版本先写本会目录,随后通知所选成员执行;提交结果与人工验收分开。
5. 持续跟进: 在右侧成员日志查看回应和工作状态;固定协作可在进程页自行编排。秘书按需生成纪要草稿,核对后再选择公开、通知或导出。

界面与用法

以下为0.1.18生产React界面,使用合成会议、成员与材料,不是实际Agent执行结果;主窗口为布局示例。

讨论与并排工作

默认380px侧栏与原页面并排,可拖宽;关掉再打开恢复默认大小。正文与附件同条发送,上传仅归档。图片能否交给Agent读取仍取决于模型能力。

圆桌讨论与主窗口并排布局示例

任务卡:生成、修改、选择发布

生成者与责任成员分别显示。原稿、手工修改和AI调整建议保留版本,晚到建议不覆盖用户编辑;只有核对选定版本并确认发布才通知执行。

任务卡清单、全文编辑和选定发布

成员详情与会议工作日志

右侧边栏集中显示本会资料、投递、回应、正式成果及验收。执行需要时恢复同一原会话;归档、删除或身份无法确认时提示处理,不创建替代窗口。

右侧成员详情与会议工作日志

自由步骤:顺序、并行和删除

从空白开始,直接改标题,每行选择成员,同一Agent可负责多个环节。任意阶段可并行,标题栏常驻删除,自动运行默认关闭。保存只记录安排;首轮预览确认启动首阶段,并授权已勾选的后续规则,未勾选的后续步骤仍手动。活动结构及已开始字段冻结,旧图与历史保留。

自定义步骤、成员指派、并行与删除

查看暗色步骤列表

暗色步骤列表

资料与会议文件夹

本会成功上传的文档、图片及版本均归档,移除草稿引用不删原件。工作区中的专属会议文件夹保存材料、批准任务卡、成果和纪要,成员按批准版本读取。

会议资料、版本与共享目录

秘书纪要

先生成草稿,再核对会议来源和任务事实。公开到会议只新增记录;发送通知才唤醒成员,也可以保留不发送。纪要不能自动证明全部内容正确。

秘书纪要草稿与事实核对

使用边界

- 仅上述桌面版本;成员在同一DSH进程,同一DSH_HOME只运行一个圆桌队列宿主。不支持跨机器或定时纪要。
- 日志不自动公开其他私聊;成员保留原上下文及文件权限,会议资料选择不构成权限隔离。秘书不执行普通成员工作。
- 图片投递需模型适配器明确支持,当前DeepSeek适配器不支持;PDF、Office、RAR等可保存完整原件,不自动解析或解压。具体大小见指南。
- 保存流程不启动工作;生成或调整任务卡会请求成员分析,确认发布才执行卡内工作,纪要生成也会使用模型。送达、提交与验收是不同状态;不确定投递先核对,重试可能重复。执行额度不是Token或费用硬上限。
- 升级前备份数据。永久删除会议需二次确认且无回收站;普通成员与工作文件保留,停止会议不终止原Agent。旧版本回退依赖完整备份。

深入阅读与维护

完整双语使用指南 · PRD · ENGINEERING · 工具/HTTP API · Agent维护入口

公开 npm run verify 检查类型和包内容;内部124套回归与225项浏览器证据不随仓库发布。main文档可更新,v0.1.18标签和既发资产保持不变。

MIT © whateverboy2333
预览分享卡片长什么样 ↓whateverboy2333/dsh-round-table
分享 · DeepSeek Harness Hub
whateverboy2333/dsh-round-table

让多个 Agent 同场讨论并生成任务卡协作交付

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部