[控场AI]
· 7 分钟阅读· 3,909 字

hero vs Orca:终端工作流决定ADEA选择

hero vs Orca:终端工作流决定ADEA选择

作者试用 Orca 后仍坚持 herdr,因为后者是能由 agent 编排的更好终端。

作者作为 Vim/Neovim 用户,在 herdr 和 Orca 之间做了公平对比。Orca 的 GUI 精致,集成了使用量、worktree、扇出和 diff 标注等实用功能;但作者生活在终端中,无法接受切换到独立应用。herdr 是单个 Rust 二进制,运行在现有终端里,沿用字体、主题和 tmux 式键位,且暴露 CLI 让 agent 能相互编排:Claude 可打开 Codex pane、等待状态、遇到审批再询问用户,无需轮询。会话跑在后台服务器上,关闭窗口或断开 SSH 不中断工作,配置就是一个 TOML 文件。作者还借鉴 Orca 的扇出和 diff 审查思路,用技能和弹窗在 herdr 中实现。最终选择取决于你想要一个新应用,还是一个更好的终端。

为什么我坚持用 herdr 而不是 Orca

所有开发者都在面对同一个新问题:如何连接、优化和编排本地的一堆编码 agent?过去我们靠 VS Code 插件、LSP、dotfiles 解决开发环境配置,如今问题变成了 "如何管理一群 AI 编码代理"。作为 Vim/Neovim 用户,我几周前选择了 herdr 作为我的 ADE(智能体开发环境),随后新竞品 Orca 出现,我公平地试用了一番。结论是:我仍然坚持 herdr。

ADE(Agent Development Environment,智能体开发环境)是本文的核心概念。随着 Claude Code、Codex、Gemini CLI 等编码 agent 大量涌现,开发者面对的已不再是单一工具的配置问题,而是如何同时启动、监控和协调多个 agent 的运行时环境。传统的 IDE(集成开发环境)围绕人写代码设计,而 ADE 围绕 agent 写代码设计,强调 pane 管理、状态可见性、agent 间消息传递和生命周期控制。herdr 和 Orca 都属于这一品类:前者是终端原生的 ADE,后者是 GUI 优先的 ADE。理解这一点,就能明白作者为何反复强调「agent 能否编排其他 agent」,而不是单纯比较快捷键或界面美观度。

Orca 确实不错,但它不是我的终端

先说公道话。Orca 的 GUI 打磨得很精致,一眼就能看到 Claude 和 Codex 的使用量、速率限制重置时间,worktree 功能放在显眼位置,还能把一个提示词扇出给多个 agent,并逐行标注 AI 生成的 diff。这些功能都很棒。

但我生活在终端里——Neovim、tmux、CLI 就是我的家。即使 Orca 的 GUI 努力模拟终端的感觉,它终究不是我的终端,切换到独立应用总让我觉得不对劲。

rss source: Why I'm sticking with herdr over Orca as my ADE

herdr 如何贴合我的工作流

它运行在我已有的终端里。 herdr 是一个单独的 Rust 二进制文件,没有 Electron。它和 Neovim 并排跑在我的终端中,沿用我的字体、主题和键位绑定。

从 tmux 迁移零学习成本。 前缀键、分屏、ctrl+b q 分离,肌肉记忆第一天就能用。想用鼠标时也可以点击。

Agent 可以驱动它,而不仅仅是我。 这是关键。herdr 暴露了一个 CLI,agent 可以用它生成 pane、相互提示、等待另一个 agent 完成或阻塞。我的 Claude Code 主会话根据 CLAUDE.md 中的路由规则,自动把机械性工作交给 Codex:

| long-running or needs supervision | gpt-5.5 | herdr pane — see "herdr delegation" |

### herdr delegation
- Prompt with `herdr agent prompt <name> "…" --wait`. Never sleep/poll.
- `blocked` = approval/question UI → show me what it's asking; don't approve it yourself.

Claude 打开一个 Codex pane,等待其状态(无需轮询,不浪费 token),当 Codex 遇到审批提示时停下来问我。下图中 Codex pane 就是由 Claude 打开的。

Codex panes opened by Claude

