前言¶
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。