Tmux 和 Claude Code:会话、发送键和上限
tmux 在命名的可分离会话中运行您的 AI 编程代理,这些会话在终端关闭或 SSH 连接丢失时仍然存在。您可以拥有一个窗口,容纳多个代理,使用 send-keys 从脚本中输入任何代理的内容,并使用 capture-pane 读取其中一个。这种组合是人们使用它的原因。在您手动构建任何内容之前,检查内置路径:Claude Code 的较新版本可以通过 claude --worktree --tmux 为您创建工作区和 tmux 会话。 本指南首先涵盖这一点,然后是它没有涉及的其他内容,以及 tmux 本身停止的地方。 为什么 tmux 和代理结合在一起 一个编码代理是一个长期运行的进程,想要与终端保持交流。tmux 的三个属性与这一个形状匹配:它能承受断开连接。tmux 服务器拥有 pty,而不是您的终端窗口。关闭窗口、失去 SSH 链接、将笔记本电脑置于睡眠状态:代理仍在工作,并在您重新连接时仍然存在。它在一个窗口中容纳多个会话。四个代理变成四个命名会话,您可以通过按键在它们之间切换,而不是在应用程序切换器中寻找四个窗口。它可以从外部脚本化。任何 shell 可以在运行的代理中输入或读取其屏幕。没有需要构建的 IPC,也没有需要连接的 API。这是人们构建的属性,这就是为什么 tmux 在代理协调脚本中不断出现的原因。 内置标志,在您构建任何内容之前 Claude Code 随附此功能,用于单代理在分支上的情况。两个标志,来自于最新版本的 claude --help:-w, --worktree [name] 为此会话创建一个新的 git 工作区(可选地指定一个名称)--tmux 为工作区创建一个 tmux 会话(需要 --worktree)。在可用时使用 iTerm2 原生窗格;使用 --tmux=classic 获取传统的 tmux。因此,整个“隔离此任务,给它自己的会话”操作只需一条命令:claude --worktree --tmux # 或命名工作区 claude --worktree auth-refactor --tmux 在您依赖它之前,有两个细节很重要。--tmux 在没有 --worktree 的情况下出错,因此这是一个工作区特性,恰好创建一个会话,而不是一个通用会话标志。在 iTerm2 中它使用原生窗格而不是 tmux,这样看起来更美观,也意味着此页面其余部分的 tmux 命令没有任何附加。 当您想要底层的真实 tmux 时,请传递 --tmux=classic。如果您计划对会话进行脚本处理,那么这就是答案。使用它并跳过后面的内容。它不做的事情:在一个会话中运行多个代理,布置窗格以便您可以观看,让您从脚本中输入到正在运行的代理中,告诉您哪个代理在等待您,或在远程主机上通过 SSH 设置这些内容。这些是本指南的其余部分,每一个都是人们最终手动编写 tmux 的地方。 更多关于 git 工作区的工作区标记的信息以进行并行开发。 每个项目一个会话,以项目命名 使其可用的组织规则:每个仓库一个 tmux 会话,命名为该仓库。不按任务、不按代理。任务来来去去;项目是稳定的东西。# 在项目目录中启动一个分离会话 tmux new-session -d -s api -c ~/code/api # 附加到它(如果不存在则创建它) tmux new-session -A -s api -c ~/code/api -A 是附加或创建。它使单个命令安全地重复运行,这正是您在 shell 函数中想要的:# ~/.zshrc agent () { local dir =
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