A continuable child could finish without giving its parent a usable result: the report tool was described as optional and its default delivery stayed quiet. Install the child-scoped report obligation (tool description plus the tool:report prompt section), default reportDelivery to wakeup, bind shipped subagent_fork delegations to one-shot so fork keeps its prefix reuse, and extend the ACP snapshot harness to pin child system prompts alongside child tool schemas.
166 lines
5.3 KiB
YAML
166 lines
5.3 KiB
YAML
# One-shot coding agent with format-pure stdout. The app bin loads the
|
|
# gitignored root `.env` into the process environment; entry configs here are
|
|
# the composition base, while user-plane values resolve per request through
|
|
# the two providers below.
|
|
|
|
# User-settings document (`$DSH_HOME/settings.yaml`, hot-reloaded): a
|
|
# `llm-deepseek:` section there overrides the adapter entry below without a
|
|
# restart.
|
|
- id: settings
|
|
name: '@deepseek-ai/dsh-settings-local'
|
|
|
|
# Credential store: the live process environment over `$DSH_HOME/.credentials.yaml`
|
|
# (owner-only file, hot-reloaded). The adapter resolves `DEEPSEEK_API_KEY`
|
|
# through it at each request, so no key is inlined in this file.
|
|
- id: credentials
|
|
name: '@deepseek-ai/dsh-credentials-local'
|
|
|
|
# The DeepSeek adapter. Swap to '@deepseek-ai/dsh-llm-pi-ai' for the pi-ai-backed
|
|
# twin (a `providers` dict keyed by route; `reasoning: high` replaces
|
|
# thinking/reasoningEffort). Shipped default: full thinking at max effort on
|
|
# every request. Exact-model resolution materializes request defaults before
|
|
# the request header is logged.
|
|
- id: llm-deepseek
|
|
name: '@deepseek-ai/dsh-llm-deepseek'
|
|
config:
|
|
thinking: enabled
|
|
reasoningEffort: max
|
|
models:
|
|
- id: deepseek-v4-pro
|
|
contextWindow: 128000
|
|
- id: deepseek-v4-flash
|
|
contextWindow: 128000
|
|
|
|
# Managed child-process groups for the bash executor (spawn/kill/output plumbing).
|
|
- id: subprocess
|
|
name: '@deepseek-ai/dsh-subprocess-local'
|
|
|
|
- id: bash
|
|
name: '@deepseek-ai/dsh-bash-local'
|
|
config:
|
|
timeoutMs: 60000
|
|
|
|
# The example composition pre-creates one fresh `main` agent for its test driver.
|
|
- id: agent-spine
|
|
name: '@deepseek-ai/dsh-agent-spine-demo'
|
|
config:
|
|
agents:
|
|
- id: main
|
|
provider: deepseek-official
|
|
# Stays on flash: the goal/ralph replay corpora were recorded on it, and
|
|
# their nested-include overlays cannot re-pin the app config (a config
|
|
# patch cannot target an entry behind a nested include).
|
|
model: deepseek-v4-flash
|
|
cwd: !!js process.cwd()
|
|
workspaceContext:
|
|
maxBytes: 65536
|
|
persona: |
|
|
You are headless-agent, a coding assistant powered by the {{model}} model.
|
|
|
|
Verify your work by running the code or tests. Keep answers brief and
|
|
factual.
|
|
|
|
- id: persistence
|
|
name: '@deepseek-ai/dsh-session-persistence-jsonl'
|
|
config:
|
|
root: './.sessions'
|
|
compression: !!js "process.env.DSH_SNAPSHOT === undefined ? 'zstd' : 'none'"
|
|
|
|
- id: checkpoint-policy
|
|
name: '@deepseek-ai/dsh-session-checkpoint-policy'
|
|
|
|
# Summarize an older range when derived history approaches the context window.
|
|
- id: token-meter
|
|
name: '@deepseek-ai/dsh-token-meter'
|
|
|
|
- id: compact-basic
|
|
name: '@deepseek-ai/dsh-compact-basic'
|
|
config:
|
|
thresholdRatio: 0.8
|
|
retainRatio: 0.16
|
|
maxTokens: 8192
|
|
compactionRetries: 1
|
|
|
|
# Projection registry: durable subagent identity (mode/label) folds through
|
|
# its registered units; subagent catalog reads fail loud without the capability.
|
|
- id: session-projection
|
|
name: '@deepseek-ai/dsh-session-projection'
|
|
|
|
# Expose fresh-child `spawn` and completed-prefix `fork` through independent
|
|
# in-process backends.
|
|
- id: subagent
|
|
name: '@deepseek-ai/dsh-subagent'
|
|
|
|
- id: subagent-spawn
|
|
name: '@deepseek-ai/dsh-subagent-spawn'
|
|
config:
|
|
providerName: spawn
|
|
|
|
- id: subagent-fork
|
|
name: '@deepseek-ai/dsh-subagent-fork'
|
|
config:
|
|
providerName: fork
|
|
|
|
# Continuable background children are selected per delegation tool. The
|
|
# separately loaded control registers global `send_message`; `report` is
|
|
# installed only in continuable child scopes.
|
|
- id: tool-subagent-control
|
|
name: '@deepseek-ai/dsh-tool-subagent-control'
|
|
|
|
- id: tool-subagent-report
|
|
name: '@deepseek-ai/dsh-tool-subagent-report'
|
|
|
|
- id: tool-subagent
|
|
name: '@deepseek-ai/dsh-tool-subagent'
|
|
config:
|
|
provider: spawn
|
|
toolName: subagent
|
|
backgroundMode: continuable
|
|
maxDepth: 1
|
|
|
|
# Fork stays one-shot because a continuable child's `report` tool and prompt
|
|
# section precede the inherited history a fork reuses; `run_in_background` is off
|
|
# because this example mounts no task service. See .agents/notes/implemented/architecture/2026-08-10-fork-children-stay-one-shot.md.
|
|
- id: tool-subagent-fork
|
|
name: '@deepseek-ai/dsh-tool-subagent'
|
|
config:
|
|
provider: fork
|
|
toolName: subagent_fork
|
|
backgroundMode: one-shot
|
|
enableRunInBackground: false
|
|
maxDepth: 1
|
|
|
|
# The worker-thread workflow engine fans a model-written JavaScript script's
|
|
# `agent()` calls out through the spawn backend.
|
|
- id: workflow-workerthread
|
|
name: '@deepseek-ai/dsh-workflow-workerthread'
|
|
config:
|
|
provider: spawn
|
|
|
|
- id: tool-workflow
|
|
name: '@deepseek-ai/dsh-tool-workflow'
|
|
|
|
# A separate fixed consumer demonstrates fresh-agent Ralph iteration without
|
|
# changing the workflow tool or same-session goal behavior.
|
|
- id: tool-ralph
|
|
name: '@deepseek-ai/dsh-tool-ralph'
|
|
|
|
# `todo_write` replaces the logged whole list.
|
|
- id: tool-todo
|
|
name: '@deepseek-ai/dsh-tool-todo'
|
|
config:
|
|
allowParallelInProgress: true
|
|
|
|
# Policy loads before the model-facing filesystem tools so writes and edits
|
|
# require an observed file. Relative paths resolve from the process cwd.
|
|
- id: fs-local
|
|
name: '@deepseek-ai/dsh-fs-local'
|
|
config:
|
|
cwd: !!js process.cwd()
|
|
|
|
- id: fs-policy
|
|
name: '@deepseek-ai/dsh-fs-policy'
|
|
|
|
- id: tool-fs
|
|
name: '@deepseek-ai/dsh-tool-fs'
|