爱意满满的作品展示区。
zhoujinliang

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

  •  
  •   zhoujinliang · 20h 13m ago · 566 views
    做了大半年,自己每天在用,拿出来分享一下。

    解决的问题

    同时开五六个 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

    有什么用着别扭的地方欢迎直接说。
    2 replies    2026-09-05 11:44:18 +08:00
    chemzqm
        1
    chemzqm  
       17h 19m ago
    真不错,还支持 MAC intel
    zhoujinliang
        2
    zhoujinliang  
    OP
       4h 51m ago
    @chemzqm 可以多试试,我自己用了半年多,现在确实能帮我提高效率。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3039 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 08:36 · PVG 16:36 · LAX 01:36 · JFK 04:36
    ♥ Do have faith in what you're doing.