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
核心目標:基於 /home/deploy_template/ 下的標準變更方案模板,對使用者提供的變更方案進行模板對比稽核。預設直接返回精簡 Markdown 稽核報告,並同時生成 Word 稽核報告落盤儲存。變更方案和部署表是預設稽核前提;只有使用者明確強調不要部署表時,才跳過部署表一致性校驗。
| 觸發方式 | 判定標準 |
|---|---|
| 關鍵詞 | 稽核部署方案 / 幫我看下部署方案 / 幫我稽核方案 / 部署方案有問題 / 幫我檢查方案 / 幫我審一遍 |
| 檔案上傳 | 使用者上傳 .docx 變更方案 + .xlsx 部署表;可選上傳納管表 .xlsx |
| 路徑指定 | 使用者指明檔案路徑,如"稽核 /path/to/變更方案.docx 和 /path/to/部署表.xlsx";若只給方案路徑,需補充部署表或明確不要部署表 |
變更方案(.docx) — 必須提供,這是稽核的核心材料。部署表(.xlsx) — 必須提供,除非使用者強調不要部署表。
納管表是可選增強材料;缺少納管表時不阻塞稽核。
| 收到的檔案 | 行為 |
|---|---|
| 只有變更方案 .docx,且使用者未說明不要部署表 | ❌ 暫不稽核,提示使用者補充部署表或明確確認不要部署表 |
| 只有變更方案 .docx,且使用者明確說不要部署表 | ✅ 執行模板對比稽核,並註明跳過部署表一致性校驗 |
| 方案+部署表 | ✅ 執行模板對比 + 部署表一致性校驗 |
| 方案+部署表+納管表 | ✅ 執行全量稽核 |
| 只有 xlsx 或非方案檔案 | ❌ 提示缺少變更方案 .docx |
在處理任何文件內容之前,必須完成輸入檢查。
必須先確認存在變更方案 .docx 和部署表 .xlsx。僅當用戶明確說不要部署表時,部署表可預設。
| 場景 | 行為 |
|---|---|
| 未收到 .docx 方案 | 拒絕,不做解析。提示使用者補充變更方案 |
| 僅收到 .docx 方案,使用者未說明不要部署表 | 暫停稽核。提示使用者補充部署表,或明確回覆"不要部署表/跳過部署表校驗" |
| 僅收到 .docx 方案,使用者明確不要部署表 | 繼續 Step 1,只執行模板對比稽核,並在報告中註明部署表校驗被使用者要求跳過 |
| 收到 .docx + 部署表 | 繼續 Step 1,執行模板對比和 B 類校驗 |
| 收到 .docx + 部署表 + 納管表 | 繼續 Step 1,執行全量稽核 |
缺少必要材料回覆模板:
⚠️ 稽核預設需要兩份必要材料:變更方案(.docx) + 部署表(.xlsx)
當前僅收到:{檔名}
缺少:{變更方案(.docx) 或 部署表(.xlsx)}
請補充後重新提交;如果本次明確不需要部署表,請回復“不要部署表”或“跳過部署表校驗”。
部署表和納管表按以下規則處理:
任何輸入在處理前必須先存檔,防止後續覆蓋:
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}')
模板選擇是本技能的核心。必須先根據使用者給出的方案檔名關鍵詞,在 /home/deploy_template/ 下定位最相近模板,再以該模板為基準稽核。
執行時遞迴掃描 /home/deploy_template/ 下所有 .docx 模板,構建候選模板清單。不得使用硬編碼模板清單代替實際目錄;目錄新增模板時應自動參與匹配。
按以下順序提取關鍵詞並打分:
9月10日-青海西寧三區-x86+culinux-新建儲存叢集擴容變更方案.docx7w4.net有更好的技能外掛。
| 識別維度 | 關鍵詞 | 路由規則 |
|---|---|---|
| 雲型別 | 行業雲、雙引擎、骨幹、一區/二區/三區/四區 等行業雲資源池命名 |
優先匹配 /home/deploy_template/行業雲/ |
| 雲型別 | 私有云、明確私有資源池描述 |
優先匹配 /home/deploy_template/私有云/ |
| 產品 | 儲存叢集、ceph、塊儲存、儲存 |
匹配對應雲型別下 儲存/ |
| 產品 | 物件儲存、RGW、YIG、hoss |
匹配 物件儲存/ 或 RGW&Dims&CSG/ |
| 產品 | NAS |
匹配 NAS/ |
| 產品 | 裸金屬 |
匹配 裸金屬/ |
| 產品 | GPU、L型、雲桌面、增強型、計算 |
匹配 計算/ 下對應子目錄 |
| 網路 | VLAN、VXLAN、vlan、vxlan |
在計算/裸金屬等多模板場景中繼續縮小範圍 |
| 場景 | 新建、新建AZ、新增AZ、新叢集 |
優先匹配模板名含 新建、新增、新AZ 的模板 |
| 場景 | 原叢集擴容、原AZ、擴容 |
優先匹配模板名含 原叢集擴容、原AZ、擴容 的模板 |
| 架構/系統 | x86、aarch64、arm、culinux |
用於校驗,不作為雲型別決定依據 |
當方案名類似 9月10日-青海西寧三區-x86+culinux-新建儲存叢集擴容變更方案.docx:
青海西寧三區 命中行業雲資源池命名特徵;新建儲存叢集 命中行業雲端儲存新建場景;/home/deploy_template/行業雲/儲存/_儲存叢集新建融合模板-涵蓋所有儲存叢集新建場景-模板.docx
並在報告中明確寫出:本次稽核基準模板:/home/deploy_template/行業雲/儲存/_儲存叢集新建融合模板-涵蓋所有儲存叢集新建場景-模板.docx。
僅在無法判斷私有云/行業雲,或同一路徑下多個模板得分接近且會影響稽核結論時,才反問使用者。反問必須說明原因,並告知使用者稽核是基於模板完成的。
反問示例:
我會根據 /home/deploy_template 下的標準模板進行對比稽核,但當前檔名無法明確判斷是“私有云”還是“行業雲”場景。
請確認本次方案屬於哪類:
1. 私有云
2. 行業雲
使用者確認後,繼續定位模板並稽核。不要在不確定雲型別時擅自混用私有云和行業雲模板。
優先呼叫 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/",
}
稽核完成後,預設在聊天視窗直接返回 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 內容逐段貼到聊天中。
所有過程檔案統一在 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/ 下的方案模板為基準,不主觀判斷。
必須在報告中寫明本次實際採用的模板路徑。若模板是通過使用者確認後選擇的,也要寫明"已按使用者確認的私有云/行業雲場景選擇模板"。
稽核分四大類:
| 檢查項 | 風險ID | 稽核方法 |
|---|---|---|
| 章節完整性 | P1-07 | 匹配變更需求/變更安排/變更步驟/割接回退四章 |
| 表格完整性 | P1-06 | 版本修訂記錄表是否更新(非空白/非佔位) |
| 人員表完整 | P1-03 | 實施/複核/審批/客戶四角色是否齊全 |
| 佔位符替換 | P2-01 | 搜尋 {XXX} [待補充] [填寫] XXX資源池 |
| 檢查項 | 風險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交叉比對 |
| 檢查項 | 風險ID | 稽核方法 |
|---|---|---|
| 伺服器缺失 | P0-08 | 部署表中IP是否全部在納管表中 |
| IP不一致 | P0-09 | 同IP下部署表與納管表的hostname是否一致 |
| 狀態異常 | P3-01 | 納管表中是否存在非"已納管"狀態 |
| AZ不一致 | P3-02 | 同IP下部署表AZ vs 納管表AZ |
| 檢查項 | 風險ID | 稽核方法 |
|---|---|---|
| 錯別字 | P2-02 | 擴融→擴容、資原池→資源池 等8組檢測 |
| 編號錯誤 | P2-04 | 章節編號是否跳躍 |
| 佔位符 | P2-01 | 全文正則搜尋 |
| 命名規範 | P2-06 | 檔名格式檢查 |
| 明文密碼洩露 | P0-10 | 全文搜尋密碼/口令關鍵字及疑似密碼模式 |
| 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: xxx、root密碼 後接具體值、連線字串中的明文密碼等);判定標準:① 方案正文中出現 ansible_ssh_pass、sshpass、password、passwd、secret 等關鍵字後直接跟有具體字串值(非"xxxxxx"/"xxx"/"密碼"等佔位符),即觸發P0;② 若關鍵字後跟的是佔位符(如 xxxxxx、<password>、******),不觸發;③ 部署表中的密碼列不觸發(部署表屬於運維憑據清單,但方案文件中仍建議脫敏) |
| ID | 風險項 | 判定標準 |
|---|---|---|
| P1-01 | 標題與正文矛盾 | 標題數量與正文數量不一致 |
| P1-02 | 節點資訊不一致 | 方案節點列表與表格/部署表不一致 |
| P1-03 | 變更人員表不完整 | 實施/複核/審批/客戶角色缺失 |
| P1-04 | 變更時間不合理 | 時間已過或視窗時長不合理 |
| P1-05 | 配置引數錯誤 | expand/config.json與部署表不一致 |
| P1-06 | 版本修訂記錄未更新 | 版本修訂表為空白或佔位符 |
| P1-07 | 章節缺失 | 缺少非關鍵章節(如割接回退) |
| P1-08 | 網路配置矛盾 | VLAN/VXLAN模式不一致 |
| ID | 風險項 | 判定標準 |
|---|---|---|
| P2-01 | 佔位符未替換 | 仍含 {XXX}、[待補充] 等模板佔位符 |
| P2-02 | 文字錯別字 | 「擴融」「資原池」「部暑」等 |
| P2-03 | 格式不一致 | 標題字號不統一 |
| P2-04 | 編號錯誤 | 章節編號跳躍 |
| P2-05 | 截圖/圖片缺失 | 「截圖示例」未替換 |
| P2-06 | 檔案命名不規範 | 缺少日期或資源池名 |
| P2-07 | 操作記錄表格式錯誤 | 列名或格式與模板不一致 |
| ID | 風險項 | 判定標準 |
|---|---|---|
| P3-01 | 納管表狀態異常 | 存在非「已納管」狀態的伺服器 |
| P3-02 | 納管表AZ不一致 | 納管表AZ與部署表AZ不匹配 |
| 結論 | 判定規則 |
|---|---|
| ✅ 通過 | 無 P0 項,且 P1+P2 ≤ 3 項 |
| ⚠️ 條件通過 | 無 P0 項,P1 項 ≤ 5 項,修改意見已明確標註 |
| ❌ 不通過 | 存在 P0 項,或 P1 項 > 5 項 |
稽核引擎支援命令列獨立執行:
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
/home/deploy_template/ 模板完成/home/deploy_template//root/模板結構分析報告.mddeploy-fault-analyzer — 部署故障分析deploy-fault-analyzer v2.0 的 Step 0 存檔、多源輸入、統一目錄結構等模式references/pitfalls.md這是一個功能完整的變更方案稽核工具,質量可靠。文件描述詳細,稽核邏輯覆蓋全面,包含嚴重的安全問題檢測。存在的主要問題是使用說明與實際功能有小出入,新手可能按文件操作會碰到引數不匹配的情況。總體來說是一個實用的專業工具,能有效幫助檢查部署方案的質量和風險。