Shared base default file editor selection
共享 base 默认文件编辑器选择
The shared base selects both `read`/`write`/`edit` and `str_replace_editor`, which offer overlapping file editing interfaces. Issue #3599 requests one default interface for base-backed profiles while preserving the dedicated minimal compositions.
English
Problem
The shared base selects both read/write/edit and str_replace_editor, which offer overlapping file editing interfaces. Issue #3599 requests one default interface for base-backed profiles while preserving the dedicated minimal compositions.
Decision
The base patch selects read, write, and edit for file editing. It does not insert tool-str-replace-editor; SDK and Web application patches therefore need no disabling override. The editor package remains available to compositions that insert it explicitly.
Web minimal and the standalone sdk-minimal bundle own their tool selection independently of base. The persistent-shell-only decision owns their single-tool defaults.
This refines the shared tool defaults in one dsh launcher. That note remains active for launch ownership, shared services, and patch precedence; no active note is fully superseded.
Alternatives considered
Disable the editor separately in each application. This leaves overlapping defaults in base and requires each consumer to opt out. The base owns the shared choice directly.
Delete the tool package. Explicit custom compositions still use this interface. Base default selection does not remove the package or constrain independently owned minimal defaults.
Consequences
Base-backed SDK, headless, ACP, and custom profiles omit the editor schema by default. Web standard also omits it. A profile, home, or invocation patch can add the tool with insert; a patch that only sets disabled: false requires an existing row and cannot create one. This decision does not make all SDK and Web tools identical.
Verification
The SDK process tests capture actual model requests for default file tools, explicit editor insertion, and the standalone minimal roster. The headless process test checks the shared default through its application. The headless, SDK, and ACP recorded sessions pin the assembled model-visible outputs, including the SDK fixture that explicitly inserts the editor.
中文
Problem
共享 base 同时选择 read/write/edit 和 str_replace_editor,这些工具提供重叠的文件编辑接口。Issue #3599 要求基于 base 的 profile 默认使用一套接口,同时保留专用的极简组合。
Decision
base patch 选择 read、write 和 edit 负责文件编辑。它不插入 tool-str-replace-editor;因此 SDK 与 Web 应用 patch 无需禁用覆盖。编辑器包仍可供显式插入它的组合使用。
Web minimal 与独立 sdk-minimal bundle 各自负责工具选择,不依赖 base。仅持久 shell 决策负责它们的单工具默认值。
本决策细化了统一 dsh 启动器中的共享工具默认值。该文档对启动所有权、共享服务和 patch 优先级仍然有效;没有被完全取代的活跃 Agent Note。
Alternatives considered
在每个应用中分别禁用编辑器。 这会在 base 中保留重叠的默认接口,并要求各消费方主动退出。共享选择由 base 直接负责。
删除工具包。 显式自定义组合仍使用此接口。base 的默认选择不删除包,也不约束独立负责的极简默认值。
Consequences
基于 base 的 SDK、headless、ACP 与自定义 profile 默认不包含该编辑器 schema。Web standard 同样不包含它。profile、home 或逐次调用 patch 可以通过 insert 添加工具;只设置 disabled: false 的 patch 需要已有配置项,无法创建配置项。本决策不要求 SDK 与 Web 的全部工具一致。
Verification
SDK 进程测试 捕获默认文件工具、显式插入编辑器与独立极简工具清单的实际模型请求。headless 进程测试 通过所属应用检查共享默认值。headless、SDK 与 ACP 录制会话固定组装后模型可见的输出,包括显式插入编辑器的 SDK fixture。