用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Supernor/openclaw-skills --skill model-failover-notify命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | model-failover-notify |
| description | Send model health notifications with interactive buttons to |
| version | 3.0.0 |
| author | repo-man |
| tags | ["model-health","notifications","internal","components"] |
Read model-health-notifications.jsonl for unread entries and send interactive alerts to #ops-alerts.
#ops-alerts — Channel ID: 1477754571697688627
CURSOR_FILE="/home/node/.openclaw/model-health-notify-cursor.txt"
NOTIF_FILE="/home/node/.openclaw/model-health-notifications.jsonl"
If cursor file exists, read the line number. Otherwise start from 0.
Read lines from $NOTIF_FILE starting after the cursor position.
Send to #ops-alerts using Discord components (buttons for quick actions):
{
"action": "send",
"channel": "discord",
"channelId": "1477754571697688627",
"components": {
"text": "🚨 **Provider Down: <provider>**\nReason: <reason>\nSince: <timestamp>\nAffected profiles: <count>",
"reusable": true,
"blocks": [
{
"type": "actions",
"buttons": [
{ "label": "Clear Quarantine", "style": "success" },
{ "label": "View Logs", "style": "primary" },
{ "label": "Silence 1h", "style": "secondary" }
]
}
]
}
}
When Robert clicks a button:
/model-clear <provider> and confirm in threadgateway-log-query.sh --errors --limit 10 and post results in threadAlso run:
/home/node/.openclaw/scripts/incident-manager.sh open "<provider>" "<reason>"
Send plain message (no buttons needed):
✅ **Provider Recovered: <provider>**
Down since: <timestamp>
Duration: <calculated>
Also run:
/home/node/.openclaw/scripts/incident-manager.sh close "<provider>"
Read model-health.json. If 2+ providers are quarantined, send:
{
"action": "send",
"channel": "discord",
"channelId": "1477754571697688627",
"components": {
"text": "⚠️ **Fallback Chain Degraded**\nQuarantined: <list>\nActive: <list>",
"blocks": [
{
"type": "actions",
"buttons": [
{ "label": "Clear All", "style": "danger" },
{ "label": "View Status", "style": "primary" }
]
}
]
}
}
When clicked:
/model-clear all/model-status and post full dashboard in threadWrite the current line count to the cursor file.
When you receive a button click (message like Clicked "Clear Quarantine".), parse the original alert context from the conversation to determine which provider. Then execute the action and reply in the same thread.
1477754571697688627 (#ops-alerts)reusable: true on components so buttons stay active