In the development practice of DeepSeek Harness (DSH), when a main agent dispatches a background sub-agent to handle a time-consuming task, the default send_message behavior is to queue the instruction and wait for the sub-agent to finish its current turn, or even subsequent turns. If the instruction must be intervened, corrected, or updated mid-way, the only options are to wait or terminate the task. This requires a mechanism that can directly intervene in the sub-agent’s current turn.
steer_subagent is a DSH plugin developed by Momojie-S. It inserts new instructions into the current turn (step-boundary) of a background sub-agent, or forces the current turn to restart. It does not change the default queued behavior of send_message; instead, it provides a more fine-grained intervention method.
Core Features¶
The plugin provides the model with a steer_subagent tool, supporting the following behaviors:
- Interjection mode (default): After the sub-agent finishes the current step, it immediately reads and executes the new instruction. Completed steps are preserved, and the remaining steps follow the new instruction.
- Interrupt mode: When calling
steer_subagentwithmode: "turn", the sub-agent immediately stops the current turn, and the new instruction starts as an entirely new turn. - Step retention: In both interjection and interrupt modes, completed steps are not rolled back.
- Permission restriction: Only a parent agent may interject its own direct background sub-agent. Deeper descendants still need to be handled through
interrupt_agent. - Offline fallback: If the target sub-agent is offline, the plugin automatically follows the same wake/cold-recovery path as
send_message, with unchanged FIFO order.
Installation and Configuration¶
Ensure that the DSH version meets the requirements (>= 0.1.0-rc.7, verified up to 0.1.1-rc.2), then run the installation command:
dsh plugin --profile web add github:Momojie-S/dsh-subagent-steer
After installation, you can modify cordis.patch.yml to override the toolName configuration item (default: steer_subagent) and adjust the tool name visible to the model.
Typical Usage¶
In a scenario where the main agent dispatches a slow background sub-agent, it can insert an instruction while the sub-agent is running. For example, instruct the sub-agent to count from 1 to 12, wait 4 seconds per step, and insert an instruction around step 3:
steer_subagent subagent_id: <id>
message: 当前步完成后立即停止计数,汇报你完成到第几步,并逐字引述本条指示
The verification result should show that the sub-agent stops around step 3, quotes the instruction, and does not execute the remaining steps 4–12.
Applicable Scenarios and Notes¶
This plugin is suitable for scenarios requiring fine-grained control of the execution flow or mid-course correction. However, note the following facts before using it:
- Version compatibility: The plugin depends on the
ctx.subagents.followupservice. DSH 0.1.2-rc.1+ has removed this service, and the officialsend_messagenatively covers equivalent capabilities. Therefore, this plugin was marked deprecated on 2026-09-05 and is unavailable in 0.1.2-rc.1+ environments. - Runtime environment: The plugin runs only on the host half, has no browser resources, and supports Windows/Linux.
- One-time sub-agents: If a one-time sub-agent finishes the task before reading the interjection directive, the interjection is discarded with inbox cleanup and cannot take effect.
- Security: The plugin is under the MIT license. Review the source code yourself before deployment.
This tool uses steer_subagent to provide immediate intervention for background sub-agents, making it suitable for scenarios requiring fine-grained control of the execution flow or mid-course correction. Because it has been deprecated, it is recommended to directly evaluate the official send_message capabilities or look for alternatives in new environments. See GitHub.