Margrop
Articles374
Tags738
Categories7

Categories

/v1/models 0.025s 0步 0步元递归 0步本身 12类 192.168.x.x 1password 22类一键汇总 3层定位法 401 4个Gateway 4个Gateway全军覆没 503 60秒延迟 60秒超时 6个节点 AC ACP AI AI Coding Assistant AI编程助手 AI辅助 AI辅助编程 AP API Agent couldn't generate Alertmanager AppDaemon Aqara BaiduPCS CC-Switch CI/CD CLI Tools CLI工具 CONFIG Caddy Chrome缺失 Claude Code Cloudflare Codex Cookie 认证 Cron D1 DB探针 DB静止 DIY-123模型 DIY-MINI DIY平台 Date Diagrams.net Diary Docker Docker Compose EADDRINUSE EasyTier NAT穿透 Efficiency Tools Electerm English FTS5 Gateway Gemini CLI GitHub Actions HA HADashboard Hermes Hexo HomeAssistant IP IPv4 Java LVM‑Thin Linux MacOS Macmini Macmini log路径 Markdown MiniMax MiniMax-M3 Multi-Agent MySQL NAS NRestarts Nginx Node-RED Node.js OOM OpenAI OpenClaw OpenClaw gateway OpenCode OpenResty OpenWrt PPPoE Portainer PostgreSQL ProcessOn Prometheus Proxmox VE RPC Restart=always Restart=always循环 SOCKS5 SQLite SSL Session Shell Subagent TTS TimeMachine UML Uptime Kuma VM151 VM152 WeCom缺失 VM153 VPN VPS VPS4 VPS4 overlay TCP不可达 WeCom Web WebSocket Windows Workers activate ad adb adblock agent aligenie aliyun alpine annotation aop authy auto-restart autofs backup baidupan bash bitwarden boot brew browser by-design caddy2 capture_output cdn centos cert certbot charles chat chat completion chrome classloader client clone closures cloudflare cmd command commit connected container cron crontab cron任务 cron设计 ctyun dashboard ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump duplicate service unit dylib edge exception exit 78 export fail2ban fallback fallback失效 feign firewall-cmd flow frp frpc frps fuckgfw function fuser gcc gfw git gitea github golang google_gemma-4 gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https iKuai idea image img img2kvm immortalwrt import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jieba jni jnilib journald journald日志漂移 jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live loopback-proxy low-code lsof lvm lxc m3u8 mac macos manual mariadb markdown maven md5 meta-acceptance meta-pattern meta-probe microcode mirror model provider modem modules monitor mount mstsc mysql n2n n5105 nas netstat network new-api nfs node node-red nodejs nohup notepad++ npm nssm ntp one-api oop openfeign openssl os otp ovz p14 packet capture pat pdf pem perf ping ping通但chat不通 pip plugin png port=18789 powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reconnect循环 reflog remote remote desktop renew repo resize retina root route router rule rules running runtime safari sata schema schema列名 scipy-notebook scoping scp server server is busy service不可信 slmgr so socket-proxyd socks source spk split边界 spring springboot springfox sqlite3 CLI ss ssh ssl stale stash stderr被吞 string subprocess supernode svg svn swagger sync synology system-level daemon system-level vs user-level system-level与user-level抢端口 systemctl systemctl disable systemd systemd duplicate service systemd exit 78 systemd service unit systemd unit systemd unit race systemd-socket systemd被覆盖 tap tap-windows tapwindows telecom template terminal tls tmux token token失效 totp transient 999 trigram tvbox txt ubuntu udisk ui undertow unicode61 uninstall unlocker upgrade upstream provider timeout uptimeMs url user-level daemon v10探针 v11探针 v12探针 v13探针 v1探针 v2ray v6探针 v7探针 v8探针 vhd vim vlmcsd vm vmdk web websocket wechat windows with work day 2 worker wow xiaoya xml yum zip 一键告警脚本 上游LLM容量 不是我的锅 中国电信 中文搜索 主动0步 主动0步本身 主动不追问 主动不追问本身 主动不追问本身也是清单之外 主动不通知 主动不通知本身 主动修 主动修system-level本身也是清单之外 主动修本身也是清单之外 主动周一 主动意识到 主动意识到0步本身 主动意识到0步本身也是清单之外 主动追问 云电脑 交换机 人机协作 代理 优化 但chat 30s+ 但是我的事 体检 保护逻辑本身也是清单之外 修挖坑闭环 修正本身 修正递归 值班 假阳 假阴 健康检查 元递归 光猫 全绿 全量同步 公网IP 内存 内存优化 内网 内网IP 内网渗透 写作 分词 切换 列名误判 升级 协作 单位混淆 博客 反向代理 反常稳定 反应 vs 知识 启动 告警 告警优化 周一 周一焦虑 周三 周二 周二晚上 周五 周六 周四 周报 周日 周末 周末也是清单之外 周末本身也是清单之外 周末突破 周末第二天 周末落地 周末落地本身 夏令时 多场景 多智能体 多节点 多节点管理 天猫精灵 天翼云 安全 安装 定时任务 容器 容器网络 导入 小米 工作感悟 工作日 工作日常 工作日第三天 工作日第五天 工作日第四天 已通知用户 常用软件 幂等 广告屏蔽 序列号 应用市场 异常 循环类 心态 心智成长 心理模型 心跳 心跳检查 性能优化 感悟 打工 打工人 打工人的无奈 批量校验 技术 抓包 挖坑→修坑闭环 排查 排查思路 探针再升级 探针本身 探针版本 探针管理 探针自检 探针踩坑 接受 接受之后 接受修 接受修正 接受层 接受挖坑 接受本身 接受递归 描述文件 放下 故障 故障排查 效率 效率工具 数据 旁路由 旁路进程 无服务器 日记 时区 显卡虚拟化 智能家居 智能音箱 服务器 服务管理 架构 梯子 模块 模型别名映射 模型探测 模型端点可达性 模型端点能ping通 模型调用 毫秒 流程 流程图 流程管理 浏览器 清单之后 清单之外 清单之外也包括接受本身 清单的元递归 清单设计 清单边界 清单进化 源码备份 漫游 激活 激活循环 火绒 焦虑 玄学 生活 电信 画图 监控 监控系统 直播源 直觉 磁盘 端口 端口冲突 端口扫描 第10天 第10类 第11天 第11类 第12天 第12类 第13天 第13类 第14天 第14类 第15类 第16天 第16类 第17类 第18类 第19类 第20类 第21类 第22类 第23类 第25类 第6天 第7天 第8天 第9天 第9类 管理 续期 网关 网络 网络风暴 群晖 脚本 脚本优化 腾讯 自动化 自动恢复 自建应用 自我反思 自我打脸 节点角色 虚拟机 被动意识到 角色不匹配 角色误判 角色误配 角色错配 认证 设计偏差 证书 语雀 误报 误报过滤 超时 路由 路由器 软件管家 软路由 运维 运维监控 进程 连接保活 连接问题 通信机制 通知 通知元递归 通知挖坑 通知本身 部署 部署链路 配置 配置落后 钉钉 镜像 镜像源 长期稳定 长连接 门窗传感器 问题排查 防火墙 阿里云 阿里源 集客 静默期 飞书

