首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

Tmux 和 Claude 代码:会话、发送密钥和上限

摘要

tmux runs your AI coding agents in named, detachable sessions that survive a closed terminal or a dropped SSH connection. You get one window holding many agents, send-keys to type into any of them fro...

tmux the worktree you for and agent agents that one
2026-10-19 1 阅读 约8分钟阅读 ankitg12
分享:
字号:
tmux 在命名的、可分离的会话中运行您的 AI 编码代理,这些会话在关闭的终端或断开的 SSH 连接中仍然存在。您将获得一个包含多个代理的窗口,发送键可从脚本中输入其中的任何一个,并通过捕获窗格来读回一个代理。这种组合就是人们使用它的原因。在手动构建任何内容之前,请检查内置路径:最新版本的 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,请使用 --tmux=classic。因此,整个“隔离此任务,为其提供自己的会话”的操作就是一个命令: claude --worktree --tmux # 或将工作树命名为 claude --worktree auth-refactor --tmux 在您依赖它之前,有两个细节很重要。如果没有 --worktree ,则会出现 --tmux 错误,因此它是一个恰好创建会话的工作树功能,而不是常规会话标志。在 iTerm2 上,它使用本机窗格而不是 tmux,这看起来更好,并且意味着本页其余部分中的 tmux 命令没有任何可附加的内容。当您想要在下面使用真正的 tmux 时,请传递 --tmux=classic,如果您计划针对会话编写脚本,则可以这样做。对于单个分支机构的单个代理来说,这就是答案。使用它并跳过。它不做什么:在一个会话中运行多个代理,布置窗格以便您可以观看它们,让您从脚本中输入正在运行的代理,告诉您哪个代理正在等待您,或者通过 SSH 在远程机器上设置其中任何一个。这些是本指南的其余部分,每一部分都是人们最终手工编写 tmux 的地方。有关并行开发 git worktrees 中该标志的工作树一半的更多信息。每个项目的会话,以项目命名保持可用的组织规则:每个存储库一个 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 = " ${1 :- $PWD } " local name = "$( basename " $dir " | tr . -)" tmux new-session -A -s " $name " -c " $dir " } 会话名称不能包含 .或 : (tmux 使用它们作为目标分隔符),因此 tr 。然后 tmux ls 成为真正的库存: $ tmux ls api: 3 windows (created Fri Jul 31 09:12:04 2026 ) web: 2 windows (created Fri Jul 31 09:40:11 2026 ) infra: 1 windows (created Fri Jul 31 11:02:55 2026 ) 添加更多格式字符串: tmux list-sessions -F '#{session_name} windows=#{session_windows} Attached=#{session_attached}' 用于监视多个代理的布局 在会话内,为每个代理提供自己的窗口,以任务命名: tmux new-window -t api -n auth -c ~/code/api tmux new-window -t api -ntests -c ~/code/api Windows 比窗格更好您没有积极关注的代理,因为窗口不占用屏幕空间。窗格适用于您现在想要并排的两个或三个窗格: # 分割当前窗口并平铺其中的任何内容 tmux split-window -h -c '#{pane_current_path}' tmux split-window -v -c '#{pane_current_path}' tmux select-layouttiled #{pane_current_path} 很容易离开。如果没有它,则会在会话启动的目录中打开一个新窗格,而不是您实际所在的目录,并且您在那里启动的代理将指向错误的存储库。两种布局的名称:平铺用于均匀的代理网格,主垂直用于一个大窗格(您正在驾驶的代理),其余的则堆放在它旁边。 tmux select-layout main-vertical tmux set-window-option main-pane-width 60% main-pane-width 的百分比值需要 tmux 3.2 或更高版本。在较旧的版本上使用abs
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