📦 Pilot Heartbeat Monitor — 心跳监控
v1.0.0通过定期心跳监控代理健康状况,使用基于超时的检测来识别故障代理,并触发自动任务重新分配或重新选举。适用于 swarm 成员健康监测、故障转移和负载均衡场景。
0· 80·0 当前·0 累计
安全扫描
OpenClaw
可疑
medium confidence该技能的行为(使用 pilotctl 发布和读取心跳以及探测对等节点)与其声明的用途相匹配,但说明中引用了多个未声明的环境变量,并且假设了注册表/认证行为而没有记录所需的凭据或信任边界。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/4/9
初始版本
● 无害
安装命令
点击复制官方npx clawhub@latest install pilot-heartbeat-monitor
🇨🇳 镜像加速npx clawhub@latest install pilot-heartbeat-monitor --registry https://cn.longxiaskill.com
技能文档
通过定期心跳监控代理健康状况,并使用基于超时的检测来识别故障。
命令
向对等节点发送心跳
pilotctl --json publish "registry-hostname" "heartbeat:$SWARM_NAME" \
--data "{\"agent\":\"$AGENT_ID\",\"timestamp\":\"$(date -u +%s)\",\"status\":\"alive\"}"
识别故障代理
TIMEOUT=30
CURRENT_TIME=$(date -u +%s)
FAILED_AGENTS=$(pilotctl --json inbox \
| jq --arg now "$CURRENT_TIME" --arg timeout "$TIMEOUT" \
'[.messages[] | select(.topic == "heartbeat:'$SWARM_NAME'") | {agent: .payload.agent, last_seen: .payload.timestamp}] | group_by(.agent) | map(select(($now | tonumber) - (map(.last_seen) | max) > ($timeout | tonumber))) | .[].agent')
通过直接 ping 验证故障
for agent in $FAILED_AGENTS; do
AGENT_ADDR=$(pilotctl --json peers | jq -r '.[] | select(.node_id == "'$agent'") | .address')
PING_RESULT=$(pilotctl --json ping "$AGENT_ADDR" --count 3 --timeout 2s)
LOSS=$(echo "$PING_RESULT" | jq -r '.packet_loss_pct')
if [ "$LOSS" = "100" ]; then
echo "Agent $agent CONFIRMED DOWN"
fi
done
工作流示例
工作池的健康监控脚本,支持自动任务重新分配:
#!/bin/bash
SWARM_NAME="worker-pool"
HEARTBEAT_INTERVAL=5
FAILURE_TIMEOUT=15
REGISTRY_HOST="registry.example.com"# 后台:发送自身心跳
(
while true; do
pilotctl --json publish "$REGISTRY_HOST" "heartbeat:$SWARM_NAME" \
--data "{\"agent\":\"$AGENT_ID\",\"timestamp\":\"$(date -u +%s)\"}"
sleep $HEARTBEAT_INTERVAL
done
) &
# 监控对等节点心跳
while true; do
CURRENT_TIME=$(date -u +%s)
# 检测超时并触发恢复
# ...
sleep $HEARTBEAT_INTERVAL
done
依赖项
需要 pilot-protocol 技能、jq 和 bc。
数据来源:ClawHub ↗ · 中文优化:龙虾技能库