命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
在当前位置创建对话分支以保留原始会话
/branch [name]/branch 在当前对话的当前节点创建一份完整副本,并立即切换进新副本——原始会话保持原样、不受任何影响。它是 Claude Code 的会话分叉原语,让你在同一任务下探索多条不同路径,而不必担心污染或丢失原来的上下文。
/branch与/fork的关系已变:/fork不再是/branch的别名。从 v2.1.161 起/fork是独立命令——派生一个继承完整对话的后台 forked subagent 替你干指令、完成后把结果回传,而你留在主会话;而/branch是让你自己切进对话的一份副本去试不同方向。只有早于 v2.1.161(且设了环境变量CLAUDE_CODE_FORK_SUBAGENT)时,/fork才等价于/branch。简记:想"自己换条线"用/branch,想"把活甩给后台、自己不动"用/fork。
/branch [name]
name 是可选的,省略时系统自动分配 session ID。建议命名,方便后续 /resume 直接定位。
/branch try-streaming-approach
触发后,终端会打印两个 session ID——新分支与原会话各一个(官方称 confirmation 会 "prints two session IDs: the new branch you are now in and the original",具体行文以实际版本为准):
Branched into: <new-branch-session-id>
Original session: <original-session-id>
你现在身处新分支;原会话原封不动地保留在会话列表里。
在新终端里从外部分叉一个已有会话:
# 分叉最近一次会话
claude --continue --fork-session
# 分叉指定会话
claude --resume <session-id> --fork-session
分支会话与普通会话同样以 JSONL 格式落盘:
~/.claude/projects/<project>/<session-id>.jsonl
如需修改存储根目录,设置环境变量 CLAUDE_CONFIG_DIR。会话文件默认 30 天后自动清理,可通过 cleanupPeriodDays 配置项调整。
会话选择器(session picker)中的分支展示:在 /resume 选择器里,所有通过 /branch、/rewind 或 --fork-session 派生出的子会话,会以折叠树形式归属于根会话下方;按 → 展开分支列表。
| 约束 | 原因 |
|---|---|
| "allow for this session"权限不继承 | 分支是独立会话,安全边界重置 |
| 在同一终端 resume 同一 session 而不 fork,两侧消息会交织进同一 transcript | 官方明述该行为(两侧写入同一 transcript),底层为并发写入同一 JSONL |
分支后原会话 ID 仍有效,可随时 /resume 返回 | 原会话文件未被修改 |
| 原语 | 作用 | 是否保留原会话 | 适用场景 |
|---|---|---|---|
/branch [name] | 复制整条对话历史进新会话 | ✅ | 探索不同解法,需对比两条路径 |
/rewind | 回退到当前会话的某个检查点 | ✅(产生分叉) | 在同一会话内撤销并重试 |
/clear | 清空上下文,历史可 resume 但不复制 | ✅(单条线) | 释放上下文窗口,不需要并行路径 |
--fork-session(CLI flag) | 同 /branch 但从命令行触发 | ✅ | 脚本/自动化场景 |
/branch,出问题可立即 /resume 回到原始状态。--fork-session 在两个终端同时对不同假设进行验证,两侧独立互不干扰。/fork 当成 /branch 的别名:在 v2.1.161+ 这是错的——/fork 是独立命令(后台 forked subagent、结果回传、你不切走),/branch 才是你自己切进对话副本。只有早于 v2.1.161 且设了 CLAUDE_CODE_FORK_SUBAGENT 时二者才等价。要"自己换条线"明确用 /branch。详见 /fork。/branch 再在另一终端开新分支。从分支返回原会话有三种方式:
# 方式 1:用 /resume 加原始 session ID(触发 /branch 时终端会打印)
/resume <original-session-id>
# 方式 2:用原始会话的名称
/resume auth-refactor
# 方式 3:打开会话选择器,手动选取
/resume
在选择器里,分支会话以树形折叠在根会话下,按 → 展开后按 Enter 跳转。
修复 /branch 命令从压缩摘要而非第一个真实提示推导默认分支名的问题
修复进入 worktree 或某些 background session 后拒绝执行的问题
修复粘贴多行会话标题时保存错误
修复成功消息未包含新分支的 session id
修复在源会话包含倒带时间线条目时生成的 fork 失败的问题
修复拒绝大于 50MB 的转录会话的问题
/fork重命名为此命令