按任务难度自动分配强弱模型并独立审查修复
27.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add hwc66626/deepseek-orchestrator该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 77 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 22 处,展示前 20 条)
- 发起网络请求dsh/host.js:271
const r = mod.request(url, { method, headers }, (res) => { - 读取本地文件bin/ds-orch.js:53
if (value === '-') return fs.readFileSync(0, 'utf8'); - 读取本地文件bin/ds-orch.js:54
if (fs.existsSync(value)) return fs.readFileSync(value, 'utf8'); - 读取本地文件src/config.js:104
try { if (fs.existsSync(p) && fs.statSync(p).isFile()) return p; } catch { } - 读取本地文件src/config.js:116
const text = fs.readFileSync(p, 'utf8').replace(/^ FEFF/, ''); - 写入本地文件src/config.js:143
fs.mkdirSync(dir, { recursive: true }); - 写入本地文件src/config.js:146
fs.writeFileSync(tmp, JSON.stringify(obj, null, 2) + '\n', { mode: 0o600 }); - 写入本地文件src/config.js:148
try { fs.chmodSync(tmp, 0o600); } catch { } - 写入本地文件src/config.js:149
fs.renameSync(tmp, target); - 写入本地文件src/config.js:152
fs.renameSync(tmp, target); - 删除本地文件src/config.js:154
try { fs.unlinkSync(target); } catch { } - 写入本地文件src/config.js:155
fs.renameSync(tmp, target); - 读取本地文件src/config.js:162
try { if (fs.existsSync(tmp)) fs.unlinkSync(tmp); } catch { } - 读取本地文件src/config.js:202
const st = fs.statSync(lockPath); - 删除本地文件src/config.js:206
try { fs.unlinkSync(lockPath); } catch { } - 删除本地文件src/config.js:220
try { fs.unlinkSync(lockPath); } catch { } - 读取本地文件src/config.js:244
if (fs.existsSync(target)) { - 读取本地文件src/config.js:277
if (!fs.existsSync(target)) return target; - 发起网络请求src/client.js:71
const res = await fetch(url, { - 读取密钥环境变量src/mcp-server.js:221
if (!process.env.DEEPSEEK_API_KEY) {
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-settings@deepseek-ai/schemastery@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 按任务难度自动分级
- 强弱模型自动分配
- 独立审查修复
DeepSeek 三角色自动编排 dsh 插件:干活 v4-flash / 思考 v4-pro / 独立审查,规则路由自动分级,dsh 官方侧边栏面板 + CLI/MCP 多通道,零依赖
README
由 DeepSeek 最新模型翻译生成DeepSeek Orchestrator — 干活 / 思考 / 审查 三角色自动编排 dsh 插件
基于 DeepSeek V4 API 的多角色流水线插件:干活用轻量模型、思考用大型模型、独立审查模型把关,由零成本规则路由器自动分级调度——全程无手动切换、不暂停对话,审查不通过还会自动回流修复。
先说清楚:装上就能用,你不需要启动任何服务器,也不需要管理任何常驻进程。
本插件按 dsh(DeepSeek Harness)官方插件机制发布:一条命令装进 dsh 后,模型在对话中直接调用 ds_auto 等工具,图形设置界面自动出现在 dsh Web UI 侧边栏(官方 registerSidebarTab 槽位)——不弹独立网页、不占额外端口。引擎零依赖,CLI / MCP 两条通用路径保留给其他宿主。
展开完整文档(README 剩余 1 节)
DeepSeek Orchestrator — 干活 / 思考 / 审查 三角色自动编排 dsh 插件
基于 DeepSeek V4 API 的多角色流水线插件:干活用轻量模型、思考用大型模型、独立审查模型把关,由零成本规则路由器自动分级调度——全程无手动切换、不暂停对话,审查不通过还会自动回流修复。
先说清楚:装上就能用,你不需要启动任何服务器,也不需要管理任何常驻进程。
本插件按 dsh(DeepSeek Harness)官方插件机制发布:一条命令装进 dsh 后,模型在对话中直接调用 ds_auto 等工具,图形设置界面自动出现在 dsh Web UI 侧边栏(官方 registerSidebarTab 槽位)——不弹独立网页、不占额外端口。引擎零依赖,CLI / MCP 两条通用路径保留给其他宿主。
flowchart LR
A[任务输入] --> R{规则路由器0 token 离线打分}
R -->|L1 轻量| W1[执行者 v4-flash关思考]
R -->|L2 标准| T1[思考者 v4-pro high]
R -->|L3 深度| T2[思考者 v4-pro max]
T1 --> W2[执行者 v4-flash]
T2 --> W3[执行者 v4-flash]
W1 --> V0[轻审查 可选]
W2 --> V1[审查者 v4-pro high]
W3 --> V1
V1 -->|fail| W2
V1 -->|pass| OUT[最终成果 + 全链路 trace]
V0 --> OUT
为什么
直接对话用单模型有两个极端:用大模型做"改个变量名"太贵太慢;用小模型做"架构设计/疑难排查"质量不够。业界开源方案(RouteLLM、LiteLLM Router、Semantic Router)验证了"按任务难度自动分配强弱模型"能大幅降本。本插件把这一思路落到 DeepSeek 上,并进一步拆出独立审查角色 + 自动修复回流,形成完整生产线。
角色矩阵(默认配置)
| 角色 | 模型 | 思考模式 | 职责 |
| thinker 思考者 | deepseek-v4-pro | on(L2=high / L3=max) | 方案设计、任务分解、风险识别 |
| worker 执行者 | deepseek-v4-flash | off | 代码生成、改写、翻译——低精度高吞吐,省钱 |
| reviewer 审查者 | deepseek-v4-pro | on / high | 独立审查,输出 pass/fail + 问题清单 |
| lightReviewer 轻审查 | deepseek-v4-flash | on / high | L1 任务可选的省钱审查 |
三级流水线(自动路由)
| 级别 | 典型任务 | 流水线 | 修复回流 |
| L1 轻量执行 | 重命名、格式化、翻译、错别字 | work | 1 轮(需开启轻审查) |
| L2 标准流水线 | 常规功能开发、普通 bug | think(high) → work → review | ≤2 轮 |
| L3 深度流水线 | 架构设计、跨模块重构、疑难并发 bug、安全审计 | think(max) → work → review | ≤3 轮 |
路由完全离线(正则信号 + 尺寸启发式,0 token 0 延迟)。想看某任务会被怎么分,用 route 命令预览;想强制分级,加 --hint L3。
怎么用
唯一前置:环境变量 DEEPSEEK_API_KEY(platform.deepseek.com 获取),或装进 dsh 后在 Web 设置页 → 插件配置 → DeepSeek 编排器 卡片里填写。要求 Node.js ≥ 18,无需 npm install(零依赖)。
方式一:装进 dsh(DeepSeek Harness,官方插件机制,推荐)
npm install -g @deepseek-ai/dsh # 已装可跳过
dsh plugin --profile web add github:hwc66626/deepseek-orchestrator
dsh web # 重启 dsh 加载插件(插件安装后需重启才生效)
装好后两件事自动发生:
1. 模型多了 8 个工具:ds_auto / ds_route / ds_think / ds_work / ds_review / ds_config / ds_doctor / ds_ping。你只管在对话里说:用 DeepSeek 流水线帮我实现一个防抖函数,要有单测
2. Web 设置页多出「DeepSeek 编排器」配置卡片:打开设置 → 插件配置分区即可看到。API Key(只写不回显)、角色模型、思考力度、修复轮数、路由分数线、超时重试、轻量审查开关,全部图形化编辑,带「恢复默认 / 放弃修改 / 保存」与非法值拦截。
图形界面走的是 dsh 官方设置插件机制:Host 半侧(dsh/host.js)用 installSettingsSection 注册 deepseek-orchestrator 设置命名空间并服务数据,浏览器半侧(dsh/client.js)经官方 settings.plugin.item 插槽注册卡片、读写一律走官方 settingsScope 服务(带 revision 乐观并发控制)。两侧以命名空间自动配对,不弹独立网页、不占用任何端口、关掉 dsh 即停。
跨宿主无缝切换的底气:所有配置(API Key、角色模型、阈值)都存在 ~/.deepseek-orchestrator/——用户目录、宿主无关。今天用 dsh、明天换 Claude Code、后天换 Cursor,配置零搬迁,宿主里不留任何状态;换宿主只是换个入口,流水线行为完全一致(同一份 CLI、同一份 MCP 工具、同一份 SKILL 协议)。
方式二:命令行直接用(任何终端环境)
export DEEPSEEK_API_KEY=sk-xxxxxxxxbash
node bin/ds-orch.js route "把 utils.js 里的 getuser 重命名成 getUser" # 只看路由决策(不花钱)
node bin/ds-orch.js auto "实现一个带限流的重试封装" # 全自动流水线
node bin/ds-orch.js auto "设计订单模块架构" --hint L3 # 强制深度流水线(等价写法 --hint=L3)
node bin/ds-orch.js auto "改造这个模块" --context ./src/foo.js # 附加上下文
node bin/ds-orch.js think "如何拆分这个单体应用" --context ./notes.md
node bin/ds-orch.js work "按计划实现步骤 1" --plan plan.json --context ./src/foo.js
node bin/ds-orch.js review "原任务" --output result.py
方式三(可选进阶):MCP 服务器接入
若宿主原生支持 MCP(Claude Code、Cursor、Cline 等),可把 mcp-config.example.json 并入宿主 MCP 配置。注意:MCP 服务器由宿主自动作为子进程拉起,你同样不需要手动启动;装了 dsh 插件(方式一)的话无需 MCP,工具已原生注册。
方式四:作为代码库引入 js
const { runAuto } = require('./src/orchestrator');
const result = await runAuto('实现一个防抖函数,含单测', { hint: 'L2' });
console.log(result.output, result.finalVerdict, result.trace);
命令一览(CLI / dsh 工具 / MCP 工具三通道同名同义)
| 命令 / ds_ 工具 | 何时用 |
| setup | 安装向导:交互式或 --api-key sk-xxx 非交互写入配置文件 |
| doctor / ds_doctor | 环境体检:Node 版本/密钥/停用模型名/阈值倒置,零 token |
| set / get / unset | 手动读写单项配置(键同环境变量名) |
| auto / ds_auto | 默认入口:自动分级 → 思考 → 执行 → 审查 → 修复回流 |
| route / ds_route | 预览路由决策(不调 API、不花钱) |
| think / ds_think | 直通思考者(只要方案不要执行) |
| work / ds_work | 直通执行者(已有方案,只要快速干活) |
| review / ds_review | 直通审查者(独立把关已有成果物) |
| config / ds_config | 查看角色矩阵/阈值/配置文件来源(不泄露密钥) |
手动设置(装完第一步)
方式零:dsh 侧边栏面板(最省事)——装好插件后打开 dsh Web UI(http://127.0.0.1:3080),侧边栏「DeepSeek 编排器」面板包含五个区块:令牌设置(填 API Key、改 Base URL、一键测试连接,零 token)、角色模型(三角色模型 + 思考力度)、流水线参数(修复轮数、路由阈值、超时重试,可一键恢复默认)、环境体检(一键体检)、路由预览(输入任务描述,本地零 token 试算分级)。写入的配置与 CLI 完全同源(同一份 config.js),改完命令行立即生效。
兼容性设计:配置写入为「临时文件 + 原子替换」+ 跨进程文件锁,进程中断也不会写坏文件、多面板并发保存不丢键;保留你手工编辑过的未知键;带 BOM 的配置文件(Windows 记事本保存)也能正常读取;密钥文件权限 0600、面板只显示掩码。
方式一:安装向导——一条命令完成,配置持久保存在用户目录,之后任何项目直接可用: bash
node bin/ds-orch.js setup # 交互式:逐项询问,回车保留默认
node bin/ds-orch.js setup --api-key sk-xxx # 非交互:脚本/CI/Agent 代跑
node bin/ds-orch.js doctor # 体检:装完先跑这个,缺什么一目了然
方式二:手动读写单项——键名与环境变量同名,数字/布尔自动转换: bash
node bin/ds-orch.js set DS_WORKER_MODEL deepseek-v4-flash
node bin/ds-orch.js set DS_L1_REVIEW 1
node bin/ds-orch.js get DS_L1_REVIEW # 显示文件值 + 生效值
node bin/ds-orch.js unset DS_L1_REVIEW # 删除,回到默认
配置文件位置(优先级:环境变量 > 配置文件 > 默认值):
1. DS_CONFIG_FILE 环境变量指定的路径
2. 用户级 ~/.deepseek-orchestrator/config.json(setup/set 默认写入这里,权限 0600)
3. 项目级 ./.deepseek-orchestrator.json(已加入 .gitignore,不会误提交)
配置文件就是普通 JSON(键同环境变量名): json { "DEEPSEEK_API_KEY": "sk-xxx", "DS_WORKER_MODEL": "deepseek-v4-flash", "DS_L1_REVIEW": "1" }
配置(环境变量)
以下变量均可改用 setup/set 写入配置文件(文件优先级低于环境变量):
| 变量 | 默认 | 说明 |
| DEEPSEEK_API_KEY | 必填 | DeepSeek API 密钥 |
| DEEPSEEK_BASE_URL | https://api.deepseek.com | 可指向代理/网关 |
| DS_THINKER_MODEL | deepseek-v4-pro | 思考者模型 |
| DS_THINKER_EFFORT | max | L3 思考力度 low/high/max |
| DS_THINKER_EFFORT_L2 | high | L2 思考力度(与 L3 分开控制) |
| DS_WORKER_MODEL | deepseek-v4-flash | 执行者模型 |
| DS_REVIEWER_MODEL | deepseek-v4-pro | 审查者模型 |
| DS_REVIEWER_EFFORT | high | 审查思考力度 |
| DS_LIGHT_REVIEWER_MODEL | deepseek-v4-flash | 轻审查模型 |
| DS_L1_REVIEW | 0 | 置 1 为 L1 任务开启轻审查 |
| DS_MAX_REPAIR_ROUNDS | 2(L3 为 3) | 审查不通过的修复轮数上限 |
| DS_ROUTE_L2_SCORE | 20 | 升 L2 的分数线 |
| DS_ROUTE_L3_SCORE | 60 | 升 L3 的分数线 |
| DS_TIMEOUT_MS / DS_MAX_RETRIES | 600000 / 2 | 超时与重试 |
提示:DeepSeek 2026-08 起实行峰谷定价(谷时价格为峰时一半),批量 L1 任务安排在谷时跑可再省一半。旧的 deepseek-chat / deepseek-reasoner 模型名已于 2026-07-24 停用,请勿配置。
返回结果结构(auto) jsonc { "level": "L2", "status": "passed", "output": "最终成果物(含修复轮结果)",
"plan": { "steps": [...], "acceptance": [...] },
"finalVerdict": "pass",
"repairRounds": 1,
"reviews": [ { "verdict": "fail", "score": 6, "issues": [...] }, { "verdict": "pass", "score": 9 } ],
"warnings": [],
"route": { "score": 34, "matched": [...] },
"trace": [ { "step": "think", "model": "deepseek-v4-pro", "thinking": "on/high", "ms": 8200, "promptTokens": 1200 } ]
}
status 取值:passed 审查通过;repaired L1 修复后复审通过;repair-failed L1 修复后仍未通过;max-rounds-reached L2/L3 修满轮数仍未通过;review-unparsed 审查输出无法解析为 JSON;done 未经审查(L1 默认关闭轻审查时)。warnings:运行时告警,如某步输出被 max_tokens 截断(trace 中对应步骤会标记 truncated: true,按提示调大对应 _MAX_TOKENS 环境变量)。
trace 完整记录每一步的模型、思考力度、耗时、token——"细致分工"全程可见、可核算成本。
测试 bash
npm test # 85 个用例:单元 + 流水线集成(mock 端点)+ MCP 端到端 + dsh 插件(mock Cordis 宿主)+ 配置兼容
npm run bug-hunt # 100 轮自动化 bug 排查(结构 / 插件行为 / 引擎 fuzz / CLI 边界)
目录结构
deepseek-orchestrator/
├── dsh/ # dsh 插件双端(package.json 的 dsh.bundles 指向这里) │ ├── host.js # Host 侧(Node):注册 ds_* 工具 + 处理面板请求 │ └── client.js # Client 侧(浏览器):registerSidebarTab 侧边栏面板 ├── AGENTS.md # 宿主 Agent 接入指引(跨宿主通用) ├── INSTRUCTIONS.md # dsh / 其他宿主的对话内用法说明 ├── package.json # 零依赖,node>=18,含 dsh 插件清单 ├── bin/ds-orch.js # CLI 入口(主用法) ├── src/ │ ├── config.js # 角色矩阵 / 三级流水线 / 阈值 / 原子写 + 文件锁 │ ├── router.js # 零成本规则路由器 │ ├── client.js # DeepSeek API 客户端(重试/退避/超时) │ ├── orchestrator.js # think→work→review→repair 编排 │ └── mcp-server.js # MCP stdio 服务器(可选进阶接入) ├── skills/deepseek-orchestrator/ # SKILL.md + 路由规则 + 审查协议 ├── scripts/bug-hunt.js # 100 轮自动化 bug 排查 ├── examples/ # 快速上手示例 └── test/ # 单元 + 集成 + MCP 端到端 + dsh 插件 + 配置兼容(85 例)
设计参考的开源项目
| 项目 | 借鉴点 |
| RouteLLM | 简单请求走便宜模型、困难请求走强模型的成本路由 |
| LiteLLM | 基于 routing_rules 的规则路由与网关化接入 |
| Semantic Router | 意图信号路由,不引入额外 LLM 调用 |
| DeepSeek API 文档 | V4 模型、thinking 开关与 reasoning_effort 参数 |
常见问题
Q: 需要我启动服务器或常驻进程吗? 不需要。主用法是插件/CLI:每次任务起一个短命进程,跑完即退。MCP 接入(可选)也是宿主自动拉起子进程。
Q: 会话会被打断吗? 不会。CLI 在一次工具调用内完成路由与流水线,无需暂停对话、无需手动切换模型。
Q: 路由分错了怎么办? 用 --hint 强制,或调整 DS_ROUTE_L2/L3_SCORE;也可以在 src/router.js 的信号表里增删关键词(每条都有注释与测试保护)。
Q: 审查一直不通过会死循环吗? 不会。修复轮数有上限(L2≤2、L3≤3),到达上限返回 max-rounds-reached 与遗留问题清单。
Q: 想更省钱? 把 DS_REVIEWER_MODEL 设为 deepseek-v4-flash、DS_THINKER_EFFORT_L2 降为 low、关闭 L1 轻审查;代价是复杂任务的方案与审查质量会下降。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
hwc66626/deepseek-orchestrator
按任务难度自动分配强弱模型并独立审查修复
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个插件,给…
★ 850已汉化DSH
68.9
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 385已汉化DSH
67.9
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1
这是你的仓库?认领条目