sre-command-delivery
为服务器、Kubernetes 和网络排障及环境采集交付可复制命令,依据真实输出持续推进;适用于需要运维操作、堡垒机内执行命令或根据错误修正命令的请求。单纯概念讲解不触发。
SKILL.mdsre-command-delivery/SKILL.md
GitHub运维排障命令交付
让每轮交互推进用户的实际排障目标。用户要求行动、给命令或纠正环境事实时,解释不能代替下一步操作。
保持目标和证据链
- 从当前会话保留目标、已知对象、已执行操作、真实输出和剩余缺口。用户纠正设备类型或提出沟通问题时,纳入修正后继续原目标,不把纠正本身当作任务完成。
- 每轮给出能够减少关键不确定性的实际操作:有入口时执行已授权操作;只有用户能进入堡垒机时,简单查询交付简短命令,复杂采集交付文件及简短执行入口。只有确实缺少必要信息时才提问。
- 简短说明这轮要取得什么证据、怎样判断成功或失败,再给完整的简短命令或文件执行入口和结果返回方式。避免只说“仍可使用上一条”“需要继续排查”或把是否继续交还用户。
- 已取得的数据直接解析、对照、更新结论。把下一轮集中在尚缺证据,不要求重复采集已有效的数据,除非需要同步时间窗或验证新变化。
- 用现有主机、IP、接口、文件路径填好命令;能够从资产或现有输出推导的信息自行核对。不能确认的关键对象不能猜造。
依赖自查与纠正后的目标闭环
- 用户纠正版本、包名或执行入口时,先更新对象映射,再继续原目标;“解释了差异”不能替代原本要求的检查、修复方案或验证。
- 无源部署自查同时检查最新增量包、仍被代码消费的旧包及实际入口。沿 BOM → 归档内安装器 → 各角色执行顺序追踪,不能只搜索仓库中的 yum 字符串。
- 区分软件包管理器本体、在线软件源、本地 RPM 依赖闭包和镜像/chart 仓库。发现调用不等于已证明联网;包内有依赖不等于代码会在缺失时安装它。
- 优先执行已授权的只读检查或隔离测试来消除缺口。已有机器工具齐全时,明确它不能证明全新节点无源可部署;不得为了验收未经授权删除缓存、断网或安装包。
- 结论必须落到受影响角色、最小代码/物料改法、验证场景和未完成边界。修复方案应由正式步骤消费,不以现场临时命令替代用户要求的交付路径。
无源部署或离线物料自查时读取 离线依赖审计。需要理解一次“只解释新旧包而没有继续检查”的复盘时,可选读取 目标闭环案例;案例不作为当前环境事实或授权。
参数与设备核验
- 以具体软件版本、硬件型号、当前日志和官方文档为依据。冷门或容易混淆的参数先核对本机 help/man 或版本匹配的厂商文档;不要凭记忆把其他厂商、产品或模式的参数套入生产命令。
- 第一次出现参数或设备选择错误后,先查明参数语义再给下一条命令。不得连续只改一个参数让用户盲试。
- 区分计算加速卡、网络适配器、DPU、交换机与光模块。例如 PPU 计算节点可以使用 Mellanox/BlueField 网卡;网卡工具的适用性不由计算卡品牌决定。已确认 PPU 时,不继续用 NVIDIA 计算卡工具模板采集计算环境。
- 网口 → PCI function → 模块 → LLDP 对端分别核对。bond 名、eth 编号、PCI 地址和交换机子端口不是可互换的标识;不要将一台机器的编号复制为全部节点的事实。
- 命令选择错误与真实链路故障分开记录。命令没成功读到数据时,不判断设备异常。
生产终端执行边界(必须遵守)
- 禁止交付需要直接粘贴到生产终端执行的大段复杂脚本,尤其是 root 或其他高权限会话;查询、采集和标注“只读”的脚本同样适用。用户要求“给命令”时仍遵守本条。
- 按逻辑复杂度选择交付方式:包含多阶段采集、循环、并发、嵌入代码、异常处理或变更的复杂逻辑先做成可审阅文件;终端只给目标确认、摘要校验和执行的简短入口。普通、短小且范围明确的查询可直接给命令。
- 不用 heredoc 写入完整脚本、编码后解码、压成一行、拆成多次粘贴或直接下载后管道执行来规避文件交付;这些形式不能替代内容审核和完整性校验。
- 执行前审核权限、目标、逻辑、查询负载、超时、停止条件及恢复措施,在获准环境完成相应测试和小范围验证;缺少现场验证时明确缺口,不将“只读”、哈希匹配或语法通过当作生产安全证明。AI 生成内容同样审核,降低权限不能替代验证。
- 解释实际环境风险:粘贴截断、换行异常或内容混入可能导致误执行或部分执行;高权限误操作可能损坏配置、删除文件或中断服务;批量查询可能增加 API Server、kubelet 与操作节点负载。历史记录占用、信息留存和审计追溯也要考虑,但不能只讨论审计风险。
- 留存脚本版本、校验值、执行主体、目标、时间及逐项结果;采集文件限制访问。讲清可能风险与已经发生的影响,不因操作方式问题虚构故障、违规或审批缺失。
准备复杂生产采集或操作脚本时,读取 生产脚本交付与执行。需要理解此约束的来由时,可选读 终端长脚本执行复盘;案例不提供当前环境事实或执行授权。
可执行交付
交付或修订 Ansible 部署入口、阶段包时,先按 最终入口发布验证 在助手侧验证最终物料与实际调用方式;普通只读排障命令不触发这套发布检查。复杂生产采集仍须遵守上面的文件交付边界。
- 明确执行位置:本机、堡垒机、控制节点、目标主机或交换机 CLI。在正确 shell 中组织命令;需要远程执行时正确保护变量和 heredoc,避免本地提前展开。
- 对同一证据链中已明确的多个对象适当批量采集,减少用户来回复制。控制采集量,只保留诊断所需字段和可追溯原始输出。
- 使用有界超时、非交互 SSH、逐项退出码、时间戳与对象标识。远程脚本或外层 SSH 返回 0,不等于每个采集命令成功;必须检查各项状态和数据内容。
- 输出可在当前终端查看,必要时保存到具体目录并给出打包/传回命令。仅在会话确认终端支持时使用 sz;传输被中断不等于采集失败。
- 参数或设备查询失败时保留错误文本、工具版本和 help 输出。不能用空表、默认值、整段“完成”提示掩盖失败。
- 在现有授权内推进;只读采集与重启、清计数、改配置、安装驱动等变更分开。不能为了读数据未经授权开启破坏性实验或变更配置。
占位符禁令(铁律,与 workbuddy 安装版同步维护)
- 禁止一切占位符:
<prod>、<任务名>、POD这类需用户替换的占位绝不出现——用户会原样粘贴执行(2026-09-09/10 三次、2026-10-09 再犯)。占位符落在参数位会被 shell 按重定向解析,直接报syntax error near unexpected token newline。 - 信息不全先探测后给命令:缺 pod 名/CM 名/资源类型时,只发取信息的探测命令(如
kubectl api-resources --verbs=list | grep -iE "job|podgroup"),等真实输出回来再发完整命令;绝不发"替换 POD 后执行"的半成品命令。 - 资源类型/CRD 名禁止按社区版猜测:定制平台对象名不同(实证:brainpp 定制 volcano 用自研 RJob 与 podgroups.scheduler.brainpp.cn,无 vanilla vcjob)。
- 发送前逐字符自查;多副本组件(如 volcano-scheduler x3)
logs deploy/只取一个实例,需逐实例抓或先定 leader。 - 每次给排查命令前必须先加载本 skill,不凭通用经验直接交付(2026-10-09 违规根因:纪律已成文但会话未加载 skill)。
kubectl 查询陷阱(2026-10-09 实证)
- custom-columns 字段名含点(如 nvidia.com/gpu)会被简写路径按点拆解,输出 <none> 假象;须引号包裹或改用 jsonpath。
- AGE 粗值(15m/10m)相减不能当延迟测量,误差带重叠;延迟只用事件时间戳。
- 多同名 CRD(三个 PodGroup 版本)短名解析有歧义,查询用 FQDN 全称。
Windows 生成、Linux 消费的交付验收
适用于在 Windows 制作 Linux 脚本、校验清单或部署归档的任务;普通报告不需要套用。
- 面向 Linux 消费的脚本、清单和机器可读配置显式使用 UTF-8 无 BOM(纯 ASCII 清单也可)与 LF。Python 使用
write_bytes()写确定字节,或open(..., encoding="utf-8", newline="\n");仅指定 encoding 不会禁止 Windows 换行转换。 - 写出后读取最终文件的原始字节,确认没有意外 CRLF 或 BOM;文本模式读取会归一化换行,不能用于这项验收。不要对二进制归档做换行转换。
- 验证对象包括压缩包、外部
SHA256SUMS、包内清单、更新器以及给用户的命令。内部摘要比对、代码测试与归档可读性不能替代最终清单的实际消费验证。 - 交付前在 WSL、容器或已获准的 Linux 隔离临时目录,以最终交付字节和同一条命令执行
sha256sum -c,校验通过后解压,再检查入口和必要文件。执行更新器时只操作 fixture;没有目标系统时明确未完成兼容验收,不声称现场可用。修改交付文件后重验受影响文件及摘要链。 - 现场出现文件名末尾
$'\r'时,先核对清单原始字节,不先判断包缺失或要求重传。可在读取清单时删除 CR 后继续标准摘要校验;不得跳过校验、吞掉失败或把文本转换应用于归档。 - 验收边界分别报告:校验通过、解压成功、代码更新成功、准备阶段成功、部署成功。某一层成功不能替代下一层;有明确证据后只补缺失验证。
需要分析一次漏测校验清单的故障时,可选读取 校验清单 CRLF 复盘;它不提供当前环境事实或部署授权。
结论与交付检查
发送前核对:命令是否在用户的执行入口可运行;参数是否适用于已确认版本;对象是否一一对应;输出能否回答这一轮的目标;失败结果是否也能返回。
结论区分“观察到什么”“因此优先查什么”和“还缺什么才能证实”。累计值要附时间窗,缺失计数不能当 0,单侧观测不能证明双侧链路健康。
RoCE 光衰、mlxlink、FEC/BER 或分拆端口排查时,读取 references/roce-optics.md。具体资产 IP、内部主机名、现场原始日志留在任务产物,不写入可复用 Skill。