Agentic Coding 时代的终端工作流:git worktree、Ghostty、Zellij 与 Neovim
博客列表 主页

Agentic Coding 时代的终端工作流:git worktree、Ghostty、Zellij 与 Neovim

Agentic Coding 带来的变化之一,是开发者不再只是在一个编辑器窗口里线性地写代码。我们会同时开着多个终端:一个 Agent 在跑任务,一个窗口在看测试,一个窗口在启动本地服务,另一个窗口可能还在对比日志、查 Git 状态、临时修一个配置文件。

这篇文章是一个小分享:当你开始把 Claude Code、Codex CLI、Aider 或其他 Agentic Coding 工具放进日常工作流之后,终端体验会突然变得重要起来。下面这几个工具,正好能把“并行任务、终端会话、临时编辑、分支隔离”这几件事组织得更舒服。

🌿
git worktree

让每个 Agent / 分支 / 实验拥有独立目录。

Ghostty official logo
Ghostty

负责字体、主题、响应速度和长期终端观感。

Zellij official logo
Zellij

把 Agent、测试、服务和日志整理成 workspace。

Neovim official logo
Neovim

在终端 session 里完成快速编辑和小范围修补。

为什么 Agentic Coding 更需要好的终端体验

传统开发里,我们经常围绕 IDE 或编辑器工作:切一个分支,改一批文件,跑一次测试,再提交。但 Agentic Coding 更像是在调度多个半自动工人:

  • 一个 Agent 可能在实现功能;
  • 一个 Agent 可能在修测试;
  • 你自己还要随时 review diff、补充说明、终止错误方向;
  • 本地服务、数据库、日志、脚本也需要持续运行。

问题不在于工具不够强,而在于上下文太容易混在一起。分支切来切去容易污染工作区;终端窗口开太多容易找不到;Agent 改文件时你又可能想快速插手修一行配置。于是,一个更清晰的终端工作流就变得很有价值。

我比较推荐的组合是:

Git worktree 负责代码上下文隔离
Ghostty      负责现代终端窗口体验
Zellij       负责终端 workspace / pane / tab 管理
Neovim       负责终端内快速编辑文件

git worktree:让每个任务拥有自己的目录

git worktree 是 Git 自带但经常被低估的功能。它允许同一个仓库在不同目录下 checkout 不同分支,共享同一份 Git 对象数据库,但拥有彼此独立的工作区。随着Claude Code 以及 Codex 被广泛使用,他们官方基本都支持了Gitworktree作为内置能力。

这对 Agentic Coding 非常合适。比如你可以让一个 Agent 在 feature/search 分支上实现搜索,让另一个 Agent 在 fix/login-test 分支上修测试,而你主目录里的工作区保持干净。

常用命令很少:

git worktree add ../project-feature feature/xxx
git worktree list
git worktree remove ../project-feature

一个典型习惯是:

# 在当前仓库旁边创建一个新的工作区,并切到新分支
git worktree add -b feature/agent-terminal-workflow ../project-agent-terminal-workflow

# 进入这个独立目录
cd ../project-agent-terminal-workflow

# 在这里启动 Agent 或运行实验
codex

这样做的好处是:

  • 不需要为了并行任务反复 git switch
  • 不需要 clone 多份完整仓库;
  • 每个 Agent 的文件修改天然隔离;
  • review 和删除实验分支更轻松。

如果你经常同时开多个 Agent,worktree 几乎是最值得先掌握的工具。目前 Claude Code 和 Codex 以及 OpenCode 等都内置了Worktree的支持,可以让AI帮你写。

Ghostty:把终端本身变舒服

Ghostty 是一个现代终端模拟器,重点不只是“能跑 shell”,而是让终端作为主要工作界面时足够顺滑。它强调快速、原生 UI、GPU 加速、跨平台体验,以及相对克制的配置方式。

在 Agentic Coding 场景下,终端模拟器的体验会被放大:字体是否舒服、滚动是否顺滑、复制粘贴是否可靠、主题是否耐看、长时间盯着日志是否疲劳,都会影响你愿不愿意把更多工作放进终端。

Ghostty 适合承担最外层的窗口角色:你可以把它理解为承载整个终端工作区的壳。在里面运行 shell、Zellij、Agent CLI、Neovim、测试命令都可以。

在这套工作流里,Ghostty 不只是“美化终端”的装饰项。Agentic Coding 往往意味着长时间盯着流式输出、日志、diff 和命令结果,终端的字体渲染、主题、窗口响应、快捷键和整体观感会直接影响疲劳感。你当然可以继续使用 iTerm2、WezTerm、Windows Terminal 或 Kitty,但如果正在重新整理一套以终端为中心的 Agentic Coding 环境,Ghostty 这一层体验值得认真配置,而不是最后才顺手处理。

Mac 的自带终端体验也还不错,是否需要美化一下取决于具体需求和习惯。

Zellij:把终端整理成可恢复的 workspace

Zellij floating panes preview
Zellij 官方示意图:把多个终端任务组织成可恢复的 workspace。

