AI coding agent 变成日常工具之后,终端本身开始显得有点老。不是 shell 不够强,而是一个真实的 agent 工作流经常会同时开好几个项目、几个分支、几段 Claude Code 或 Codex 会话,还要盯着哪个 agent 正在跑、哪个 agent 卡在工具确认、哪个 pane 刚刚失败。传统终端当然可以分屏、开 tab、配 tmux,但它并不知道这些进程里谁是 agent,也不知道哪个会话值得把你叫回来。

今天看的是 iAmCorey/kooky。它把自己定义成一个面向 AI coding 的极简现代终端:侧边栏工作区、水平/垂直分屏、一键启动 agent、每个 agent 的活动状态、实时 workspace 状态、Node 和 Git branch 的一键切换,都放在一个 macOS 桌面应用里。它不是新的模型,也不是 agent runtime,而是试图把多个命令行 agent 真正变成可管理的终端会话。

按 GitHub repository page、README、Releases、LICENSE 和 Git 默认分支历史在 2026-08-03 能核验的公开信息,iAmCorey/kooky 当前有 604 stars31 forks。仓库主语言是 Swift,许可证是 MIT。Git 历史中可见的首个公开提交是 2026-05-08 08:19:28 UTC;默认分支 main 当前 HEAD 是 40238d6,提交时间 2026-08-03 09:45:24 UTC。最新 GitHub Release 是 v0.47.1,发布时间 2026-08-03 09:46 UTC。仓库当前默认分支约 226 commits

项目概览

属性详情
仓库iAmCorey/kooky
定位面向 AI coding agent 的 macOS 终端
Stars604
Forks31
主要语言Swift
许可证MIT
首个公开 Git 提交2026-05-08 08:19:28 UTC
当前默认分支提交40238d6,2026-08-03 09:45:24 UTC
最新 GitHub Releasev0.47.1,2026-08-03 09:46 UTC
提交数量约 226 commits
关键词terminal、macOS、SwiftUI、AI agents、Codex、Claude Code、worktrees、local-first

它解决的是“agent 太多以后怎么盯”的问题

Claude Code、Codex、Gemini CLI、OpenCode 这类工具有一个共同点:它们都假设自己跑在一个终端 pane 里。单个项目时这没问题,但你一旦让多个 agent 同时工作,管理成本就会冒出来。哪个 tab 里 agent 还在跑?哪个需要你批准工具调用?哪个命令刚刚非零退出?哪个工作区切到了另一个 branch?这些信息如果只藏在 scrollback 里,人就必须频繁切过去看。

Kooky 的核心价值在这里。README 里列出的 agent 面板、侧边栏状态点、pane status bar、通知 inbox 和 session history,都是围绕“agent 会话需要被调度”这个问题展开的。它把 Claude Code、Codex、Gemini CLI、OpenCode、Cursor CLI、Copilot CLI、Kimi Code 等十多个命令行 agent 放进启动菜单,并为其中不少 agent 读取原生 session id,从而让关闭再打开 tab 时可以继续旧对话。

这听起来像一个小 UI 细节,但对日常使用很关键。agent 工作不是持续输出那么简单,它经常进入“等你决定”的状态。一个终端如果能把“正在跑”和“等你处理”区分出来,就能让人少一点无意义轮询。尤其是同时开两三个 agent 做不同分支时,这个差别会很明显。

工作区、分屏和 worktree 比装饰更重要

Kooky 的 UI 重点不只是漂亮的 tab。它把工作区作为一等对象:左侧 sidebar 记住打开过的项目,支持 recent projects、Quick Open、文件树,以及从 Finder 拖入目录。每个 pane 有自己的 tab strip,可以横向或纵向拆分,tab 还能跨 pane、跨 window 拖动,同时保留运行中的进程和 scrollback。

对 AI coding 来说,Git worktree 支持尤其实际。README 描述的流程是右键一个 Git workspace 创建 worktree,选择新 branch 或已有 branch,然后让这个 worktree 作为独立工作区出现。这样你可以让一个 agent 在 feature branch 里改代码,同时主工作区还保留原来的服务、日志或测试命令。传统终端也能做到这些,但通常需要你手工创建目录、记住路径、再开 tab;Kooky 把这些状态放进同一个 workspace 模型里。

它还支持 SSH workspace。新建远端 workspace 后,每个新 tab、分屏和恢复的 tab 都会重新连到同一台主机;agent tab 会在远端启动 agent,粘贴本地文件或截图时先上传,再把远端可读的路径贴给 agent。这个设计很适合日常排障:本地看代码、远端看日志、agent 在远端解释错误,中间少一点复制粘贴路径的混乱。

状态栏在这里不是摆设

很多终端状态栏只显示 cwd 或时间,Kooky 的 pane status bar 更贴近 agent 工作流。它可以显示 Git repo 和 branch、diff 行数、Python venv、Node version、proxy 变量,以及 SSH 时的 user@host。README 里还提到可以点击 Node 或 branch pill 直接切换版本或分支,点击 repo pill 打开 GitHub、复制 URL 或在 Finder 中显示。

