DSH / Atlas
2026-09-03implementedsimplificationarchived 2026-09-30

Minimal profiles expose only a persistent shell

极简 profile 只提供持久 shell

The shipped Web `minimal` preset and standalone `sdk-minimal` profile exposed `str_replace_editor` beside their persistent shell. The editor added a second file-mutation interface and its complete schema to every minimal model request, although the shell already provides file inspection and mutation. It also required a dedicated `fs-local` service that no other row in either minimal composition consumed. Using one pe

English

Problem

The shipped Web minimal preset and standalone sdk-minimal profile exposed str_replace_editor beside their persistent shell. The editor added a second file-mutation interface and its complete schema to every minimal model request, although the shell already provides file inspection and mutation. It also required a dedicated fs-local service that no other row in either minimal composition consumed.

Using one persistent shell gives the model a consistent file-operation interface and keeps the harness composition aligned with that interface. Leaving the editor mounted but hidden through a presentation filter would preserve an inactive capability that could reappear when presentation configuration changes.

Decision

The shipped minimal compositions expose exactly one platform-selected persistent shell: bash on Linux and macOS, or pwsh on Windows. Neither composition mounts @deepseek-ai/dsh-tool-str-replace-editor, a filesystem tool, or the fs-local service that supported the editor. The fixed complete persona, absence of runtime context and compaction, shell timeout, and launch-specific host services remain unchanged.

The standalone editor package remains available for explicit custom compositions. A trusted user-authored preset or higher profile patch must insert the editor into the Cordis tree with a filesystem provider in the same service scope; the shipped minimal and sdk-minimal defaults never insert it. The Python SDK guide provides an executable patch example.

The shared persistent Bash consumer uses the one-shot shell's command-status wording while retaining its persistent state. Settled commands append [Command finished with exit code N], including success; timeout output includes [Command timed out or OOM] and the shell-reset notice. Trailing newlines are removed before the status trailer. Both minimal Bash descriptions state that network access depends on the task environment. Explicit compositions using this consumer share its output behavior. Persistent Bash and PowerShell settle cancelled commands only after shell cleanup; the existing ToolRuntime then publishes ABORTED instead of stringifying the user's cancellation object. Queued cancelled calls send no command, and execution or cleanup failures retain their errors.

Exact composition tests assert the single tool and the absence of a preset-local filesystem service. The sdk-minimal bundle test and built config dump assert that its row and dependency allowlists contain neither fs-local nor dsh-tool-str-replace-editor. Web and packaged-Python model-visible snapshots pin the one-tool schema roster. SDK profile smoke tests execute the guide's editor patch and verify file creation and viewing.

This decision partially supersedes the tool selection in the bare minimal runtime and the minimal exception in the base editor decision. Those notes retain authority for prompt ownership, no-compaction behavior, and base-backed file editing. The application architecture owns profile launch and bundle layering.

Alternatives considered

Keep the editor row and hide its schema. Rejected because a presentation or restriction layer would leave the capability in the minimal composition and make its absence depend on another setting.

Remove the editor package from the distribution. Rejected because explicit custom compositions remain valid consumers. The requirement concerns the two shipped minimal defaults.

Keep the editor only in sdk-minimal. Rejected because the two minimal paths would present different tool contracts to the same model class, and the packaged SDK path would retain the schema cost and unused filesystem service.

Consequences

Minimal agents inspect and modify files through their persistent shell. Their model requests carry one tool schema, and their compositions own no filesystem service. The editor package and explicit editor compositions remain available. Web and SDK replay fixtures pin the persistent Bash status trailers alongside shell state and file effects.

中文

问题

随附 Web minimal preset 与独立 sdk-minimal profile 在持久 shell 之外还提供 str_replace_editor。Shell 已经可以检查和修改文件,editor 仍会为每个极简模型请求增加第二种文件修改接口及其完整 schema。它还要求挂载一个专用 fs-local 服务,而两份极简组合中的其他配置项都不使用该服务。

只使用持久 shell 可以为模型提供一致的文件操作接口,并让 harness 组合与这一接口保持一致。如果保留 editor 的挂载,只通过呈现层过滤隐藏它,那么呈现配置变化时,该能力仍可能重新出现。

决策

随附的极简组合只提供一个按平台选择的持久 shell:Linux 与 macOS 使用 bash,Windows 使用 pwsh。两份组合都不挂载 @deepseek-ai/dsh-tool-str-replace-editor、文件系统工具或支撑 editor 的 fs-local 服务。固定的 complete persona、运行时上下文与 compaction 的缺失、shell 超时和各启动路径的宿主服务保持不变。

独立 editor 包仍可用于显式自定义组合。受信任的用户自定义 preset 或更高优先级的 profile patch 必须将 editor 插入 Cordis tree,并在同一服务作用域内提供文件系统后端;随附的 minimal 与 sdk-minimal 默认组合不会插入它。Python SDK 指南提供可执行的 patch 示例。

共享的持久 Bash 消费方保留跨调用状态,并采用单次 shell 的命令状态文案。完成的命令追加 [Command finished with exit code N],成功时也包含该标记;超时输出包含 [Command timed out or OOM] 和 shell 重置说明。追加状态标记前会移除输出末尾的全部换行。两份极简 Bash 描述都说明网络访问取决于任务环境。使用该消费方的显式组合共享相同的输出行为。持久 Bash 和 PowerShell 在 shell 清理完成后才结束已取消命令,由现有 ToolRuntime 发布 ABORTED,不把用户取消对象转成字符串。排队期间被取消的调用不发送命令,执行或清理失败仍保留各自的错误。

精确组合测试会断言单工具清单以及 preset 内不存在文件系统服务。sdk-minimal bundle 测试与构建后配置转储会断言配置项和依赖 allowlist 都不含 fs-local 或 dsh-tool-str-replace-editor。Web 与打包 Python 的模型可见快照会固定单工具 schema 清单。SDK profile 冒烟测试会执行指南中的 editor patch,并验证文件创建和查看。

本决策部分取代极简裸运行时中的工具选择,以及base 编辑器决策中的极简例外。这些 Agent Note 继续负责提示词所有权、无 compaction 行为和基于 base 的文件编辑。应用架构负责 profile 启动与 bundle 分层。

考虑过的替代方案

保留 editor 配置项并隐藏其 schema。 不予采用,因为呈现层或限制层会让该能力继续留在极简组合中,并使其缺失依赖另一项设置。

从发行物中删除 editor 包。 不予采用,因为显式自定义组合仍是有效消费方。本需求只涉及两份随附的极简默认组合。

只在 sdk-minimal 中保留 editor。 不予采用,因为两条极简路径会向同类模型提供不同的工具约定,而且打包 SDK 路径仍会承担 schema 成本和未被其他配置项使用的文件系统服务。

后果

极简 agent 通过持久 shell 检查和修改文件。模型请求只携带一个工具 schema,组合不拥有文件系统服务。editor 包和显式 editor 组合仍然可用。Web 与 SDK 回放快照会同时固定持久 Bash 的状态标记、shell 状态和文件操作结果。