前言¶
DeepSeek Harness(DSH)里,智能体工具可以以两种形态呈现给模型:native 下每个可见工具都是 JSON Schema,适合短对话、少量工具调用;ptc 下则是一个 run_code 工具加生成的 SDK,更适合批量、迭代、并行和数据量大的工作。形态通常在组装 Agent 时由 preset 定死,整段会话往往从头到尾只有一种。实际会话却常混合两种需求——例如先跑批量迁移,再追问「为什么这一条失败了」。dsh-ptc-router 在 DSH 上补上了「按任务选形态、任务中途可切换」这一层能力。
这是什么¶
dsh-ptc-router 是维护者 w756568942 发布的 DSH Host 插件(分类:模型推理)。一句话:为 DeepSeek Harness 做 PTC router——按任务选择 PTC 或 native 工具呈现方式,并支持模型或用户在运行中切换。仓库:https://github.com/w756568942/dsh-ptc-router;社区目录页:https://www.skillhub.cn/plugins/w756568942/dsh-ptc-router。
核心功能¶
下面介绍 README 中已写明的能力。
自动路由:任务开始时自动决策;新任务替换旧任务时会再次决策。Agent 创建或恢复时,插件会读最近一条有实质内容的用户消息;每条新用户消息在第一步模型调用前会先分类。短续写(如「继续」「接着」「ok」等)继承当前形态,不重新分类。
live 切换:模型或用户可在下一步生效前切换形态,无需改 session preset。
Agent 级覆盖:在 Agent 作用域上的声明会压过 preset 的形态,并随 Agent 生命周期卸载;子 Agent 默认保持各自 preset 的形态(可通过配置扩展到子 Agent)。
无 PTC 运行时时的降级:部署未挂载 PTC runtime 时,优雅回退到 native,并在 /mode 中说明。
决策方式:对任务文本做加权、中英双语启发式分类。倾向 PTC 的信号包括批量、并行、脚本流水线、全仓库范围、数据处理、审计迁移、多步结构化指令、多文件引用等;倾向 native 的包括短指令、问答解释、单步操作、问候、视觉/UI 类请求。当 ptcScore - nativeScore >= threshold(默认 2)时选 PTC。分类器刻意保持小而可测;模型可用 switch_tool_mode 覆盖,用户可用 /mode 覆盖。
安装与启用¶
插件是 Host bundle:无需构建、无运行时依赖。安装前请自行查看仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行。
推荐:Plugins 页面
打开 DSH 的 Plugins,从 GitHub 安装本仓库或从本地 checkout 安装,然后启用 dsh-ptc-router。
CLI
dsh plugin --profile web add github:w756568942/dsh-ptc-router
随后在 Plugins 页面启用 dsh-ptc-router。(Plugins 页面会更新 profile 的 bundle 列表;仅执行上述 CLI 只会安装包。)
开发 overlay(改插件源码时用)
dsh --profile web --patch ./dev/dev.patch.yml
dev/dev.patch.yml 从 checkout 加载 ../index.js,下次 boot/reload 即生效,无需装进 profile。
package.json 声明的 DSH 兼容范围:>=0.2.1-rc.2 <0.3.0-0。当前插件版本为 0.1.0。
典型用法¶
自动模式¶
无需额外操作。按上一节规则在 inbox 插入时分类并应用形态。
/mode¶
在会话里使用:
/mode show the current form, its source, and the last decision
/mode native pin native (suspends automatic routing)
/mode ptc pin PTC
/mode auto resume automatic routing and re-classify the current task
手动 pin 不会持久化;重启后插件会按最新任务重新分类。部署级策略可用配置里的 forceMode / defaultMode。
switch_tool_mode¶
模型在任务形态变化时可调用:
switch_tool_mode({ mode: "ptc" | "native" | "auto", reason?: string })
PTC 模式下,同一能力在程序内也可通过 tools.switch_tool_mode 使用。
配置(可选)¶
字段均在 cordis.patch.yml 中有注释;可在 profile patch 里覆盖,例如:
- id: dsh-ptc-router
config:
threshold: 3
extraPtc: ['screenshot diff', '批量截图']
| 字段 | 默认 | 含义 |
|---|---|---|
auto |
true |
是否自动分类任务 |
defaultMode |
native |
尚无任务文本时的形态;/mode auto 且无历史时 |
forceMode |
auto |
native / ptc 可强制全会话一种形态 |
threshold |
2 |
选 PTC 所需的分数差 |
guidance |
true |
是否给模型一段短提示,说明可切换 |
applyToSubagents |
false |
是否对子 Agent 也生效(默认仅根 Agent) |
extraPtc |
[] |
额外 PTC 关键词(每个 +2) |
extraNative |
[] |
额外 native 关键词(每个 −2) |
离线试分类(开发仓库内):
npm run classify -- "遍历所有文件并统计行数"
适用场景与注意¶
适合谁:在同一 DSH 会话里既要「大批量、脚本化、多文件」又要「短问答、解释、单步操作」的开发者;希望少改 preset、靠任务文本和指令切换工具形态的场景。
机制与代价:切换会改工具目录和 system prompt,下一步请求会重建 prefix(一次 KV-cache miss),这是换形态本身带来的。默认仅根 Agent;子 Agent 保持 preset。ptc 需要已挂载的 ptcRuntime。live 切换依赖 presentAs 的 dispose 再 declare 语义(README 注明在 0.2.1-rc.2 上验证过)。
生态说明:DSH 采用「一切皆插件」思路;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,本文不以「官方应用商店」表述。
结尾¶
dsh-ptc-router 把「整会话一种工具形态」扩展为「按任务路由、中途可切」,并保留 native 降级与用户/模型 override。需要安装或源码时,见目录页 https://www.skillhub.cn/plugins/w756568942/dsh-ptc-router 与 GitHub https://github.com/w756568942/dsh-ptc-router。