变更方案自动审核助手
v3.1变更方案自动审核助手 — 必要条件:变更方案(docx)+部署表(xlsx);可选:纳管表(xlsx)。三文档交叉核验,按P0-P3风险分级输出Word审核报告
运行时依赖
安装命令
点击复制技能文档
变更方案自动审核助手 v3.1
必要条件:变更方案 .docx + 部署表 .xlsx。可选:纳管表 .xlsx。自动交叉核验,找出不一致信息和明显错误,按 P0-P3 风险分级生成 Word 审核报告并直接发送到聊天窗口。过程文件自动归档。
触发条件 触发方式 判定标准 关键词 审核部署方案 / 帮我看下部署方案 / 帮我审核方案 / 部署方案有问题 / 帮我检查方案 / 帮我审一遍 文件上传 用户上传 .docx 方案 + .xlsx 部署表(可选 + .xlsx 纳管表) 路径指定 用户指明文件路径,如"审核 /path/to/方案.docx 和 /path/to/部署表.xlsx" 必要条件(硬性约束)
⚠️ 部署方案 .docx + 部署表 .xlsx 缺一不可。 仅收到单个文件时不做任何解读,直接回复提示缺少文件。
收到的文件 行为 只有 1 个文件 ❌ 拒绝,提示用户补齐缺失的必要文件 方案+部署表(无纳管表) ⚠️ 询问用户是否有纳管表(见 Step 0.2) 方案+部署表+纳管表 ✅ 直接进入全量审核 核心流程(6步) Step 0 — 输入校验(必须执行)
在处理任何文档内容之前,必须完成输入检查。
Step 0.1 必要条件校验
部署方案 .docx + 部署表 .xlsx 二者缺一不可。
场景 行为 只收到 1 个文件 拒绝,不做任何解析。回复示例见下方 只收到纳管表 同上,告知纳管表是辅助材料,需配合方案+部署表使用 方案+部署表齐全 继续 Step 0.2 三件齐备 跳过 Step 0.2,直接进入 Step 1
单文件拒绝回复模板:
⚠️ 审核需要至少两份必要文件:变更方案(.docx) + 部署表(.xlsx)
当前仅收到:{文件名} 缺少:{缺失项}
请补充后重新提交。
Step 0.2 纳管表可选检查
当方案+部署表齐全但无纳管表时,必须使用 clarify 工具询问用户:
"收到变更方案和部署表,但未提供纳管表。纳管表用于核验服务器纳管状态(C类检查)。请问:"
选项:
A. 稍后提供 — 等你发送纳管表后再继续 B. 没有纳管表,需要找项目经理要 — 回复获取建议 C. 跳过纳管表校验 — 仅执行 A/B/D 类审核(不检查纳管状态)
用户选 C 后,将 manage_path 传 None,仅执行 A/B/D 类审核。 用户选 A/B 后,等待用户补充或回复。
Step 1 — 保存原始输入
任何输入在处理前必须先存档,防止后续覆盖:
from pathlib 导入 Path 导入 shutil from datetime 导入 datetime
技能_DIR = Path.home() / '.hermes/技能s/OpenClaw-导入s/部署-plan-review' RAW_DIR = 技能_DIR / 'data' / 'raw' RAW_DIR.mkdir(parents=True, exist_ok=True)
ts = datetime.now().strftime('%Y-%m-%d_%H%M%S') for label, src in [('plan', plan_path), ('部署', 部署_path), ('manage', manage_path)]: if src and Path(src).exists(): shutil.copy2(src, RAW_DIR / f'{ts}_{label}_{Path(src).name}')
Step 2 — 识别方案类型并确定模板
根据文件名和内容判断方案类型,确定对应模板:
方案类型 匹配关键词 对应模板目录 私有云-计算扩容(VLAN) 私有云 + 计算 + VLAN /home/部署_template/私有云/计算/普通计算/VLAN 私有云-计算扩容(VXLAN) 私有云 + 计算 + VXLAN /home/部署_template/私有云/计算/普通计算/VXLAN 私有云-存储扩容 私有云 + 存储 /home/部署_template/私有云/存储/存储扩容 私有云-裸金属扩容 裸金属 /home/部署_template/私有云/裸金属/* 行业云-计算扩容(VLAN) 行业云 + 计算 + VLAN /home/部署_template/行业云/计算/普通计算/vlan 行业云-计算扩容(VXLAN) 行业云 + 计算 + VXLAN /home/部署_template/行业云/计算/普通计算/vxlan 行业云-存储扩容 行业云 + 存储 /home/部署_template/行业云/存储/原集群扩容 ... (完整24种见原版)
匹配优先级:文件名 → 文件路径 → 正文第一段 → 让用户确认
Step 3 — 调用审核引擎
直接调用 scripts/生成_review_报告.py,不要再手动写 Python:
导入 sys sys.path.insert(0, str(Path.home() / '.hermes/技能s/OpenClaw-导入s/部署-plan-review'))
from scripts.生成_review_报告 导入 运行_审计
结果 = 运行_审计( plan_path="/path/to/变更方案.docx", 部署_path="/path/to/部署表.xlsx", manage_path="/path/to/纳管表.xlsx" # 可选 )
返回的 结果 字典结构:
{ "plan_name": "方案文件名(不含扩展名)", "plan": {...}, # 方案解析结果 "部署": {...}, # 部署表解析结果 "manage": {...}, # 纳管表解析结果(可能为 None) "findings": [...], # 全部审核发现列表 "docx_path": "输出/审核报告_xxx.docx", "xlsx_path": "输出/问题跟踪_xxx.xlsx", "summary": { "p0": N, "p1": N, "p2": N, "p3": N, "total": N, "conclusion": "通过/条件通过/不通过", "timestamp": "2026-05-09_143025", }, "raw_归档d": "data/raw/", }
Step 4 — 发送报告到聊天窗口
审核完成后,必须将 Word 报告发送到当前聊天窗口:
报告已生成,请查收: MEDIA:
同时发送一份文字摘要:
📋 审核完成 — {plan_name}
风险统计:🔴P0={p0} 🟡P1={p1} 🔵P2={p2} ⚪P3={p3} 审核结论:{conclusion}
关键发现:
- {列举前3条最高风险问题}
详细报告请下载上方文件。 问题跟踪表:{xlsx_path}
Step 5 — 结果留存
所有过程文件统一在 技能 目录下:
~/.hermes/技能s/OpenClaw-导入s/部署-plan-review/ ├── 技能.md ├── scripts/ │ └── 生成_review_报告.py # 审核引擎 ├── 输出/ # 审核报告输出 │ ├── 审核报告_方案名_2026-05-09_143025.docx │ └── 问题跟踪_方案名_2026-05-09_143025.xlsx ├── data/ │ ├── raw/ # 原始输入存档 │ │ ├── 2026-05-09_143025_plan_变更方案.docx │ │ ├── 2026-05-09_143025_部署_部署表.xlsx │ │ └── 2026-05-09_143025_manage_纳管表.xlsx │ └── 问题跟踪表.xlsx # 全量历史问题库
审核基准
核心原则:所有审核以 /home/部署_template/ 下的方案模板为基准,不主观判断。
审核分四大类:
A类 — 结构合规性(以模板为准) 检查项 风险ID 审核方法 章节完整性 P1-07 匹配变更需求/变更安排/变更步骤/割接回退四章 表格完整性 P1-06 版本修订记录表是否更新(非空白/非占位) 人员表完整 P1-03 实施/复核/审批/客户四角色是否齐全 占位符替换 P2-01 搜索 {XXX} [待补充] [填写] XXX资源池 B类 — 数据一致性(方案 vs 部署表) 检查项 风险ID 审核方法 节点数量 P0-02 方案标题"新建N台" vs 部署表行数 CPU/OS架构 P0-03 方案中 x86/aarch64 vs 部署表CPU列 yum源架构 P0-04 repo URL架构 vs 部署表CPU架构 mon IP P0-05 mon节点IP是否在存储IP段内 AZ为空 P0-06 方案说"新建AZ"但部署表az=NULL 标题正文矛盾 P1-01 标题数量 vs 正文数量 节点IP不一致 P1-02 方案IP vs 部署表IP交叉比对 C类 — 纳管表交叉核验(新增) 检查项 风险ID 审核方法 服务器缺失 P0-08 部署表中IP是否全部在纳管表中 IP不一致 P0-09 同IP下部署表与纳管表的hostname是否一致 状态异常 P3-01 纳管表中是否存在非"已纳管"状态 AZ不一致 P3-02 同IP下部署表AZ vs 纳管表AZ D类 — 编辑质量 检查项 风险ID 审核方法 错别字 P2-02 扩融→扩容、资原池→资源池 等8组检测 编号错误 P2-04 章节编号是否跳跃 占位符 P2-01 全文正则搜索 命名规范 P2-06 文件名格式检查 风险等级体系(四级) 🔴 高危风险(P0 — 必须改,不改将导致部署失败或业务中断) ID 风险项 判定标准 P0-01 IP地址冲突 多个节点使用同一IP,或与生产环境IP段重叠 P0-02 IP不连续/数量不符 IP区间数量 ≠ 实际节点数 P0-03 CPU/OS架构矛盾 方案x86但部署表aarch64(或反之) P0-04 yum源架构不匹配 repo URL架构(aarch64/x86_64)与节点不一致 P0-05 监控s数量/IP错误 mon IP不在存储IP段,或数量<3 P0-06 AZ字段为NULL但方案说新建 新建AZ场景下部署表az列为空 P0-07 关键步骤缺失 缺少模板中标记为「必须/必做」的操作步骤 P0-08 纳管表服务器缺失 部署表中的服务器在纳管表中不存在 P0-09 纳管IP不一致 部署表管理IP与纳管表管理IP不一致 🟡 中危风险(P1 — 建议改,不影响部署但影响正确性) ID 风险项 判定标准 P1-01 标题与正文矛盾 标题数量与正文数量不一致 P1-02 节点信息不一致 方案节点列表与表格/部署表不一致 P1-03 变更人员表不完整 实