Hitokoto

Archive

说出来你们可能不信,AI时代我每天干活还是离不开tmux

说出来你们可能不信,AI时代我每天干活还是离不开tmux

说出来你们可能不信,AI时代我每天干活还是离不开tmux

说出来你们可能不信,都 2026 年了,AI 代码助手已经能帮你写完整项目了,但每天打开终端,我输入的第一个命令还是 tmux new -s work

同事问我:”都 AI 时代了,你怎么还在用这个 2007 年的老古董?”

我说:”古董?不,这是旧瓶装新酒。”

AI 都这么能打了,我为什么还是离不开 tmux?

说实话,我也尝试过”现代化”的开发方式。

有段时间我尝试用各种 AI 编程工具——Cursor、Windsurf、Copilot Workspace。这些工具确实很厉害,能帮你生成代码、解释代码、甚至帮你重构整个模块。

但每次用着用着,我就发现自己的注意力开始分散了。

问题一:窗口太多

AI 工具通常是 Web 界面或者独立的 App。要用 AI 帮你写代码,你得:

  1. 打开编辑器写代码
  2. 切换到浏览器问 AI 问题
  3. 把 AI 的答案复制回编辑器
  4. 运行看结果
  5. 切换回浏览器继续问

每次切换窗口,注意力就会被中断一次。研究表明,每次中断后重新集中注意力,平均需要 23 分钟。

