nodeterm 将杂乱的终端标签页变成无限画布
任何尝试同时运行 Claude Code 或 Codex 等自主 AI 代理与常规服务的开发者都会遇到同样的问题。iTerm 或 Warp 中的十几个标签页很快就会变得一团糟。测试在哪里失败的、哪个分支在后台被编辑、哪个终端在等待命令确认,这些都变得模糊不清。
nodeterm 项目提供了一种不同的工作空间方式。它不使用线性的标签页或分屏,而是使用无限画布,每个终端都作为独立的可移动节点存在。
画布内部有什么
核心概念很简单:为工作流程提供空间定位。你可以将后端、前端和后台代理分组到一个集群中,并在旁边放置一个带有任务提醒的笔记。
这里的节点不仅仅是终端。你可以在画布上放置:
- 基于 xterm 和 tmux 的完整终端会话
- AI 代理卡片(Claude Code、Copilot、Gemini、Grok)
- 支持快速保存的 Monaco 代码编辑器
- Git diff 查看器和网页预览窗口
- 可与代理关联以共享上下文的文本便签
关闭窗口或重启系统后,会话不会丢失。在底层,应用维护着真实的 tmux 会话。在 macOS 上,客户端内置了 tmux 二进制文件,因此无需单独安装。
无需解析输出即可监控代理
当代理花费很长时间编写代码或运行测试时,很容易忘记检查其状态。nodeterm 通过系统钩子而非解析文本来跟踪状态。
如果进程需要用户确认,卡片会亮起"需要你"的标记,并弹出系统通知。在 MacBook 上,活动代理的状态甚至会显示在刘海区域。
一个有趣的细节:应用内的代理可以通过内置 CLI 与画布交互。例如,一个代理可以创建一个相邻节点来运行测试或检查另一个代理的构建产物。
从实时会话生成看板
按下 Cmd+Shift+B 可将画布切换为看板模式。板上的每个卡片仍然是可工作的终端会话。
你可以将卡片从"进行中"列拖到"审核"列,在模态窗口中打开它,直接回答代理关于代码的问题。还支持与 GitHub Issues 双向同步:任务被拉取到看板上,移动后状态会自动改变。
手机访问和服务器模式
应用不仅限于桌面 Electron 客户端。架构被拆分为独立的核心和传输层,这就是 nodeterm 能以三种形式运行的原因。
- 适用于 macOS 和 Linux 的桌面应用。
- 服务器版。相同的画布可以在没有图形界面的远程服务器上运行,通过 WebSockets 在常规浏览器中打开。
- iOS 移动客户端。扫描显示器上的二维码,会话会被加密转发到你的手机。你可以离开去喝杯咖啡,在路上随时回答代理的提示。
直接语音输入到 shell
nodeterm 内置了本地 Whisper 模型。如果你按住 Cmd+Alt(在 Linux 上是 Ctrl+Alt)并口述一条长指令,音频会在你的 CPU 上直接处理。
文本不会自动发送到终端。你首先会看到识别结果,如有需要可以手动编辑,然后才按发送。音频数据不会通过网络传输到任何地方。
架构与技术栈
客户端使用 TypeScript 编写,基于 Electron 和 React Flow 库作为画布引擎。
开发者将 PTY、git 和代理操作提取到 CorePlatform 接口中。Electron 进程和服务器 Node 进程实现相同的接口。正因如此,Web 版本并非精简版移植——它使用的是完全相同的渲染器接口。
该项目采用 Business Source License 1.1 (BUSL-1.1) 发布。源代码对个人和生产使用开放,但禁止基于 nodeterm 创建竞争性付费服务。每个版本发布四年后,代码自动切换为纯 MIT 许可证。
如何试用
在 macOS 上,通过 Homebrew 安装是最简单的方式:
brew tap nodeterm/tap
brew trust nodeterm/tap
brew install --cask nodeterm
Linux 用户可以在仓库的发布页面找到预构建的 AppImage 和 .deb 包。
如果你想在远程机器上运行无头服务器,只需要 Node.js 22 和 tmux:
git clone https://github.com/eneskirca/nodeterm.git
cd nodeterm
npm install
npm run server:dev
启动后,Web 界面将在 http://127.0.0.1:8443 为你服务。
谁会发现 nodeterm 有用
该工具主要面向同时处理大量并行任务、使用 git worktree 或积极将代码块委托给命令行 AI 代理的开发者。如果你更习惯只占用半个屏幕的经典简约终端,空间画布可能显得过于复杂。但如果你厌倦了在无尽的标签页和 tmux 窗口中迷失方向,nodeterm 的可视化方式可能会给你的思绪带来秩序。
相关项目