Live-session feedback (a real Zed elicitation round-trip): the model presented its finished plan as a plain reply and asked the USER to switch modes — the exact reversal the roadmap warns about — because the shipped section's 'present it with the exit_plan_mode tool' read as a suggestion. The section now says a finished plan is delivered by calling exit_plan_mode, preferred over pasting it as a plain reply or asking the user to switch modes — firmer, without imperatives. ask_user_question enters the shipped plan allowlist (asking is read-only-safe), and the section points a blocked decision at it. The plan-acp-agent example composes the bash family (default mode only — plan's allowlist keeps excluding it, so the two modes now demo a real difference) plus tool-ask-user; both recorded scenarios re-recorded: the pin now shows plan = [ask_user_question, exit_plan_mode, read, todo_write] and post-exit default = the full eight-tool surface.
83 lines
3.2 KiB
YAML
83 lines
3.2 KiB
YAML
# The plan-acp-agent plugin tree: the coding agent served over the Agent
|
|
# Client Protocol WITH session modes composed — the plan-mode RFC's live
|
|
# composition. The editor's mode picker (session/set_mode) switches the
|
|
# session between `default` and `plan`; in plan mode the model works under the
|
|
# read-only allowlist and leaves through the user-reviewed exit_plan_mode tool
|
|
# (the review rides the same elicitation flow as ask_user_question).
|
|
#
|
|
# CRITICAL: this tree loads NO stdout logger and NO hmr — stdout is reserved
|
|
# for the ACP JSON-RPC protocol (a property of @deepseek-ai/dsh-acp-agent,
|
|
# same as examples/acp-agent).
|
|
#
|
|
# Requires DEEPSEEK_API_KEY (and optionally DEEPSEEK_BASE_URL) — the
|
|
# dsh-acp-agent bin loads the gitignored repo-root .env first (on STDERR only).
|
|
|
|
# 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
|
|
|
|
# The ACP server app: the agent-core spine + JSONL persistence + the ACP
|
|
# bridge (which advertises the mode picker and answers the plan review).
|
|
- id: acp-agent
|
|
name: '@deepseek-ai/dsh-acp-agent'
|
|
config:
|
|
model: deepseek-v4-flash
|
|
# Persistence root: $DSH_SNAPSHOT_SESSIONS_ROOT when the snapshot harness
|
|
# sets it (so a record run's logs land where the harness harvests them),
|
|
# else the local ./.sessions default.
|
|
persistenceRoot: !!js process.env.DSH_SNAPSHOT_SESSIONS_ROOT ?? './.sessions'
|
|
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.
|
|
|
|
# Session modes (ctx.modes — the shipped `plan` definition, no overrides): the
|
|
# mode/set vocabulary, the assemble filter + mode section, the pre-execute
|
|
# gate, and the exit_plan_mode tool. The ACP bridge above reads it
|
|
# opportunistically and advertises the picker.
|
|
- id: mode
|
|
name: '@deepseek-ai/dsh-mode'
|
|
|
|
# Local bash executor + the model-facing bash tools: available in the default
|
|
# mode, EXCLUDED by plan mode's allowlist — running the two modes against the
|
|
# same task shows the difference (`rm`/`git` work only after the exit review).
|
|
- id: bash
|
|
name: '@deepseek-ai/dsh-bash-local'
|
|
config:
|
|
timeoutMs: 60000
|
|
|
|
- id: tool-bash
|
|
name: '@deepseek-ai/dsh-tool-bash'
|
|
|
|
# The model-facing ask_user_question tool: ON plan mode's allowlist, so the
|
|
# model can raise a blocking decision to the user while planning; the review
|
|
# and the questions ride the same elicitation flow.
|
|
- id: tool-ask-user
|
|
name: '@deepseek-ai/dsh-tool-ask-user'
|
|
|
|
# Filesystem capability stack: local provider, read-before-write/edit policy
|
|
# gate, then the model-facing read/write/edit tools — `read` is on plan mode's
|
|
# allowlist; `write`/`edit` are what the plan-mode gate denies.
|
|
- 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'
|
|
|
|
# The model-facing todo_write tool — allowlisted in plan mode, so the model
|
|
# can track its plan while exploring.
|
|
- id: tool-todo
|
|
name: '@deepseek-ai/dsh-tool-todo'
|