我总能知道哪个 agent 卡住了。 每个 pane 都标记为 working、blocked 或 idle。需要我时 herdr 会通知(我甚至给 Codex 设置了专属提示音)。

关闭窗口不会终止工作。 会话运行在后台服务器上,所以我可以分离、合上笔记本或断开 SSH,一切继续运行,herdr 重新连接即可。

我的整套配置就是一个 TOML 文件。 它放在我的 dotfiles 里,从 Mac 迁移到 Linux,或通过 SSH 连到远程机器,都完全无缝。同样的键位、同样的弹窗、同样的一切。

它不关心我用哪个 agent。 Claude Code、Codex、Gemini、Cursor、OpenCode 以及更多,herdr 不包装它们,只是拥有它们的终端。

worktree 是 Git 的一个功能,允许同一个仓库同时检出多个工作目录,每个目录对应一个独立分支,彼此共享底层的 .git 对象库。在 ADE 场景中,worktree 的价值在于让多个 agent 并行修改同一项目的不同副本,而不会互相覆盖文件或产生锁冲突。Orca 把 worktree 放在显眼位置,herdr 的扇出技能则通过脚本自动为每个 agent 创建 worktree 并在完成后回收。没有 worktree,多 agent 并行就退化为在同一个目录里抢文件,冲突和覆盖几乎不可避免。因此,任何声称支持多 agent 并行开发的 ADE,都必须认真处理 worktree 的创建、命名和清理。

借鉴 Orca 的最佳创意

试用 Orca 并非浪费时间。我把它的好点子移植到了 herdr 上。

扇出(Fan-out)。 一个提示词,多个 agent,每个在独立的 git worktree 中运行,然后比较并合并胜者。在 herdr 中这是一个 Claude Code 技能:创建 worktree、用 herdr agent start 启动 agent、并行提示、各自运行测试,最后给我一张对比表。未经我批准不会合并任何东西。

/fanout “add retry with backoff to the S3 uploader” --agents codex,codex,opus

Diff 审查。 Orca 的标注 diff 功能堪称一绝。我的版本是一个绑定到 herdr 弹窗的小脚本。它在 Neovim 中打开 diff,我在关心的行下添加 #! 注释,保存后它们会带着文件和行号引用发送给我选择的 agent。

[[keys.command]]
key = "prefix+alt+r"
type = "popup"
command = "herdr-review"
width = "90%"
height = "90%"

我用同样的弹窗技巧处理 gh dash 和 lazygit,所以 PR 和 diff 只需一个键位,无需离开终端。

手机通知。 通过 hook 和推送服务可以实现,但坦白说我并不想要。离开办公桌时,我就想远离并断开连接,从手机查看 agent 并不是我怀念的功能。

设计模式(Design Mode)。 点击 UI 元素将其 HTML 和 CSS 发送给 agent 很聪明。我最近不做前端工作,但未来肯定用得上,需要时浏览器 MCP 也能凑合。

MCP(Model Context Protocol)是一种让 AI 模型通过标准化接口访问外部工具和数据源的协议。在浏览器场景中,浏览器 MCP 可以让 agent 读取当前页面的 DOM、截图或执行点击,从而完成前端调试、UI 审查等任务。作者提到「需要时浏览器 MCP 也能凑合」,意思是 herdr 虽不像 Orca 那样内置「点击 UI 元素即把 HTML/CSS 发给 agent」的设计模式,但通过 MCP 生态可以补上类似能力。这也体现了 herdr 的哲学:不把每个功能都做进核心,而是保持薄终端层,让 agent 通过 CLI 和 MCP 等通用接口自行扩展。对于希望自定义工作流的开发者,这种可组合性往往比内置功能更有长期价值。

你该选哪个?

如果你喜欢 GUI、想要一切内置、倾向于手动引导 agent,Orca 是很好的选择。

如果你生活在终端里、希望 agent 能编排其他 agent、喜欢用配置文件拥有自己的环境,herdr 很难被击败。它没有自带的功能,你一个下午就能构建出来。

对我来说,决定性问题很简单:我想要一个新应用,还是一个更好的终端?我选择更好的终端。

你的 ADE 设置是什么?我很想听听什么对你有效。

#herdr#Orca#ADE#智能体开发环境#终端#AI编程#agent编排
分享:

相关推荐