變更方案自動稽核助手

👤 bounding-elk 📦 v3.3.1 ⭐ 4.3 ⬇️ 697 下載
📄 辦公效率 免費

📖 技能介紹


name: deploy-plan-review description: 變更方案自動稽核助手 — 全員開放;變更方案docx必須提供,部署表xlsx預設必須提供(除非使用者明確不要部署表);以/home/deploy_template下模板為基準,優先按方案檔名關鍵詞定位模板;預設返回精簡Markdown並儲存Word報告 version: 3.3.1 author: Hermes created: 2026-04-30 updated: 2026-05-20


變更方案自動稽核助手 v3.3.1

核心目標:基於 /home/deploy_template/ 下的標準變更方案模板,對使用者提供的變更方案進行模板對比稽核。預設直接返回精簡 Markdown 稽核報告,並同時生成 Word 稽核報告落盤儲存。變更方案和部署表是預設稽核前提;只有使用者明確強調不要部署表時,才跳過部署表一致性校驗。


觸發條件

觸發方式 判定標準
關鍵詞 稽核部署方案 / 幫我看下部署方案 / 幫我稽核方案 / 部署方案有問題 / 幫我檢查方案 / 幫我審一遍
檔案上傳 使用者上傳 .docx 變更方案 + .xlsx 部署表;可選上傳納管表 .xlsx
路徑指定 使用者指明檔案路徑,如"稽核 /path/to/變更方案.docx 和 /path/to/部署表.xlsx";若只給方案路徑,需補充部署表或明確不要部署表

輸入前提

變更方案(.docx) — 必須提供,這是稽核的核心材料。部署表(.xlsx) — 必須提供,除非使用者強調不要部署表。

納管表是可選增強材料;缺少納管表時不阻塞稽核。

收到的檔案 行為
只有變更方案 .docx,且使用者未說明不要部署表 ❌ 暫不稽核,提示使用者補充部署表或明確確認不要部署表
只有變更方案 .docx,且使用者明確說不要部署表 ✅ 執行模板對比稽核,並註明跳過部署表一致性校驗
方案+部署表 ✅ 執行模板對比 + 部署表一致性校驗
方案+部署表+納管表 ✅ 執行全量稽核
只有 xlsx 或非方案檔案 ❌ 提示缺少變更方案 .docx

核心流程(6步)

Step 0 — 輸入校驗(必須執行)

在處理任何文件內容之前,必須完成輸入檢查。

Step 0.1 必要輸入校驗

必須先確認存在變更方案 .docx 和部署表 .xlsx。僅當用戶明確說不要部署表時,部署表可預設。

場景 行為
未收到 .docx 方案 拒絕,不做解析。提示使用者補充變更方案
僅收到 .docx 方案,使用者未說明不要部署表 暫停稽核。提示使用者補充部署表,或明確回覆"不要部署表/跳過部署表校驗"
僅收到 .docx 方案,使用者明確不要部署表 繼續 Step 1,只執行模板對比稽核,並在報告中註明部署表校驗被使用者要求跳過
收到 .docx + 部署表 繼續 Step 1,執行模板對比和 B 類校驗
收到 .docx + 部署表 + 納管表 繼續 Step 1,執行全量稽核

缺少必要材料回覆模板:

⚠️ 稽核預設需要兩份必要材料:變更方案(.docx) + 部署表(.xlsx)

當前僅收到:{檔名}
缺少:{變更方案(.docx) 或 部署表(.xlsx)}

請補充後重新提交;如果本次明確不需要部署表,請回復“不要部署表”或“跳過部署表校驗”。

Step 0.2 可選材料處理

部署表和納管表按以下規則處理:

  • 無部署表且使用者未明確不要部署表:暫停稽核,要求補充部署表或確認跳過。
  • 無部署表但使用者明確不要部署表:只做模板結構、關鍵步驟、編輯質量稽核;在報告"稽核範圍"中註明"按使用者要求跳過部署表一致性校驗"。
  • 無納管表:跳過 C 類納管表校驗;在報告"稽核範圍"中註明未做納管狀態校驗。
  • 使用者明確要求全量稽核時,必須要求補充納管表後再執行 C 類校驗。

Step 1 — 儲存原始輸入

任何輸入在處理前必須先存檔,防止後續覆蓋:

from pathlib import Path
import shutil
from datetime import datetime

SKILL_DIR = Path.home() / '.hermes/skills/openclaw-imports/deploy-plan-review'
RAW_DIR = SKILL_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), ('deploy', deploy_path), ('manage', manage_path)]:
    if src and Path(src).exists():
        shutil.copy2(src, RAW_DIR / f'{ts}_{label}_{Path(src).name}')