问题二:AI 输出太长

AI 给的回复经常是一屏又一屏。比如我问”帮我分析这个函数的性能”,AI 能给你写出 500 行的分析报告。要在这 500 行里找到关键结论,眼睛都要找花。

问题三:SSH 断连 = 工作丢失

这是最痛苦的。有时候让 AI 生成了一个很长的命令,或者正在调试一个复杂的问题,突然 SSH 断开了。重新连上去,之前的工作状态全部丢失——终端历史没了,编辑器里的临时修改没了,甚至有时候连进程都没了。

直到我重新捡起了 tmux。

tmux 才是 AI 时代的隐藏之王

说出来你们可能不信,我第一次接触 tmux 是在 2018 年,那时候就觉得这玩意儿挺有意思的——分屏、session 持久化、复制模式,这些功能在服务器运维里确实很实用。

但用了一段时间后,我就把它打入冷宫了。因为那时候 GUI 工具越来越强大,VS Code 的远程开发、SSH 插件、各种 AI 助手,都让纯命令行的 tmux 显得有些”落后”。

直到最近,我才重新发现了 tmux 的价值。

准确地说:是 AI 时代让我重新认识了 tmux。

第一幕:分屏才是 AI 打工的正确姿势

现在的 AI 辅助编程,正确的打开方式是什么?

我的答案是:tmux + vim + AI 终端 + 日志监控,三个窗口同时开着,各司其职。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌─────────────────────────────────┬──────────────────┐
│ vim - app.py │ AI Terminal
│ │ │
│ def handle_request(): │ >>> 分析代码... │
data = ai.analyze( │ 建议: 添加缓存 │
prompt=query │ 复杂度: O(n)
│ ) │ │
│ return render(data) │ │
├─────────────────────────────────┴──────────────────┤
│ logs - tail -f │
│ [10:30:01] Request received │
│ [10:30:02] AI processing... │
│ [10:30:03] Response: 200 OK
└───────────────────────────────────────────────────┘

这是我每天的标准布局:

左边的 vim:写代码,用 vim-slime 或者直接复制粘贴,把 AI 给的代码片段放进去

右边的 AI 终端:问 AI 问题、看 AI 的分析结果、让 AI 帮你审查代码

下面的日志窗口tail -f 实时看日志,AI 生成代码后,立刻看日志验证效果

三个窗口同时可见,不需要切换,不需要 Alt+Tab,不需要在窗口之间迷失。

当 AI 告诉我”这段代码有问题”的时候,我只需要低头看一眼日志窗口,看看是不是真的有问题。当 AI 给了一个优化建议的时候,我可以直接在 vim 里执行,同时盯着日志看效果。

这种”沉浸式 AI 编程”的体验,比在各种窗口之间来回切换爽太多了。

第二幕:session 持久化——让 AI 任务不怕断网

这是 tmux 最重要的功能,也是让我彻底离不开它的原因。

场景重现

下午三点,我正在让 AI 帮我写一个复杂的数据处理管道。AI 给了一个 200 行的代码,我正在一行一行地看,突然——

“Connection to server closed.”

SSH 断开了。

