cmux终端复用器实战:解决SSH断线与多会话管理难题
在终端打交道多年的开发者早晚会遇到一个尴尬时刻手上同时开着十几个SSH窗口每个窗口里跑着不同的任务切来切去切到怀疑人生。更头疼的是一旦网络波动或者笔记本合盖远程跑了大半天的构建、数据同步、批量任务直接断线前功尽弃。cmux 这个工具就是奔着解决这类问题来的。cmux 是一个基于 Go 语言实现的终端复用器名字是 console multiplexer 的简写思路作用可以粗浅地理解为给终端窗口加了个“会话管理层”。它允许你在同一个终端窗口里创建多个独立会话每个会话内部还能继续分窗口、分面板逻辑上互不干扰。所有会话都挂在后台运行即使你关掉终端或者断开连接这些任务也不会被中断重新连上之后一键就能回到现场。这篇内容不是工具文档的翻译而是把我实际使用 cmux 过程中拆过的概念、踩过的坑、沉淀下来的配置思路整理出来希望能做到让从没用过终端复用器的朋友也能看懂并且能直接照着搭一套自己顺手的环境。1. 为什么需要终端复用先聊聊没有它时的痛1.1 没有复用器时的日常工作流说个最朴素的场景。假如你在一台远程服务器上部署一个服务前后要经历代码拉取、依赖安装、编译构建、配置文件修改、服务启动、日志观察这么一串流程。没有终端复用器的时候正常的做法是开一个 SSH 连接执行命令遇到需要同时观察的状态就再开一个 SSH 窗口。窗口一多任务一杂马上就会暴露出三个问题第一是上下文割裂。构建任务在窗口 A日志输出在窗口 B配置修改在窗口 C每次切换都要先回忆一下这个窗口是干什么的。临时开的新窗口多了之后经常出现找不到“刚才那台机器上那个关键进程”的情况。第二是任务断连风险。SSH 连接本质上是网络会话任何一端网络抖动、本地电脑休眠、客户端意外退出远端正在跑的前台任务都会收到挂断信号。而这个信号传给任务的后果轻则任务终止退出重则写坏中间状态文件。我在早期没有使用复用工具时就因为编译到一半的断连重新编译过好几次。第三是操作效率低下。重复输入相同命令、复制路径、在不同目录间反复横跳这些动作累积起来的时间消耗非常可观。1.2 cmux 的解决思路把“窗口”变成“会话”cmux 的核心思路可以理解为它在你和终端之间加了一层会话管理服务。终端的显示界面只是这层服务的“观察窗口”而真正执行命令的进程被托管在后台的会话里。这个设计带来的关键改变是进程不再依赖某个 SSH 连接而存活而是依赖 cmux 的服务进程。所以只要你连上机器的 SSH 后还能找到 cmux 服务之前运行的会话就都还在。用一个直白的比喻终端复用器就像是给终端任务买了一份“断点续传保险”网络断了、窗口关了任务进程安然无恙。cmux 与同类工具相比最大的差异点是它的轻量。整个工具就是一个 Go 编译出来的单二进制文件没有复杂的运行环境依赖拷贝到 Linux 服务器上就能跑。配置文件是普通文本语法简洁快捷键体系沿用了大多数终端复用工具的直觉模式上手成本不高。1.3 哪些人最适合用它如果你满足以下任一情况cmux 大概率能帮到你经常用 SSH 连接远程服务器做开发或运维深受断线重连困扰需要在终端里并行执行多条任务比如同时编译、测试、看日志喜欢极简工具不想为一个终端窗口管理功能装一个沉重的运行时想在自动化脚本和交付环境里让别人也能快速恢复你的调试现场。2. 核心概念拆解会话、窗口与面板2.1 会话逻辑上的独立工作区会话是 cmux 里最上层的容器概念。我习惯把它类比成“一间办公室”每个会话是独立的一间办公室之间相互隔离互不干扰。你在会话 A 里面跑前端开发服务在会话 B 里面看后端日志两者互不相干。新建会话的命令是cmux new -s 会话名后面带上一个自己起得明白的名字。会话的好处不只是隔离更重要的是可恢复性。你可以随时从会话里“脱离”出来回到普通终端状态之后随时再“附着”回去。保存现场的操作快捷键是Ctrlb后按d也就是 detach。这个过程只把 cmux 的界面从你的终端上摘下来会话内部的所有进程照常运行。重新回到现场的操作用cmux attach -t 会话名它会找到目标会话并把界面重新渲染出来。2.2 窗口会话内的独立页面窗口在会话内部存在一个会话可以包含多个窗口每个窗口在 cmux 的底部状态栏会有一个编号和名称。窗口概念相当于“办公室里的工位”你可以把一个窗口留给编辑器另一个窗口留给命令行操作。在会话内新建窗口的常用快捷键是Ctrlb后按c窗口间切换用Ctrlb加窗口数字编号。窗口之间可以理解为同一会话里的不同页面它们共享同一个会话的存活状态但各自拥有独立的内容。2.3 面板同一窗口里的视野切割如果窗口是工位那面板就是在同一个工位上横向、纵向拉出来的“多块显示屏”。你可以在同一个窗口里把屏幕区域切分成左右两块左边跑测试命令右边写代码实时看到两边输出。这个特性对开发调试非常实用不需要来回切换窗口。默认的分割快捷键是Ctrlb后按%做左右分割按做上下分割。面板之间可以调整大小、关闭、互换位置。需要注意的是面板本质上是对同一终端画面的区域划分所以面板数量过多会导致每个区域面积过小反而影响阅读。我个人的经验是一个窗口内面板数控制在 3 个以内比较舒服。2.4 快捷键体系的底层逻辑cmux 的快捷键继承了一套经典范式前缀键加功能键。默认前缀键是Ctrlb按下前缀键之后再按功能键来完成具体操作。这套设计的价值在于给快捷键留出足够大的组合空间避免和终端内运行的普通程序的快捷键冲突。由于所有快捷键都要先经过“前缀键”这道门所以只要你熟悉前缀键的节奏记新命令的成本会很低因为功能键的字母含义基本都能靠联想记住例如c代表 created代表 detach%代表左右分栏的图形化暗示。3. 实操从零搭好一套可复用的 cmux 环境3.1 安装与基本环境确认cmux 的安装非常直接。只要你的机器上已经安装了 Go 环境一条命令就能拿到最新版本的可执行文件go install github.com/cmux-dev/cmuxlatest装好后确认版本和帮助信息cmux --version cmux --help如果命令没有找到多半是 Go 的 bin 目录没有加到系统 PATH 中。可以在 shell 配置里追加一行export PATH$(go env GOPATH)/bin:$PATH然后重开终端。这个过程大约一分钟就能完成对比某些需要一堆依赖的终端工具来说确实清爽。3.2 首次启动创建并进入会话环境就绪后执行cmux new -s work终端会自动进入名为 work 的会话底部状态栏会出现会话和窗口的信息。这时你在终端里敲一个长任务例如ping某个地址持续输出然后按下Ctrlb再按d脱离会话。回到普通 shell 后用cmux attach -t work重新挂载回来会发现之前的命令还在源源不断地输出。这就是第一个最核心的收益进程托管在会话里窗口只是观察者。3.3 配置文件把布局和行为固定下来用了一段时间全部靠手敲命令后我开始觉得重复操作太多于是把常用的行为整理成了配置文件。cmux 的配置默认路径是~/.cmux.conf语法非常接近键值对加一些块定义。一个典型的基础配置大致长这样# 设置前缀键为 Ctrla避免与常见软件冲突 set -g prefix C-a # 状态栏显示窗口列表和会话名 set -g status-left cmux [#S] set -g status-right %H:%M # 开启鼠标支持方便直接用鼠标切换窗口和调整面板 set -g mouse on # 定义默认窗口数量 new-session -d -s base new-window -t base:1 -n code new-window -t base:2 -n logs select-window -t base:1这段配置的意义在于每次启动 cmux 就会自动恢复一个名为 base 的会话包含两个窗口code 和 logs。配合鼠标支持日常操作不再依赖记忆快捷键直接用鼠标点击底部状态栏即可切换窗口。如果团队需要统一环境直接把这份配置文件分发下去效果一致。配置文件的生效方式有两种一种是修改后重启 cmux另一种是在会话中通过prefix :进入命令行模式手动执行配置指令适合微调。3.4 状态保存与恢复重新开机不再手忙脚乱实际工作中我经常需要在一台服务器上同时挂着好几个会话分别处理不同项目。一个很实用的习惯是工作收尾时把每个会话精心命名并对号入座第二天上班直接一条命令全部恢复。列出所有存在的会话cmux ls批量恢复多个会话只要写下对应的 attach 指令组合在一个脚本里即可。例如写一个resume.sh脚本内容大致是#!/bin/bash if ! cmux has -t backend 2/dev/null; then cmux new -d -s backend -c cd /srv/backend ./dev.sh fi if ! cmux has -t frontend 2/dev/null; then cmux new -d -s frontend -c cd /srv/frontend npm run dev fi cmux attach -t backend脚本检查每个会话是否已存在不存在则新建并执行启动命令存在就直接附着。这样服务器重启之后一个脚本就能快速拉起整个日常开发环境。这个思路特别适合临时要用的一台机器省去了每次手工敲命令的重复劳动。4. 高效使用技巧与实战配置4.1 高频操作速查表刚上手的时候最难的是记住快捷键。我整理了一张使用频率最高的操作表贴在自己的备忘录里见下表。功能快捷键说明前缀键Ctrl b所有命令的先导按键脱离会话前缀 d会话转入后台不中断重新挂载cmux attach -t 名称回到指定会话新建窗口前缀 c在当前会话打开新窗口切换窗口前缀 数字按编号跳转左右分栏前缀 %拆出左右面板上下分栏前缀 拆出上下面板面板间切换前缀 方向键按方向移动焦点关闭面板/窗口前缀 x会提示确认用熟这一张表日常的终端管理已经可以流畅完成。剩余的高级操作等需要时再查帮助即可没必要一开始就强迫自己背完所有命令。4.2 把 cmux 嵌进开发工作流我实际开发中最常用的布局是三块面板左上方写代码、左下方跑测试、右侧实时看日志。手动分三次面板略显繁琐所以我会在项目目录放一个初始化脚本。脚本的核心内容就是把刚才的布局自动化。新建会话并进入指定项目目录然后执行左右分割、上下分割再在对应的面板里启动不同的命令cmux new -s dev -d -c cd ~/work/demo vim main.go cmux splitw -h -p 50 cmux splitw -v -p 30 cmux select-pane -L cmux send-keys -t dev:0.0 go test -v ./... C-m cmux attach -t dev这里splitw用于分割窗口-h表示水平分割-p接百分比控制面板尺寸send-keys可以把命令发送到指定面板并自动执行回车。这套流程跑起来后项目所需的完整环境就一键就位了。这种脚本化的能力让我把“环境准备”从重复劳动里摆脱了出来。每开一个新项目我先写好这个脚本后面每次进入开发状态只需执行一次脚本节省的时间非常可观。4.3 与 SSH 搭配的远程任务守护心得cmux 与 SSH 结合是重头戏。流程上先 SSH 登录远程机器然后在远程机器的终端里启动 cmux 会话在会话里运行部署、同步、批处理等任务。本地电脑可以随时断开cmux 会话不受影响重新连上远程机器后直接 attach 到原会话即可。我的一个习惯是聊天里经常会临时收到一个问题说“某个任务跑完了没”这时候不会跑到机器上再等而是直接 SSH 上去 attach 看一眼看完就 detach。因为 detach 只是一个快速动作不会打断会话内还在跑的任务这种“看一眼现场再走”的方式效率极高。另外一个值得注意的点是远程机器上如果配置了 SSH 的 ControlMaster 连接复用第二次、第三次 SSH 连接的速度会快很多。这是一项与本工具无关但配合体验极佳的技巧大家可以自己查阅相关资料。4.4 避开三个最常见的认知误区误区一是把 cmux 当成了 htop 那样的监视工具。cmux 只是容器它不会主动帮你管理进程状态一切进程行为依旧是系统的原样逻辑。误区二是不看配置就直接大量改写全局键位。我开始时想把前缀键改成别的组合结果改了之后有些终端模拟器自己的快捷键冲突反而乱了。建议先小范围尝试确认无冲突再固定到配置文件里。误区三是以为面板分割越细越好。面板过多会导致字号变小、路径显示不全处理复杂问题时很不舒服。我更推荐的做法是逻辑相关的任务放同一个窗口的面板逻辑不同的任务放到不同窗口靠编号切换反而更清晰。5. 常见问题与排查实录5.1 快捷键没有反应先检查焦点是否落在了 cmux 的管理终端里如果外层还有一个 ssh、su 或者其他捕获按键的程序前缀键可能被它们先截获。实践中最常见的场景是用户按了前缀键后直接松开之后按功能键时已经超过了快捷键组合的时间窗口。这种情况把按键节奏放快一些就能解决。如果是在图形终端里使用还可能是因为终端模拟器占用了Ctrlb组合。可以修改 cmux 的前缀键并在配置里显式声明规避冲突。5.2 面板大小错乱、显示花屏大面积输出日志或使用全屏编辑器时cmux 偶尔会出现重绘不完全。此时刷新整个界面的快捷键是先按前缀键再按Ctrll。实际上这个动作是向当前终端发送重绘请求让 cmux 重新计算每个面板的尺寸。如果花屏频繁检查自己是否开启了某些终端的自动换行特性部分终端模拟器的“自动换行”选项和 cmux 的面板渲染逻辑有冲突关掉之后往往恢复正常。5.3 配置文件修改后不生效一种常见的做法是改完配置文件直接按prefix :输入source ~/.cmux.conf手工加载。如果配置语法有错误cmux 通常会在线提示大部分情况下是漏写了空格、写错了关键字名、或尝试给不存在的窗口发送指令。为了快速定位可以用cmux list-commands查看全部支持的指令名或者用cmux show -g查看当前生效的全局配置和文件里的内容做比对。5.4 会话假死、attach 之后无响应这种情况经常出现在远程机器被重启、或者长时间挂机的场景。会话是存活了但会话内部可能有一个前台进程在等待输入把界面“卡”住了。此时不要急着杀会话先另开一个终端使用cmux send-keys -t 会话名 q尝试向会话内发送退出按键通常能唤醒。另一种方式是直接用另一个窗口发Ctrlc中断当前任务再重新执行。如果确实需要彻底清掉会话可以用cmux kill-session -t 会话名。5.5 一个实用的排查思路总结遇到问题时我通常按以下顺序排查先确认 cmux 进程还活着用cmux ls。确认目标会话和窗口编号存在用cmux list-windows -t 会话名。区分是 cmux 本身的问题还是会话内某个进程的问题用一个全新窗口做测试。修改配置时小步快跑每改一个关键项就看的生效结果避免多处改动同时引入问题。6. 影响范围与场景适配套路6.1 单兵作战的开发者对自由开发者或者一个人的项目团队cmux 可以当作一个轻量级的本地开发调度中心。早晨打开电脑终端里执行恢复脚本就已经自动挂好代码编辑环境、测试环境、日志环境。特别是对于多项目并行的情况每个项目一个命名清晰的会话切换项目就是切换会话不再需要反复 cd 和打开新的终端窗口。6.2 远程运维与自动化场景运维场景是 cmux 应用价值最明显的地方。批量分发文件、滚动更新服务、长时间执行数据迁移脚本这些任务都不希望受制于 SSH 连接的稳定性。通过 cmux 托管之后任务与连接彻底解耦。更进一步如果配合定时任务和脚本可以让会话在无人看守的状态下自己在后台运行运维人员只需要在结果需要确认的时刻 attach 上去看一眼。这种“挂了就走回来看结果”的模式能大幅降低值班盯屏幕的压力。6.3 团队协作与现场共享多个开发者在同一台临时调试机上排查问题时可以用同一个账号同时 attach 到同一个 cmux 会话。画面、操作流程完全同步非常适合远程教学、联合调试这种需要“看着同一个画面”的场景。需要注意的是多人同时操作同一个会话容易互相干扰。如果只是演示给别人看我的建议是让主操作人控制其他人只开只读的观察模式具体做法是 attach 时使用只读参数避免误操作。7. 最后聊点我自己的使用感受cmux 不是那种第一眼就惊艳的工具但它在日复一日的终端使用中提供了相当可靠的水位线。用了两三周之后我发现自己已经默认所有长时间任务都要放进 cmux 会话里否则心里就不踏实。最后分享一个我养成的习惯给所有会话起自解释的名字而不是默认的编号。这种命名的好处在会话数量超过五个之后会非常明显cmux ls一眼扫过去就知道哪个环境对应哪个项目不需要逐个 attach 进去确认。另外一个小心得是养成每天收尾时按prefix d脱离会话的习惯而不是直接关掉终端窗口。虽然两者都不会杀掉会话但前者是主动的、清晰的离开后者容易留下大量自己都记不清的会话时间久了反而造成另一种混乱。希望对你有用尝试着把 cmux 集成到自己的工作流里两周后你会感受到它的价值。

