In the DeepSeek Harness workflow, subagents typically inherit routing from the parent agent. Without explicit configuration, this can lead to unpredictable model usage. This plugin provides a minimal, opinionated approach by enforcing the selected model and reasoning effort at the next step rather than after the turn ends, ensuring subagents always run with the chosen configuration.
Core Features¶
- Enforced model selection: Subagents must specify the
modelparameter. Agent Teams’spawn_teammatehas nomodelparameter, so it uses the first concrete route in the allow list. Whether or not enforcement is configured, subagents do not silently inherit the conversation model. - Enforced reasoning effort: Reasoning effort is set per route and is determined by you, not by the delegating agent. The delegating agent has no effort parameter and cannot inherit your setting.
- Reject invalid effort: Before making any provider call, the configured effort is validated against the set supported by the model, avoiding resource waste on invalid configurations.
- Steer running subagents: It joins the current in-progress turn rather than waiting for the next turn. This means corrections to running tasks can arrive at the next step instead of being delayed until the turn ends.
- Display routes in the log: Every
subagentinvocation renders the model it ran on, making it easier to audit in session logs. - UI-configurable: In Settings -> Plugins, you can configure routes and dropdown lists, whose options come from the actual supported range of each model.
Installation¶
Install the plugin via command line. This mounts the settings namespace for the managed allow list, but does not register tools.
dsh plugin --profile web add /path/to/dsh-subagent-model
After installation, plugin behavior is identical to the built-in tools until you edit the allow list.
Configuration¶
Configure via UI¶
Go to Settings → Plugins → Subagent model in DeepSeek Harness. The card lists allowed routes, and each route has a dropdown for selecting reasoning effort. Click “Add a route…” to choose from the model catalog.
Note: Edits are staged locally and take effect after clicking Save.
Configure via YAML¶
Define in ~/.dsh/settings.yaml:
dsh-subagent-model:
routes:
- kiro/claude-opus-5
- deepseek/deepseek-chat
# - inherit/current # 移除此行以禁止继承对话的模型
efforts:
kiro/claude-opus-5: high
deepseek/deepseek-chat: provider/default
routes: allow list, formatprovider/model-id, including an optionalinherit/currententry.efforts: specify the reasoning effort for each route.
Typical Usage¶
This plugin replaces tool lines in agent presets. You need to create a local copy for editing; do not modify the installed preset directly (it will be overwritten during upgrades).
Edit ~/.dsh/.agent-presets/<your-id>/agent.cordis.yml and replace the following two delegation lines (for example, preset name ptc):
- id: tool-subagent
name: dsh-subagent-model/spawn
config:
provider: spawn
toolName: subagent
backgroundMode: continuable
maxDepth: 1
toolFilter:
deny: [subagent, subagent_fork]
- id: tool-subagent-fork
name: dsh-subagent-model/spawn
config:
provider: fork
toolName: subagent_fork
backgroundMode: continuable
maxDepth: 1
toolFilter:
deny: [subagent, subagent_fork]
Select the local preset to start a new session. Verify that the tool schema now requires model and enumerates the configured routes.
Notes¶
- Default behavior: On installation, the seeded allow list includes
inherit/current, so brand-new installations behave identically to the built-in tools. Routing is enforced only after removing this entry. maxDepthlimit:maxDepthis an absolute cap per spawn (root depth is 0), not inherited ceilings. A subagent can bypass the parent’s limit through a different front end with a largermaxDepth.- Prevent bypass: Use
toolFilterin each subagent to denysubagentandsubagent_fork, preventing subagents from creating deeper delegations. - Edit mechanics: Configuration edits are staged locally and committed after saving under a revision-fenced settings scope, without affecting running agents.
Ecosystem Context¶
The ecosystem philosophy of DeepSeek Harness is “everything is a plugin.” This plugin is maintained by community developer dat-lequoc and follows the MIT license. The plugin catalog and GitHub repository are available here: Catalog | GitHub