Seahelm:用 libghostty 写的 macOS 原生 agent 控制台,管多个 Claude Code / Codex

20 小时 57 分钟前
 zhoujinliang
做了大半年,自己每天在用,拿出来分享一下。

解决的问题

同时开五六个 Claude Code / Codex 在不同 git worktree 里干活的时候,我不知道该看哪个窗口。终端长得都一样,只能一个个切过去看最后一行输出。

tmux 能管窗口,但它不知道「 agent 在等你确认」这件事。对 tmux 来说,卡在权限询问的 Claude 和正在写代码的 Claude 没有区别。

怎么做的

终端渲染直接嵌 libghostty ( Ghostty 的 C 接口),Swift + AppKit ,不是 Electron 。会话持久化用 zmx ,退出 App 或者重启之后 agent 还在原地。每个 repo 一个 tab ,每个 worktree 一张卡片,卡片上只显示 running / waiting / broken 三种状态。

状态判断是一个优先级梯子:进程退出状态 > OSC 133 shell 集成标记 > 文本正则匹配。正则那一层是数据驱动的,每个 agent 一份 JSON manifest ,可以在 ~/.config/seahelm/agents/ 下覆盖。

Claude Code 和 Codex 接了原生 hook ,所以「在等你」是一个真实事件,不是从屏幕文字猜出来的。目前 12 个 agent 有状态识别:claude 、codex 、opencode 、gemini 、cursor 、aider 、amp 、cline 、goose 、kiro 、pi 、agent 。

agent 可以反过来操作它

每个 pane 都有 SEAHELM_PANE_ID ,配一个控制 socket 和 CLI:

seahelm pane split <pane> --direction right
seahelm pane run <pane> "npm test"
seahelm wait agent-status <pane> --status Idle

所以一个 agent 能自己开一个兄弟 pane 、把活派过去、等它做完。这是目前我自己用得最多的功能。

安装

curl -fsSL https://seahelm.dev/install.sh | sh

macOS 14+,Apple Silicon 和 Intel 都支持。

源码和 Release: https://github.com/BetaYao/seahelm
官网: https://seahelm.dev

有什么用着别扭的地方欢迎直接说。
582 次点击
所在节点    分享创造
2 条回复
chemzqm
18 小时 3 分钟前
真不错,还支持 MAC intel
zhoujinliang
5 小时 35 分钟前
@chemzqm 可以多试试,我自己用了半年多,现在确实能帮我提高效率。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1239577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX