TUI product contract
opensquilla chat 是 OpenSquilla 的交互式终端客户端。Web UI 是用于配置、监控和
多 session 管理的控制平面;TUI 是用于在一个当前 session 中工作的一等客户端。两个
客户端都投影同一个由 Gateway 拥有的 session,而不是复制或拥有它。
Ownership
- Gateway 拥有 sessions、turns、历史、队列、工具执行、用量和 approval 决策,以及
持久的
direct | router | ensemblemodel 策略。 - TUI 和 Web UI 共享规范的消息和任务状态。草稿文本、cursor、滚动位置、主题以及 本地附件暂存则保持客户端本地。
- 一个 turn 记录其来源 surface 和回复目标。一个 session 之前的 channel 绝不能决定 一个新的 TUI turn 被投递到哪里。
--standalone是一个显式的隔离运行时。一次 Gateway 故障绝不会静默地将一个正常 聊天变成 standalone 模式。
UI selection
opensquilla chat --ui auto|tui|plain 仅选择呈现方式:
- 省略
--ui等同于auto。 auto在存在一个已安装、兼容的 OpenTUI host 时使用它,并且只能在 alternate screen 启动之前回退到 plain。当前 release 不发布该 host。tui需要 OpenTUI,在其不可用时以一条诊断信息失败。plain是一个在相同运行时契约之上的极简终端救援 surface,而不是一个独立演进 的聊天产品。
一旦一个全屏 session 启动,renderer 崩溃会恢复终端并退出。它不会在一个 turn 中途 热切换 renderers。
Transcript and detail fidelity
TUI 呈现一条线性的 session transcript。Web UI 仍然是控制平面;响应式的 identity header 和宽 context rail 是由 Gateway 拥有的 context 的投影,而不是第二个本地 identity 或 session model。在 132 列或更宽时,rail 跨越整个终端高度;在该宽度以下, 同样的状态折叠为一条紧凑的 footer strip。
一个空的 session 可以在 transcript 中渲染一个响应式的产品 wordmark 和开始指引。 它绝不能出现在恢复的规范历史内部。提交时,transcript 必须在 provider 的首个 event 之前显示一条实时活动行;provider reasoning 会流入同一行。如果一个 provider 不暴露 任何 reasoning,客户端可以描述可观察的等待,但绝不能合成或暗示私有的思考内容。
传递给 TUI 的每一个 thinking、reasoning、tool-argument、tool-process、tool-result
和 tool-error delta 都会被保留。已完成的 process detail 默认可以被折叠以保持
transcript 的可读性,但折叠必须暴露一个隐藏行计数,并且必须能通过 Ctrl+O 撤销;
它绝不能被用作破坏性的截断。这一承诺适用于 TUI 协议边界,并不覆盖显式的上游
provider 或 Gateway 压缩契约。
一条真实的 Router decision 必须在宽布局和紧凑布局中都保持可见,并且必须在下一个 turn 边界被重置。一次已执行的 ensemble 必须有一个 turn 范围的实时进度块和一个持久 的完成收据。该收据可以包含公共的成员执行 metadata,但绝不能包含候选答案正文或私有 reasoning。客户端不得从一个已启用的配置标志推断 ensemble 已执行。
/router 和 /ensemble 是 Gateway 控制命令,而不是聊天消息。它们的裸形式打开一个
共享的三态选择器;on、off 和 status 提供直接的键盘控制。它们绝不会作为
prompt 回显、steer、排队或取消一个活动的 Turn。一次成功的写入会在 TUI 和 WebUI
之间广播,并且只影响下一个被接受的 Turn;当前 Turn 保留其准入时刻的策略 snapshot。
Standalone 模式对本契约而言是显式只读的。
streaming 一个 turn 不会锁定 composer。本地 UI 命令保持立即执行;被接受的后续会 根据共享的运行时契约被排队或 steer。显式的加载、附件、approval 以及终端安全状态仍 可能限制输入。
Development status and legacy policy
alternate-screen 的 OpenTUI 是预期的终端产品,但仍然是一个源码检出的开发 surface。
正式 release 尚不发布或安装其 companion host,因此已安装的用户继续使用 plain。
仅限 legacy 的入口点和实现被冻结,等待其专门的清理;它们不会获得新的产品功能或
对齐工作。plain 是在共享 Gateway 运行时之上的救援呈现,而不是第二份产品契约。
Deferred platform distribution
仓库包含一个自包含的 companion 包以及 macOS/Linux builders,以便在 rollout 之前
验证分发。它们没有接线到正式的 release 工作流或安装程序。一次未来的 rollout 必须
保持 core 和 host 处于同一版本,并在添加任何 release 资产之前通过原生平台 gates。
在 auto 下缺失或不兼容的 host 会触发仅启动时的 plain 回退;在严格的
--ui tui 下则是一个错误。
原生 Windows 仍然是其 host 制品、ConPTY 终端生命周期、进程树清理、签名、安装程序 以及原生终端证据的单独工作。它复用这些附加式的产品和 Gateway 契约,并且不得要求 macOS/Linux 特有的行为变更。