终端主路径
- Windows / macOS 原生窗口与终端网格绘制;
- PowerShell、默认或指定 WSL 发行版,以及 macOS 登录 shell;
- 键盘输入、
Ctrl-C、F1-F12、组合导航键和 resize; - ANSI / VT 颜色、光标、宽字符网格和 alternate screen;
- 子 shell 退出提示与应用退出时的 PTY 回收。
用一个保持小规模的原生应用,承载 Windows 上的 WSL / PowerShell 与 macOS 登录 shell,并在真实使用中理解终端路径。
当前一句话
在主动限制项目规模并复用成熟组件的前提下,一个先在 Windows 上进入日常使用的终端,也可以沿同一模型延伸到 macOS;平台路径已经能运行,理解与产品边界仍单独记账。
最初设想是把终端和只读代码观察面放在同一个窗口中:AI 在终端里执行,人保留文件浏览、语义跳转、历史返回和审查上下文。这个问题仍然真实,但第一步同时承担终端、代码视图和 LSP,会让验证周期和理解成本一起扩大。
这不是放弃代码观察面,而是把尚未启动的方向与已经完成的事实分开。编辑器或阅读器只有在终端长期使用后再次成为真实痛点,才重新进入判断。
Workbench 不自行重写终端协议和伪终端。GPUI 负责窗口与绘制,alacritty_terminal 负责 ANSI / VT 解析、网格、历史缓冲和终端状态;Windows 通过 ConPTY 连接 PowerShell 或 wsl.exe,macOS 通过 Unix PTY 连接登录 shell。
两条当前路径:Windows 为 ConPTY → PowerShell,或 ConPTY → wsl.exe → WSL /dev/pts/N → shell;macOS 为 Unix PTY → login shell。ConPTY 与 Unix PTY 承担相似边界,但不是同一套实现。
当前 Rust 源文件合计约 4,100 行(含测试与 build.rs),使用 GPUI、alacritty_terminal、Windows ConPTY 和 macOS Unix PTY。代码仍位于本地独立仓库,页面只记录已经验证的行为和明确边界。
Ctrl-C、F1-F12、组合导航键和 resize;Shift+Left / Shift+Right 切换,Ctrl+Shift+Left / Ctrl+Shift+Right 移动标签;Ctrl+Shift+V、Shift+Insert 和右键粘贴;Ctrl+click 或 macOS Command+click 打开 HTTP / HTTPS 与 OSC 8 链接;| 证据 | 当前结果 | 能够说明什么 |
|---|---|---|
| 平台构建 | Windows 原生可执行程序与 macOS 真机构建、启动均已发生 | 两条平台工具链与终端启动路径已经打通 |
| 进程级 smoke | 覆盖 ConPTY / Unix PTY、HOME、resize、Ctrl-C、继续执行与退出 |
关键终端路径可以重复验证 |
| 单元测试 | 覆盖配置、平台 profile、键盘映射、HTTP 链接、选择、滚动、标签、Inspector 与网格边界 | 若干纯逻辑不再只依赖手工点击 |
| 真实使用 | 自 8 月 2 日起持续承载 PowerShell、WSL、Git、tline、构建、测试、Codex CLI 与日常交互;macOS 路径也已在真机运行 | PoC 已经越过截图演示,并通过真实使用暴露和修正交互问题 |
可运行不是完全理解的证明,却能把原本停留在想象里的问题变成具体对象。输入为什么丢失空格、PTY 如何连接、终端网格怎样绘制、标签状态归谁所有、鼠标坐标为何会偏移,都只能在真实路径出现后接受验证。
当前方法:做出来是必要但不充分的事实锚点。保持项目小,使自己的代码仍可阅读、修改和验证;理解不到的依赖内部继续留在边界外,不用一句“已经做成”把两本账混在一起。
Workbench 现在首先是一台为自己服务的终端。真实使用会继续产生想法,但想法不自动成为排期,成熟工具也不因为能够集成就必须并入同一个进程。
| 方向 | 当前状态 | 重新进入条件 |
|---|---|---|
| 代码阅读器、Tree-sitter 与 LSP | 未启动 | 终端长期使用后,代码观察需求仍反复出现 |
| 浏览器、邮件与内置 AI 面板 | 边界外 | 出现现有工具无法承担的明确工作流 |
| relay、tline、串口与额度监测 | 保持独立程序 | 先通过 CLI、脚本、状态文件或本地接口连接 |
| 会话持久化与 tmux 式服务端 | 未进入 | 进程重启后保留会话成为反复痛点 |
| Linux 桌面与 HarmonyOS | 未启动,也不因 macOS 路径已运行而自动纳入 | 出现真实设备、使用者和不能由现有终端承担的明确需求 |
| macOS 打包、签名与分发 | 边界外;当前只验证源码构建与运行 | 本机持续使用后,分发本身成为真实需求 |
| 通用插件系统与对外产品化 | 不做 | 出现愿意共同承担兼容成本的真实用户,而非为了展示完整 |
首个闭环已经形成:Windows 与 macOS 开发环境、原生窗口、终端路径、基础交互、测试和持续真实使用都已经发生。输入、选择、滚动、链接、宽字符、标签、配置和诊断等问题已经得到两轮修正;下一阶段不是立即补齐编辑器、设置界面或更多平台,而是继续使用这台终端,并逐步读懂属于自己的适配代码。
这个 PoC 最重要的结果也不是替代 Windows Terminal、Ghostty、Alacritty 或 Zed,而是把一个长期放在禁区里的方向变成了可以运行、可以触摸、可以修改的对象。没有做出来时,理解更容易停留在推测;做出来以后,仍然可以诚实地说哪些已经知道,哪些还不知道。
第二轮使用校准:到 2026-08-23,F1-F12、长链接、profile / 快捷键配置、Shortcut Inspector、版本展示和 macOS 终端路径都已进入代码与验证。发现过程、完成状态和仍暂缓的方向保留在使用复盘与迭代计划,不再把已经落地的能力写成未来任务。
停止扩张条件:新增功能如果不能解决真实使用中反复出现的问题,或者会让自己的代码迅速超过可阅读、可验证的范围,就先不做。作品是否继续成立,由使用和接管能力决定,不由功能数量决定。