dsh-ptc-router:按任务在 PTC 与 native 工具形态间路由

前言

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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