4.0 KiB
Agent Note: 移除 TUI 包(package)
Status: implemented
English | 中文
问题
移除隐式的 dsh 终端应用后,@deepseek-ai/dsh-tui 不再拥有任何已交付的组合。该包仍包含终端渲染器、交互式命令与问答适配器、扩展浮层、快照 fixture(测试前置数据)、已打补丁的 pi-tui 依赖,以及仍将 TUI 宣称为受支持应用接口的 SDK 脚手架。保留这一表面意味着继续维护一个产品规模的前端,而其唯一剩余消费方就是项目生成器本身。
该包还会使仓库所支持的应用清单产生误导。当前可运行产品使用 Web、ACP(Agent Client Protocol)、JSON-RPC 或一次性 CLI(命令行界面)入口,SDK 却仍提供终端选项,而没有任何示例或产品命令会实际运行它。
决策
删除 packages/ui/tui 包,不提供兼容包或别名。其源码、包测试、终端快照、依赖声明、已打补丁的 pi-tui 产物、workspace 引用、生成的服务目录条目和文档会一并移除。通用宿主能力与 agent-loop 能力保持不变。
SDK 的运行接口联合类型现在只包含 acp 与 embed。create-sdk 默认使用 ACP,生成的模板不再包含终端启动、恢复、会话环境或模型参数分支;内置的 ask-user 功能也被移除,因为剩余两个生成接口都不提供 UserInteractionProvider。宿主应用仍可直接挂载提供方无关的 dsh-user-interaction、dsh-commands 和呈现 seam。
本决策取代显式配置 dsh 入口决策中保留可复用包的决定,也使已归档 TUI 实现记录不再适用于当前状态。这些历史记录继续保持冻结,但不再作为受支持包或应用清单的依据。
本记录汇总了删除后无法继续保持当前状态的仅限包记录。终端 UI 曾在长对话期间保持会话身份可见、移除重复模型标签、为消息附加耗时与阶段状态、在提示词旁显示 workspace 与分支上下文,并保守地解析完整 XML 包装层,以生成人类可读的回退输出。这些选择改善了一个终端前端,但没有部署时不足以证明应保留它。未来的 XML 回退仍必须使用真实解析器而非正则表达式。
验证
仓库搜索结果与生成目录中不再包含 TUI 包、依赖补丁、SDK 接口选项、服务键或包链接。聚焦的 SDK 测试覆盖 ACP 与嵌入式创建、配置、模板和快照。常规源码构建、类型检查、lint、hygiene、文档门禁以及其余组装快照测试套件均可在没有已删除 workspace 的情况下运行。
考虑过的替代方案
保留未交付的包。 不予采纳,因为这会保留维护成本,并继续将一个没有真实组合证明其生命周期的、不受支持的终端前端呈现为可复用产品表面。
为外部消费方保留 SDK 选项。 不予采纳,因为生成器会成为该包在仓库内唯一的消费方,并会搭建一个仓库不再进行端到端验收的应用。预发布兼容性立场不要求保留该选项。
将包移入 examples 或 experimental 组。 不予采纳,因为移动代码无法提供当前产品需求、受维护的部署或组装验收。未来的终端前端应以其实际宿主和交互需求为起点,而不是默认继承此实现。
后果
DeepSeek Harness 不再提供终端 UI 包或生成的 TUI 应用。现有 import、cordis.yml 条目、SDK --interface=tui 请求以及依赖该包的项目会直接失败,不会得到兼容转换。Web 仍是已交付的交互表面;ACP、JSON-RPC 与一次性 CLI 仍是 Web 之外的入口。
提供方无关的命令、用户交互、审批、工具呈现、PTY 与会话投影能力仍可供其他宿主使用。重新引入终端前端时,必须为其提供具名产品或部署、显式包边界、具体交互提供方,以及组装后的生命周期与 transcript(文本记录)验收。