相关新闻

Java异常处理从入门到实战:从JVM传播机制到日志排查心法

Java异常处理从入门到实战:从JVM传播机制到日志排查心法

有一次帮同事排查线上问题,翻了一上午日志,终于找到那一行:NullPointerException。再往下翻,没了。没有堆栈、没有调用方、没有请求ID。异常被某个 catch 接住之后,只打了一行e.getMessage(),而 getMessage…

2026/10/10 4:17:41 阅读更多 →
AVL树的实现与避坑指南:旋转与平衡因子详解

AVL树的实现与避坑指南:旋转与平衡因子详解

AVL树这个东西,只要搞过一段时间的二叉搜索树,基本都会碰到。它本质上就是一棵“严格要求自己”的自平衡二叉搜索树,靠平衡因子把左右子树的高度差锁在可接受范围内,从而让查找、插入、删除的时间稳定在 O(logn) 级别。标题叫“AV…

2026/10/10 4:17:41 阅读更多 →
给大模型装上长期记忆:claude-mem对话记忆增强实战

给大模型装上长期记忆:claude-mem对话记忆增强实战

说起来你可能不信,我第一次试完这个“claude-mem”之后,最大的感受不是“AI变聪明了”,而是“原来它终于愿意记住我说的话了”。用过Claude这类大模型的人基本都有过类似的体验:同一个问题,你昨天问它,它给…

