第27天。还剩4天。是时候不再保守了。
这个挑战的最后阶段,我想挑战那些一天之内大概率搞不定的东西。终端模拟器就是这样的项目。不是一个假装自己是终端的网页小玩具,而是一个真正的原生桌面应用——能启动真实的shell会话,以60fps渲染,处理从vim到htop的一切。
提示词#
“用Tauri 2和Rust构建一个终端模拟器”
这是核心需求。其他的都是在迭代过程中产生的。
怎么构建的#
这是个大工程。Watchfire把工作分解成了19个任务,每一个都不可少。构建终端模拟器并不简单。PTY管理、shell集成、输入处理、渲染性能,还有十几个我从没想过的问题。
任务清单大概是这样的:
- 搭建带基本PTY支持的Tauri 2 + Vite项目
- 支持打开、关闭和重命名的多标签页
- 水平和垂直分割面板
- 带主题、字体和shell配置的设置面板
- UI打磨、滚动回看和shell修复
- 用于自动发布的GitHub Actions
- 内联AI命令建议
- 透明度、模糊和窗口外观的视觉优化
- 终端输出中的可点击链接和智能检测
- Shell配置文件和快捷操作
- 带确认对话框的危险命令警告
- 长时间运行命令的通知
- 带丰富Ctrl+R覆盖层的模糊历史搜索
- 从历史文件中提取的内联幽灵建议
- 带快速修复操作的智能错误检测
- 自然语言到命令的转换
- 命令解释和AI输出摘要
- 带可折叠区块的基于块的输出分组
- 智能功能设置面板和集成测试
然后是CI/CD的修复。让Tauri通过GitHub Actions在macOS、Linux和Windows上构建和签名,本身就是一场冒险。还有三个平台的安装脚本。
成果#

这是一个真正的终端。 不是模拟的。它使用Rust的portable-pty crate来启动真实的shell会话。bash、zsh、fish,你配置了什么就用什么。完整的PTY支持意味着一切都能用:vim、htop、交互式提示,全部搞定。

带WebGL加速的xterm.js。 渲染很快。是那种能明显感知到的快。滚动回看支持10,000行,不会卡顿。WebGL渲染器相比标准的canvas方式确实有质的提升。
标签页和分割面板。 Cmd+T新建标签页,Cmd+D垂直分割,Cmd+Shift+D水平分割。可以重命名标签页。面板管理的体验和你对现代终端的预期完全一致。

内置智能功能引导。 第一次打开应用时,会通过引导教程带你了解各种智能功能。

这些智能功能包括来自命令历史的幽灵建议、Ctrl+R模糊历史搜索、针对rm -rf或git push --force等操作的危险命令警告,以及自然语言到命令的转换。




完整的设置面板。 字体系列、字体大小、光标样式、颜色主题。内置Dracula、Solarized、Monokai等主题。可以配置背景模糊、透明度和shell参数。

滚动回看中的命令搜索。 Ctrl+F打开搜索覆盖层,支持模糊匹配搜索终端历史记录。

基于块的输出分组。 长命令输出会被分组为可折叠的块。当一个命令吐出2,000行输出而你只想知道要点时,还有一个"总结输出"按钮。

能跑pico。 能跑vim。终端该跑的都能跑,因为它就是一个终端。

甚至能跑Docker的AI助手。 完整的交互式TUI应用都能正常运行。


Claude Code也能在里面跑。 我用这个终端运行Claude Code来给终端本身构建更多功能。这感觉像是一种非常特别的盗梦空间。

安装方法#
这是一个原生应用,不是网站。没有Vercel部署。你可以从GitHub发布页面获取最新版本,或者使用安装脚本:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/nunocoracao/Vibe30-day27-terminal/main/install.sh | bash# Windows (PowerShell)
irm https://raw.githubusercontent.com/nunocoracao/Vibe30-day27-terminal/main/install.ps1 | iex想从源码构建也行:
git clone https://github.com/nunocoracao/Vibe30-day27-terminal.git
cd Vibe30-day27-terminal
npm install
npm run tauri dev需要Rust 1.77.2+和Node.js 20+。
数据一览#
- 19个Watchfire任务 从项目搭建到智能功能集成
- Tauri 2 + Rust后端 用portable-pty实现真实shell会话
- 带WebGL的xterm.js 高速渲染
- 6+种颜色主题 包括Dracula、Solarized和Monokai
- CI/CD流水线 GitHub Actions构建macOS、Linux和Windows版本
- 安装脚本 覆盖全部三个平台
第27天总结#
终端模拟器涉及太多层面。Rust中的PTY管理。通过Tauri在Rust后端和JavaScript前端之间的IPC通信。为性能而用的WebGL渲染。通过CI/CD实现的跨平台构建和代码签名。检测操作系统和架构的安装脚本。
在这一切之上,还加入了智能功能。幽灵建议、模糊搜索、危险命令警告、AI集成。这些不是花架子。测试过程中我不小心输入了一个破坏性命令时,危险命令警告确实帮到了我。
这东西能跑起来本身就很厉害。它能好到让我用它运行Claude Code来构建自身更多的功能,这就是另一个层次的事了。我不会明天就用它替换iTerm,但"vibe coding出来的终端"和"生产级终端"之间的差距,比我预想的要小。
30天中的第27天。还剩3天。
这是30 Days of Vibe Coding的第27天。跟随我用AI辅助编程在30天内交付30个项目的挑战。






