From 165c75c2fcf126ca9f7fd760f775175aa6559454 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=94=AF=20A06?= Date: Wed, 2 Sep 2026 03:00:29 +0800 Subject: [PATCH] auto-snapshot 2026-09-02 03:00:29 --- scripts/dual-backup.sh | 2 +- scripts/newapi-observe.py | 129 +++++++++++++++++++++++++ scripts/newapi-weekly-report.py | 92 ++++++++++++++++++ skills/.curator_ledger.jsonl | 5 + skills/.usage.json | 63 +++++++----- skills/devops/llm-gateway-ops/SKILL.md | 10 +- 6 files changed, 275 insertions(+), 26 deletions(-) create mode 100755 scripts/newapi-observe.py create mode 100755 scripts/newapi-weekly-report.py diff --git a/scripts/dual-backup.sh b/scripts/dual-backup.sh index 5a4b73e9..5fba47fc 100755 --- a/scripts/dual-backup.sh +++ b/scripts/dual-backup.sh @@ -38,7 +38,7 @@ check_mount() { log "⚠️ 服务器未挂载,尝试连接..." # -n: non-interactive,cron 环境无密码输入机会,立即失败不卡住 # || true: 失败是预期路径(服务器不在线),由下方 mountpoint 判断处理,避免 set -e 提前退出 - sudo -n mount -t cifs //192.168.123.11/beifen /mnt/server-backup \ + sudo -n mount -t cifs //192.168.188.11/beifen /mnt/server-backup \ -o username=administrator,password=xue.2538,uid=1000,gid=1000,iocharset=utf8,file_mode=0755,dir_mode=0755 2>/dev/null || true sleep 2 if ! mountpoint -q /mnt/server-backup; then diff --git a/scripts/newapi-observe.py b/scripts/newapi-observe.py new file mode 100755 index 00000000..ab460021 --- /dev/null +++ b/scripts/newapi-observe.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 +""" +NewAPI 观测脚本 — 持续采集主网关健康/延迟/路由数据 +每 6h 由 cron 触发(no_agent 模式): + - 正常时静默(数据追加到 JSONL 观测日志) + - 异常时输出报警(cron 会自动推送) +数据用途:监测 NewAPI + 9 个 NIM key 池健康度 +替代 omniroute-observe.py(OmniRoute 已于 2026-09-02 关停) +""" +import json +import os +import time +import requests +from datetime import datetime, timezone + +API = "http://127.0.0.1:3000/v1" +# api-test-token 是 NewAPI 唯一启用 token (user_id=1) +KEY = "0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP" +STATE_DIR = os.path.expanduser("~/.hermes/newapi-observe") +LOG = os.path.join(STATE_DIR, "observations.jsonl") +STATE_FILE = os.path.join(STATE_DIR, "state.json") + +# 测试用的模型组合 — 覆盖 NewAPI 真实 channel +# - sensenova-free: 主 channel (sensenova deepseek-v4-flash) +# - minimaxai/minimax-m3: NIM-k1 (NVIDIA 集成, 9 个 key 池) +# - google/gemma-4-31b-it: NIM 池可用模型 +TEST_MODELS = [ + "deepseek-v4-flash", # sensenova 通道 + "minimaxai/minimax-m3", # NIM-k1 (已知可用) + "google/gemma-4-31b-it", # NIM 池备选 +] + + +def api_call(model, max_tokens=20): + """发一次真实请求,返回 (ok, latency_ms, model, content_len)""" + t0 = time.time() + try: + r = requests.post(f"{API}/chat/completions", + json={"model": model, + "messages": [{"role": "user", "content": "ping"}], + "max_tokens": max_tokens}, + headers={"Authorization": f"Bearer {KEY}"}, + timeout=30, stream=False) + elapsed = round((time.time() - t0) * 1000) + if r.status_code == 200: + try: + data = r.json() + m = data.get("model", model) + choices = data.get("choices", []) + content_len = len(choices[0].get("message", {}).get("content", "")) if choices else 0 + return True, elapsed, m, content_len + except Exception: + return True, elapsed, model, 0 + else: + return False, elapsed, f"HTTP {r.status_code}", 0 + except Exception as e: + return False, round((time.time() - t0) * 1000), f"EXC: {str(e)[:50]}", 0 + + +def check_service(): + """检查 NewAPI 服务 + models API 是否健康""" + try: + r = requests.get(f"{API}/models", + headers={"Authorization": f"Bearer {KEY}"}, + timeout=10) + if r.status_code == 200: + models = r.json().get("data", []) + return True, len(models) + return False, 0 + except Exception: + return False, 0 + + +def main(): + # 确保 state 目录存在 + os.makedirs(STATE_DIR, exist_ok=True) + + # 1. 服务健康 + svc_ok, model_count = check_service() + if not svc_ok: + print(f"🚨 NewAPI 服务不可达或 models API 失败") + return + + # 2. 测试每个模型 + results = [] + for m in TEST_MODELS: + ok, lat, routed, content_len = api_call(m) + results.append({ + "model": m, + "ok": ok, + "latency_ms": lat, + "routed_to": routed, + "content_len": content_len + }) + + # 3. 判断是否有异常 + fails = [r for r in results if not r["ok"]] + slow = [r for r in results if r["ok"] and r["latency_ms"] > 8000] + + # 4. 追加 JSONL 观测记录 + obs = { + "ts": datetime.now(timezone.utc).isoformat(), + "service": "ok" if svc_ok else "fail", + "model_count": model_count, + "tests": results + } + with open(LOG, "a") as f: + f.write(json.dumps(obs) + "\n") + + # 5. 写 state.json(供其他脚本查询) + with open(STATE_FILE, "w") as f: + json.dump(obs, f, indent=2) + + # 6. 报警逻辑 + if fails: + msgs = [f"❌ {r['model']}: {r['routed_to']} ({r['latency_ms']}ms)" for r in fails] + print(f"🚨 NewAPI 异常 ({len(fails)}/{len(results)} 失败):") + for m in msgs: + print(m) + elif slow: + msgs = [f"⚠️ {r['model']}: {r['latency_ms']}ms" for r in slow] + print(f"⚠️ NewAPI 慢响应 ({len(slow)}/{len(results)} > 8s):") + for m in msgs: + print(m) + # else: 静默(健康) + + +if __name__ == "__main__": + main() diff --git a/scripts/newapi-weekly-report.py b/scripts/newapi-weekly-report.py new file mode 100755 index 00000000..506076ea --- /dev/null +++ b/scripts/newapi-weekly-report.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +""" +NewAPI 周度评估报告 — 汇总观测数据,输出评估结论 +每周日 18:00 由 cron 触发,输出可读报告(非静默,始终输出) +评估维度:可用性 / 延迟 / 路由一致性 +替代 omniroute-weekly-report.py(OmniRoute 已于 2026-09-02 关停) +""" +import json +import os +import statistics +from datetime import datetime, timezone, timedelta + +STATE_DIR = os.path.expanduser("~/.hermes/newapi-observe") +LOG = os.path.join(STATE_DIR, "observations.jsonl") + +# 评估阈值 +LATENCY_WARN_MS = 8000 # 平均延迟超 8s 警告 +SUCCESS_RATE_MIN = 0.90 # 成功率低于 90% 警告 + + +def load_observations(days=7): + if not os.path.exists(LOG): + return [] + cutoff = datetime.now(timezone.utc) - timedelta(days=days) + obs = [] + with open(LOG) as f: + for line in f: + try: + d = json.loads(line) + ts = datetime.fromisoformat(d["ts"]) + if ts >= cutoff: + obs.append(d) + except Exception: + continue + return obs + + +def main(): + obs = load_observations(7) + n = len(obs) + + print(f"=== NewAPI 周度评估(最近 7 天)===") + print(f"观测次数: {n}") + print(f"生成时间: {datetime.now(timezone.utc).isoformat()}") + print() + + if n == 0: + print("⚠️ 无观测数据(cron 可能在观测脚本切换期间未运行)") + return + + # 1. 服务可用性 + svc_ok = sum(1 for o in obs if o.get("service") == "ok") + svc_rate = svc_ok / n + print(f"【服务可用性】 {svc_ok}/{n} = {svc_rate*100:.1f}%") + + # 2. 按模型统计 + by_model = {} + for o in obs: + for t in o.get("tests", []): + m = t["model"] + if m not in by_model: + by_model[m] = {"ok": 0, "total": 0, "latencies": []} + by_model[m]["total"] += 1 + if t["ok"]: + by_model[m]["ok"] += 1 + by_model[m]["latencies"].append(t["latency_ms"]) + + print(f"\n【按模型表现】") + for m, d in sorted(by_model.items()): + rate = d["ok"] / d["total"] * 100 if d["total"] else 0 + if d["latencies"]: + avg = statistics.mean(d["latencies"]) + p95 = sorted(d["latencies"])[int(len(d["latencies"])*0.95)] if len(d["latencies"]) > 1 else d["latencies"][0] + else: + avg = p95 = 0 + status = "✅" if rate >= SUCCESS_RATE_MIN*100 and avg < LATENCY_WARN_MS else "⚠️" + print(f" {status} {m}: {d['ok']}/{d['total']} = {rate:.0f}%, 平均 {avg:.0f}ms, P95 {p95:.0f}ms") + + # 3. 总体评估 + total_tests = sum(d["total"] for d in by_model.values()) + total_ok = sum(d["ok"] for d in by_model.values()) + overall_rate = total_ok / total_tests * 100 if total_tests else 0 + print(f"\n【总体】 {total_ok}/{total_tests} = {overall_rate:.1f}%") + + if overall_rate < SUCCESS_RATE_MIN*100: + print("⚠️ 建议: 检查 NewAPI 上游 channel 健康度") + else: + print("✅ 评估: NewAPI 表现健康,可作为本地主网关") + + +if __name__ == "__main__": + main() diff --git a/skills/.curator_ledger.jsonl b/skills/.curator_ledger.jsonl index c8b92836..a41dd578 100644 --- a/skills/.curator_ledger.jsonl +++ b/skills/.curator_ledger.jsonl @@ -62,3 +62,8 @@ {"id": "8417fbab66a9", "ts": "2026-09-01T13:34:25.138749+00:00", "actor": "curator", "action": "patch", "skill": "cnb-codebuddy-npc", "evidence": {"session_id": "20260901_195913_8e50d1fb"}, "before": [{"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/SKILL.md", "sha256": "528a0386741f4de7e116bc48335cc2fa5134750680328def012b52c885ee7c8d"}, {"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/references/api-quirks.md", "sha256": "4a89c7a771403ac4ddbb082e3c05cfd42fd252828901369100ffc1bcc6110bf4"}, {"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/references/dsh-vs-npc-benchmark.md", "sha256": "6d74f186d61a67e333dc0ea86253218515afc0bf6a224322e545539c45d3493c"}], "after": [{"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/SKILL.md", "sha256": "285f0d94218bd79e124ccc684a21f81088aaafb24d77c08e01218b43bca53df4"}, {"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/references/api-quirks.md", "sha256": "4a89c7a771403ac4ddbb082e3c05cfd42fd252828901369100ffc1bcc6110bf4"}, {"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/references/dsh-vs-npc-benchmark.md", "sha256": "6d74f186d61a67e333dc0ea86253218515afc0bf6a224322e545539c45d3493c"}]} {"id": "458ffb38ca34", "ts": "2026-09-01T13:35:53.465195+00:00", "actor": "curator", "action": "patch", "skill": "cnb-codebuddy-npc", "evidence": {"session_id": "20260901_195913_8e50d1fb"}, "before": [{"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/SKILL.md", "sha256": "285f0d94218bd79e124ccc684a21f81088aaafb24d77c08e01218b43bca53df4"}, {"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/references/api-quirks.md", "sha256": "4a89c7a771403ac4ddbb082e3c05cfd42fd252828901369100ffc1bcc6110bf4"}, {"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/references/dsh-vs-npc-benchmark.md", "sha256": "6d74f186d61a67e333dc0ea86253218515afc0bf6a224322e545539c45d3493c"}], "after": [{"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/SKILL.md", "sha256": "3fb5246aa9aa3bead7df13a12a923a9eebada2f4e00f2a9b946431f42c30391c"}, {"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/references/api-quirks.md", "sha256": "4a89c7a771403ac4ddbb082e3c05cfd42fd252828901369100ffc1bcc6110bf4"}, {"path": "/home/muc/.hermes/skills/devops/cnb-codebuddy-npc/references/dsh-vs-npc-benchmark.md", "sha256": "6d74f186d61a67e333dc0ea86253218515afc0bf6a224322e545539c45d3493c"}]} {"id": "0b5005820447", "ts": "2026-09-01T13:48:27.216647+00:00", "actor": "curator", "action": "patch", "skill": "self-healing-infrastructure", "evidence": {"session_id": "20260829_203246_64a4ce78"}, "before": [{"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/SKILL.md", "sha256": "f7e966807792a709ec69e812c641ed7df9337371af455afff4378286c54159c5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/agent-feedback-control-methodology-20260812.md", "sha256": "3d26eb85c131681a239e0aad0a8c90af2d2531df383bd5279b366d9b11903a9f"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/auto-heal-suicide-crashloop-20260801.md", "sha256": "1de823215cb2f9d5f56ca0db5f80b9a54f71fcee6dd3afd89211cb6b7da5a0f1"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-embed-gpu-analysis-20260825.md", "sha256": "ad238d5240693e0858ac033e5ba0ce3e444761dbac56a2bb2a25c25f554a5be4"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-embed-restartsec-crashloop-20260723.md", "sha256": "3a3284aab0f25dfd6b47a785532046b95e5e79cb02c90587afd9ddf3706d242b"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-mem-check-script-fix-20260723.md", "sha256": "32845c49cdf44296e36ed1e22010763297b41d9705de22218b8641878ef1eff7"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-mem-check.sh", "sha256": "f55a235cf60b8efaacccdb9431d9f6645596ee7c652e165f68d281207ee6ef1c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-memory-leak-20260713.md", "sha256": "770864588699921eb745c246df5d0cf83622980bace1fbebb2bfc81d57ebd653"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/calibre-server-windows-20260717.md", "sha256": "6fa8dbd2f885d1da86a82c05f3c239986d4a879a3172ea58287e9421674381e8"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/compression-model-config-20260809.md", "sha256": "971dae4f842cb3462b0335c9c6b0dd788d157639e543ccb4e79b5e41d9b9c9a7"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/cron-pitfalls.md", "sha256": "f5e7643993ced708fed23e3fd593608951e832d0dca6bcdc4c9997c10d4a487c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/cron-retry-mechanism-20260825.md", "sha256": "03354dfc926f0a898fa3ed0cc90de95f3ad10f5652655c27c092ac0bcd5b4a4a"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/cron-script-path-bug-20260721.md", "sha256": "cedbebc0aea8f973de46aa51a9d7232f870297ab3e21698cbd4ded6c3101dae6"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-code-cooperation-20260720.md", "sha256": "99d2cb75daf958a90b0d00c90f6ecc4ac386c7cecbfbb60bd3116256d06df128"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-debug-20260720.md", "sha256": "1540ae97cd96c86d784e66baef37e7e8e4eab075f21af77e383c635398fcec17"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-debug.md", "sha256": "9a967666750fcbe78082e70fa6ead9dfbc9373ffc96e6031f0c2893ef3d9c41a"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-emotion-phase2.md", "sha256": "aac11b84924af207f05ffa0c24805c39084eff8063cb8e6ce6de509ecf1a2232"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-llm-context-fix-20260710.md", "sha256": "32152006d0ec49bd3de01d38fdb10588a86d8aaa43d598cb92b5c05bf957de49"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-modification-rules.md", "sha256": "c98fecf9cdef83a3f2e5200aecbbf548548fdd90d8866cdf5d68c614179b5016"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-nameerror-fix-20260717.md", "sha256": "dc37fc4a451a4231a0bb1326ca97246a695ef6fa3ed612c3919fbe11b16a78a9"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-ops.md", "sha256": "4a3fefaecc41254621ff1ab218b3d4b96d6197c1a43cf825b3c6cbc23717803e"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-tdai-capture-20260713.md", "sha256": "6113d8db6f38c208c45fca4b6b205fb22ce24c8951e2e40f2524ce498ef6263d"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/feishu-delivery-queue-dns-recovery-20260725.md", "sha256": "bba945102483054c02941cfc2f80c1a0f06079bf967affe81bd35ea6889473e6"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/four-memory-systems-consolidation-20260719.md", "sha256": "a80692185ae94a72fee096a398c973bcd23632de4417614b052c985252affdbe"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/four-memory-systems-consolidation-execution-20260720.md", "sha256": "8666bed79652e357144b1a64a55150b7a53b78c96c60997b17953c4824efd118"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/full-system-health-check-20260801.md", "sha256": "01c6d0551ee2869f6c974816a21c49e5c0a12a828668816c1b041eca869dfe45"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/gateway-crashloop-unit-loss-20260801.md", "sha256": "736934b2472805f9f0931807b8907bfe59f76ebea36096bff3158fd56cc6866c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/gitea-push-conflict-rebase-20260731.md", "sha256": "2716fff2a068668adaf6b1167dfaad6e80b436771685c1981cfb87577fa719f5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/gitea-push-timeout-20260713.md", "sha256": "91b3214544ad1cd0e5d3233e2df9bf7c584663dfdd05b15a99a0c9dd11374b41"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/github-to-gitea-migrate-20260720.md", "sha256": "e384b80a46d81dbd681bc5d535e1e664d7ac21f4f235a0a52d843a7c19573785"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/github-to-gitea-mirror-20260719.md", "sha256": "5d07b47cc1ab27d1375fead2138e67c77d7d46c787e4256fb2fa740f4a026004"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/graph-db-empty-recovery-20260801.md", "sha256": "aa793a6a2b68e2dc83fdf29edc2c66bf71aa14b54ce08636e0c2bf2e56d499f8"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/grok-build-analysis-20260721.md", "sha256": "c5c3e2447bc5215c0ea7b64f81f46145852974f9a18220380217d96ed70eb49e"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/grok-build-impl-20260721.md", "sha256": "3df9834b7e292be98f858d55284205d52736f91278e757c34b534dcce30e7f9a"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/hermes-upgrade-checklist.md", "sha256": "0288954dfbe65b3ba886f3834ceb52b0964b5599c35a4549e962787bfe5731e5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/hermes-upgrade-v020-20260806.md", "sha256": "7eb885d0c1be8ba5bb9daac0e65abeedb07f96f723dcf758cb6c28fde50212c4"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/jarvis-ai-assistant-research-20260719.md", "sha256": "155ac1d8a906b2b2f857d28284aabd755b82b10e6d663a851362c03507083e42"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/llama-vulkan-build-guide-20260901.md", "sha256": "d7f205fa0439a52b7cfb1cc3847e62b1495f743bba002068c7cd54be851af098"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-recall-20260713.md", "sha256": "f8dfd4de2089c99895d2761cf0944e98990e7ac0c6135619dc121381d3ef07c3"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-self-upgrade-false-alarm-20260723.md", "sha256": "76eed278d53c095c0ef0a341907aa9a93e2e4a9029334cc49ff129237e9737a4"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-self-upgrade-false-alarm-20260812.md", "sha256": "cc84a705a3c3df7da0dad1a7fa66d38fced141e28edac51cf254f6ef5e68d9f5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-self-upgrade-field-mismatch-20260723.md", "sha256": "b2f520c3dd0427fb61a902901d6f8a9ed76baf2370e7a2d449495704ee0b7040"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-system-comparison.md", "sha256": "7d8accdcfb3d36283d4367176d0626636bab1afce9c435601b65ac451cabe302"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-system-e2e-verification-20260802.md", "sha256": "e9e28c4c1d29aef48e1d1286d5600fce3df5be79257a9b6b0834f15c73fcb502"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/model-health-multi-config-coverage.md", "sha256": "b83d38b7cf0d9ef87d53538cdfce2fb228df3415cc78cb47b6d45711f69d3b6b"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/model-health-v3-fixes-20260801.md", "sha256": "c1a6a7d981df467e1ab8eb07161f26236b74d9784748b8fdd6fb1743b4ad95b2"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/model-switch-profile-pitfall.md", "sha256": "8b075e52f34c7a2e69b099d7133c0a4186d6fc937c00bcc1c46d258a75126ac2"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/multi-subagent-file-edit-20260721.md", "sha256": "a08c8bad48605fa81eb76e4ff254459ffdecde909d89af2ceb305600a666d72b"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/new-project-gitea-install-workflow-20260721.md", "sha256": "5d3c891e5d4ea4620c7758472570f4ba71161c109da7c4a23280150d9487d46c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/openclaw-model-protection-20260808.md", "sha256": "b151a7a66d0597417dc2279ba5c2363e75d081dd404adc6d67870d885106aa60"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/project-relationships-readme-20260720.md", "sha256": "170316229d78652a5bd0a536ae45052fcd549b012f166c67125bea9f4c87f7f3"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/recovery-drill-20260709.md", "sha256": "9b07f2a9c574446115c6afd94ac94f8755133b362c83f547936cdb572b82e278"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/rsshub-github-search-fix-20260825.md", "sha256": "b345ea1eb2ea66ed81bd54e840181a2017566f29353d9ac8aaa9746276f80dd6"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/server-ops.md", "sha256": "52f91887546e9d3e985bb9cc00ea0f67fd85a0c274287b034ceae983a296291e"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/server-resources-20260709.md", "sha256": "025969d6d441909d1307aaca49cb20e2c95c1ad74700e4ce6cf0cd47bb4993d3"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/skill-archive-not-delete-20260830.md", "sha256": "2d4c7faa1c334160eb482d0069b417f379d5f3de22b93840c87139d8d434c9e4"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/skill-curator-false-overlap-20260830.md", "sha256": "f6c635483fa7f72a7c24d3a211adedbdca604ca2907dfb32cc8f4a01d9ef99f7"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/solutions-library.md", "sha256": "dd0c8a887435defd5ea7134ea94901798bdc717a47e85438605328211daefe66"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/stock-contradiction-workflow.md", "sha256": "3e495fefb5b8b620b17ebb7294c0d358e691dd8e3718e8a63b8e504a95373b08"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/stock-operational-gap-20260801.md", "sha256": "c980759df33f221e268cfa829b4bf0800cf7ad569c5867cd764e2dc58429728c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/stock-research-20260712.md", "sha256": "48b3ee4b54f26d96c7f886d732ec1561927d31a9e651a941aaf382abdc6a6061"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/system-prompt-snippets-injection.md", "sha256": "acb37bf182a07e5c6d7675d9f91ff13a6fcea1c4648daf2af76ab3d65c4f0ba5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/systemd-service-governance-20260721.md", "sha256": "ff50393fefe64c32acb48ec5fd6ac7473e8f0c5c13386ddea4d6c1a58595910b"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/systemd-tmpfiles-trap-20260901.md", "sha256": "1f37349c2d4b96b1cd4399362733e77d289c7b0105f1a65268c4533e1ef677af"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tailscale-lan-routing-conflict.md", "sha256": "65afd46bb38a3672f7590ff3227a58e89165d8f09bdf5041a59adea466cc1e2e"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tdai-gateway-debug-20260713.md", "sha256": "e7fb49d9eb0b1ab4417b4431b8d9b4d3a7c87d36def41939e1c847d52ab5bbd8"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tdai-gateway-monitoring-20260713.md", "sha256": "8406d42ddbb81c8c07717ae18ad22004aecada7e2657808faf1acb76beccff23"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tencentdb-api-endpoints-20260720.md", "sha256": "81500e11021992c034efe1e829ba9232e39c0f6956213c7d7e26aa21e31550da"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tencentdb-api-probe-20260720.md", "sha256": "fe9c8c0cc57a6966e2c938d08286d7edca99d67f8fc9af3c8b61213140a3201c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/three-memory-systems-20260713.md", "sha256": "4e494e49be73848f2f2d35e0071a07d856e2994e27c5c746ebe31f5bf600a892"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/three-system-check-upgrade-20260713.md", "sha256": "ac3076e59b33add2d9f9fad1d7b55e92f1a16f8cd522ce2ef17ac87da5cff337"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/watchdog-false-alarm-git-noise-20260808.md", "sha256": "c12c696989de625629aac695d514ebc5c4a2a86cfcd493d60de20322739fe951"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/watchdog-freshness-cadence-20260812.md", "sha256": "19bbd5708defbdfe5ae8225c9141848ce146944adc7c29a95ebe703df60f359f"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/weixin-remote-qr-login-20260808.md", "sha256": "3836c2817af8e43b6c95e98c210f877b0a54e187d8f0e788e9937ee9c97a94ef"}], "after": [{"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/SKILL.md", "sha256": "9574d5e4ac202b2037405e43bb06c503024cf666155031803f26de79ec395539"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/agent-feedback-control-methodology-20260812.md", "sha256": "3d26eb85c131681a239e0aad0a8c90af2d2531df383bd5279b366d9b11903a9f"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/auto-heal-suicide-crashloop-20260801.md", "sha256": "1de823215cb2f9d5f56ca0db5f80b9a54f71fcee6dd3afd89211cb6b7da5a0f1"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-embed-gpu-analysis-20260825.md", "sha256": "ad238d5240693e0858ac033e5ba0ce3e444761dbac56a2bb2a25c25f554a5be4"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-embed-restartsec-crashloop-20260723.md", "sha256": "3a3284aab0f25dfd6b47a785532046b95e5e79cb02c90587afd9ddf3706d242b"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-mem-check-script-fix-20260723.md", "sha256": "32845c49cdf44296e36ed1e22010763297b41d9705de22218b8641878ef1eff7"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-mem-check.sh", "sha256": "f55a235cf60b8efaacccdb9431d9f6645596ee7c652e165f68d281207ee6ef1c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/bge-memory-leak-20260713.md", "sha256": "770864588699921eb745c246df5d0cf83622980bace1fbebb2bfc81d57ebd653"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/calibre-server-windows-20260717.md", "sha256": "6fa8dbd2f885d1da86a82c05f3c239986d4a879a3172ea58287e9421674381e8"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/compression-model-config-20260809.md", "sha256": "971dae4f842cb3462b0335c9c6b0dd788d157639e543ccb4e79b5e41d9b9c9a7"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/cron-pitfalls.md", "sha256": "f5e7643993ced708fed23e3fd593608951e832d0dca6bcdc4c9997c10d4a487c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/cron-retry-mechanism-20260825.md", "sha256": "03354dfc926f0a898fa3ed0cc90de95f3ad10f5652655c27c092ac0bcd5b4a4a"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/cron-script-path-bug-20260721.md", "sha256": "cedbebc0aea8f973de46aa51a9d7232f870297ab3e21698cbd4ded6c3101dae6"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-code-cooperation-20260720.md", "sha256": "99d2cb75daf958a90b0d00c90f6ecc4ac386c7cecbfbb60bd3116256d06df128"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-debug-20260720.md", "sha256": "1540ae97cd96c86d784e66baef37e7e8e4eab075f21af77e383c635398fcec17"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-debug.md", "sha256": "9a967666750fcbe78082e70fa6ead9dfbc9373ffc96e6031f0c2893ef3d9c41a"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-emotion-phase2.md", "sha256": "aac11b84924af207f05ffa0c24805c39084eff8063cb8e6ce6de509ecf1a2232"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-llm-context-fix-20260710.md", "sha256": "32152006d0ec49bd3de01d38fdb10588a86d8aaa43d598cb92b5c05bf957de49"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-modification-rules.md", "sha256": "c98fecf9cdef83a3f2e5200aecbbf548548fdd90d8866cdf5d68c614179b5016"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-nameerror-fix-20260717.md", "sha256": "dc37fc4a451a4231a0bb1326ca97246a695ef6fa3ed612c3919fbe11b16a78a9"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-ops.md", "sha256": "4a3fefaecc41254621ff1ab218b3d4b96d6197c1a43cf825b3c6cbc23717803e"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/daemon-tdai-capture-20260713.md", "sha256": "6113d8db6f38c208c45fca4b6b205fb22ce24c8951e2e40f2524ce498ef6263d"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/feishu-delivery-queue-dns-recovery-20260725.md", "sha256": "bba945102483054c02941cfc2f80c1a0f06079bf967affe81bd35ea6889473e6"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/four-memory-systems-consolidation-20260719.md", "sha256": "a80692185ae94a72fee096a398c973bcd23632de4417614b052c985252affdbe"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/four-memory-systems-consolidation-execution-20260720.md", "sha256": "8666bed79652e357144b1a64a55150b7a53b78c96c60997b17953c4824efd118"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/full-system-health-check-20260801.md", "sha256": "01c6d0551ee2869f6c974816a21c49e5c0a12a828668816c1b041eca869dfe45"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/gateway-crashloop-unit-loss-20260801.md", "sha256": "736934b2472805f9f0931807b8907bfe59f76ebea36096bff3158fd56cc6866c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/gitea-push-conflict-rebase-20260731.md", "sha256": "2716fff2a068668adaf6b1167dfaad6e80b436771685c1981cfb87577fa719f5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/gitea-push-timeout-20260713.md", "sha256": "91b3214544ad1cd0e5d3233e2df9bf7c584663dfdd05b15a99a0c9dd11374b41"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/github-to-gitea-migrate-20260720.md", "sha256": "e384b80a46d81dbd681bc5d535e1e664d7ac21f4f235a0a52d843a7c19573785"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/github-to-gitea-mirror-20260719.md", "sha256": "5d07b47cc1ab27d1375fead2138e67c77d7d46c787e4256fb2fa740f4a026004"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/graph-db-empty-recovery-20260801.md", "sha256": "aa793a6a2b68e2dc83fdf29edc2c66bf71aa14b54ce08636e0c2bf2e56d499f8"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/grok-build-analysis-20260721.md", "sha256": "c5c3e2447bc5215c0ea7b64f81f46145852974f9a18220380217d96ed70eb49e"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/grok-build-impl-20260721.md", "sha256": "3df9834b7e292be98f858d55284205d52736f91278e757c34b534dcce30e7f9a"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/hermes-upgrade-checklist.md", "sha256": "0288954dfbe65b3ba886f3834ceb52b0964b5599c35a4549e962787bfe5731e5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/hermes-upgrade-v020-20260806.md", "sha256": "7eb885d0c1be8ba5bb9daac0e65abeedb07f96f723dcf758cb6c28fde50212c4"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/jarvis-ai-assistant-research-20260719.md", "sha256": "155ac1d8a906b2b2f857d28284aabd755b82b10e6d663a851362c03507083e42"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/llama-vulkan-build-guide-20260901.md", "sha256": "d7f205fa0439a52b7cfb1cc3847e62b1495f743bba002068c7cd54be851af098"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-recall-20260713.md", "sha256": "f8dfd4de2089c99895d2761cf0944e98990e7ac0c6135619dc121381d3ef07c3"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-self-upgrade-false-alarm-20260723.md", "sha256": "76eed278d53c095c0ef0a341907aa9a93e2e4a9029334cc49ff129237e9737a4"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-self-upgrade-false-alarm-20260812.md", "sha256": "cc84a705a3c3df7da0dad1a7fa66d38fced141e28edac51cf254f6ef5e68d9f5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-self-upgrade-field-mismatch-20260723.md", "sha256": "b2f520c3dd0427fb61a902901d6f8a9ed76baf2370e7a2d449495704ee0b7040"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-system-comparison.md", "sha256": "7d8accdcfb3d36283d4367176d0626636bab1afce9c435601b65ac451cabe302"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/memory-system-e2e-verification-20260802.md", "sha256": "e9e28c4c1d29aef48e1d1286d5600fce3df5be79257a9b6b0834f15c73fcb502"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/model-health-multi-config-coverage.md", "sha256": "b83d38b7cf0d9ef87d53538cdfce2fb228df3415cc78cb47b6d45711f69d3b6b"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/model-health-v3-fixes-20260801.md", "sha256": "c1a6a7d981df467e1ab8eb07161f26236b74d9784748b8fdd6fb1743b4ad95b2"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/model-switch-profile-pitfall.md", "sha256": "8b075e52f34c7a2e69b099d7133c0a4186d6fc937c00bcc1c46d258a75126ac2"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/multi-subagent-file-edit-20260721.md", "sha256": "a08c8bad48605fa81eb76e4ff254459ffdecde909d89af2ceb305600a666d72b"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/new-project-gitea-install-workflow-20260721.md", "sha256": "5d3c891e5d4ea4620c7758472570f4ba71161c109da7c4a23280150d9487d46c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/openclaw-model-protection-20260808.md", "sha256": "b151a7a66d0597417dc2279ba5c2363e75d081dd404adc6d67870d885106aa60"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/project-relationships-readme-20260720.md", "sha256": "170316229d78652a5bd0a536ae45052fcd549b012f166c67125bea9f4c87f7f3"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/recovery-drill-20260709.md", "sha256": "9b07f2a9c574446115c6afd94ac94f8755133b362c83f547936cdb572b82e278"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/rsshub-github-search-fix-20260825.md", "sha256": "b345ea1eb2ea66ed81bd54e840181a2017566f29353d9ac8aaa9746276f80dd6"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/server-ops.md", "sha256": "52f91887546e9d3e985bb9cc00ea0f67fd85a0c274287b034ceae983a296291e"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/server-resources-20260709.md", "sha256": "025969d6d441909d1307aaca49cb20e2c95c1ad74700e4ce6cf0cd47bb4993d3"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/skill-archive-not-delete-20260830.md", "sha256": "2d4c7faa1c334160eb482d0069b417f379d5f3de22b93840c87139d8d434c9e4"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/skill-curator-false-overlap-20260830.md", "sha256": "f6c635483fa7f72a7c24d3a211adedbdca604ca2907dfb32cc8f4a01d9ef99f7"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/solutions-library.md", "sha256": "dd0c8a887435defd5ea7134ea94901798bdc717a47e85438605328211daefe66"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/stock-contradiction-workflow.md", "sha256": "3e495fefb5b8b620b17ebb7294c0d358e691dd8e3718e8a63b8e504a95373b08"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/stock-operational-gap-20260801.md", "sha256": "c980759df33f221e268cfa829b4bf0800cf7ad569c5867cd764e2dc58429728c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/stock-research-20260712.md", "sha256": "48b3ee4b54f26d96c7f886d732ec1561927d31a9e651a941aaf382abdc6a6061"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/system-prompt-snippets-injection.md", "sha256": "acb37bf182a07e5c6d7675d9f91ff13a6fcea1c4648daf2af76ab3d65c4f0ba5"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/systemd-service-governance-20260721.md", "sha256": "ff50393fefe64c32acb48ec5fd6ac7473e8f0c5c13386ddea4d6c1a58595910b"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/systemd-tmpfiles-trap-20260901.md", "sha256": "1f37349c2d4b96b1cd4399362733e77d289c7b0105f1a65268c4533e1ef677af"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tailscale-lan-routing-conflict.md", "sha256": "65afd46bb38a3672f7590ff3227a58e89165d8f09bdf5041a59adea466cc1e2e"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tdai-gateway-debug-20260713.md", "sha256": "e7fb49d9eb0b1ab4417b4431b8d9b4d3a7c87d36def41939e1c847d52ab5bbd8"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tdai-gateway-monitoring-20260713.md", "sha256": "8406d42ddbb81c8c07717ae18ad22004aecada7e2657808faf1acb76beccff23"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tencentdb-api-endpoints-20260720.md", "sha256": "81500e11021992c034efe1e829ba9232e39c0f6956213c7d7e26aa21e31550da"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/tencentdb-api-probe-20260720.md", "sha256": "fe9c8c0cc57a6966e2c938d08286d7edca99d67f8fc9af3c8b61213140a3201c"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/three-memory-systems-20260713.md", "sha256": "4e494e49be73848f2f2d35e0071a07d856e2994e27c5c746ebe31f5bf600a892"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/three-system-check-upgrade-20260713.md", "sha256": "ac3076e59b33add2d9f9fad1d7b55e92f1a16f8cd522ce2ef17ac87da5cff337"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/watchdog-false-alarm-git-noise-20260808.md", "sha256": "c12c696989de625629aac695d514ebc5c4a2a86cfcd493d60de20322739fe951"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/watchdog-freshness-cadence-20260812.md", "sha256": "19bbd5708defbdfe5ae8225c9141848ce146944adc7c29a95ebe703df60f359f"}, {"path": "/home/muc/.hermes/skills/devops/self-healing-infrastructure/references/weixin-remote-qr-login-20260808.md", "sha256": "3836c2817af8e43b6c95e98c210f877b0a54e187d8f0e788e9937ee9c97a94ef"}]} +{"id": "c7471416f3be", "ts": "2026-09-01T17:43:02.229095+00:00", "actor": "curator", "action": "write_file", "skill": "llm-gateway-ops", "evidence": {"session_id": "20260829_203246_64a4ce78", "file_path": "references/gateway-real-usage-evaluation-20260901.md"}, "before": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "da9e5a3b14372d21a37e48bb13d923d955c8566ea35c36f094ea96a62ae02303"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}], "after": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "da9e5a3b14372d21a37e48bb13d923d955c8566ea35c36f094ea96a62ae02303"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "2393a0c790d275d70658f2b76809c7838fd9b3452d425744ac23ce083a3e42e6"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}]} +{"id": "da60a1607d09", "ts": "2026-09-01T18:33:41.877406+00:00", "actor": "curator", "action": "write_file", "skill": "llm-gateway-ops", "evidence": {"session_id": "20260829_203246_64a4ce78", "file_path": "references/gateway-shutdown-procedure-20260902.md"}, "before": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "c2a44bc82ed94553896910d0febf5975199cc6ca722fffc94066182413b6c1ed"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "e6798456564a906a5819a6c93acd6df1d20150d9a4c72a24a9ce8d12ef51f6fe"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}], "after": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "c2a44bc82ed94553896910d0febf5975199cc6ca722fffc94066182413b6c1ed"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "e6798456564a906a5819a6c93acd6df1d20150d9a4c72a24a9ce8d12ef51f6fe"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-shutdown-procedure-20260902.md", "sha256": "28b593ab8e03e59d2352d89a7a4023c10c278bfa840936952d3cf71550af819f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}]} +{"id": "4b3ea1afabf4", "ts": "2026-09-01T18:33:52.114456+00:00", "actor": "curator", "action": "patch", "skill": "llm-gateway-ops", "evidence": {"session_id": "20260829_203246_64a4ce78"}, "before": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "c2a44bc82ed94553896910d0febf5975199cc6ca722fffc94066182413b6c1ed"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "e6798456564a906a5819a6c93acd6df1d20150d9a4c72a24a9ce8d12ef51f6fe"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-shutdown-procedure-20260902.md", "sha256": "28b593ab8e03e59d2352d89a7a4023c10c278bfa840936952d3cf71550af819f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}], "after": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "6e55280a804da4489738b063e4d931bb6348ea942391b9ac61b4ec679d9ba91f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "e6798456564a906a5819a6c93acd6df1d20150d9a4c72a24a9ce8d12ef51f6fe"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-shutdown-procedure-20260902.md", "sha256": "28b593ab8e03e59d2352d89a7a4023c10c278bfa840936952d3cf71550af819f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}]} +{"id": "d6a60e35e69f", "ts": "2026-09-01T18:33:52.165328+00:00", "actor": "curator", "action": "patch", "skill": "llm-gateway-ops", "evidence": {"session_id": "20260829_203246_64a4ce78"}, "before": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "6e55280a804da4489738b063e4d931bb6348ea942391b9ac61b4ec679d9ba91f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "e6798456564a906a5819a6c93acd6df1d20150d9a4c72a24a9ce8d12ef51f6fe"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-shutdown-procedure-20260902.md", "sha256": "28b593ab8e03e59d2352d89a7a4023c10c278bfa840936952d3cf71550af819f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}], "after": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "8c565f685cab6c261343226d4c5ec7a397a2d90e07bb5e822847afb169ad4a57"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "e6798456564a906a5819a6c93acd6df1d20150d9a4c72a24a9ce8d12ef51f6fe"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-shutdown-procedure-20260902.md", "sha256": "28b593ab8e03e59d2352d89a7a4023c10c278bfa840936952d3cf71550af819f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}]} +{"id": "765767c7f944", "ts": "2026-09-01T18:34:24.563968+00:00", "actor": "curator", "action": "patch", "skill": "llm-gateway-ops", "evidence": {"session_id": "20260829_203246_64a4ce78"}, "before": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "8c565f685cab6c261343226d4c5ec7a397a2d90e07bb5e822847afb169ad4a57"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "e6798456564a906a5819a6c93acd6df1d20150d9a4c72a24a9ce8d12ef51f6fe"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-shutdown-procedure-20260902.md", "sha256": "28b593ab8e03e59d2352d89a7a4023c10c278bfa840936952d3cf71550af819f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}], "after": [{"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/SKILL.md", "sha256": "5ea6a3791458248c9ffbda12e83c1d95f6086c1738f5c53ba83406c0d2bbcd2f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/2026-08-04-omniroute-cron-failure.md", "sha256": "70a6dd172d80937c673f1dafa3a13cfef2f46dde870b73723f4a35af27741e3f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/agnes-switch-20260817.md", "sha256": "67620023a243c0fa5fbea1232e986c75faac143a19dfbd00353b9c3ddca432b2"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-real-usage-evaluation-20260901.md", "sha256": "e6798456564a906a5819a6c93acd6df1d20150d9a4c72a24a9ce8d12ef51f6fe"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/gateway-shutdown-procedure-20260902.md", "sha256": "28b593ab8e03e59d2352d89a7a4023c10c278bfa840936952d3cf71550af819f"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-channel-management-20260820.md", "sha256": "696e3a6727dfca4fbedd70ecc082f998865fffd3d84f724cfef38b25f7e55e54"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/newapi-sensenova-channel-20260821.md", "sha256": "f4c48291225cec786f18197486a486fbe415d0f40e1125ec9e53f4217ec2ad02"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/omniroute-notes.md", "sha256": "784c80de60840070c802834c8cfb1309c66a1b02139b60a85e24d37ef59d9c1d"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/references/openclaw-config-validation-pitfalls-20260821.md", "sha256": "3f38dea7a8cef04b5b8dd35e049dcc423a49937bee2ca0a8dd963b50437175dd"}, {"path": "/home/muc/.hermes/skills/devops/llm-gateway-ops/scripts/verify_mcp_stdio.py", "sha256": "017643eec0678b8e7b2d63266642d138a390a3a8ce1aed8c38e9028a9a24c9cf"}]} diff --git a/skills/.usage.json b/skills/.usage.json index 27edbf4a..33f30af1 100644 --- a/skills/.usage.json +++ b/skills/.usage.json @@ -346,14 +346,14 @@ "created_by": "agent", "last_patched_at": "2026-09-01T13:24:30.353399+00:00", "last_reused_patch_generation": 2, - "last_used_at": "2026-09-01T14:46:17.329481+00:00", - "last_viewed_at": "2026-09-01T14:46:17.312828+00:00", + "last_used_at": "2026-09-01T17:40:43.660373+00:00", + "last_viewed_at": "2026-09-01T17:40:43.644850+00:00", "patch_count": 4, "patch_generation": 2, "pinned": false, "state": "active", - "use_count": 16, - "view_count": 16 + "use_count": 17, + "view_count": 17 }, "blocked-page-recovery": { "archived_at": null, @@ -839,14 +839,14 @@ "created_by": "agent", "last_patched_at": "2026-08-26T05:42:43.675272+00:00", "last_reused_patch_generation": 2, - "last_used_at": "2026-09-01T12:49:40.492187+00:00", - "last_viewed_at": "2026-09-01T12:49:40.486311+00:00", + "last_used_at": "2026-09-01T15:52:18.292077+00:00", + "last_viewed_at": "2026-09-01T15:52:18.282846+00:00", "patch_count": 98, "patch_generation": 2, "pinned": false, "state": "active", - "use_count": 88, - "view_count": 88 + "use_count": 89, + "view_count": 89 }, "devops/bge-embed-crash-loop-fix": { "archived_at": null, @@ -1655,14 +1655,14 @@ "created_by": null, "last_patched_at": "2026-08-12T05:13:32.138839+00:00", "last_reused_patch_generation": 1, - "last_used_at": "2026-09-01T13:17:29.163415+00:00", - "last_viewed_at": "2026-09-01T13:17:29.139591+00:00", + "last_used_at": "2026-09-01T17:41:09.065587+00:00", + "last_viewed_at": "2026-09-01T17:41:09.051579+00:00", "patch_count": 81, "patch_generation": 1, "pinned": false, "state": "active", - "use_count": 139, - "view_count": 128 + "use_count": 140, + "view_count": 129 }, "hermes-venv-dependency-safety": { "archived_at": null, @@ -1813,6 +1813,21 @@ "use_count": 5, "view_count": 5 }, + "kanban-router": { + "archived_at": null, + "created_at": "2026-09-01T15:56:37.956717+00:00", + "created_by": null, + "last_patched_at": null, + "last_reused_patch_generation": 0, + "last_used_at": "2026-09-01T15:56:37.961319+00:00", + "last_viewed_at": "2026-09-01T15:56:37.956727+00:00", + "patch_count": 0, + "patch_generation": 0, + "pinned": false, + "state": "active", + "use_count": 1, + "view_count": 1 + }, "kanban-routing": { "archived_at": null, "created_at": "2026-09-01T13:21:22.328206+00:00", @@ -1948,16 +1963,16 @@ "archived_at": null, "created_at": "2026-08-01T13:47:26.532313+00:00", "created_by": "agent", - "last_patched_at": "2026-08-20T18:26:57.337252+00:00", - "last_reused_patch_generation": 29, - "last_used_at": "2026-08-29T10:58:53.508614+00:00", - "last_viewed_at": "2026-08-29T10:58:53.501617+00:00", - "patch_count": 35, - "patch_generation": 29, + "last_patched_at": "2026-09-01T18:34:24.564573+00:00", + "last_reused_patch_generation": 30, + "last_used_at": "2026-09-01T18:33:03.244527+00:00", + "last_viewed_at": "2026-09-01T18:33:03.239992+00:00", + "patch_count": 40, + "patch_generation": 34, "pinned": false, "state": "active", - "use_count": 39, - "view_count": 39 + "use_count": 45, + "view_count": 45 }, "llm-wiki": { "archived_at": null, @@ -2861,14 +2876,14 @@ "created_by": "agent", "last_patched_at": "2026-09-01T13:48:27.218650+00:00", "last_reused_patch_generation": 27, - "last_used_at": "2026-09-01T14:46:17.334034+00:00", - "last_viewed_at": "2026-09-01T14:46:17.325238+00:00", + "last_used_at": "2026-09-01T18:32:51.753345+00:00", + "last_viewed_at": "2026-09-01T18:32:51.742812+00:00", "patch_count": 230, "patch_generation": 27, "pinned": false, "state": "active", - "use_count": 191, - "view_count": 191 + "use_count": 200, + "view_count": 200 }, "self-hosted-tunneling": { "archived_at": null, diff --git a/skills/devops/llm-gateway-ops/SKILL.md b/skills/devops/llm-gateway-ops/SKILL.md index 70123673..2cecd9b0 100644 --- a/skills/devops/llm-gateway-ops/SKILL.md +++ b/skills/devops/llm-gateway-ops/SKILL.md @@ -7,10 +7,12 @@ description: LLM 网关运维 — OmniRoute/NewAPI 类 AI 网关的评估、部 ## 触发场景 - 用户分享新 AI 网关/路由项目(如 OmniRoute、OneAPI 类)→ 评估是否替代现有 NewAPI +- **用户问"X 网关是否有必要保留/关停"→ 拉真实调用量做决策**(不只是看进程在不在)→ 决策后看 `references/gateway-shutdown-procedure-20260902.md` 走 6 步标准流程 - 部署/试跑网关、做 systemd 常驻、接入看门狗 - 写脚本调网关 API(chat/completions)遇超时/挂起 - 把 cron 任务从 NewAPI 切换到其他网关 provider - 需要持续观测网关稳定性、为"是否全面切换"提供数据 +- 周期性自检网关使用率(cron `0 9 1 * *`) ## 核心方法论:评估是否替代现有网关 @@ -19,6 +21,10 @@ description: LLM 网关运维 — OmniRoute/NewAPI 类 AI 网关的评估、部 3. **生产链路绝不动**:付费主模型(如 deepseek-v4-flash 走官方 API)不切 4. **观测 2-4 周**再决定是否迁移——必须有量化数据支撑,不拍脑袋 5. 评估维度:稳定性/免费模型供给/路由能力/成本控制/国内网络兼容/生态成熟度 +6. **logs 表 0 调用 ≠ 服务僵尸**(2026-09-02 教训):`logs` 是写日志表,不代表服务可用。判断"僵尸"必跑 3 步——L1 进程活 + L2 直连 200 + L3 `provider_models_cache.json` 列了模型。三步全过才认活(详细见 `references/gateway-real-usage-evaluation-20260901.md` 的"修正版"章节) +7. **进程内存要算子进程总和**(2026-09-02 教训):OmniRoute 主进程 46MB + 子进程 394MB = **441MB 总占用**,只看主进程会少算 90% +8. **HTTP 410/404 ≠ key 失效**(2026-09-02 教训):NVIDIA 端下架特定模型(410 "has retired")≠ API key 废了——**同一个 key 通常能跑多个模型**,重测 `minimaxai/minimax-m3` 或 `google/gemma-4-31b-it` 等常用模型验证。`9 个 NIM key 8 个模型下架` 的判断是错的——9/9 全部活跃,只是测错了模型。 +9. **评估完成后如何安全关停**(2026-09-02 OmniRoute 实战):6 步标准流程——①备份 4 件套(脚本/服务/配置/状态)②先写替代观测脚本(不能只关停就跑,否则 cron 一直报错)③改 cron 任务(no_agent script 字段必须相对路径)④systemctl stop + disable ⑤验证替代品 + 内存释放 ⑥归档不删原可执行文件。详见 `references/gateway-shutdown-procedure-20260902.md`。**patch 工具拒绝改 config.yaml**——provider 段留着不动通常没事(端口已死不会触发)。 ## OmniRoute 部署(npm 全局) @@ -410,4 +416,6 @@ NewAPI 添加渠道有两种方式:API(会 panic,版本 bug)和 Web UI - `references/newapi-channel-management-20260820.md` — NewAPI 渠道管理坑:SQLite 直改完整性、API panic bug、Web UI 替代方案 - `references/newapi-sensenova-channel-20260821.md` — Sensenova Token Plan 免费接入:5 模型 + abilities 联动 + reserved word 坑 - `references/openclaw-config-validation-pitfalls-20260821.md` — OpenClaw openclaw.json 配置验证坑:defaultModel/defaultProvider 非法、output 字段不合法、models 数组必填 -- 微信(iLink)/QQ 平台接入 Hermes gateway 的 .env 环境变量铁律见 **hermes-debug 第 6 节**(WEIXIN_TOKEN/QQ_APP_ID 只认 .env 不读 config.yaml 段;v0.20 需 WEIXIN_ALLOW_ALL_USERS=true;QQ 用 `hermes pairing approve qqbot ` 授权) +- `references/gateway-real-usage-evaluation-20260901.md` — 评估方法论:3 步框架(L1 进程/L2 配置/L3 调用)+ 决策树 + 410 ≠ key 失效陷阱 +- `references/gateway-shutdown-procedure-20260902.md` — **关停标准流程**:6 步(备份→写替代脚本→改 cron→systemctl stop+disable→验证→归档)+ 4 个 cron/patch 陷阱 +- `references/2026-08-04-omniroute-cron-failure.md` — OmniRoute cron 504 失败案例(auto/chat 路由慢模型)