Files
deepseek-harness/.agents/notes/archived/feature/2026-07-24-tui-shell-prompt-editor.zh.md

3.0 KiB
Raw Blame History

Agent Note: TUI shell 提示符编辑器

Status: implemented Archived: 2026-08-04

English | 中文

问题

上游 pi-tui 编辑器始终渲染横向边框行。这种呈现方式虽然把输入区与 transcript文本记录分隔开却占用两行终端高度也不像 shell 中面向命令的输入形态。

决策

TUI 呈现两行提示符。DSH 自有的上下文行把工作目录、运行中轮次的计时、可选的 Git 分支、当前模型、token 总量、缓存命中率与上下文压力显示为各自独立分配优先级的段segment。窄终端会省略低优先级的段但保留目录运行中计时存在时其保留优先级仅次于目录。第二行使用固定宽度的 dsh> 前缀与等宽的续行缩进agent 运行期间提示 steering中途引导与取消的引导文字是占位文本开始输入后即消失。

固定版本的 @earendil-works/pi-tuipackage携带一个 pnpm 补丁,为 EditorOptions 增加 frame: "none" 与固定宽度的提示符前缀。默认值仍是上游的横向边框,因此只有 DSH 编辑器选择启用该行为。两个前缀的可见宽度必须相等;宽度不同时构造会失败。输入、显式换行、自动补全、光标定位和滚动指示共用缩减后的首行宽度;自动折行产生的行不渲染前缀,其文本从编辑器左侧留白处开始,占用前缀列,并按完整内容宽度折行。

补丁范围仅限已发布的编辑器 JavaScript 与类型声明。依赖保持精确的版本固定,使安装要么应用已知补丁,要么直接失败,而不会静默丢掉这种呈现方式。

曾考虑的替代方案

在包装层过滤编辑器的渲染输出。 这需要识别带 ANSI 样式的边框行与滚动指示行,并区分自动补全输出与输入输出,而这些都是未见于文档的渲染细节。

vendor 完整的 pi-tui 包。 该项目更新频繁,而本次改动只需要一个局部的编辑器渲染选项。接手全部源码及其同步流程会带来不成比例的维护成本。

保留横向边框。 这可以避免定制依赖,但保留的正是本次改动想要替换的呈现方式。

后果

编辑器与上下文共占两行,取代原先带边框的编辑器加页脚,提示符区域与对话卡片之间以一行空行分隔。常驻呈现不含会话标识与工具卡片模式;/status 与各命令仍保留这些细节。输入布局与自动补全因提示符前缀占位而损失六列宽度,但折行后的文本会占用原本留空的前缀列。无边框滚动使用独立的 ↑ N more↓ N more 行。

段的内部表示确立了宽度优先级,而未暴露公开的定制语言。待默认模块与溢出行为积累生产环境证据后,未来可在其上构建类似 Starship 的配置。

升级 pi-tui 时需要评审该补丁并重新应用或将其退役。TUI 终端快照固定组装后的呈现效果,包括上下文模块、提示符颜色、对齐、光标定位和自动补全宽度。