deepseek-harness/packages/subprocess
2026-08-08 22:19:10 +08:00
..
subprocess fix(pty,subprocess,lsp): address review round on cancellation, lookup, and contracts 2026-08-08 21:27:59 +08:00
subprocess-e2b feat(e2b): add remote runtime providers 2026-08-08 22:19:10 +08:00
subprocess-local fix(subprocess-local): fence descendant adoption on the shell's start identity 2026-08-08 22:17:54 +08:00
README.i18n.yaml feat(e2b): add remote runtime providers 2026-08-08 22:19:10 +08:00
README.md feat(e2b): add remote runtime providers 2026-08-08 22:19:10 +08:00
README.zh.md feat(e2b): add remote runtime providers 2026-08-08 22:19:10 +08:00

subprocess/ — subprocess capability family

English | 中文

The shared home for spawning managed child-process trees: fully-specified spawn specs with Node-shaped per-stream stdio dispositions (raw pipes, inherit, bounded tail-keep collection with spill files), the one credential scrub every harness spawner uses, offset-based incremental reads, tree-scoped signalling with SIGTERM→grace→SIGKILL escalation, and the cooperative dispose ladder. Command defaulting, shell semantics, deadlines, protocol framing, and presentation stay with consumers — the bash executors, the LSP host, and the ACP subagent backend. See the subprocess seam Agent Note.

Package ctx key Role
subprocess (@deepseek-ai/dsh-subprocess) ctx.subprocess The seam: abstract SubprocessService.spawn(spec), the fully-explicit SubprocessSpawnSpec with per-stream stdio dispositions, SubprocessHandle (streams, offset-based readers, terminate/waitForExit/dispose), and the shared scrub + DSH_*/CollectedOutput vocabulary
subprocess-local (@deepseek-ai/dsh-subprocess-local) — The local implementation: detached process trees, per-disposition stream wiring, tail-keep truncation with bounded private spill files, the DSH_* merge order, tree signalling with escalation, the dispose ladder, and terminate-and-join disposal
subprocess-e2b (@deepseek-ai/dsh-subprocess-e2b) — Experimental E2B implementation: remote Linux process groups and spill state in the shared ctx.e2b sandbox, with asynchronous PID acquisition and SDK buffering limitations

The service owns process lifetime across consumer reloads; consumers own what a process means (a bash command, a future non-shell runner) and every default that shapes one.