如果是以前用普通终端,这个时候我大概会:

  1. 重新 SSH 上去
  2. 尝试回忆刚才看到哪了
  3. 重新运行之前的命令
  4. 发现某些状态已经丢失
  5. 心态崩了

但现在?

1
2
# 重新连接服务器后
tmux attach -t work

一秒回到断连前的状态。vim 里我看到第 142 行,AI 终端里刚才的对话历史还在,日志窗口还在实时滚动。所有窗口、所有状态,完整保留。

这就是 tmux session 的魔力:你的工作是一个”活”的状态,不是一个”死”的终端。

它大概是这样的一个生命周期:

1
2
3
4
[Session Active] --> [detach] --> [Session Detached but Running] --> [attach] --> [Session Active]
↓ ↓
正在工作 SSH 断开,session 保留
所有窗口状态都在

detach 和 attach,就是 tmux 的精髓。

  • Ctrl+b d:临时脱离 session(session 在后台继续运行)
  • tmux attach:重新连接回 session(一切如你所见)

有了这个,我再也不怕 SSH 断开了。晚上回家路上突然想起有个任务没完成?没关系,明天到公司 tmux attach,继续干。

第三幕:copy-mode——AI 长文本的精准定位神器

AI 的输出有一个特点:长。

非常长。

有时候你问 AI 一个技术问题,它能给你写出一篇小作文。代码、解释、建议、注意事项,洋洋洒洒几百行。

要在这几百行里找到你真正需要的那几行,靠眼睛扫?累死你。

但用 tmux 的 copy-mode,一切变得简单。

传统的复制模式

  1. Ctrl+b [ 进入复制模式
  2. 用方向键一行一行地挪
  3. 看到想复制的地方,Space 开始选
  4. Enter 确认复制
  5. Ctrl+b ] 粘贴

这已经很好了,但 tmux copy-mode 还有更强大的功能:正则搜索跳转

进入 copy-mode 后,按 / 就可以搜索。想找 handle_request 函数?/handle.*request,回车,直接跳转到第一个匹配的位置。按 n 跳到下一个匹配,按 N 跳到上一个匹配。

1
2
3
4
# 在 copy-mode 中
/handle.*request # 搜索包含 "handle" 和 "request" 的行
n # 跳到下一个匹配
N # 跳到上一个匹配

想象一下这个场景:AI 给了一份 500 行的代码分析和重构建议,里面有十几处需要修改的地方。以前你要用鼠标滚轮滚半天,找到眼花。现在?/ 一下,n n n,精准定位每一处。

这就是 tmux 教会我的:好的工具不是给你更多功能,而是让你更高效地到达你想去的地方。

第四幕:我的 .tmux.conf 现代化改造

用了这么多年 tmux,我的配置文件也在不断迭代。以下是我认为在 AI 时代最值得配置的几个选项:

1. 快捷键优化——告别小拇指

默认的 prefix 键是 Ctrl+b,这个组合对手小的人不太友好(需要同时按 Ctrl 和 b,小拇指很累)。

我把它改成了 Ctrl+a

1
2
3
4
# ~/.tmux.conf
unbind C-b
set -g prefix C-a
bind C-a send-prefix

现在只需要按 Ctrl+a,比 Ctrl+b 舒服多了。

2. 鼠标支持——用鼠标也能操作 tmux

1
set -g mouse on

开启鼠标支持后,可以:

  • 用鼠标调整 pane 大小
  • 用鼠标选择文本
  • 用鼠标点击切换 pane
  • 用鼠标滚轮滚动历史

对于从 GUI 过渡过来的新手,这个功能很友好。

3. 状态栏改造——一眼看出当前状态

1
2
3
4
5
6
# 状态栏显示更丰富的信息
set -g status-interval 5
set -g status-left "#[fg=green]tmux #[default]"
set -g status-right "#[fg=cyan]%Y-%m-%d %H:%M"
set -g window-status-format "#I:#W"
set -g window-status-current-format "#[fg=yellow,bold]#I:#W"

这样状态栏会显示当前时间、窗口列表,当前窗口高亮显示。