Zellij 是一个 terminal workspace,也可以理解为现代化的终端复用器。它能把一个终端窗口切成多个 pane,组织多个 tab,保存 layout,并且提供比传统 tmux 更直观的默认 UI。

这时 Zellij 的价值就很明显:

  • Agent 输出不会和测试日志混在一起;
  • 本地服务可以长期挂在一个 pane 里;
  • 你可以用 tab 区分 feature、debug、review;
  • session 可以恢复,不必每次重新摆窗口。

最简单的启动方式就是:

zellij

如果你希望每个 worktree 都有独立 session,可以用目录名作为 session 名:

zellij attach agent-terminal-workflow --create

不想一上来写复杂 layout 也没关系。先把它当成“更好上手的 tmux”使用:分屏、切 tab、恢复 session,已经足够改善体验。

Neovim:当你需要在终端里直接改文件

Agentic Coding 并不意味着人完全不写代码。很多时候,Agent 写了 90%,你只想快速改一行配置、删一段重复逻辑、调整一个 Markdown 标题。这时如果每次都切回图形编辑器,反而会打断节奏。

Neovim 的定位可以很简单:它是一个在终端里足够强的编辑器。

nvim path/to/file

我不建议刚开始就陷入“配置 Neovim 一整周”的坑。但对 Agentic Coding 来说,Neovim 也不是可有可无的小玩具:当 Agent 正在一个 pane 里运行、测试在另一个 pane 里输出、你只想立刻改一行文件时,终端内编辑能力会明显减少上下文切换。它的第一价值不是把 IDE 全部搬进终端,而是提供一个快速、稳定、不离开当前 session 的编辑入口。

比较现实的路线是:

  • 先学会打开文件、搜索、保存、退出;
  • 保持一份很薄的配置,或者使用成熟发行版;
  • 只把它用于终端内的快速修补和 review;
  • 等你真的需要再慢慢扩展 LSP、补全、文件树等能力。

如果你的主要编辑器仍然是 VS Code、Cursor 或 JetBrains,这也完全不冲突。Neovim 在这里更像一把随身小刀:不一定负责整场开发,但在终端工作流里经常会救急。

一个实际组合:每个任务一个 worktree,每个 worktree 一个 workspace

把上面的工具合起来,一个轻量但清晰的流程大概是这样:

# 1. 为新任务创建独立 worktree
git worktree add -b feature/agent-terminal-workflow ../project-agent-terminal-workflow

# 2. 进入这个任务目录
cd ../project-agent-terminal-workflow

# 3. 启动 Zellij workspace
zellij attach agent-terminal-workflow --create

# 4. 在其中一个 pane 里启动 Agent
codex

# 5. 需要手动改文件时,直接在另一个 pane 打开 Neovim
nvim _drafts/agentic-coding-terminal-toolchain.md

这个组合的关键是减少认知负担:

一个任务 = 一个目录 = 一个分支 = 一个 Zellij session

当你想暂停任务时,detach 掉 Zellij session;当你想删除实验时,移除对应 worktree;当你想 review 时,进入那个目录看 diff。上下文边界非常清楚。

一点取舍:不要为了工具而工具

这些工具带来的收益主要是体验和组织方式,不是功能上的硬性前提。但如果目标是搭一套完整的 Agentic Coding 终端工作流,我不建议只装一个 Zellij 就结束。Zellij 解决的是“如何组织多个终端任务”,Ghostty 解决的是“这个终端环境是否长期看着舒服、用着顺手”,Neovim 解决的是“是否能在 session 里直接完成文件修改”。三者关注点不同,最好组合看待。

  • 只用 git worktree:先解决并行分支和 Agent 隔离问题;
  • 先整理终端模拟器体验:改善字体、主题、滚动和响应速度;
  • 再重点配置 Ghostty:让长时间盯着日志、diff 和流式输出时不那么疲劳;
  • 用 Zellij 组织窗口:减少窗口混乱,把服务、测试、Agent 放进一个 workspace;
  • 学会 Neovim 基础编辑:让终端里的临时修改、快速 review 和配置调整更顺手。

如果要排序,我会建议先学 git worktree,因为它直接解决 Agentic Coding 中最容易造成麻烦的“工作区污染”问题。随后同时整理 Ghostty 与 Zellij:一个负责体验,一个负责组织。最后补上 Neovim 的基础编辑能力,让你在终端里能真正闭环,而不是每次小改动都切回图形界面。

小结

Agentic Coding 时代的核心变化,不只是模型能写更多代码,而是开发者开始管理更多并行上下文。好的终端工具链不能替你判断代码质量,也不能替你设计系统,但它可以让这些上下文更清晰、更可恢复、更不容易互相污染。

git worktree、Ghostty、Zellij 和 Neovim 组合起来,提供的是一种朴素但有效的工作方式:让每个任务有自己的目录,让每个目录有自己的终端 workspace,让你在需要的时候可以直接进入文件做最小修改。

这不是必须品,但如果你已经开始认真使用 Agentic Coding,它们很可能会让你的日常开发舒服不少。

参考资料