deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
给 DeepSeek Harness 增加一个面向模型的 debate 工具:提出一个议题,多个不同"底色"(怀疑论者 / 乐观派 / 务实派 / 创意派)的子 agent 会:
特性:辩论作为后台 job 运行,立即返回 job id;用 job_output 查看每个 agent 的实时进度(Web UI 的 jobs 列表也会显示)。同一波次内的 agent 并行执行(隔离发散的 4 个辩手同时跑),总耗时约为串行的 1/3。中途断网后再次调用会自动断点续跑——已完成的 agent 直接复用,只补跑剩下的。
ctx.subagents seam:每个子 agent 是独立 session,天然严格隔离(spawn provider 不共享对话历史)。ctx.jobs):辩论注册为 debate kind 的后台任务,readOutput 增量输出每个 agent 的进度。Promise.allSettled 并行、波间串行(后一波依赖前一波产出)。sessionPersistence.load(sessionId) 读回正文,已完成的 agent 直接复用。每个 agent 完成后立即存档(串行化写避免并发竞态),所以 kill/断网都能保留进度。persona:子 agent 的 deployment:persona section 被遮蔽为各自的立场人设。composeFrom 继承父 agent 的 preset,所以能调用 web_search 等工具。⚠️ 关于
temperature:当前 DSH 版本的请求路径尚未消费temperature(LlmCallConfig.temperature字段存在,但源码中没有消费方)。本插件的DebateAgent.temperature字段已预留,底色差异目前实际由 persona 与 prompt 承担。待 DSH 实现采样参数消费后,该字段即可直接生效。
# 安装到你的 profile(本插件声明了 dsh.bundle.patch,安装后自动挂载)
dsh plugin --profile web add @sky_sun/dsh-debate
# 或者直接 npm install 到 profile 目录
cd $env:USERPROFILE\.dsh\profiles\web
npm install @sky_sun/dsh-debate
安装后重启 dsh web,debate 工具即可用。
| 字段 | 默认 | 说明 |
|---|---|---|
provider |
spawn |
ctx.subagents 的 provider 名(须支持 persona capability) |
roster |
内置 4 底色 | 自定义辩论方阵容:{ id, name, persona, temperature? } |
defaultRounds |
1 |
交叉辩论轮数(工具参数 rounds 可覆盖) |
defaultJudges |
2 |
评审数量(工具参数 judges 可覆盖) |
storageBackend |
json |
storage backend 名,用于断点续传存档 |
debaterModel |
父默认 | 辩手(隔离发散 + 交叉辩论)使用的模型,如 deepseek-v4-flash |
judgeModel |
父默认 | 评审 + 主席评审使用的模型,如 deepseek-v4-pro |
模型分配:辩手阶段(发散 + 交叉辩论)以联网取证、组织论点为主,事实检索占主导,用快模型(flash)即可;评审阶段(评审 + 主席)需要比较各方论点、挑漏洞、综合权衡,用强模型(pro)保证判断深度。默认 debaterModel: flash、judgeModel: pro。
token 统计:每个 agent 完成后会输出其 token 用量,辩论结束汇总总消耗。token 计量依赖 token-meter(base bundle 已挂载),拿不到时优雅跳过统计。
在聊天里说:
辩论一下「远程办公是否应该成为默认工作模式」
模型会调用 debate 工具(参数 topic),返回一个 job id。用 job_output <id> 查看每个 agent 的实时进度,最终会输出完整结论。你也可以要求更多轮次或评审:
用 3 轮辩论、3 个评审,辩论「通用人工智能是否会在 10 年内实现」
断点续传:若辩论中途失败(如网络断开),直接再说一次同样的话(或重新触发 debate),插件会检测到未完成的存档并从断点续跑——已完成的 agent 不会重跑。
- insert:
- id: tool-debate
name: '@sky_sun/dsh-debate'
config:
provider: spawn
roster:
- id: data-scientist
name: 数据科学家
persona: 你只信数据和统计,任何结论都要有数字支撑。
- id: historian
name: 历史学者
persona: 你习惯从历史长周期看问题,警惕短期叙事。
- id: engineer
name: 工程师
persona: 你关心这东西能不能造出来、成本多少、怎么运维。
仓库附带一个独立逻辑测试,用 Node 原生类型剥离直接加载真实源码,仅 mock 运行时 seam(defineTool / ctx.subagents / ctx.jobs / ctx.storage),验证:后台 job 注册与进度输出、三阶段编排顺序、开局隔离性、交叉辩论携带前文、以及断点续传(中断后 resume 跳过已完成 agent):
node --experimental-strip-types test\debate.test.mts
注意:
node_modules\@deepseek-ai\dsh-tools是测试用的 mock 包,仅为让类型剥离后的源码能独立运行;真机挂载时使用 DSH 提供的真实包,不要覆盖它。
temperature 目前不生效(见上文说明),底色差异靠 persona。ctx.subagents(spawn provider)、ctx.tools、ctx.jobs、ctx.storage,须在 web profile 组合下使用。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。