2026/10/10 4:17:41 阅读更多 →

最新新闻

Linux上Redis源码编译安装与systemd托管避坑指南

Linux上Redis源码编译安装与systemd托管避坑指南

在Linux上安装Redis,最迷惑人的地方往往不是步骤本身,而是你五分钟跑起来之后,后面几天陆陆续续暴露出来的问题。yum install redis或者apt install redis-server确实快,但当你需要固定版本、自定义存储目录、把日志和数据分开放的…

2026/10/10 4:58:23 阅读更多 →
用Python打造随机休息提醒助手:原理、实现与避坑

用Python打造随机休息提醒助手:原理、实现与避坑

1. 项目概述与需求分析1.1 为什么你需要一个"会随机响"的休息提醒助手先说个我自己的经历。前阵子做某个跨平台桌面工具,连续几周盯屏幕,每天坐下来就是四五个小时不动。结果某天起床,脖子疼到转头都费劲。去医院检查,医…

2026/10/10 4:58:23 阅读更多 →
PCA9422与PIC18F87K22协同实现嵌入式电源智能管理

PCA9422与PIC18F87K22协同实现嵌入式电源智能管理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:58:23 阅读更多 →
电子报纸订购系统数据库设计:从ER模型到并发事务实战

电子报纸订购系统数据库设计:从ER模型到并发事务实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:58:23 阅读更多 →
基于PCA9422与PIC18F86J15的低功耗电源管理方案设计

基于PCA9422与PIC18F86J15的低功耗电源管理方案设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 4:58:23 阅读更多 →
有奖答题页源码拆解:多语言切换、答题状态机与抽奖概率控制

有奖答题页源码拆解:多语言切换、答题状态机与抽奖概率控制

简介:一套基于HTML、CSS和JavaScript构建的有奖答题互动网页设计源码,同时融合多语言技术,可支持不同语言环境的知识竞赛与教育培训场景。压缩包共1645个文件,约60.48MB,其中以HTML/CSS/JS前端文件为主,包含…

2026/10/10 4:57:23 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →