DeepSeek Harness Hub
← 返回列表

ZavionWang/dsh-subagent-router

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

dsh 子代理 LLM 路由隔离插件:subagent/subagentfork 走独立…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/28 · 已提供中文文档

dsh 子代理 LLM 路由隔离插件:subagent/subagent_fork 走独立 provider/model,防烧主渠道额度。含一键注入(dsr-inject)与验证(dsr-verify)工具。

综合分
28.5
GitHub 分
28.5
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add ZavionWang/dsh-subagent-router
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-subagent-router

dsh(DeepSeek Harness)子代理 LLM 路由隔离插件:让 subagent / subagent_fork 自动走独立 provider/model,防止子代理继承主代理路由、烧掉主渠道额度(Insufficient Balance 教训)。

为什么需要它

dsh 的子代理默认继承主代理(父代理)的模型路由。如果你在 settings.yaml 里配置了 agent-default-model,子代理会落到默认 provider——烧的是主代理渠道的钱/额度。

实战事故(2026-08-25):批量任务中,子代理误走 deepseek-official / deepseek-v4-flash,把 DeepSeek 官方额度耗尽,出现 Insufficient Balance 反复崩溃(RPC 崩溃/文件锁/Reviewer 死循环)。

本插件的核心机制:给 agent-presets 的 tool-subagent / tool-subagent-fork 注入 agentOptions——dsh-subagent 的 agentOptions?.provider/model ?? parent.options.* 优先于父代理继承,所以只有子代理走指定 LLM,主代理保持 settings.yaml 的默认路由。

安装

前置依赖:Node.js ≥ 18;verify 需要 Python + zstandard(解压 dsh 会话文件,pip install zstandard)。

npm install -g @zavionwang/dsh-subagent-router

本包提供两个 CLI 工具:dsr-inject(配置注入)与 dsr-verify(路由验证)。全局安装后两个命令即可用。
宿主端启动检查(src/host.mjs)为可选增强:将本包加入 dsh profile 的插件依赖后由 cordis 挂载,缺失时不影响 CLI 功能。

推荐:用户 patch 层注入(升级安全通道)

inject 直改 npm 包内的 agent.cordis.yml,dsh 升级会还原该文件(需重跑注入)。想一劳永逸,可用 dsh 的用户 patch 层(~/.dsh/cordis.patch.yml)按工具 id 覆写完整 config:

- replace:
id: tool-subagent
config:
provider: spawn
toolName: subagent
backgroundMode: continuable
agentOptions:
provider: openrouter
model: stealth/ox-alpha
- replace:
id: tool-subagent-fork
config:
provider: fork
toolName: subagent_fork
backgroundMode: continuable
agentOptions:
provider: openrouter
model: stealth/ox-alpha

dsh 的 patch 按 id 递归寻址嵌套行,replace 会整体替换目标行的 config——这是官方支持的升级安全通道,不随 dsh 升级丢失。

快速开始

1. 一键注入(配置子代理专用 LLM)

自动探测 agent.cordis.yml 并注入(默认 openrouter / stealth/ox-alpha)
dsr-inject

自定义 provider/model
dsr-inject --provider openrouter --model stealth/ox-alpha
或指定文件
dsr-inject --file "C:\...\config\agent-presets\standard\agent.cordis.yml"

- 幂等:已注入则跳过,可重复运行
- 安全:注入前自动备份(agent.cordis.yml.bak-)
- 注入后重启 dsh 生效

2. 验证子代理是否真的走了独立 LLM

扫描 ~/.dsh/sessions 的会话记录,输出主/子代理的 provider/model 分布
dsr-verify

只看最近 N 个会话
dsr-verify --recent 5
指定会话目录
dsr-verify --dir "D:\other-sessions"

判定标准(权威证据是会话记录,不是子代理自报——自报可能因 persona 误报):

- 子代理分布中不应出现主渠道(如 deepseek-official/deepseek-v4-flash)
- 子代理应全部为配置的 provider/model(如 openrouter/stealth/ox-alpha)

其他参数与回滚

dsr-inject --dry-run          # 只预览不写入
dsr-inject --force            # 覆盖已有注入(换 provider/model 时用)
dsr-inject --file        # 指定 agent.cordis.yml

- 回滚:inject 每次实际修改前自动备份(agent.cordis.yml.bak-,保留最近 5 份),用备份覆盖回去即可;或 dsr-inject --force --provider  --model  改回
- 卸载:CLI 全局卸载 npm uninstall -g @zavionwang/dsh-subagent-router;注入内容保留在 agent.cordis.yml(不影响运行,只是子代理回到继承主路由),可手动删除 agentOptions: 块还原
- 覆盖盲区:workflow 工作线程与 tool-ralph 的 spawn 不走本注入——它们仍继承主代理路由;如需覆盖需另行配置

配套:provider 路由与凭证

settings.yaml 需声明路由:

llm-pi-ai:
providers:
openrouter:
apiKeyEnv: OPENROUTER_API_KEY
baseURL: https://openrouter.ai/api/v1
models:
- id: stealth/ox-alpha
contextWindow: 1048576
maxTokens: 131072

凭证:.dsh/.credentials.yaml 的 OPENROUTER_API_KEY(或环境变量)。

⚠️ OpenRouter 免费档注意:stealth/ox-alpha 定价 0/0,但模型 id 不含 :free 后缀,free tier 账户可能被限流(429/402)——这是限流不是余额,别误判。

常见问题

Q: 改完配置为什么不生效?
重启 dsh(配置只在新进程生效)。

Q: 子代理自报模型不对?
以 dsr-verify 的会话记录为准(自报可能因 persona 提示从 route 解析而误报)。

Q: 会不会影响主代理?
不会。agentOptions 只注入 subagent 工具行,主代理仍走 settings.yaml 的默认路由。

Q: 报 "no adapter registered for provider" (NO_ADAPTER)?
自定义 provider 必须声明 OpenAI 兼容协议:在 settings.yaml 的 provider 配置里加 api: openai-completions(dsh 按此选择适配器)。完整示例(智谱 GLM,实测通过):

llm-pi-ai:
providers:
zhipu:
displayName: 智谱 GLM
apiKeyEnv: ZHIPU_API_KEY
api: openai-completions        # ← 必须
baseURL: https://open.bigmodel.cn/api/paas/v4
models:
- id: glm-5.3-flash
contextWindow: 131072
maxTokens: 8192

⚠️ YAML 缩进警告:providers: 下的 provider 键必须缩进 4 空格,models 列表项 8 空格。缩进错一位会导致整个 llm-pi-ai 段解析失败(dsh 静默跳过,表现为 NO_ADAPTER)。改完用 python -c "import yaml; yaml.safe_load(open('settings.yaml'))" 校验。

Q: GLM 免费吗?
智谱开放平台(open.bigmodel.cn)新用户送 2000 万 tokens 体验包,glm-5.3-flash 为免费档模型。

原理

主代理(deepseek-official/deepseek-v4-flash)
│  subagent/subagent_fork 调用
▼
tool-subagent config.agentOptions = { provider: openrouter, model: stealth/ox-alpha }
│  dsh-subagent: agentOptions ?? parent.options
▼
子代理(openrouter/stealth/ox-alpha)——与主代理完全解耦

License

MIT © 2026 ZavionWang

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群