# PR #2567 完整报告

- 仓库：`radixark/miles`
- 标题：Install tmux into the training image
- 合并时间：2026-08-16 03:55
- 原文链接：http://prhub.com.cn/radixark/miles/pull/2567

---

# 执行摘要

- 一句话：训练镜像 apt 装 tmux，SSH 断线后可恢复长任务
- 推荐动作：不值得精读，属于一行镜像依赖变更；但拆链策略值得借鉴：把触碰 `docker/` 的变更从大型功能链单独拆出，避免每次 push 触发完整多架构镜像重建，是高效的 CI 资源管理习惯。若你在维护训练镜像或 devbox 工作流，可直接合并此类变更。

# 功能与动机

PR body 说明：'A run that outlives its ssh session needs a multiplexer to come back to, and the image ships none, so every long training or debugging session on a devbox starts by apt-installing one by hand.' 即长任务超出 SSH 会话生命周期后需要复用器来回到会话，但镜像未内置，导致每次在 devbox 上都要手动 apt 安装；同时从 #2542 拆出，避免该变更迫使整条链每次 push 都做完整镜像重建。

# 实现拆解

1. 修改 `docker/Dockerfile` 第 41-47 行的诊断工具安装段：在 `RUN apt install -y nvtop rsync dnsutils ethtool` 后追加 `tmux`，与既有的 `nvtop`、`rsync` 等诊断工具共用同一个 RUN 层，不改动其他安装逻辑，也不增加镜像层数。
2. 从 deliver-2 链（#2542）中拆出独立 PR：因为它是该链唯一触碰 `docker/` 的变更，独立后该链后续 push 不需要再触发完整多架构镜像重建，降低 CI 开销。
3. 配套检查：本 PR 无测试、配置、schema 或部署配套改动；镜像构建流程在下次构建时自动验证 `tmux` 可安装，属于不可变基础设施变更。

关键文件：
- `docker/Dockerfile`（模块 镜像构建；类别 infra；类型 infrastructure）: 唯一变更文件，在训练镜像的 apt install 诊断工具行追加 tmux，使镜像原生支持 SSH 断线后恢复长任务会话。

关键符号：未识别


# 评论区精华

无实质技术讨论。claude[bot] 仅提示该仓库配置了手动 code review，可输入 `@claude review` 触发；Shi-Dong 直接批准，无评论。没有设计权衡争议。

- 暂无高价值评论线程

# 风险与影响

- 风险：低风险的一行变更，具体风险包括：
 - 镜像层缓存失效：`docker/Dockerfile` 中该 RUN 层内容变化会使其及后续层缓存失效，镜像重建耗时略有增加；
 - apt 依赖可用性：若构建基础镜像的 apt 源不提供 `tmux` 包，镜像构建会失败（主流基础镜像均包含 `tmux`，概率极低）；
 - 无测试覆盖：该变更没有配套测试，Dockerfile 内容由镜像构建流程验证，可接受。
不影响运行时 Python/ 训练逻辑。

- 影响：影响面小，但受益对象明确：
 - 用户：在 devbox 上做长时间训练 / 调试的开发者，SSH 断线后可通过 `tmux attach` 恢复会话，省去手动 `apt` 安装，减少中断损失；
 - 系统：训练镜像体积有极小增加，镜像内容变化会触发一次重新构建与推送；
 - 团队：拆链策略（从 #2542 拆出）让镜像相关调整可以独立小步落地，避免与大型功能链耦合。
 - 风险标记：镜像层缓存失效 , apt 依赖可用性

# 关联脉络

- PR #2542 deliver-2 链（标题未在上下文中提供）: PR body 明确说明本变更从 #2542 拆分，是该链唯一触碰 docker/ 的改动，拆出是为了避免迫使整条链每次 push 都触发完整多架构镜像重建。