4. 更快的响应——减少延迟

1
2
3
4
5
# 减少 escape 延迟(对 vim 用户很重要)
set -g escape-time 0

# 更快的键序列
set -g repeat-time 300

escape-time 0 这个设置对 vim 用户特别重要,因为它减少了按键到 vim 响应之间的延迟。

5. 复制模式优化——更好的文本选择

1
2
3
4
5
6
# vi 风格的复制模式
setw -g mode-keys vi

# 复制模式快捷键
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel

用 vi 风格的快捷键复制文本,对 vim 用户来说学习成本为零。

第五幕:tmux + AI = 效率倍增

说了这么多 tmux 的好处,可能有人要问:AI 时代,tmux 的价值在哪里?

我的理解是这样的:

AI 负责”思考”,tmux 负责”执行”。

AI 的强项是生成、推理、解释。但 AI 不擅长的是:

  • 长时间运行任务
  • 实时监控状态
  • 保持上下文连续性
  • 多任务并行处理

而这些,恰好是 tmux 的强项。

举几个具体的例子:

例子一:AI 生成 + tmux 监控

让 AI 生成一个数据处理脚本,在 tmux 里运行 tail -f 实时看日志,AI 在另一个窗口给你解释日志里的错误。不用来回切换,专注在一个屏幕上。

例子二:AI 并行对话

开多个 tmux pane,同时和不同的 AI 对话——一个帮你写前端,一个帮你写后端,一个帮你写测试用例。三个 AI 同时工作,效率翻倍。

例子三:AI 调试 + 实时验证

AI 给你一个修复建议,立刻在 vim 里改,改完在下面的日志窗口看效果。不满意?继续问 AI,继续改,继续看。整个调试循环在一个屏幕里完成。

这就是我说的”效率倍增”:不是 tmux 让你更快,也不是 AI 让你更快,而是两者结合,让你的工作流变成一个流畅的循环。

感悟:从”工具”到”工作流”的思考

写这篇文章的时候,我重新审视了一下自己这些年的工具使用习惯。

2015 年刚开始工作的时候,我用 putty 连接服务器,纯命令行操作。那时候觉得终端就是一切,鼠标是多余的。

2018 年开始用 tmux,哇,分屏好爽,session 持久化好爽。但后来 VS Code 来了,远程开发插件太强大了,tmux 又被冷落了。

2023 年 AI 来了,各种 AI 编程工具层出不穷。我也尝试过纯 GUI 的 AI 编程方式,但总觉得哪里不对劲。

直到 2025 年,我重新捡起 tmux,才发现:不是 GUI 不好,也不是 AI 不好,而是它们没有很好地结合在一起。

tmux 给了我一个”容器”——一个可以把 AI、vim、日志监控、各种工具整合在一起的容器。在这个容器里,AI 不是另一个需要切换过去的窗口,而是我工作流的一部分。

好的工作流不是堆砌工具,而是让工具各司其职、协同工作。

AI 时代不缺工具,缺的是把工具用出效率的人。

tmux 教会我的是:好的工作流不需要复杂的 UI,简洁才是终极效率。

那些花哨的 AI 编程工具,确实很厉害,但如果你的工作流设计得不好,它们反而会让你分心。而一个简洁的 tmux 布局,配合合适的 AI 工具,可以让你专注于真正重要的事情——解决问题本身。

旧瓶装新酒,工具不老,用法常新。


作者:小六,一个 AI 时代还在用 tmux 的普通打工人

本文使用的配图:

tmux布局图
图1:我的 AI 编程标准布局——vim + AI 终端 + 日志监控三件套

tmux session 生命周期
图2:tmux session 的 detach/attach 生命周期——断网不怕,工作状态完整保留

tmux copy-mode 搜索跳转
图3:tmux copy-mode 的正则搜索——在 AI 的长文本输出中精准定位关键内容

Author:Margrop
Link:http://blog.margrop.com/post/2026-05-10-ai-era-tmux/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可