116 lines
4.1 KiB
YAML
116 lines
4.1 KiB
YAML
# ACP server and snapshot-record composition. With `DSH_SNAPSHOT=record`, the
|
|
# app bin runs the real DeepSeek adapter and the harness harvests its persisted log.
|
|
# `dsh-acp-agent` loads no stdout logger or HMR because stdout carries ACP JSON-RPC.
|
|
# It loads the gitignored root `.env` on stderr before reading `DEEPSEEK_API_KEY`
|
|
# and optional `DEEPSEEK_BASE_URL` here.
|
|
|
|
# The DeepSeek adapter.
|
|
- id: llm-deepseek
|
|
name: '@deepseek-ai/dsh-llm-deepseek'
|
|
config:
|
|
apiKey: !!js process.env.DEEPSEEK_API_KEY
|
|
baseURL: !!js process.env.DEEPSEEK_BASE_URL
|
|
models:
|
|
- deepseek-v4-flash
|
|
- deepseek-v4-pro
|
|
|
|
# Local executor for the app bundle's bash tool.
|
|
- id: bash
|
|
name: '@deepseek-ai/dsh-bash-local'
|
|
config:
|
|
timeoutMs: 60000
|
|
|
|
# The ACP server app: the agent-core spine + JSONL persistence + the ACP bridge.
|
|
# Persistence root: $DSH_SNAPSHOT_SESSIONS_ROOT when the snapshot harness sets it
|
|
# (so it can harvest / isolate the log), else ./.sessions for the demo.
|
|
- id: acp-agent
|
|
name: '@deepseek-ai/dsh-acp-agent'
|
|
config:
|
|
model: deepseek-v4-flash
|
|
persistenceRoot: !!js process.env.DSH_SNAPSHOT_SESSIONS_ROOT ?? './.sessions'
|
|
# Keep the persona to identity and behavior; tool plugins own tool guidance.
|
|
# The loop resolves {{model}} and each ACP session's client-supplied {{cwd}}.
|
|
persona: |
|
|
You are a coding assistant powered by the {{model}} model. Your working directory is {{cwd}}.
|
|
|
|
Verify your work by running the code or tests. Keep answers brief and factual.
|
|
|
|
# Expose fresh-child `spawn` and completed-prefix `fork` through separate tool
|
|
# names so multi-child scenarios exercise both transports. These leaves follow
|
|
# the app because it provides `ctx.agents` and `ctx.tools`.
|
|
- 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
|
|
|
|
- id: tool-subagent
|
|
name: '@deepseek-ai/dsh-tool-subagent'
|
|
config:
|
|
provider: spawn
|
|
toolName: subagent
|
|
|
|
- id: tool-subagent-fork
|
|
name: '@deepseek-ai/dsh-tool-subagent'
|
|
config:
|
|
provider: fork
|
|
toolName: subagent_fork
|
|
|
|
|
|
# The worker-thread workflow engine fans a model-written JavaScript script's
|
|
# `agent()` calls out through the spawn backend; the adjacent tool exposes it to the model.
|
|
- id: workflow-workerthread
|
|
name: '@deepseek-ai/dsh-workflow-workerthread'
|
|
config:
|
|
provider: spawn
|
|
|
|
- id: tool-workflow
|
|
name: '@deepseek-ai/dsh-tool-workflow'
|
|
# `todo_write` replaces the logged whole list and surfaces an ACP `plan` update.
|
|
- id: tool-todo
|
|
name: '@deepseek-ai/dsh-tool-todo'
|
|
|
|
# Identical repeat calls trigger advisory context, never a block, at the default
|
|
# thresholds [3, 5, 8]. Only the repeat-tool-guard snapshot scenario reaches them.
|
|
- id: repeat-tool-guard
|
|
name: '@deepseek-ai/dsh-repeat-tool-guard'
|
|
|
|
# Policy loads before the model-facing filesystem tools so writes and edits require
|
|
# an observed file. Relative paths use the server launch cwd; the Zed setup launches
|
|
# this demo from the harness checkout with `pnpm --dir`.
|
|
- 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'
|
|
|
|
# `configPath` is read once at load and resolves from the server launch cwd, not
|
|
# `session/new.cwd`; one `hooks.json` therefore applies to every session and a
|
|
# project-local file is not discovered. Missing config registers nothing. Hook
|
|
# commands still run in the session cwd. Warnings use `ctx.logger`, never stdout;
|
|
# see packages/hooks/hooks-claude/README.md for the deferred per-session design.
|
|
- id: hooks-claude
|
|
name: '@deepseek-ai/dsh-hooks-claude'
|
|
config:
|
|
configPath: ./hooks.json
|
|
|
|
# Codex uses its own `codex-hooks.json` and snake_case five-event dialect; it
|
|
# cannot share Claude's file. It has the same process-level, read-once, missing-is-no-op,
|
|
# logger-only contract. Shipping both bridges lets a scenario seed and exercise either dialect.
|
|
- id: hooks-codex
|
|
name: '@deepseek-ai/dsh-hooks-codex'
|
|
config:
|
|
configPath: ./codex-hooks.json
|