dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Complexity-routed subagent delegation for DeepSeek Harness: the model picks the runtime tier per task.
English | 简体中文
Allowlisted model-and-reasoning routing for DeepSeek Harness. Every delegation call must choose both:
model; andreasoning_effort.The plugin validates the pair against local policy and ctx.llm.resolveCallConfig() before creating a child. Arbitrary provider/model passthrough is never accepted.
dsh plugin --profile <your-profile> add github:leonardoxr/dsh-routed-subagent#v0.3.0
# or use the packed asset from the GitHub release / a local checkout:
dsh plugin --profile <your-profile> add C:/path/to/dsh-routed-subagent-0.3.0.tgz
Target the routed-subagent row in your profile patch. models and rootModels are required to enable delegation. A fresh install without them starts normally and exposes its Settings card, but does not register a delegation tool until you configure a complete policy.
- id: routed-subagent
config:
toolName: routed_subagent
maxDepth: 2
rootModels: [codex-mini, codex-sol]
models:
codex-mini:
provider: openai-codex
model: gpt-5.4-mini
reasoningEfforts: [low, medium]
maxTokens: 16384
description: 'Mechanical edits, lookups, and summarization.'
codex-sol:
provider: openai-codex
model: gpt-5.6-sol
reasoningEfforts: [medium, high, xhigh]
maxTokens: 65536
description: 'Architecture, multi-step reasoning, and hard debugging.'
spawnableModels: [codex-mini]
The mapping key (codex-sol) is the short policy id the calling agent passes as model; it is not sent to the provider. provider and the inner model select the actual adapter route.
Settings → Plugins → Routed subagent edits the complete router configuration: tool name, background-job support, maximum depth, root availability, model policies, provider/model routes, token caps, reasoning-effort allowlists, routing guidance, and recursive child permissions. Provider/model suggestions and effort ids come from the same live Host catalog as Chat; exact custom ids remain editable when the catalog is unavailable or intentionally incomplete.
Changes are staged until Save changes. A successful save hot-remounts the tool for new calls and invalidates recursive authority held by children from the previous settings generation. Reset to composition clears every router override.
The registered tool accepts:
| Field | Required | Meaning |
|---|---|---|
description | yes | Short display label |
prompt | yes | Complete standalone child task |
model | yes | Configured model-policy id allowed in this caller context |
reasoning_effort | yes | Exact effort allowlisted for that policy |
run_in_background | no | Run through the Harness jobs service |
Foreground and background results echo the effective { id, provider, model, reasoningEffort } selection for auditing.
| Key | Default | Meaning |
|---|---|---|
toolName | routed_subagent | Registered tool name |
enableRunInBackground | true | Expose run_in_background |
maxDepth | 1 | Positive finite absolute delegation-depth cap |
rootModels | required | Non-empty policy ids available to top-level agents |
models | required | Non-empty configured model allowlist |
models.*.provider | required | Registered LLM provider route |
models.*.model | required | Exact provider-owned model id |
models.*.reasoningEfforts | required | Non-empty exact effort-id allowlist |
models.*.maxTokens | — | Positive output-token cap |
models.*.description | — | Short routing tradeoff shown to the caller |
models.*.spawnableModels | [] | Policy ids children on this model may call |
Configuration is strict: unknown fields, duplicate ids, empty allowlists, unsafe numeric values, and unknown references fail load or save.
spawn subagent provider is used, because request-level reasoning enforcement and recursive authority require a live child Agent.spawnableModels list.ctx.llm.resolveCallConfig() validates the exact provider/model/effort combination before child creation. Missing adapters, stale model ids, and unsupported effort ids fail without spawning.Version 0.3 is intentionally breaking and has no tier compatibility layer:
tiers → modelsrootTiers → required rootModelsguidance → model policy descriptionspawnable → spawnableModelsproviderName, persona, and static reasoningEfforttier with required model and reasoning_effortmaxDepth: provider-managed with a positive integerHarness's /api trust fence is DNS-rebinding defense, not authentication. Anyone who can reach the server can initiate work available to its agents. Keep expensive routes out of models unless you accept that spend.