工作流与学习实验

Workbench:个人终端工作台

用一个保持小规模的原生应用,承载 Windows 上的 WSL / PowerShell 与 macOS 登录 shell,并在真实使用中理解终端路径。

启动讨论:2026-07-29 最近校准:2026-08-23 定位:个人终端 PoC 状态:Windows 持续主用,macOS 路径已运行
Workbench 从 2026-08-02 起进入真实使用,当前事实来自本地独立仓库、Windows 与 macOS 构建、自动化测试、进程级 smoke 和约三周实际操作;本页解释模型与边界,不把可运行等同于完全理解,也不构成开源或生产可用声明。
本页目录

当前一句话

在主动限制项目规模并复用成熟组件的前提下,一个先在 Windows 上进入日常使用的终端,也可以沿同一模型延伸到 macOS;平台路径已经能运行,理解与产品边界仍单独记账。

01

从代码观察面收缩为终端

最初设想是把终端和只读代码观察面放在同一个窗口中:AI 在终端里执行,人保留文件浏览、语义跳转、历史返回和审查上下文。这个问题仍然真实,但第一步同时承担终端、代码视图和 LSP,会让验证周期和理解成本一起扩大。

原始构想 终端、只读代码展示、语法高亮、定义跳转和路径定位共同组成个人工作面。
第一次减法 首版只做 Windows 宿主,命令进入已有的 WSL 执行环境;先把最短终端路径做实。
第二次减法 先完成终端,不做编辑器、LSP、浏览器、Git UI、内置 AI 和插件系统。
真实验收 能够持续承担 WSL、Git、tline、构建、测试和 Codex CLI 等实际交互,而不只显示一张终端截图。
边界扩展 出现真实 macOS 设备后,复用 GPUI 与终端状态机,补上 Unix PTY、登录 shell 和平台快捷键,并完成真机构建与运行。

这不是放弃代码观察面,而是把尚未启动的方向与已经完成的事实分开。编辑器或阅读器只有在终端长期使用后再次成为真实痛点,才重新进入判断。

02

Windows 与 macOS 的终端路径

Workbench 不自行重写终端协议和伪终端。GPUI 负责窗口与绘制,alacritty_terminal 负责 ANSI / VT 解析、网格、历史缓冲和终端状态;Windows 通过 ConPTY 连接 PowerShell 或 wsl.exe,macOS 通过 Unix PTY 连接登录 shell。

当前实现路径 应用层只接住属于自己的交互与呈现责任
GPUI 窗口 绘制、焦点、鼠标与快捷键
Workbench 适配层 标签、选择、滚动与输入映射
alacritty_terminal 解析、网格、状态与 PTY 适配
平台 PTY ConPTY 或 Unix PTY

两条当前路径:Windows 为 ConPTY → PowerShell,或 ConPTY → wsl.exe → WSL /dev/pts/N → shell;macOS 为 Unix PTY → login shell。ConPTY 与 Unix PTY 承担相似边界,但不是同一套实现。

03

首个里程碑已经完成

当前 Rust 源文件合计约 4,100 行(含测试与 build.rs),使用 GPUI、alacritty_terminal、Windows ConPTY 和 macOS Unix PTY。代码仍位于本地独立仓库,页面只记录已经验证的行为和明确边界。

终端主路径

  • Windows / macOS 原生窗口与终端网格绘制;
  • PowerShell、默认或指定 WSL 发行版,以及 macOS 登录 shell;
  • 键盘输入、Ctrl-C、F1-F12、组合导航键和 resize;
  • ANSI / VT 颜色、光标、宽字符网格和 alternate screen;
  • 子 shell 退出提示与应用退出时的 PTY 回收。

日常交互

  • 多个独立标签、动态标题、退出状态及鼠标切换、关闭;
  • Shift+Left / Shift+Right 切换,Ctrl+Shift+Left / Ctrl+Shift+Right 移动标签;
  • 拖选、双击选词、三击选行、跨 viewport 扩展选择与复制;
  • Ctrl+Shift+VShift+Insert 和右键粘贴;
  • 本地 scrollback、翻页、滚动条和边缘自动滚动;
  • Ctrl+click 或 macOS Command+click 打开 HTTP / HTTPS 与 OSC 8 链接;
  • 启动时配置 profile 与 Workbench 快捷键,可拖动的 Shortcut Inspector 显示输入路由、PTY 字节和版本。
