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

多模型任务调度台 dippingOrange/dsh-conductor

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

把任务分派给不同模型执行并统一评审结果

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · model
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 26 处,展示前 19 条)
  • 写入本地文件
    dsh-conductor/index.js:760
    mkdirSync(dirname(path), { recursive: true })
  • 读取本地文件
    dsh-conductor/index.js:796
    const text = readFileSync(handoffFilePath(task), 'utf8')
  • 写入本地文件
    dsh-conductor/index.js:922
    mkdirSync(directory, { recursive: true })
  • 写入本地文件
    dsh-conductor/index.js:934
    writeFileSync(file, JSON.stringify(payload, null, 2), 'utf8')
  • 读取本地文件
    dsh-conductor/index.js:953
    if (!existsSync(sessionsRoot)) {
  • 读取本地文件
    dsh-conductor/index.js:959
    for (const entry of readdirSync(directory, { withFileTypes: true })) {
  • 删除本地文件递归
    dsh-conductor/index.js:970
    rmSync(target, { recursive: true, force: true })
  • 写入本地文件
    dsh-conductor/index.js:2400
    mkdirSync(dirname(file), { recursive: true })
  • 写入本地文件
    dsh-conductor/index.js:2408
    appendFileSync(file, `${JSON.stringify(entry)}\n`, 'utf8')
  • 读取本地文件
    dsh-conductor/index.js:2416
    if (!existsSync(file)) return []
  • 读取本地文件
    dsh-conductor/index.js:2418
    const lines = readFileSync(file, 'utf8').trim().split(/ ? /).filter(Boolean)
  • 读取本地文件
    dsh-conductor/index.js:2502
    if (existsSync(file)) {
  • 写入本地文件
    dsh-conductor/index.js:2517
    mkdirSync(dirname(file), { recursive: true })
  • 发起网络请求
    dsh-conductor-ui/client.js:347
    const response = await fetch(
  • 发起网络请求
    dsh-conductor-ui/client.js:380
    const response = await fetch('/conductor/boards', {
  • 发起网络请求
    dsh-conductor-ui/client.js:411
    const response = await fetch('/conductor/notifications', {
  • 发起网络请求
    dsh-conductor-ui/client.js:434
    await fetch('/conductor/notifications/read', {
  • 发起网络请求
    dsh-conductor-ui/client.js:445
    const response = await fetch('/conductor/action', {
  • 发起网络请求
    dsh-conductor-ui/client.js:631
    const response = await fetch(
扫描于 2026/11/1(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

为 DeepSeek Harness 做多模型任务分发,并提供 Web 任务看板。

README

由 DeepSeek 最新模型翻译生成
Conductor for DeepSeek Harness 为 DeepSeek Harness(DSH)提供多模型任务分发:旗舰模型负责拆解、评审、整合,实现类工作交给用户配置的执行器角色。每个任务都作为真正的 DSH 子代理运行,拥有完整工具集,因此能读代码、改文件、跑测试,再把结果报回来。 项目包含两个 DSH 包: - dsh-conductor —— 宿主插件:dispatch_tasks、wait_tasks、task_result、task_followup、cancel_task、list_executors;角色持久化;供 UI 使用的同源 HTTP 桥。 - dsh-conductor-ui —— Web UI:输入框工具栏启动器、右侧栏任务板标签页、完整的原生任务板页面,以及执行器与发布者编辑器。 为什么需要它 在强规划模型和更便宜的执行模型之间手工搬运工作,既慢又容易出错。Conductor 让主模型留在对话里,执行器去干活,并且由用户——而不是模型——决定每个角色用哪个模型。 - 默认只按角色路由:旗舰模型只能分发给已配置的角色,不能自己编造服务商/模型路由。 - 发布者(旗舰)需显式选定,可应用为 DSH 新会话的默认模型。
展开完整文档(README 剩余 1 节)
Conductor for DeepSeek Harness

为 DeepSeek Harness(DSH)提供多模型任务分发:旗舰模型负责拆解、评审、整合,实现类工作交给用户配置的执行器角色。每个任务都作为真正的 DSH 子代理运行,拥有完整工具集,因此能读代码、改文件、跑测试,再把结果报回来。

项目包含两个 DSH 包:

- dsh-conductor —— 宿主插件:dispatch_tasks、wait_tasks、task_result、task_followup、cancel_task、list_executors;角色持久化;供 UI 使用的同源 HTTP 桥。
- dsh-conductor-ui —— Web UI:输入框工具栏启动器、右侧栏任务板标签页、完整的原生任务板页面,以及执行器与发布者编辑器。

为什么需要它

在强规划模型和更便宜的执行模型之间手工搬运工作,既慢又容易出错。Conductor 让主模型留在对话里,执行器去干活,并且由用户——而不是模型——决定每个角色用哪个模型。

- 默认只按角色路由:旗舰模型只能分发给已配置的角色,不能自己编造服务商/模型路由。
- 发布者(旗舰)需显式选定,可应用为 DSH 新会话的默认模型。
- 结果由主模型收集(wait_tasks),对照验收标准评审,再通过 task_followup 纠正——执行器保留之前的对话。
- 完整任务板以原生面板形式存在于 DSH Web UI 中(不用 iframe,不用单独服务器)。

功能

- 分发单个或多个任务,可指定角色、上下文、约束、验收标准,以及必需的返回格式。
- 固定的执行器角色:id + name + provider + model + description,可在 Web UI 中编辑。
- 角色持久化在 $DSH_HOME/conductor/roles.json(该文件不含 API 密钥)。
- 严格只按角色路由:除非用户显式启用临时路由,否则 inherit: true 和临时服务商/模型路由一律拒绝。角色变更审计写入 $DSH_HOME/conductor/role-audit.jsonl,并通过 GET /conductor/roles/audit 暴露。
- 全局上限 5 个活跃子代理,覆盖 Conductor 任务和原生子代理。
- 每个会话有右侧栏任务板,从输入框工具栏打开;另有全局整页任务板,分进行中/已完成/失败三列。
- 按执行器统计上下文:使用百分比、距上次压缩的轮数,任务结束后在模型上下文窗口的 40% 处自动压缩。新任务仍然从零开始,任务隔离不受影响。每个角色可覆盖该阈值。
- 压缩后,Tasks 图标和 Executors 标签页上显示绿色未读角标。
- 跟进任务在任务板中显示为返工中/运行中,子代理不活跃后回到已完成。
- 执行器完成时,以子代理后台通知的形式送达发布者,即使发布者已经回复过用户。
- 看板快照与恢复:GET /conductor/export 和 POST /conductor/import 在插件重载后保留终端任务与报告。
- 执行器失败(例如 max-tokens 或收尾报告为空)会作为任务错误暴露出来。
- 执行器报告只陈述事实:不包含整份文件、完整 diff 或生成的产物;也不给建议或下一步提示。决策由 lead 做;报告只保留关键事实,结尾可以给一句简短结论。
- 发布者任务指引优先使用文件路径和简短的 context;长文档和代码放进执行器能读到的文件里。
- ptc 预设中禁用了原生 subagent / subagent_fork 派生工具;发布者只能通过 dispatch_tasks 委派任务。list_agents 仍可用于诊断,maxActiveSubagents: 5 安全上限保持不变。
- 可以从 UI 或模型工具中取消任务、追问、查看完整报告。
- 无构建步骤,无 npm 运行时依赖;UI 只用浏览器 React 模块表。

环境要求

- DeepSeek Harness(已在 0.2.1-rc.2 上测试)。
- 在 Settings → Models 中至少配置一个模型服务商,凭据由 DSH 保存。
- 一个能安装本地 bundle 的 DSH 配置档(默认的 Desktop 配置档可以)。

安装

从 npm 安装两个 bundle,用 DSH 的 Plugin Manager (Settings → Plugins → install bundle)或命令行:

dsh plugin install @dippingorange/dsh-conductor
dsh plugin install @dippingorange/dsh-conductor-ui

本地开发时,改为安装本地检出:

git clone https://github.com/dippingOrange/dsh-conductor.git
dsh plugin install /path/to/dsh-conductor/dsh-conductor
dsh plugin install /path/to/dsh-conductor/dsh-conductor-ui

安装后刷新一次 Web UI。两个插件可以独立启用或禁用。

上下文预算与压缩

执行器任务保持隔离:每次 dispatch_tasks 调用都会新建子会话,所以新任务不会继承其他任务的上下文。唯一复用的上下文是 task_followup。

任务结束后(包括追问),Conductor 读取子会话最后一次请求的用量和模型上下文窗口。如果用量达到 40%(默认值,按 DeepSeek 观察到的质量下降调校),就恢复子会话,调用 Host 压缩服务(与 /compact 同一后端),记录压缩后的用量,然后释放会话。下次追问会冷恢复压缩后的历史。新任务从全新子会话开始,因此没有上下文需要压缩。

每个执行器最近一次任务会在 Executors & publisher 和任务卡片上报告上下文百分比,以及距上次压缩的轮数。压缩成功后,左侧 Tasks 图标和 Executors & publisher 标签页上会出现绿色未读圆点;打开这些视图后圆点清除。

配置项:

| 键 | 默认值 | 含义 |
| contextCompactionPercent | 40 | 上一次请求用掉窗口的这个百分比时执行压缩;角色可以覆盖该值 |
| contextWindowTokens | 128000 | 服务商未上报上下文窗口时的回退值 |
| contextWindowMax | 0 | 百分比计算的可选上限;0 表示使用上报的窗口 |
| compactionTimeoutMs | 30000 | 压缩尝试超过这个时长就中止 |

bundle 会重新启用宿主压缩后端(compaction-basic / command-compact),因为 Web 应用默认把它交给预设处理。这样普通聊天里也能用 /compact。

配置

1. Settings → Models — 添加你要用的服务商(OpenAI 兼容中转、Anthropic 兼容中转、OpenCode Zen、Command Code,或自建的 vLLM/Ollama 端点)。
2. 从左侧边栏打开 Tasks 面板,或点击输入框工具栏左侧的 ▦ 按钮。
3. 切换到 Executors & publisher:
- 选择 publisher(旗舰)模型;
- 添加执行器角色,为每个角色固定服务商/模型;
- 保持 Allow ad-hoc provider/model 关闭,让路由只走角色;
- 保存。
4. 让旗舰模型按角色派活,例如:

Split this feature by module. Implement with coder, review with reviewer, and give every
task acceptance criteria and a return format. Collect the reports and check them.

工作原理

user ──chat──▶ flagship (publisher)
│ dispatch_tasks(role + task + acceptance + return format)
▼
┌────────┴────────┐
│ executor role A │ real DSH child agent (tools, cwd, permissions)
│ executor role B │ fixed provider/model chosen by the user
└────────┬────────┘
│ report
▼
flagship reviews and may task_followup

- 子代理以 delivery: 'caller' 启动,所以结果汇总由主控负责,而不是每个子代理都发一条聊天通知。
- 子代理完成后释放激活槽位;task_followup 会冷恢复同一个会话。
- Web UI 通过同源 /conductor/ 端点与 Host 通信。

安全

- /conductor/ 端点同源且不鉴权,和本地 DSH Web UI 的其余部分一样。不要把 DSH Web 端口暴露到不可信网络。
- 服务商 API key 存放在 DSH 的凭据存储里;roles.json 只包含服务商/模型选择和显示名。
- 任务报告可能包含工作区里的代码和文件路径;看板的私密程度取决于它运行所在的 DSH Web UI。
- 漏洞上报见 SECURITY.md。

仓库结构

dsh-conductor/ Host plugin: tools, role store, HTTP bridge
dsh-conductor-ui/ Client bundle: toolbar launcher, right-sidebar board, full page, roles editor

开发

不需要构建步骤。Node.js 20+ 就够跑检查:

npm run check # syntax-check Host and Client bundlesbash
npm test # 用模拟上下文跑宿主插件冒烟测试

贡献指南见 CONTRIBUTING.md。详细中文文档在 dsh-conductor/README.md 和 dsh-conductor-ui/README.md。

许可证

MIT — 见 LICENSE。
预览分享卡片长什么样 ↓dippingOrange/dsh-conductor
分享 · DeepSeek Harness Hub
dippingOrange/dsh-conductor

把任务分派给不同模型执行并统一评审结果

回到顶部