| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- # 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-file'
- # 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'
- - id: deepseek-llm-api-extensions
- name: '@deepseek-ai/dsh-deepseek-llm-api-extensions'
- - id: session-log-deepseek
- name: '@deepseek-ai/dsh-session-log-deepseek'
- - id: plugin-package-inventory-deepseek
- name: '@deepseek-ai/dsh-plugin-package-inventory-deepseek'
- # 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: compaction-basic
- name: '@deepseek-ai/dsh-compaction-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-in-process
- name: '@deepseek-ai/dsh-subagent-spawn-in-process'
- config:
- providerName: spawn
- - id: subagent-fork-in-process
- name: '@deepseek-ai/dsh-subagent-fork-in-process'
- 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
- enableModelSelection: true
- backgroundMode: continuable
- maxDepth: 1
- # Fork omits model selection so provider/model stay equal to the parent and the
- # inherited history remains eligible for KV Cache reuse. It stays one-shot because
- # a continuable child's `report` tool and prompt section precede that history and
- # invalidate the same prefix. `run_in_background` is off as an explicit
- # foreground-only choice even though agent-spine-demo mounts the generic Job runtime.
- # See .agents/notes/implemented/feature/2026-08-18-model-selected-subagent-routes.md
- # and .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-worker-thread
- name: '@deepseek-ai/dsh-workflow-worker-thread'
- 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-observation-policy
- name: '@deepseek-ai/dsh-fs-observation-policy'
- - id: tool-fs
- name: '@deepseek-ai/dsh-tool-fs'
|