dedene/zentty
A native macOS terminal for agent-driven development, built on Ghostty.
Zentty – 为 AI 代理打造的原生 macOS 终端
简介
Zentty 是一款原生 macOS 终端应用(使用 Swift/AppKit 和 Ghostty 渲染引擎构建),专为与 代理驱动开发 工具(如 Claude、Gemini、Copilot CLI 等)配合使用而设计。它提供窗口管理器风格的布局、命令面板优先的工作流程,以及显示运行中 AI 代理状态的侧边栏。
核心理念
| 理念 | Zentty 的实现方式 |
|---|---|
| 用工作区替代标签页 | 水平排列的 列(工作区),每列包含垂直堆叠的窗格,类似于平铺窗口管理器。窗格可拖动、调整大小和重新排列,且不会丢失焦点。 |
| 键盘优先 / 命令面板 | 每个操作都是可绑定的命令;模糊搜索面板可让你运行任何记不住的命令。Ghostty 快捷键开箱即用。 |
| 代理感知 | 代理通过 代理状态协议 报告其状态(工作中、等待中、请求批准等)。侧边栏、macOS 菜单栏和窗格徽章会显示这些信息,让你知道何时需要 LLM 的输入。 |
| 持久化 | 工作区、侧边栏布局和每个代理会话的状态在应用重启时保存并恢复。 |
| 与 macOS 集成 | 在代理运行时保持 Mac 唤醒,在菜单栏显示代理状态,并可跳转到触发 1Password 或 ssh-agent 提示的窗格。 |
主要功能
布局与导航
- 工作区 – 可水平滚动的窗格列;不再有标签页过载。
- 可视化窗格切换器 – 按住
Ctrl+Tab查看所有窗格的缩小视图;⌘⇧T重新打开最近关闭的窗格。 - 完全恢复 – 退出后整个工作区(包括运行中的代理)都会恢复。
代理支持
- 侧边栏 显示每个代理的状态和模型徽章。
- 子代理与团队 – 父代理保持可见,后台代理运行。
- 菜单栏指示器 – 即使 Zentty 隐藏,也能看到待处理的批准。
- 支持的代理 – 长列表(Claude、Gemini CLI、Copilot CLI、Cursor 等),以及适用于任何其他工具的通用协议。
项目级辅助
- 开发服务器检测 – 本地服务器在侧边栏中显示为可点击的端口。
- PR 集成 – 分支上的窗格显示 CI 检查和审查状态。
- 任务运行器 – 自动检测
package.json、Makefile、justfile、Taskfile、mise任务,并从面板运行。 - 全局搜索 – 一个快捷键即可在所有工作区或单个窗格内搜索。
远程与终端便利功能
- 拖放到 SSH 窗格 – 将文件拖到远程窗格会通过现有 SSH 连接上传,并插入远程路径。
- 干净复制 – 复制代理输出时不含控制字符;可选以 Markdown 格式复制。
- 基于 Ghostty 的渲染 – GPU 加速,无 Electron,纯 Swift/AppKit。
- 可脚本化 – 内置
zenttyCLI 可让你从脚本中操作工作区和窗格。
快速开始
- 安装 –
brew install --cask zentty或从发布页面下载 DMG。 - 运行 – 应用通过 Sparkle 自动更新;无需手动升级。
- 添加技能 – 代理可通过
npx skills add dedene/zentty发现窗格感知命令。 - 配置 – 设置存储在本地,可跨 Mac 同步(参见
docs/configuration.md)。
从源码构建(面向开发者)
- 需要 macOS 14+、Xcode、
zig和gettext。 - 首先构建
GhosttyKit.xcframework(scripts/build_ghosttykit.sh)。 - 然后使用
xcodebuild编译应用。 - 依赖通过 SwiftPM 固定;仓库包含更新脚本。
- 可在虚拟显示器上运行测试(
scripts/test-on-virtual-display)。
许可证与商业使用
- 代码为 GPL-3.0-only。
- 无法使用 GPL 的组织可从 Zenjoy BV 获得商业许可证。
简而言之: Zentty 是一款仅限 macOS 的终端,将平铺窗口管理器 UI 与 AI 编码代理的深度集成相结合。它让开发者可以并排运行多个 AI 工具,一目了然地查看其状态,并保持键盘驱动的工作流程,无需离开终端。
相关
- 项目
- 项目
- 项目
- Dispatch
- 项目