本文经原作者授权转载,版权归原作者所有。原作者:实践哥MinLi(@MinLiBuilds)。


和 Claude Code 聊了半小时,调教好了上下文。偏偏这时你想试个更狠的改法,或者冒出个岔路问题想顺嘴问一句。非常难堪,当前窗口直接动手,主线被带跑、上下文越搅越乱;新开一个 claude,它干干净净啥都不知道,半小时的铺垫得从头再讲一遍。

所以我写了一个比官方好用 100 倍的 /branchnew:在当前会话快捷键⌘F ,终端往右一裂,右边那格就是这场对话的一个 fork,往后两条线各跑各的,左边主线你碰都没碰。关键还100% 命中缓存。

为什么能这么干?因为 Claude 是无状态的,每轮对话都要把整段历史重新发一遍给模型。管理context,本质是管理这块cache:历史前缀被缓存,命中一次省 90% 的钱。

而大多数人只会一个 /clear,一键清空重来。

这篇先把 Claude 自带的一整套 context 命令讲透,再讲 branchnew 凭什么比原生 fork 好用 100 倍。看完,你就是 context 管理大师。

导读

  • 只想 ⌘F 一键 fork:跳到第 3 节,一句话让 Claude 帮你装好。
  • 想把自带的 context 命令一次补齐:看第 1 节命令手册。
  • 想知道 branchnew 凭什么吊打原生 fork:看第 2 节。

1. context 管理命令手册

这一章是 Claude Code 自带的:

/btw <问题>:临时插个旁路问题,答案照给,不写进对话历史,缓存全命中。注意,这是唯一的命令可以在 prompt 处理过程中发起额外的会话。

--continue(-c):接当前目录最近那场对话往下聊,前缀原样复用。趁缓存还热(默认 1h TTL)接上,关机重启第二天也能恢复会话。 --resume(-r):列出目录里所有历史会话挑一个,或会话里打 /resume 选。

--fork-session、/branch、/fork

会话里还有三条岔路命令,但都别扭,下一节细说为什么:

  • /branch [名字]:当场给对话拉个分支,把你切进去,原会话留在 /resume。
  • /fork <一句话>:派个后台分身带全部上下文去办这一件事,干完把结果带回,你不进去。

--fork-session 是关键开关。单用 --continue 或 --resume 是接着原会话往下写。加上它,Claude 把到此为止的历史复制成一场全新会话,原会话一字不动,新支从分支点岔开。最常用的组合:

claude --continue --fork-session

/rewind(输入框空着连按两下 Esc 也行)神器,把对话、代码、或两者一起倒回某个时间点。因为 cache 前缀匹配,缓存只要还在 TTL 内就仍是有效的。

/export 把当前对话下载成纯文本,分享或留档用。

/clear :清空对话,旧的存进 /resume。

/compact :压缩过大的上下文使用。

2. 原生 fork 不够用,所以有了 branchnew

回到/branch、/fork,--fork-session , 真用他们各种不爽:

  • 自己开窗、自己把这串敲全、自己起名,每岔一支都来一遍。

原生这三样没一个能替你自动开出一场并排的、能多轮聊的新会话。

用过 Codex 那个 app 的都懂那种顺:点一下,立刻并排多出一场带同样上下文的独立会话,直接进去开干。Claude Code 的终端里偏偏少这一下。

我就想把它搬进 Claude 终端,写了 branchnew:会话边上敲一下,右边自动裂开一格,就是这场对话的一个 fork。底层是 claude --continue --fork-session,所以分叉那一刻不重放历史,整段上下文 100% 命中缓存,几乎零成本。

3. 安装:一个 prompt 搞定

最省事:把仓库链接丢给 Claude Code,让它帮你装 branchnew。它照着 README 把 branchnew 命令和 /branchnew 斜杠命令装好,还会问你要不要把后面的 ⌘F 热键一起装上。

仓库:https://github.com/limin112/branchnew , 有用就点个star。

用 Ghostty、Codex CLI,或者别的终端、别的 agent?目前还没原生适配你们的环境,但脚本很短、没写死任何个人路径,欢迎 fork 过去改成你顺手的样子,改好了顺手提个 PR,我合。

会话里直接打 /branchnew,终端往右一裂,右边那格自动接上 claude --continue --fork-session,开窗、接上下文、起名全替你干了,左边主线你碰都没碰。

┌───────────────┬───────────────┐
│  你正在工作的   │  branchnew 开的 │
│  Claude 会话   │  fork 分身      │
│  (原样不动)   │  newBranch[N]  │
└───────────────┴───────────────┘

就 2 种形式:

/branchnew            # 向右分屏 + fork,自动叫 newBranch1、newBranch2……
/branchnew plan-b     # 同上,这支叫 plan-b(名字可带空格、中文,不用引号)

它替你干三件事:自动向右分屏、自动接上下文、自动起名。

几个场景可以使用:

  • 试错不毁主线:想试个更狠的重构,分一支去试,成了搬回结论,砸了直接关窗,左边那条线毫不知情。像官方的 fork,但能多轮对话、你全程在场。
  • 岔路顺手问:干到一半冒出个问题,分一支过去问,主线纹丝不动。
  • 长任务别干等:主窗口跑着慢活,分一支带同样上下文先开下一块,两边并行。

共同点:缓存完全复用,攒下的上下文一次都不用重讲,不用所谓的 handoff。

4. 高阶用法:⌘F 一键 fork

前面说过,除了 /btw,其它斜杠命令在 Claude 跑着的时候基本插不上手。于是我借 iTerm2 的能力加了个 ⌘F:一键 fork 当前这格里那条确切的会话,精确到 session id,分出来的支再往下分也不串台。装的时候选上 ⌘F 热键即可(跟着提示开一下 iTerm2 的 Python API)。

爽。

把上下文当缓存来管,你和 Claude 的对话就从一条直线,变成一棵能接、能岔、能倒、能存的树。这套用顺,你就是 context 管理大师。

最后一句私心话:branchnew 这一下,本该是官方的 branch/fork 自己就该做到的。趁它还没内置先装上爽着,等哪天官方把这功能抄进去,你也能淡淡说一句:这玩意我早用上了。深藏功与名。

聊到一半、正卡着两条路的那场对话,现在就分一支出去。跑顺了回评论区告诉我,你都拿它分叉去干了啥。