证据 当前结果 能够说明什么
平台构建 Windows 原生可执行程序与 macOS 真机构建、启动均已发生 两条平台工具链与终端启动路径已经打通
进程级 smoke 覆盖 ConPTY / Unix PTY、HOME、resize、Ctrl-C、继续执行与退出 关键终端路径可以重复验证
单元测试 覆盖配置、平台 profile、键盘映射、HTTP 链接、选择、滚动、标签、Inspector 与网格边界 若干纯逻辑不再只依赖手工点击
真实使用 自 8 月 2 日起持续承载 PowerShell、WSL、Git、tline、构建、测试、Codex CLI 与日常交互;macOS 路径也已在真机运行 PoC 已经越过截图演示,并通过真实使用暴露和修正交互问题
04

做出来与理解分开记账

可运行不是完全理解的证明,却能把原本停留在想象里的问题变成具体对象。输入为什么丢失空格、PTY 如何连接、终端网格怎样绘制、标签状态归谁所有、鼠标坐标为何会偏移,都只能在真实路径出现后接受验证。

已经获得的证据

  • 能够建立并使用 Windows / macOS 原生终端应用;
  • 能够沿当前约 4,100 行 Rust 源码定位功能和边界;
  • 能够通过减法阅读、实际操作和小步修改校准模型;
  • 功能问题可以落到代码位置、反例和回归测试。

没有声称的能力

  • 没有完全掌握 GPUI、Alacritty、ConPTY 或 Unix PTY 内部实现;
  • 没有脱离成熟库重写终端模拟器或平台 GUI;
  • 没有证明完整终端兼容性、生产生命周期或无障碍能力;
  • 没有把 AI 生成并经协作修正的实现等同于独立手写能力。

当前方法:做出来是必要但不充分的事实锚点。保持项目小,使自己的代码仍可阅读、修改和验证;理解不到的依赖内部继续留在边界外,不用一句“已经做成”把两本账混在一起。

05

当前不继续吞入功能

Workbench 现在首先是一台为自己服务的终端。真实使用会继续产生想法,但想法不自动成为排期,成熟工具也不因为能够集成就必须并入同一个进程。

方向 当前状态 重新进入条件
代码阅读器、Tree-sitter 与 LSP 未启动 终端长期使用后,代码观察需求仍反复出现
浏览器、邮件与内置 AI 面板 边界外 出现现有工具无法承担的明确工作流
relay、tline、串口与额度监测 保持独立程序 先通过 CLI、脚本、状态文件或本地接口连接
会话持久化与 tmux 式服务端 未进入 进程重启后保留会话成为反复痛点
Linux 桌面与 HarmonyOS 未启动,也不因 macOS 路径已运行而自动纳入 出现真实设备、使用者和不能由现有终端承担的明确需求
macOS 打包、签名与分发 边界外;当前只验证源码构建与运行 本机持续使用后,分发本身成为真实需求
通用插件系统与对外产品化 不做 出现愿意共同承担兼容成本的真实用户,而非为了展示完整
06

三周使用后继续收口

首个闭环已经形成:Windows 与 macOS 开发环境、原生窗口、终端路径、基础交互、测试和持续真实使用都已经发生。输入、选择、滚动、链接、宽字符、标签、配置和诊断等问题已经得到两轮修正;下一阶段不是立即补齐编辑器、设置界面或更多平台,而是继续使用这台终端,并逐步读懂属于自己的适配代码。

这个 PoC 最重要的结果也不是替代 Windows Terminal、Ghostty、Alacritty 或 Zed,而是把一个长期放在禁区里的方向变成了可以运行、可以触摸、可以修改的对象。没有做出来时,理解更容易停留在推测;做出来以后,仍然可以诚实地说哪些已经知道,哪些还不知道。

第二轮使用校准:到 2026-08-23,F1-F12、长链接、profile / 快捷键配置、Shortcut Inspector、版本展示和 macOS 终端路径都已进入代码与验证。发现过程、完成状态和仍暂缓的方向保留在使用复盘与迭代计划,不再把已经落地的能力写成未来任务。

停止扩张条件:新增功能如果不能解决真实使用中反复出现的问题,或者会让自己的代码迅速超过可阅读、可验证的范围,就先不做。作品是否继续成立,由使用和接管能力决定,不由功能数量决定。