Files
deepseek-harness/packages/subagent/subagent-spawn
Tianyi Cui b907c20213 review: drop the structured-output nudge; FIXME the context-global registry constraint
Two human review directives:

- No re-prompt. A structured child that finishes a turn cleanly without
  calling structured_output settles error to the parent immediately —
  readResult already carried that mapping; the nudge loop only delayed it.
  Deletes the loop, its cancellation-window guard, STRUCTURED_OUTPUT_NUDGE,
  and the structuredNudgeRetries Config on both backends.

- FIXME in the structured module doc: per-agent/per-session tool registry and
  prompt assembly would dissolve the final-assembly enforcement dance (the
  placeholder tool, the swap, the strip, the global-registration lifetime).
2026-07-07 09:14:48 +08:00
..

@deepseek-ai/dsh-subagent-spawn

The in-process spawn subagent backend: a SubagentProvider that runs each child as a fresh child Agent on the same cordis context (ctx.agents) — its own session, its own (or the parent's) model, zero inherited conversation. The cheapest transport, reusing the agent factory's quiescent AgentHandle teardown.

The run mechanics live in the shared @deepseek-ai/dsh-subagent-inprocess driver (startInProcessRun); this backend just passes no seed (a fresh child). The fork backend is an independent peer over the same driver — neither knows about the other.

What it does

start(request) delegates to startInProcessRun(ctx, request, { providerName }) with no seed: a fresh child agent with the parent's cwd/parentSession lineage and (by default) the parent's model. See the driver README for the full lifecycle (depth check, one-shot drive, result read, dispose).

Capabilities

{ outputSchema: true, depthLimit: true, toolFilter: false }. It constructs the child, so it enforces a recursion cap, and it supports structured output via the driver's shared structured runtime (the backend acquires it for its plugin lifetime; each structured run holds its own acquisition until it settles). Tool-scoping is deferred (the service rejects a request needing it before start runs).

Config

Key Meaning
providerName Registry name on ctx.subagents (default spawn).