安装
在 DeepSeek Harness 里通过 dsh-market 安装
dsh plugin --profile web add dshmarket
或使用命令行
dsh plugin --profile web add github:LeemanCheung/dsh-agent-arena
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
DSH 编码竞技场:在隔离 Git worktree 中比较 2–4 个已配置模型,用确定性命令验证改动,审阅每份 diff,并由用户显式应用一名获胜者。
界面截图

使用 GPT Image 根据已实现的 Client 布局和功能生成;实际外观会随 DSH 主题和视口变化。
执行与持久化
- 在操作系统临时目录创建 detached worktree,与被比较仓库分离。
- 递归清理只允许作用于 Arena 专用目录下严格的“比赛/选手”两级路径,并校验目录联接和符号链接解析后的真实位置。
- 通过公开的
ctx.agents.create、SessionId、createUserMessage和Agent.followupAPI 启动选手。 - Git 和验证 argv 都通过
ctx.subprocess.spawn执行;绝不经过 shell,并拒绝 shell 操作符。 - 使用
storageDomain保存比赛报告;Host 重启后,未结束的比赛会标记为失败。 - Settings 通过生成的
agentArenaRemote 轮询状态,提供 Start、Cancel、diff 审阅和 Apply winner,不依赖浏览器全局变量。
评分与应用
每条验证命令有正权重。选手得分等于成功退出的验证权重占总权重的百分比;同分时按选手 id 稳定排序。不会使用 LLM 评委。表单不再预填通用验证,因为 git status --porcelain=v1 即使打印出改动通常也会成功退出;开始前必须添加该项目自己的测试、类型检查或构建命令。
创建 worktree 前要求 git status --porcelain=v1 干净。获胜者 worktree 会保留到用户显式应用。应用时再次检查仓库干净、确认 HEAD 仍等于比赛开始时记录的 revision,先运行 git apply --check,再运行 git apply --index --whitespace=error。Arena 不会自动应用、提交、推送或改写历史。
Settings 使用流程
- 填写工作区干净的 Git 仓库路径和明确的任务目标。
- 配置 2–4 位选手的显示名称、provider 与 model;每位选手都在独立会话和 worktree 中运行。
- 添加 1–12 条验证 argv,并为每条设置正权重和 1–900 秒超时。界面会预先标出不安全的命令字符。
- 在比赛面板查看阶段状态、事件时间线、加权得分、每条验证输出、改动文件和 diff;活跃比赛可取消。
- 比赛完成后先审阅 diff,再点击“申请应用胜者”,并在确认面板中明确应用。应用前仍会检查仓库干净、起始 revision 漂移和补丁可用性。
Settings 通过生成的 agentArena Remote 轮询比赛状态;客户端不会把 API 放在浏览器全局变量中。
验证命令语法
Settings 字段接受保守的空格分隔 argv,例如 corepack pnpm test 或 corepack pnpm typecheck。引号、shell 变量、管道、重定向、命令分隔符、反引号和换行都会被拒绝。请选择参数本身不含空格的命令。
安装
dsh plugin --profile web add github:LeemanCheung/dsh-agent-arena
安装后重启原有 DSH Web 进程并刷新页面。profile 必须提供 agents、subprocess、storageDomain、Typert Remotes、Settings,以及至少两条可用 provider/model 路由。完整说明见套件安装指南。
模型体验
每个选手都在独立会话和 worktree 中接收一条包含 Arena 任务目标的用户消息,因此 token 和 KV cache 使用量会按 2–4 个独立选手会话增长。验证、评分、比较、取消、持久化与应用不会再调用其他模型。
已知限制
验证 argv 使用刻意保守的分词规则,无法表达本身包含空格的参数。取消依赖所选 provider 正确响应 abort signal。Host 使用支持二进制的 git diff HEAD,确保已暂存、未暂存和 intent-to-add 文件在审阅与应用时一致。超过 1 MB 审阅/应用上限的补丁会在修改原仓库前明确拒绝,而不是被截断。
开发
在仓库根目录运行 corepack pnpm typecheck、corepack pnpm test、corepack pnpm build 和 corepack pnpm pack:check。
1.0.1 已标记兼容 DSH 0.1.2-rc.1 的 web Profile。Windows 实测已在 3081 隔离 QA 实例和 3080 现有本地 Profile 中加载 Host 服务、浏览器 Client、生成的 Remote 命名空间和 Settings 面板;表单没有误导性的预填验证,必要字段未填写时“开始”保持禁用。自动化覆盖共 15 项测试。本次 QA 没有启动真实模型比赛,因此兼容结论不包含 Provider 执行和取消行为。
CI 已配置为在 Windows 和 Linux 上重新构建已提交的 lib 产物;任何已跟踪或未跟踪差异都会使检查失败。
MIT,见 LICENSE。
评论
评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。