dsh_send
Send a self-contained task to DeepSeek Harness or continue an existing session, returning a run_id immediately with instructions for waiting for the reply.
Instructions
Hand a task to DeepSeek Harness, or continue a session: returns at once with a run_id and a hint saying how to wait for the reply; follow it. Call it directly, no need to list anything first. A new session starts in the folder this conversation works in, or in cwd or workspace_id (a new cwd is registered first); session_id continues that session. message arrives verbatim as a user message, and Harness does not see this conversation: make it self-contained, in the user's language, the full, explicit spec, asking for tests that cover each requirement. Keep a leading /goal (it sets a Harness goal) and the user's goal text as written. For a large task, write a concrete spec (goal, modules and the files each owns, level of detail, acceptance criteria) rather than passing the user's words on, and send independent parts to separate sessions in parallel, each owning its own files; wait for them together (dsh_wait run_ids), review each as it returns and send its fixes at once. With checks, a short request for a sub-agent review table is appended. To a busy session, mode followup queues the message and steer adds it to the running turn; left out, the Harness setting decides.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"message": "<message>"
},
"name": "dsh_send"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Workspace folder for a new session; leave out to use the folder this conversation works in | |
| mode | No | followup queues after the current turn; steer injects into a running turn. Omit to follow Harness's busy-send setting | |
| model | No | Only when the user names a model for this run (e.g. "DeepSeek-V4 Pro", "v4-pro"); leave out otherwise and the session uses its own model, or Harness's default model for a new session. Matched against Harness's model list ignoring case, spaces, hyphens and a leading DeepSeek; a name that matches no model or several fails the send with the list (provider/model picks one). Sets this session only; Harness's default model is left as it was | |
| checks | No | The project's own test commands, e.g. npm test, or python -m pytest (a bare pytest is often not on PATH, on Windows especially); never check scripts you write yourself. dsh-baton runs them in the folder when the run ends and returns exit codes and the last output lines as evidence. | |
| message | Yes | The task or reply to send | |
| session_id | No | Existing session to continue | |
| workspace_id | No | Harness workspace for a new session (from dsh_list_workspaces) | |
| reasoning_effort | No | Only when the user names a reasoning effort, e.g. high; one of the efforts dsh_list_models shows for the model |