Step 2 — 識別方案型別並確定模板(必須優先執行)

模板選擇是本技能的核心。必須先根據使用者給出的方案檔名關鍵詞,在 /home/deploy_template/ 下定位最相近模板,再以該模板為基準稽核。

Step 2.1 模板發現

執行時遞迴掃描 /home/deploy_template/ 下所有 .docx 模板,構建候選模板清單。不得使用硬編碼模板清單代替實際目錄;目錄新增模板時應自動參與匹配。

Step 2.2 關鍵詞提取優先順序

按以下順序提取關鍵詞並打分:

  1. 方案檔名:最高優先順序。示例:9月10日-青海西寧三區-x86+culinux-新建儲存叢集擴容變更方案.docx
  2. 使用者文字描述/路徑:如使用者說"行業雲端儲存新建"、路徑中包含"行業雲"。
  3. 方案正文首頁/標題/前兩級標題:僅在檔名資訊不足時使用。

    7w4.net有更好的技能外掛。

  4. 反問使用者:私有云/行業雲或場景無法唯一確定時再問。

Step 2.3 關鍵詞路由規則

識別維度 關鍵詞 路由規則
雲型別 行業雲雙引擎骨幹一區/二區/三區/四區 等行業雲資源池命名 優先匹配 /home/deploy_template/行業雲/
雲型別 私有云、明確私有資源池描述 優先匹配 /home/deploy_template/私有云/
產品 儲存叢集ceph塊儲存儲存 匹配對應雲型別下 儲存/
產品 物件儲存RGWYIGhoss 匹配 物件儲存/RGW&Dims&CSG/
產品 NAS 匹配 NAS/
產品 裸金屬 匹配 裸金屬/
產品 GPUL型雲桌面增強型計算 匹配 計算/ 下對應子目錄
網路 VLANVXLANvlanvxlan 在計算/裸金屬等多模板場景中繼續縮小範圍
場景 新建新建AZ新增AZ新叢集 優先匹配模板名含 新建新增新AZ 的模板
場景 原叢集擴容原AZ擴容 優先匹配模板名含 原叢集擴容原AZ擴容 的模板
架構/系統 x86aarch64armculinux 用於校驗,不作為雲型別決定依據

Step 2.4 指定示例的強制匹配

當方案名類似 9月10日-青海西寧三區-x86+culinux-新建儲存叢集擴容變更方案.docx

  • 青海西寧三區 命中行業雲資源池命名特徵;
  • 新建儲存叢集 命中行業雲端儲存新建場景;
  • 必須優先選擇:
/home/deploy_template/行業雲/儲存/_儲存叢集新建融合模板-涵蓋所有儲存叢集新建場景-模板.docx

並在報告中明確寫出:本次稽核基準模板:/home/deploy_template/行業雲/儲存/_儲存叢集新建融合模板-涵蓋所有儲存叢集新建場景-模板.docx

Step 2.5 模板不唯一時的反問

僅在無法判斷私有云/行業雲,或同一路徑下多個模板得分接近且會影響稽核結論時,才反問使用者。反問必須說明原因,並告知使用者稽核是基於模板完成的。

反問示例:

我會根據 /home/deploy_template 下的標準模板進行對比稽核,但當前檔名無法明確判斷是“私有云”還是“行業雲”場景。

請確認本次方案屬於哪類:
1. 私有云
2. 行業雲

使用者確認後,繼續定位模板並稽核。不要在不確定雲型別時擅自混用私有云和行業雲模板。

Step 3 — 呼叫稽核引擎

優先呼叫 scripts/generate_review_report.py,不要重複手寫稽核邏輯。呼叫時必須傳入 Step 2 定位到的模板路徑;如當前引擎尚未支援 template_path 引數,必須先按指令碼現有能力完成稽核,並在報告中單獨補充模板對比結論。

import sys
sys.path.insert(0, str(Path.home() / '.hermes/skills/openclaw-imports/deploy-plan-review'))

from scripts.generate_review_report import run_audit

result = run_audit(
    plan_path="/path/to/變更方案.docx",
    deploy_path="/path/to/部署表.xlsx",  # 預設必須;僅使用者明確不要部署表時可為 None
    manage_path="/path/to/納管表.xlsx",  # 可選
    template_path="/home/deploy_template/行業雲/儲存/_儲存叢集新建融合模板-涵蓋所有儲存叢集新建場景-模板.docx"
)

返回的 result 字典結構:

