首页龙虾技能列表 › Pilot Heartbeat Monitor — 心跳监控

Pilot Heartbeat Monitor — 心跳监控

v1.0.0

通过定期心跳监控代理健康状况,使用基于超时的检测来识别故障代理,并触发自动任务重新分配或重新选举。适用于 swarm 成员健康监测、故障转移和负载均衡场景。

0· 80·0 当前·0 累计
by @teoslayer (Calin Teodor)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/9
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
该技能的行为(使用 pilotctl 发布和读取心跳以及探测对等节点)与其声明的用途相匹配,但说明中引用了多个未声明的环境变量,并且假设了注册表/认证行为而没有记录所需的凭据或信任边界。
评估建议
这个技能似乎能够实现其声称的功能(心跳发布和故障检测),但在安装或运行之前存在一些需要澄清的差距:确保 pilotctl 是 PATH 上的可信二进制文件,并了解它如何向注册表进行认证(SKILL.md 假设你可以发布和读取消息,但没有声明所需的凭据或如何提供这些)。指令使用未在技能元数据中声明的环境变量($AGENT_ID、$SWARM_NAME、$REGISTRY_HOST)——决定你将如何设置这些变量,以及其中是否包含敏感值。确认向注册表发布心跳和 ping 对等节点的网络和隐私影响(这些操作会在网络上暴露代理 ID 和地址)。验证脚本调用的工具(jq、bc)的存在性和来源,并首先在受限/测试环境中运行命令。注意该技能采用 AGPL-3.0 许可证;如果你嵌入或修改它,该许可证可能会影响你修改后的技能的再分发。如果需要更清晰的安全态势,请请求作者声明所需的环境变量和任何凭据,记录 pilotctl/registry 的认证流程,并说明预期的网络/信任边界。...
详细分析 ▾
用途与能力
名称/描述(心跳/故障检测和故障转移)与运行时指令一致:通过 pilotctl 发布心跳、读取收件箱、检测超时和 ping 对等节点。需要的二进制文件 pilotctl 和对 pilot-protocol 技能的依赖是适当的。
指令范围
指令具体且仅限于心跳发布、收件箱检查和直接 ping 验证。然而,SKILL.md 引用了未在技能元数据中声明的环境变量(例如 $AGENT_ID、$SWARM_NAME、$REGISTRY_HOST)和工具(jq、bc);它还假设了一个注册表端点和 pilotctl 守护进程上下文,但没有指定认证或预期的网络边界。
安装机制
这是一个纯指令技能,没有安装规范和代码文件,因此安装程序不会下载或写入任何内容。安装风险较低。
凭证需求
该技能没有声明所需的环境变量或凭据,但命令依赖于多个变量(AGENT_ID、SWARM_NAME、REGISTRY_HOST),并且在真实部署中可能需要认证才能从注册表发布/读取。该技能没有请求或记录任何凭据,也没有说明 pilotctl 如何进行认证,这是一个缺口:用户可能需要在其他地方提供令牌或其他密钥,但该技能没有提供指导。
持久化与权限
该技能不是 always:true,不请求持久的系统更改,仅可由用户调用。它不会尝试修改其他技能或系统范围的配置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/4/9

初始版本

● 无害

安装命令 点击复制

官方npx clawhub@latest install pilot-heartbeat-monitor
镜像加速npx clawhub@latest install pilot-heartbeat-monitor --registry https://cn.clawhub-mirror.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 ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务