Codex Desktop 很顺手,只是我的 MacBook M1 PRO 跑不起它。四年没有转过的风扇,只要打开codex 就转不停。
所以我使用pi + Herdr + neovim 打造了一个终端中的 codex desktop
![[pi-herdr-neovim-workspace.png]]
- Herdr 管工作台:workspace、tab、pane、布局、多 Agent 侧边栏。
- Pi 管 Agent:模型循环、工具调用、会话、扩展。
- Neovim 管代码:浏览、编辑、Buffer,并通过
pi-nvim把上下文喂给 Pi。
Codex Desktop 一手包办的几件事,在这里被拆给了更适合终端的零件。
Trace
flowchart TD
A["打开项目"] --> B["切换到 Herdr workspace"]
B --> C["按 prefix+shift+e"]
C --> D["恢复 code tab<br/>50:50 布局"]
D --> P["左侧 pane<br/>Pi"]
D --> N["右侧 pane<br/>Neovim"]
B -. "Herdr 侧边栏" .-> S["查看 workspace 与 Agent 状态<br/>idle · working · blocked · done"]
S --> T["在 pane / tab 间切换长期任务"]
Editor -> Neovim
右侧 pane 固定放 Neovim,查看、编辑和跳转文件都不用离开终端。需要让 Pi 看代码时,pi-nvim 可以把当前文件、选区或整个 Buffer 直接送到左侧会话,不用复制粘贴,也不用切回 VS Code。
Side Chat -> /btw
/btw 为 Pi 提供独立 Side Chat:它会在 Herdr 中打开一个带工具能力的 pane,并继承当前目录、模型和 thinking level。Side Chat 拥有独立上下文,支持连续追问,不会改动主会话;需要时再用 /btw merge 把结论合并回来。
Subagent -> pi-subagents
pi-subagents 负责把 research、implementation、review 等任务交给独立的子 Agent。启动时可以选择 fresh 或 fork 上下文,也可以为每个 Agent 指定模型和 thinking level,或者让它们在后台并行工作。配合 Herdr skills,还能像在 Codex Desktop 里一样,打开某个 Subagent 的 pane,直接查看它的对话和进度。
Goal -> pi-goal
pi-goal 让 Pi 可以围绕一个目标持续工作,而不是每完成一轮就停下来等下一条提示。任务受阻时会进入 blocked;我也可以随时 /goal pause,之后再用 /goal resume 从原来的目标继续。
Web-search & Computer-use
pi-web-access 负责搜索和读取网页,也能处理 GitHub、PDF 和视频内容;pi-computer-use 负责观察并操作桌面界面,包括定位窗口、点击、输入和滚动。一个解决“找到信息”,另一个解决“替我操作”。
Compaction -> pi-codex-compaction
pi-codex-compaction 在使用 OpenAI Codex 模型时,把原生的上下文压缩能力接进 Pi。Pi 自带的 compaction 在超长任务里经常还是会撞上上下文上限;换成 Codex 的原生 compaction 后,长会话可以继续压缩和恢复,token 也更耐用。
PROS & CONS
优点很直接:
- 风扇不转了。
- token 更耐用了。
- 以上所有配置都可以让 AI 完成。
缺点也很明显:
- 无法开箱即用,终端操作和 Neovim 都有使用门槛。
- 浏览器和 Computer Use 还比较粗糙,窗口失焦之类的问题也没有完全解决。
这并不适合想要开箱即用的人。虽然 AI 可以帮忙解决 99% 的配置问题,但日常操作仍然需要适应,与 Desktop App 还有差距。
软件与插件链接
| 名称 | 在这套系统中的用途 | 地址 |
|---|---|---|
| Pi | Agent runtime | [GitHub](https://github.com/earendil-works/pi) |
| Herdr | Workspace、布局和多 Agent TUI | [GitHub](https://github.com/ogulcancelik/herdr) |
| Neovim | 编辑器 | [官网](https://neovim.io/) |
pi-nvim |
将 Neovim 上下文发送给 Pi | [GitHub](https://github.com/carderne/pi-nvim) |
pi-web-access |
搜索并读取网页内容 | [GitHub](https://github.com/nicobailon/pi-web-access) |
pi-subagents |
任务级 Subagent | [GitHub](https://github.com/nicobailon/pi-subagents) |
pi-herdr-btw |
独立 Side Chat | [GitHub](https://github.com/oscabriel/pi-herdr-btw) |
pi-goal |
Goal、continuation 与恢复 | [GitHub](https://github.com/kky42/pi-goal) |
pi-codex-compaction |
接入 Codex 原生 compaction | [GitHub](https://github.com/ogulcancelik/pi-extensions) |
pi-computer-use |
操作桌面应用 | [GitHub](https://github.com/injaneity/pi-computer-use) |
pi-mcp-adapter |
接入 MCP 服务 | [GitHub](https://github.com/nicobailon/pi-mcp-adapter) |
Loading comments...