{
    "plan_name": "方案檔名(不含副檔名)",
    "template_path": "本次採用的模板路徑",
    "plan": {...},        # 方案解析結果
    "deploy": {...},      # 部署表解析結果(使用者明確不要部署表時可能為 None)
    "manage": {...},      # 納管表解析結果(可能為 None)
    "findings": [...],    # 全部稽核發現列表
    "docx_path": "output/稽核報告_xxx.docx",
    "xlsx_path": "output/問題跟蹤_xxx.xlsx",
    "summary": {
        "p0": N, "p1": N, "p2": N, "p3": N,
        "total": N,
        "conclusion": "通過/條件通過/不通過",
        "timestamp": "2026-05-09_143025",
    },
    "raw_archived": "data/raw/",
}

Step 4 — 預設返回精簡 Markdown,並儲存 Word 報告

稽核完成後,預設在聊天視窗直接返回 Markdown 稽核報告。內容要精簡,優先列出結論、基準模板、風險統計和必須修改項,避免長篇過程描述。

預設 Markdown 格式:

## 稽核結論:{通過/條件通過/不通過}
方案:{plan_name}
基準模板:{template_path}
稽核範圍:{模板對比 + 部署表一致性 / 模板對比(按使用者要求跳過部署表一致性校驗)}{+納管表校驗}
跳過項:{無 / 按使用者要求跳過部署表一致性校驗 / 未提供納管表,跳過納管狀態校驗}
風險統計:🔴P0={p0}  🟡P1={p1}  🔵P2={p2}  ⚪P3={p3}

### 必須修改
- {只列 P0/P1,最多 5 條;無則寫“無”}

### 建議最佳化
- {只列關鍵 P2/P3,最多 3 條;無則寫“無”}

Word報告已儲存:{docx_path}
問題跟蹤表:{xlsx_path 或 “未生成”}

同時必須生成 Word 報告並儲存到 output/,路徑寫入 Markdown。除非使用者明確要求,不要把完整 Word 內容逐段貼到聊天中。

Step 5 — 結果留存

所有過程檔案統一在 skill 目錄下:

~/.hermes/skills/openclaw-imports/deploy-plan-review/
├── SKILL.md
├── scripts/
│   └── generate_review_report.py   # 稽核引擎
├── output/                          # 稽核報告輸出
│   ├── 稽核報告_方案名_2026-05-09_143025.docx
│   └── 問題跟蹤_方案名_2026-05-09_143025.xlsx
├── data/
│   ├── raw/                         # 原始輸入存檔
│   │   ├── 2026-05-09_143025_plan_變更方案.docx
│   │   ├── 2026-05-09_143025_deploy_部署表.xlsx
│   │   └── 2026-05-09_143025_manage_納管表.xlsx
│   └── 問題跟蹤表.xlsx              # 全量歷史問題庫

稽核基準

核心原則:所有稽核以 /home/deploy_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-10 全文搜尋密碼/口令關鍵字及疑似密碼模式

風險等級體系(四級)

