dsh-agent-arena
English version
把几位 AI 和人类用户放进同一个持续协作群:大家像在 QQ 群里一样连续发言、并行处理任务并使用工具完成工作。人类可以随时自由发言、@指定 AI、@管理员调整会议,并在右侧协作控制台管理任务、方案与成果。
直接选择已经配置好的 AI 用户,创建长期协作会议,而不是重复填写 provider 和 model。
v0.6.0 更新速览
本版本是按 DeepSeek Harness Web 0.1.7-rc.2 的接口和 Agent 行为开发与验收的标准版本。当前发布包只保证在 DSH Web 0.1.7-rc.2 上工作,其他 DSH 版本暂不保证兼容;后续会针对其他版本另行制作兼容版 release。
本版本大幅优化 UI 体验。
每个角色独立的上下文查看与压缩
- 右侧“动态”面板新增上下文使用区,按角色分别显示估算 Token、模型上下文窗口、使用比例、未压缩消息数和组成明细。
- 每个 AI 角色拥有独立的压缩进度和摘要,不会把四个角色错误地共用一个压缩窗口;公开聊天记录仍然对所有角色可见。
- 创建 AI 用户时必须选择压缩方式:DSH 原生压缩或服务端压缩。
- DSH 原生压缩支持角色级“立即压缩”和会议级自动压缩;自动压缩阈值可以调整,聊天区原始记录不会被删除。
- 选择服务端压缩时,主动压缩按钮会禁用并提示当前方式不支持主动压缩;是否可压缩取决于供应商是否提供对应能力,例如 OpenAI Responses API。
角色能力、运行状态与动作审计
- 每个会议或群聊都能单独控制每个 AI 的文件、终端、网络、子 Agent、协作板和 Skill / MCP 能力。
- 能力默认保持开启,但它只是工具识别过滤,不是安全隔离;高风险操作仍应使用 DSH 原生权限模式和审批。
- 动态面板显示运行状态、当前阶段、请求数、Token、接话判断、错误、重试和最近耗时;Token 单独放在第二行,长数字不会挤压其他统计。
- 每个角色的动作记录会保留在历史窗口中,不再由新动作覆盖旧动作。
- 会议支持暂停、继续和重试当前运行;任务板的待开始任务提供明确的“开始任务”按钮。
协作面板与参会阵容整理
- 模式导航可以折叠;动态、任务、决策和成果区域都支持调节尺寸,长会议标题不会把右侧面板或人类输入区挤出屏幕。
- 决策板改为按方案展示意见摘要和详情,更适合比较理由、风险与信心,不再依赖人气投票。
- 选择参会角色后,阵容卡片只显示角色名、供应商/模型和已启用能力,不再展开很长的人格文本;人格仍会完整用于实际对话。
- 中英文界面继续跟随 DSH 原生语言设置,本版本新增的上下文、能力、运行统计和审批文案也已同时提供中英文。
v0.5.0 更新速览
这次更新让不同协作群可以在各自的项目目录工作,解决透明主题下的界面重叠,并让 Agent Arena 直接跟随 DSH 切换中英文。
每场对话独立的工作区
会议、群聊和私聊都可以在各自的设置中保存工作区目录,让角色和管理员在对应项目中执行文件与命令操作,无需为了两个项目启动两份 DSH。
- 输入已经存在的绝对目录;留空则跟随 DSH 启动目录。
- 每场对话分别保存,切换会话不会串用未保存的输入;无效目录会明确提示且不覆盖原设置。
- 正在执行的同一批任务保持原工作目录,下一批任务才使用新设置,避免运行中切换路径。
- 文件协作锁跟随任务所在的工作区解析,降低多角色编辑同一文件时的冲突风险。
工作区目录不等于安全沙箱。 Read Only、Workspace Write 和 Full access 权限仍需独立设置。
透明主题与窄屏布局修复
全屏打开 Arena 时,底层 DSH 侧栏、聊天和输入区不再透过透明主题叠到插件上;退出后恢复原界面,会话内嵌模式不受影响,也不会强制取消壁纸透明效果。另修复窄屏标题、长英文按钮以及聊天与协作面板重叠的问题,让底部操作能正常滚动到。
跟随 DSH 切换中英文
进入 DSH 设置 → 通用设置 → 语言(Settings → General → Language)选择中文或 English 即可。插件不增加独立语言开关,已打开的页面即时更新,未保存的输入也会保留。
- 会议、私聊、群聊、AI 用户管理、协作设置和历史管理统一切换。
- 任务板、决策板、成果库、角色动态、权限及审批操作同步切换。
- 插件生成的新系统提示与校验错误支持双语显示,日期格式跟随语言。
- 只切换界面,不翻译对话内容:角色名称与人格、预设对话、历史消息、任务内容及模型/供应商原始错误保持原文。无法可靠识别的旧版系统提示也保留原文。
翻译维护方式见 本地化开发说明。
感谢贡献者 / Thanks to our contributors
感谢 @linkhaha 在 PR #1 中深度使用并贡献每个聊天独立工作区的功能,也感谢 @ShakeCrane 在 PR #2 中提供透明主题下的界面隔离修复和回归测试。
也向两位说声抱歉:这段时间忙于课业,忘记及时处理消息和 PR,让你们久等了。谢谢你们的耐心、认真反馈与贡献!
Special thanks to @linkhaha for per-chat working directories and @ShakeCrane for the translucent-theme fix and regression tests. I'm sorry for the delayed replies and PR reviews—I was busy with coursework and forgot to follow up on the messages. Thank you both for your patience and contributions!
v0.4.0 权限与协作界面更新
- 每个对话独立设置 Agent 权限:会议和群聊中的每个 AI 角色(包括管理员)都可以分别选择
Read Only、Workspace Write 或 Full access,不会修改该角色在其他对话中的权限。
- 原生审批式交互:受限角色需要执行高风险动作时,审批请求直接显示在聊天记录中;人类可以允许一次、拒绝,或附加自己的执行要求。
- 完整动作记录:角色动态不再只保留最后几条状态,新增动作历史窗口,可按角色查看完整工作过程、工具、文件锁和错误记录。
- 可调节协作布局:右侧协作栏支持横向拉伸;会议标题区、任务板、决策板和成果库支持纵向调节。标题区向上压缩时文字同步缩小,向下扩展时文字同步放大。
- 更清晰的权限入口:权限模式直接位于“动态”板每个角色卡右侧,不再单独增加会议成员板;保存时显示状态,失败时提供明确提示。
这次更新的目的,是让多 AI 协作不必默认交出完整机器权限:同一场会议里可以让调研角色只读、实现角色写入工作区,并只在确有需要时开放完整权限。
v0.3.3 布局修复
- 超长会议标题现在会在可用宽度内显示省略号,不会再把右侧协作栏或底部人类操作区挤出屏幕。
- 桌面端右侧协作栏支持拖动调整宽度,窄屏自动采用上下布局。
- 人类提示、点名栏、输入框和会议操作按钮始终保持在可视区域,长文字可以正常换行。
v0.3.2 更新速览
- 可自定义队列速率:同渠道每分钟放行次数不再固定为 55,可在协作设置中填写 1–10000。
- 可自定义冷却错误码:默认使用 429、500,支持添加或删除;也能识别部分中转服务把真实 429 包装成
500/get_channel_failed 的情况。
- 更干净的错误展示:空响应自动重试一次,连续为空时静默;其他运行错误移到右侧角色动态栏标红,不再占用聊天区。
v0.3.1 补丁
修复协作设置页面中勾选更新选项后,后台状态刷新会让勾选自动消失的问题。未保存的选择现在会稳定保留,直到用户保存或离开页面。
v0.3.0 更新速览
这次更新主要解决多个 AI 共享供应商渠道时容易触发限流,以及自动接话判断消耗较多 Token 的问题,新增以下三个可选配置:
- 渠道限流冷却选项:同一供应商配置命中用户设置的错误码后,相关角色会统一等待,并优先采用提供方返回的重试时间。默认错误码为 429、500,可以自行添加或删除。
- 同渠道请求队列选项:同一供应商下的正式发言、接话判断、工具续跑、子 Agent、重试和失败请求统一纳入队列。每分钟放行次数可在协作设置中自定义,默认 55;高并发时回复速度可能降低。
- 自动接话判断选项:管理员面板提供自动接话总开关;每个 AI 用户还可以单独关闭自己的判断请求,改由管理员直接判断是否适合接话。这样可以在保留连续讨论体验的同时,由用户自行控制额外 Token 消耗;关闭总开关不会影响人类发言和明确
@AI。
Arena 不读取或保存 DSH 中的 API Key,因此共享渠道按“供应商配置”识别:同一供应商配置下的不同模型会共用队列和冷却,分别配置的供应商则互不影响。
完整版本记录请查看 CHANGELOG.md。
它是什么
dsh-agent-arena 是 DeepSeek Harness 的多人 AI 协作插件。它把人类用户、多个 AI 用户和一个可配置管理员放进同一个长期会话,让讨论、任务执行、方案选择与成果验收发生在统一界面中。
它并不是把同一条 Prompt 并排发送给几个模型。每位 AI 用户都有自己的身份、人格、模型配置和独立 Agent 会话,可以读取完整聊天记录、使用当前 DSH Agent Preset 提供的工具与技能、创建子 Agent,并根据上下文判断是否继续接话。
核心亮点
0. 渠道保护与自动接话策略
- 用户设置可选开启渠道限流冷却:同一供应商配置命中自定义错误码后,所有共享角色一起冷却;默认识别 429、500,并可自由增删。
- 用户设置可选开启同渠道请求队列:共享渠道的角色排队请求,每分钟放行次数可以自定义,降低触发 RPM 限制的概率。
- 自动接话由管理员总开关控制;关闭后不影响人类发言和
@AI。每个 AI 用户还可以单独关闭自动接话。
- 自动接话沿用角色判断后由管理员过滤跑题、重复和刷屏的分配逻辑;用户可以关闭总开关,也可以为某个 AI 单独关闭判断请求以节省 Token。
0.5. 每场对话独立的 Agent 权限
- 每个会议或群聊分别保存角色权限,不会影响同一 AI 在其他会话中的设置。
- 支持
Read Only、Workspace Write 和 Full access 三种模式,管理员也可以单独配置。
- 权限选择位于角色动态卡右侧;正在保存、保存失败都会有清晰反馈。
- 受限模式遇到需要批准的动作时,会在聊天记录中显示审批卡片,由人类做最终决定。
1. AI 用户:先创建角色,再邀请进会话
AI 用户是一等成员,而不是会议表单里的临时模型槽位。
- 从 DSH 系统设置中选择已经配置好的供应商与模型,不在插件里重复保存 API Key。
- 自定义显示名称、头像和人格;人格可以留空,不强迫套用预设。
- 支持预设快捷对话,方便保存角色常用的开场方式或指令。
- 内置常见 AI 品牌头像库,也支持上传图片后拖动、滚轮缩放和正方形裁剪。
- 同一个 AI 用户可以加入私聊、群聊和多个会议;已建立的群聊或会议也能继续邀请新成员。
- 人类用户同样可以自定义昵称和头像,所有消息都以社交软件式头像气泡展示。
2. 像群聊一样持续讨论,而不是固定轮次
被点名的 AI 会并发开始工作,谁先产出就先发送;一次 Agent 工作也可以按真实进度自然发送多条消息。首次回复之后,每当有人发言,其他角色都会结合完整记录、自己的历史发言和人格,重新判断是否有必要接话。
- 不 @ 任何人时,所有未静默成员都可以参与;
@角色名 可以强制指定 AI 回答。
- 支持“某某先别说话”“可以继续回复了”等自然语言静默与恢复。
- 人类可以随时插话,也可以点击“立即停止”终止当前工作。
- 管理员只负责过滤跑题、重复和刷屏,不替角色强行决定立场或发言次数。
- 话题自然收束后会议进入等待状态,不会被删除;人类再次发言即可继续。
3. 任务板:把聊天中的工作真正拆出来
任务板用于记录可执行工作,而不是只在聊天气泡里说“我来做”。
- 创建任务时可填写标题、说明和负责人。
- 状态覆盖:待开始、进行中、待评审、已完成、受阻和已暂停。
- 待开始任务提供明确的“开始任务”按钮;受阻任务可以重新处理或发起复核。
- AI 可以通过共享协作工具主动创建、认领和更新任务,人类也可以直接管理状态。
- 任务信息会进入所有成员的协作上下文,让角色知道谁在做什么,减少重复劳动。
4. 决策板:比较方案,不做人气投票
当讨论中出现多个可行方案时,可以把它们放进决策板进行结构化比较。每位 AI 可以对具体方案留下支持、反对或中立意见,并附上理由、风险与信心;最终选择权始终属于人类。
- 一个决策可以包含多个候选方案。
- 每位角色的理由、风险和信心分别展示,不用票数掩盖分歧。
- 人类可以选择方案、重新选择,或要求全员补充证据。
- 决策记录长期保留,方便回看当时的依据与取舍。
5. 成果库:让产出可以验收
AI 完成文件、链接、结论或阶段总结后,可以登记到成果库。人类能够验收、驳回或要求补充证据;被驳回的结果会重新进入协作流程,而不是在聊天记录里悄悄沉底。
6. 实时角色监控与编辑冲突保护
右侧协作控制台可以逐个展开角色动态,查看当前阶段、正在调用的工具、子 Agent、最近动作和文件锁。所有成员共享 arena_coordination 协作板;编辑文件前需要原子锁定目标,检测到冲突时会阻止覆盖,角色也可以据此等待、协调或切换任务。
典型使用流程
- 先在 DSH 设置中配置模型供应商。
- 在 AI 用户中心创建成员,设置名称、头像、模型与可选人格。
- 创建私聊、群聊,或选择圆桌会议、AI 法庭、代码评审会、吐槽大会等会议形式。
- 在群聊中自由发言或
@AI 分配工作;复杂工作拆入任务板。
- 出现多个方案时放进决策板,让角色分别给出依据、风险和信心。
- 将文件、链接或结论登记到成果库,由人类完成最终验收。
完整功能清单
- DSH 首页快捷卡片 + 会话顶部“AI 协作”整页模式
- 持久化 AI 用户库:昵称、头像、自定义人格、供应商、模型和预设快捷对话
- 人类用户也可自定义昵称与头像;全部消息使用社交软件式头像气泡
- 一对一 AI 私聊,以及由 2–12 个 AI 组成的多模型群聊;群聊自动加入管理员
- 已创建群聊可随时修改群名;群聊和会议都能从 AI 用户库继续邀请新成员
- DeepSeek、OpenAI、Claude、Gemini、通义千问、Kimi、Grok、豆包、Llama、Mistral 预设头像库
- 支持上传图片、emoji 和本机生成的品牌预设头像,不依赖外部图片链接
- 圆桌会议、AI 法庭、代码评审会、吐槽大会四种预设
- 每场会议选择 2–4 位已创建的 AI 用户,各自沿用用户库中的供应商、模型、名称、头像与人格配置
- 无固定轮数的长期会议;自然收束后进入等待状态并释放 Agent 资源,人类随时发言即可继续
- 每位 AI 都可在工作过程中自主发送公开消息:发一条还是多条、每条长短由角色结合人格、语义和真实进度决定,不按字数、句号或固定节奏机械切分
- 普通聊天可以直接一次说完;耗时任务可以自然地先说明正在处理,完成后再发送结果,但不会被系统强制要求每轮确认
- 同一批被点名的 AI 会并发工作,谁先完成谁先在群里发送结果;随后每个角色结合完整记录、自己的历史发言和人格,独立判断是否继续接话
- 管理员不替角色决定是否发言,只过滤跑题、重复和刷屏;有实质推进时持续接话,话题偏离或自然收束时安静等待人类
- 支持自由发言、@指定 AI 强制回应、@管理员更换话题/切换协作阶段、暂停、继续、停止当前工作和生成阶段总结
- 支持自然语言静默与恢复,例如“丛雨先别说话”“@丛雨 可以继续回复了”;静默状态会持久化并显示在成员列表
- 管理员的名称、头像、人格、供应商和模型可在用户中心配置
- 右侧协作控制台包含角色动态、任务板、决策板与成果库
- 决策卡展示各 AI 的理由、风险与信心,由人类选择最终方案
- 成果支持验收、驳回和要求补充证据
- 会议和聊天右侧提供可逐角色展开的实时动态:当前阶段、工具、子 Agent、文件锁与最近动作
- AI 角色共享
arena_coordination 协作板;编辑前原子锁定文件,常用 DSH 文件写入工具会阻止未锁定或冲突修改
- 独立历史管理页:会议、私聊、群聊可分类查看、重命名和手动删除
- 会议不会进入需要“重开”的终态;自然收束、停止当前工作或 DSH 重启后都会回到等待新消息
- 所有记录永久保留,不按数量或时间自动清理
- 用户资料、私聊、群聊和会议记录保存在
DSH_HOME/agent-arena/meetings.json
- 每位 AI 成员都是独立的顶层 DSH Agent,挂载当前系统默认 Agent Preset,继承其中的工具、技能与子 Agent 能力
不 @ 任何成员时,所有未静默的 AI 会同时开始;@某个 AI 时只会请求被点名者。角色可通过 arena_send_message 在一次 Agent 工作中自主发送一条或多条公开消息;同一角色完成本次工作后,系统才会触发其他 AI 的接话判断,避免一句话没说完就被抢话。插件不设置 maxTokens 或子 Agent 深度上限,实际能力仍由所选模型、当前 DSH Agent Preset、权限策略和提供方决定。协作板会保护 DSH 的标准文件编辑工具;角色仍被明确禁止用任意 Shell 写入命令绕过文件锁。
环境要求
- Node.js 22 或更高版本
- DeepSeek Harness Web profile
- 标准版本按 DSH Web
0.1.7-rc.2 开发和验收;其他版本暂不保证可用,后续会提供兼容版
- 中英文切换依赖 DSH 原生 locale 服务
- 至少一个已经在 DSH 设置中配置好的模型供应商
安装
从本地目录安装
先构建:
cd <插件源码目录>
npm install
npm run build
再挂载到 DSH Web profile:
<DSH 安装目录>\manage-dsh.bat plugin --profile web add <插件源码目录>
重启 DSH 后,首页会出现“进入 AI 协作群”,已有会话顶部会出现“AI 协作”标签。
从 GitHub 安装
本仓库提交了预构建的 lib/,安装时不需要本机 TypeScript 工具链。推荐固定到正式版本:
<DSH 安装目录>\manage-dsh.bat plugin --profile web add "github:Tikzen/dsh-agent-arena#v0.6.0"
如果希望直接跟随 main 分支的最新开发版本:
<DSH 安装目录>\manage-dsh.bat plugin --profile web add github:Tikzen/dsh-agent-arena
随后重启 DSH。
开发
npm install
npm run check
npm run build
本地修改后重新执行 npm run build 并重启 DSH。插件由两部分组成:
src/index.mjs:HTTP API、用户/聊天持久化、持续协作队列、@路由、管理员动作及子代理编排
src/client/index.tsx:首页入口、用户库、私聊/群聊和交互式会议面板
默认同时只运行一场会议,可在 cordis.patch.yml 中调整 maxConcurrentMeetings。会议、私聊和群聊记录不会自动清理,只能由人类用户在历史管理中手动删除。
隐私与安全边界
- 会议主题、公开发言和插话会发送给所选模型提供方。
- 会议数据默认仅写入本机 DSH Home。
- AI 成员可以使用 DSH 提供的工具;权限仍受 DSH 当前工作区访问模式与工具审批规则约束。
- 管理员只允许执行服务器白名单中的会议动作,不能通过聊天指令修改密钥、模型权限或任意文件。
- UI 只展示模型的公开回答,不展示或索取隐藏思维过程。
License
MIT
AI 品牌预设头像来自 Lobe Icons,按其 MIT License 使用。各品牌标志及商标归各自权利人所有。