概览
dsh-acp-enhanced
README / ZH
插件文档
目录摘要
dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。
在 GitHub 阅读完整 READMELIMITATIONS
已知限制
Audio attachments are not supported (audio capability is not advertised), text streams at block granularity by default (`streamDeltas: true` opts into token-level streaming, see Features), one in-flight prompt per session. MCP supports stdio and streamable HTTP (legacy SSE / `acp` transports are not advertised). `session/fork` / `session/resume` are not implemented (capabilities undeclared, compliant clients will not call them). `session/delete` is not advertised either: the harness declares no public persistence delete, so persisted sessions are never removed by the bridge (see [Compatibility](#compatibility)). Multi-root workspaces are advertised and all roots are visible to the model, but dsh's sandbox policy resolves **one writable root per session** (the primary `cwd`, i.e. `session.header.cwd`) and the local sandboxes bind exactly that root for writes. Reads work in every root; under `workspace-write` a write under an additional root is denied first and needs escalation/approval, while `danger-full-access` writes everywhere. True multi-root write enforcement belongs in dsh core (`dsh-sandbox-policy` / `dsh-sandbox-local` would need a root list instead of a single root). Agent presets take over the model-facing rows: the shipped `cordis.patch.yml` disables the dsh-base rows a preset owns (tool-bash/fs/subagent/todo/web/… — exactly the official dsh-web-app/tui list minus `hmr`, kept version-agnostic across generations: a row a given generation does not ship is warned and skipped by the patch applier) and mounts the `agent-presets` roster (`standard` default; `ptc`/`minimal`/`cordis` ship with the dsh CLI; your own presets are declared as `@deepseek-ai/dsh-agent-preset` rows from 0.1.7 on — see [Your own presets](#your-own-presets)). The bundle's own patch applies automatically (package.json `dsh.bundle.patch`) — do **not** copy it into the profile's user-layer `cordis.patch.yml`, or the loader rejects the duplicate entry ids at boot. When **upgrading** a profile that already carries a customized user-layer patch, keep only your custom row configs there (e.g. `includeAllProviders: true` on the acp-enhanced row, restating provider/model/preset since patch entries replace whole rows, they do not merge). A session resumes under the preset its own log records (the last `agent-preset/selected` event, else the creation header); only a log that recorded none falls back to the roster's default.
