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:

  1. 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.
  2. Interrupt mode: When calling steer_subagent with mode: "turn", the sub-agent immediately stops the current turn, and the new instruction starts as an entirely new turn.
  3. Step retention: In both interjection and interrupt modes, completed steps are not rolled back.
  4. Permission restriction: Only a parent agent may interject its own direct background sub-agent. Deeper descendants still need to be handled through interrupt_agent.
  5. 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.followup service. DSH 0.1.2-rc.1+ has removed this service, and the official send_message natively 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.