🔴 高危風險(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 monitors數量/IP錯誤 mon IP不在儲存IP段,或數量<3
P0-06 AZ欄位為NULL但方案說新建 新建AZ場景下部署表az列為空
P0-07 關鍵步驟缺失 缺少模板中標記為「必須/必做」的操作步驟
P0-08 納管表伺服器缺失 部署表中的伺服器在納管表中不存在
P0-09 納管IP不一致 部署表管理IP與納管表管理IP不一致
P0-10 明文密碼洩露 方案全文出現疑似明文密碼的具體憑證(如 ansible_ssh_pass="實際密碼"、連線字串含密碼等),排除佔位符模式(xxxxxx/替換為真實密碼 等)
P0-10 明文密碼洩露 方案全文出現疑似密碼模式的明文憑證,包括但不限於:密碼/口令關鍵字後跟≥8位字串(如 ansible_ssh_pass="xxxxxx"password: xxxroot密碼 後接具體值、連線字串中的明文密碼等);判定標準:① 方案正文中出現 ansible_ssh_passsshpasspasswordpasswdsecret 等關鍵字後直接跟有具體字串值(非"xxxxxx"/"xxx"/"密碼"等佔位符),即觸發P0;② 若關鍵字後跟的是佔位符(如 xxxxxx<password>******),不觸發;③ 部署表中的密碼列不觸發(部署表屬於運維憑據清單,但方案文件中仍建議脫敏)

🟡 中危風險(P1 — 建議改,不影響部署但影響正確性)

ID 風險項 判定標準
P1-01 標題與正文矛盾 標題數量與正文數量不一致
P1-02 節點資訊不一致 方案節點列表與表格/部署表不一致
P1-03 變更人員表不完整 實施/複核/審批/客戶角色缺失
P1-04 變更時間不合理 時間已過或視窗時長不合理
P1-05 配置引數錯誤 expand/config.json與部署表不一致
P1-06 版本修訂記錄未更新 版本修訂表為空白或佔位符
P1-07 章節缺失 缺少非關鍵章節(如割接回退)
P1-08 網路配置矛盾 VLAN/VXLAN模式不一致

🔵 低危風險(P2 — 按需修改,規範性/編輯類問題)

ID 風險項 判定標準
P2-01 佔位符未替換 仍含 {XXX}、[待補充] 等模板佔位符
P2-02 文字錯別字 「擴融」「資原池」「部暑」等
P2-03 格式不一致 標題字號不統一
P2-04 編號錯誤 章節編號跳躍
P2-05 截圖/圖片缺失 「截圖示例」未替換
P2-06 檔案命名不規範 缺少日期或資源池名
P2-07 操作記錄表格式錯誤 列名或格式與模板不一致

⚪ 提示資訊(P3 — 僅供參考)

ID 風險項 判定標準
P3-01 納管表狀態異常 存在非「已納管」狀態的伺服器
P3-02 納管表AZ不一致 納管表AZ與部署表AZ不匹配

稽核結論判定

結論 判定規則
通過 無 P0 項,且 P1+P2 ≤ 3 項
⚠️ 條件通過 無 P0 項,P1 項 ≤ 5 項,修改意見已明確標註
不通過 存在 P0 項,或 P1 項 > 5 項

CLI 用法(可選)

稽核引擎支援命令列獨立執行:

cd ~/.hermes/skills/openclaw-imports/deploy-plan-review

python3 scripts/generate_review_report.py \
    --plan /path/to/變更方案.docx \
    --deploy /path/to/部署表.xlsx \
    --template /home/deploy_template/行業雲/儲存/_儲存叢集新建融合模板-涵蓋所有儲存叢集新建場景-模板.docx

# 如有納管表,再追加 C 類納管校驗
python3 scripts/generate_review_report.py \
    --plan /path/to/變更方案.docx \
    --deploy /path/to/部署表.xlsx \
    --template /path/to/模板.docx \
    --manage /path/to/納管表.xlsx

# 僅當用戶明確不要部署表時,才允許只做模板對比稽核
python3 scripts/generate_review_report.py \
    --plan /path/to/變更方案.docx \
    --template /path/to/模板.docx

# JSON 輸出(供程式呼叫)
python3 scripts/generate_review_report.py \
    --plan ... --template ... --deploy ... --manage ... \
    --json

邊界情況

  • 只有變更方案,且使用者未明確不要部署表:暫停稽核,提示補充部署表或確認跳過部署表校驗
  • 只有變更方案,且使用者明確不要部署表:只稽核模板結構和關鍵步驟,報告中註明"按使用者要求跳過部署表一致性校驗"
  • 只有部署表或納管表:拒絕解析,提示缺少變更方案 .docx
  • 無法判斷私有云/行業雲:反問使用者,說明稽核將基於 /home/deploy_template/ 模板完成
  • 模板候選不唯一:列出最可能的 2-3 個模板讓使用者選擇,不要混用模板
  • 無納管表:跳過 C 類校驗,並在稽核範圍中註明
  • 無部署表:僅在使用者明確不要部署表時才跳過 B 類資料一致性校驗,並在稽核範圍中註明
  • 部署表sheet名稱不標準:自動搜尋含"伺服器"/"server"/"02"的sheet
  • 納管表列名不標準:自動檢測"管理IP"/"Management IP"/"主機名"/"AZ"/"狀態"/"管理平臺"等常見列名
  • 方案無章節標題:P1-07 判定為"缺少全部四章"
  • 方案含多個方案:僅稽核主要方案,其他部分忽略

參考

  • 模板目錄:/home/deploy_template/
  • 模板結構分析:/root/模板結構分析報告.md
  • 配套技能:deploy-fault-analyzer — 部署故障分析
  • 設計參考:deploy-fault-analyzer v2.0 的 Step 0 存檔、多源輸入、統一目錄結構等模式
  • 編寫者注意:Python 中文 f-string 引號陷阱見 references/pitfalls.md

🤖 AI 評測

這是一個功能完整的變更方案稽核工具,質量可靠。文件描述詳細,稽核邏輯覆蓋全面,包含嚴重的安全問題檢測。存在的主要問題是使用說明與實際功能有小出入,新手可能按文件操作會碰到引數不匹配的情況。總體來說是一個實用的專業工具,能有效幫助檢查部署方案的質量和風險。

📊 多維度評分

適應性4.5
規範性4.2
有效性4.1
可靠性4.1
可信度5

📁 包含檔案 (5 個)

📄 SKILL.md 19.5 KB
📄 _meta.json 137 B
📄 references/pitfalls.md 1.2 KB
📄 scripts/generate_review_report.py 45.4 KB
📄 skill-card.md 2.1 KB