这类信息如果放在普通 prompt 里也能显示,但 prompt 只属于当前 shell 输出。agent 一跑起来,prompt 往往消失在滚动区里。把这些状态固定在 pane 边上,意味着你在看 agent 输出时也能知道它到底站在哪个 repo、哪个 branch、哪个 Node 环境里。这对避免“agent 在错分支改了半天”很有价值。

更有意思的是失败状态和等待状态。Kooky 会在 agent 等待你处理时把状态点变色,在命令非零退出时把 tab 和 workspace 状态标红。它还支持 macOS 通知和一个全局通知 inbox。终端从“被动窗口”变成“可以提示你回来处理的 agent 控制台”,这是它和普通 terminal emulator 的分界。

本地优先,但平台边界很清楚

Kooky 的 README 明确说没有账号、没有 telemetry、应用状态留在本机。对 agent terminal 来说,这是一个合理方向:命令行 agent 本身已经可能接触代码、环境变量和会话历史,外层终端最好不要再引入额外云同步面。它使用 libghostty 做 GPU cell rendering,整体是 SwiftUI-native 的 macOS 应用。

但它也有很明确的限制。第一,它目前就是 macOS 终端,不是跨平台终端。第二,安装包仍是 adhoc-signed,README 里专门解释了 Gatekeeper 首次启动可能拦截,需要从系统设置里 Open Anyway,或者用 xattr 移除 quarantine。对普通用户来说,这是摩擦;对愿意试早期开发工具的人来说,可以接受,但必须知道这不是已经完成公证分发的成熟路径。

第三,Kooky 只是调度和展示 agent,它不会替你安装 Claude Code、Codex 或其它 CLI,也不会提供模型账号。你能不能恢复 session、读取 activity、显示 tool pill,取决于对应 agent 的命令和本地会话格式是否可用。README 的 agent 表格也显示,不同 agent 的等待状态、tool pill、session history 支持并不完全一样。

安全细节比想象中多

终端和 agent 组合起来,最怕的是复制粘贴和远端会话边界不清。Kooky 在 README 里写了几块值得注意的安全处理:多行粘贴如果可能落地即执行,会先显示确认和内容预览;远端程序通过 OSC 52 读取或写入剪贴板时需要批准;输入 sudo 或 ssh 密码时会启用 macOS secure keyboard input,避免其它进程监控按键。

这些功能不一定炫,但很实际。AI coding 经常会让你从网页、issue、日志里复制命令,如果一个多行片段里藏了 curl ... | sh 或换行后的破坏性命令,普通终端会在你粘贴后立刻执行。Kooky 把这类风险当成终端本身要处理的问题,而不是完全推给用户小心。

远端 SSH workspace 也同理。粘贴本地文件或截图时先上传再贴远端路径,听起来只是便利功能,但它避免了 agent 拿到一个本机路径却在远端 shell 里读不到的常见错位。对 agent 来说,明确“这个路径在哪台机器上可见”比人类终端用户更重要。

适合谁先试

如果你只是偶尔开一个 Codex 或 Claude Code,会话也不多,普通终端加 tmux 仍然够用。Kooky 真正有意义的场景,是你已经把 agent 当成并行工作单元:一个修 bug,一个写测试,一个查文档,一个连远端看日志。这个时候,你需要的不是更多 tab,而是每个 tab 的状态、归属和可恢复性。

它也适合喜欢 macOS native app 的开发者。SwiftUI、系统菜单、IM、通知、secure keyboard input、文件拖拽、Finder/Open In 集成,都更像桌面应用而不是 Electron 套壳。反过来,如果你的主力环境是 Linux、Windows、远端 tmux 或纯键盘 TUI,Kooky 目前的吸引力会小很多。

还有一个现实 caveat:项目更新非常快。v0.47.1、226 commits、5 月才出现的公开 Git 历史,都说明它还在快速打磨阶段。频繁 release 是活跃信号,也意味着配置、UI 和 agent 支持矩阵可能继续变化。建议把它当成“观察并小范围试用”的工具,而不是立刻替换团队统一终端。

总结

iAmCorey/kooky 有意思的地方,不是又做了一个更漂亮的 terminal emulator,而是把终端的关注点从“显示 shell”推进到“管理 agent 会话”。当 Claude Code、Codex 和其它 CLI agent 同时跑起来时,真正稀缺的是状态感:谁在跑,谁在等,谁失败了,谁在哪个 branch 上,哪个 session 可以恢复。

如果你的 AI coding 工作流已经开始并行化,Kooky 值得放进 watchlist。它最值得借鉴的不是某个单独按钮,而是那个判断:AI agent 不是普通命令,它们需要终端帮助人类管理注意力。

项目地址:https://github.com/iAmCorey/kooky