Skip to main content

6m-smoke-test

Use when performing the six-ministries smoke test — end-to-end verification of the full 三省六部 chain: 中书→门下→尚书→六部→史馆. Must run after modifying six-ministries system/config/profiles. 六部运转冒烟测试 — 端到端验证三省六部全线:中书→门下→尚书→六部→史馆。修改六部制度/配置/profile 后必须跑此测试。触发词:启动自检、六部冒烟测试、冒烟测试、6m-smoke-test

Aller à l'installation

Informations de source

Dépôt
Loveacup/jz-skills
Dernière activité de la source
4 juin 2026 à 01:56
Langue détectée de SKILL.md
Plusieurs langues
Étoiles
1
Forks
1

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
5 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
6m-smoke-test
description
Use when performing the six-ministries smoke test — end-to-end verification of the full 三省六部 chain: 中书→门下→尚书→六部→史馆. Must run after modifying six-ministries system/config/profiles. 六部运转冒烟测试 — 端到端验证三省六部全线:中书→门下→尚书→六部→史馆。修改六部制度/配置/profile 后必须跑此测试。触发词:启动自检、六部冒烟测试、冒烟测试、6m-smoke-test
version
1.1.0
author
Hermes Agent
license
MIT
platforms
["linux","macos"]
metadata
{"hermes":{"tags":["governance","testing","six-ministries","smoke-test"],"related_skills":["three-provinces-constitution","kanban-orchestrator"]}}
# 六部运转冒烟测试 ## When to Use 修改以下任一内容后,必须运行此测试: - 六部 profile(SOUL.md / config.yaml) - 三省流程(constitution / dispatch 映射) - 新增/删除 profile - Kanban 基础设施变更(gateway / dispatcher) - hermes 升级后验证 > **扩展测试体系**:本 skill 覆盖单一治理场景(健康扫描)。完整五层测试金字塔(L0 基础健康 → L1 组件 → L2 集成 → L3 E2E 多场景 → L4 非功能)见 Ob 方案:`20-Areas/10_AI实践/三省六部_Hermes/20_实施/测试/三省六部全面测试方案_20260530.md`。该方案含 4 个新增治理场景、5 层验收矩阵、问题追踪表。 ## L0 前置健康检查(必须先过) 在启动全链路治理冒烟测试前,**必须先跑 L0 基础健康检查**。若 L0 不过,直接进入修复流程,**不发起 Kanban 链**。 ```bash # 1. A2A 端点全量健康(最优先) bash ~/code/hermes-a2a/core/scripts/hermes-a2a-doctor.sh 2>&1 | tail -5 # 期望:A2A 16/16 healthy # 2. A2A 任务快速冒烟(关键——2026-05-30 发现全链路失效) python3 -c " import urllib.request, json, time token = open('~/.hermes/.a2a-token').read().strip() data = json.dumps({'id':'l0-check','task':'reply: PONG'}).encode() req = urllib.request.Request('http://127.0.0.1:8939/a2a/tasks', data=data, headers={'Authorization': f'Bearer {token}', 'Content-Type': 'application/json'}) r = json.loads(urllib.request.urlopen(req).read()) sid = r['id'] time.sleep(15) req2 = urllib.request.Request(f'http://127.0.0.1:8939/a2a/tasks/{sid}', headers={'Authorization': f'Bearer {token}'}) r2 = json.loads(urllib.request.urlopen(req2).read()) print(f'status={r2[\"status\"]}, error={r2.get(\"error\",\"none\")}') # 期望:status=completed(不是 failed / Empty message) " # 3. Gateway 进程 ps aux | grep 'gateway run' | grep -v grep | wc -l # 期望:≥3(regent + default + cron-worker) # 4. Kanban 可读写 sqlite3 ~/.hermes/kanban.db "SELECT count(*) FROM tasks" # 期望:>0 ``` L0 全绿 → 启动 Kanban 链。任一项失败 → 先修复再测试。详见 `references/testing-pyramid.md`。 ## 🚨 Red Flags: DO NOT SKIP THIS SKILL | Excuse your brain will make | Why it's wrong | |------------------------------|----------------| | "I only changed one line in SOUL.md, no need for full smoke test" | Even single-line changes can break Kanban dispatch, gate routing, or profile config parsing | | "I'll skip the 尚书省 card — the chain works without it" | Skipping 尚书省 is the #1 governance gap; 全板仅 2 done shangshu tasks is evidence of systemic bypass | | "Planner didn't write files but the summary looks good" | Planner may produce rich summaries without files; this causes reviewer idle loops — must verify file existence | | "The test chain is all done so we can skip P0 verification" | done ≠ verified; P0 items may still exist on disk despite cleanup claims — always check disk state first | ## Comprehensive Multi-Layer Testing 本 skill 覆盖 L3 E2E 治理场景(中书→门下→尚书→六部→史馆的单链路冒烟测试)。 完整的五层测试体系(L0 基础健康 → L1 组件 → L2 集成 → L3 E2E治理 → L4 非功能) 定义在 Ob 方案文档:`20-Areas/10_AI实践/三省六部_Hermes/20_实施/测试/三省六部全面测试方案_20260530.md` 该方案包含: - **L0**: 10 项基础设施健康检查(进程/端口/Gateway/Supermemory) - **L1**: 6 个组件独立测试(A2A Server / Kanban / Discuss / Event Bridge / Skill Resolver / DCI) - **L2**: 4 个跨组件集成场景(A2A→Kanban / 讨论→归档 / 事件桥→Supermemory / 跨部门 A2A) - **L3**: 5 个 E2E 治理场景(健康扫描 / 代码审查 / 早新闻生成 / 制度修改 / 故障演练)← 本 skill 是 S1 - **L4**: 性能/故障/安全(版本发布前) **当用户要求"全面测试"时**,先加载 Ob 方案确定范围再执行。 **当用户要求"冒烟测试"时**,执行本 skill 的 S1 健康扫描链路。 ### 测试任务:Hermes 本地项目健康度扫描 扫描 `~/.hermes/` 下所有六部 profile 的 SOUL.md 行数、config.yaml 完整性、skills 清单、gateway 运行状态。 分级:**L2 繁务**(多节点、跨领域、需稽核归档) ### 预期链路 ``` 中书拟制 → 门下封驳 → 尚书派工 → [户部∥工部] → 礼部汇总 → 刑部稽核 → 门下终复 → 史馆归档 ``` ### 创建 Kanban 链 在三省六部体系下对着监国太子说: > 启动六部冒烟测试 或直接用以下方式创建: 1. **中书拟制** (planner):拟制 plan-preview,产出写入 `~/.hermes/workspaces/6m-smoke-test/plan.md` 2. **门下封驳** (reviewer):parent=planner,审查方案 3. **尚书派工** (shangshu):parent=reviewer,创建下游 6 张执行卡 4. **户部** (budget) + **工部** (gongbu):并行执行,无依赖 5. **礼部** (protocol):parent=[budget, gongbu],汇总报告 6. **刑部** (tester):parent=protocol,稽核 7. **门下终复** (reviewer):parent=tester,最终审核 8. **史馆归档** (archivist):parent=终复,Obsidian + qmd ### 监控模式(默认开启) 太子承旨后必须全程追踪看板,每 60-90s 轮询状态: - running → 等待 - done → 汇报 + 触发下一阶段 - blocked → 诊断 + 启动返修链 关键:**不得等父皇催问**。 ### 验收标准 | 标准 | 目标 | 说明 | |------|------|------| | 六部全触发 | 7/7 profile 至少执行 1 次 | | | 门下调拨有效 | 对违规方案至少 REJECT 1 次 | ✅ REJECT 是测试 PASS,证明闸门在职 | | 返修链完整 | REJECT → 补正 → 复审 → APPROVE | 或 2 轮后触发降级直入执行 | | 尚书省正常 | 正确创建下游执行卡 | | | 户部产出 | 基线数据(行数/skills/config)| | | 工部产出 | 基建状态(gateway/config/cron)| | | 礼部产出 | 汇总报告 ≥200 行 | | | 刑部产出 | 稽核 ≥3/4 合格 | | | 史馆产出 | Obsidian 归档 + qmd 刷新 | | | 总耗时 | ≤20 分钟 | 可因 planner(kimi) 或 reviewer(deepseek) 延迟浮动 | ### 产出 - 主报告:`~/.hermes/kanban/output/smoke-test-report-v2.md` - Plan:`~/.hermes/workspaces/6m-smoke-test/plan.md` - 10 张 Kanban 卡片(9 done + 1 blocked 审计留痕) ### P0-3 E2E 验证脚本(2026-05-29 新增) 位于 `~/code/hermes-a2a/tests/e2e/`: - `test_p0_a1_skill_resolver.py` — skill_resolver 自部门/跨部门/降级链验证 - `test_p0_b2_comment_kind.py` — DCI 14 kind 路由 + 方案D 旁路表验证 - `test_p0_c3_orchestrator.py` — VoteTally + 死锁检测 + 三省综合辩论 模板见 `templates/test_p0_e2e_skill_resolver.py`,含关键 CLI 坑位(positional title / nested JSON / poll 模式)。 ### 已知陷阱 - **中书产出不落盘**:planner profile 可能只写 summary 不写文件。创建 planner 卡时 body 必须加「必须将全部产出文件写入磁盘。kanban_complete 前用 ls 验证文件存在。」 - **门下调拨跳过尚书省**:中书方案可能自行设计任务图跳过尚书省。门下会 REJECT,触发返修链。 - **文件名与 summary 不一致**:planner 可能在 summary 声称写入 `plan-v3.md` 但实际写了 `plan.md`。门下检测到文件不存在会 REJECT。修复:检查 planner workspace 实际文件名后补齐,再 unblock reviewer。 - **治理回路空转降级**:同一 plan 经 ≥2 轮 planner→reviewer REJECT 且无实际执行产出时,不应继续第三轮。按宪法降级路径:归档 blocked reviewer cards → 将 shangshu 重接到 done planner → 直入执行链。计划内容已在 summary 中隐式 APPROVE,流程细节不再阻塞。 - **scratch workspace GC**:下游归档卡可能在归档前被 GC。关键产出必须写持久路径。 - **监国复命卡死循环**:regent profile 的复命卡会尝试 spawn 另一个 regent 实例,导致 never-complete。复命卡完成后手动 `kanban complete` 收束。 - **cronjob 工具被 kanban gate 拦截**:`cronjob` 工具修改 cron 时会触发 `confirmed_by_user` 门闸,但该工具 schema 不含此参数,形成死锁。绕过:用 `hermes cron edit <job_id> --schedule '...'` CLI 直接操作。 - **P0 项可能已自然消解**:并行执行链(如工部清理)可能在你到达前已处理部分 P0。修复前先查实际磁盘状态,避免对不存在的文件/目录执行操作。 - **A2A 任务 "Empty message" 失败**(2026-05-30 实证):regent + default 双 profile A2A 任务提交后 ~3s 即 failed,报 "Empty message"。根因:`hermes chat -q` 子进程需 >20s 完成 agent loop,A2A server 30s 超时前子进程尚未产生 stdout。诊断:先用 `curl` 直接 POST A2A 任务验证;若失败则跑 L0 前置检查中的 Python 诊断脚本。修复前不要启动 Kanban 链——A2A 不可用则所有跨 profile 通信阻塞。 - **Kanban CLI 参数不一致**:`hermes kanban heartbeat --summary` 和 `hermes kanban block --reason` 不存在。heartbeat 不加 flag(纯 heartbeat),block 信息用 `hermes kanban comment` 追加。`create` 的正确语法是 `hermes kanban create "title" --body "..." --assignee <profile>`(title 是 positional arg,不用 `--title`)。 - **doctor.sh 假阳性**:kanban.db 检查可能扫描错误路径(profile-level kanban.db 是 0 bytes);deploy drift 可能误报 `.pytest_cache`。遇到时先手动验证:`sqlite3 ~/.hermes/kanban.db "PRAGMA integrity_check; SELECT count(*) FROM tasks"`。 - **Profile config `agent: null` / `display: null` 导致 worker 反复 crash**(2026-05-29 冒烟 v2 发现):若 profile 的 config.yaml 中 `agent: null` 或 `display: null`,Hermes CLI 启动时报 `AttributeError: 'NoneType' object has no attribute 'get'`,dispatcher 反复重试直到 circuit breaker block。影响 profile:planner/reviewer/protocol/tester/archivist。修复:`sed -i '' 's/^agent: null$/agent:\n disabled_toolsets: []/' config.yaml` + `sed -i '' 's/^display: null$/display:\n tool_progress: all/' config.yaml`。**修复后必须重启该 profile 的 A2A server**——A2A 在启动时缓存 config,不会热加载。重启:`lsof -tiTCP:<port> -sTCP:LISTEN | xargs kill`,等 35s launchd 自动拉起后 `curl :<port>/health` 验证。预检命令:`for p in planner reviewer protocol tester archivist; do echo "$p: $(grep -E '^(agent|display):' ~/.hermes/profiles/$p/config.yaml)"; done` ## Post-Test Fix Execution(冒烟后修复流程) 冒烟测试产出 P0/P1/P2 清单后,修复执行按以下优先级: ### 第一步:实查现状 ```bash # 不要仅凭审计报告判断——并行执行的工部可能已处理部分项 find ~/.hermes/profiles -name 'qmd.bak' -type d # P0-4 示例 find ~/.hermes/profiles -path '*xhs-crawler*/.venv' # P0-3 示例 ``` ### 第二步:P0 优先修复 - **cron 频率**: `hermes cron edit <job_id> --schedule 'every 5m'`(不用 `cronjob` 工具) - **venv/qmd 清理**: 确认存在后再清理,不存在则标记已消解 - **gateway lock**: 检查进程状态后清理陈旧锁 ### 第三步:hermes-agent 更新 ```bash cd ~/.hermes/hermes-agent && git pull --ff-only ``` 条件:全板已清(无 running/blocked 任务),避免中断运行中批次。 ### 第四步:验证与回禀 - `hermes cron list` 验证频率变更 - `git log --oneline -1` 验证更新版本 - 逐项报告状态:✅已修复 / ✅已消解 / ➖无需操作 ## ✅ Verification Checklist (RUN AFTER SMOKE TEST) - [ ] Did all 10 acceptance criteria pass (六部触发/门下调拨/返修/尚书/6个产出)? - [ ] Was 尚书省 inserted in the execution chain (planner→reviewer→SHANGSHU→...)? - [ ] Did I verify planner actually wrote files to disk (not just summary claims)? - [ ] Did I run the Post-Test Fix Execution workflow for any P0/P1 items found? - [ ] Did I check actual disk state before attempting P0 fixes (items may have been naturally resolved)? - [ ] Did I produce the final report at the persistent workspace path? **If any box is unchecked, go back.**
Voir sur GitHub