360 Secure SkillHub
360 安全技能中心

Pilot Load Balancer

该 Skill 通过 pilotctl 和 jq 向 worker 代理发送任务分配,描述轮询、最少连接和健康路由;需 pilot-protocol、运行中的 pilotctl daemon、jq 与 uuidgen,示例用临时文件保存轮询索引。

teoslayer
teoslayer
热度 33.82
最近更新 2026-05-11 17:41:32
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API应用场景:工作流 / 任务管理 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add pilot-load-balancer
Metadata
name
pilot-load-balancer
description
Distribute tasks across worker pools with health-aware load balancing. Use this skill when: 1. You need to distribute tasks across multiple worker agents 2. You want round-robin, least-connections, or health-based routing 3. You need to track worker capacity and avoid overload Do NOT use this skill when: - You need map-reduce parallelism (use pilot-map-reduce) - Workers should pull tasks themselves (use task queues)
tags
["pilot-protocol","load-balancing","task-distribution","coordination"]
license
AGPL-3.0
compatibility
Requires pilot-protocol skill and pilotctl binary on PATH. The daemon must be running (pilotctl daemon start).
metadata
{"author":"vulture-labs","version":"1.0","openclaw":{"requires":{"bins":["pilotctl"]},"homepage":"https://pilotprotocol.network"}}
allowed-tools
["Bash"]

pilot-load-balancer

Implement load balancing strategies to distribute tasks across worker pools.

Commands

Discover available workers

WORKERS=$(pilotctl --json peers --search "role:worker" | jq -r '[.[] | {address, node_id, tags}]')

Assign task using round-robin

ROBIN_INDEX=$(cat /tmp/load-balancer-index.txt 2>/dev/null || echo 0)
NEXT_WORKER=$(echo "$WORKERS" | jq -r ".[$ROBIN_INDEX].address")

pilotctl --json send-message "$NEXT_WORKER" \
  --data "{\"type\":\"task_assignment\",\"task_id\":\"$TASK_ID\"}"

echo "$(( (ROBIN_INDEX + 1) % WORKER_COUNT ))" > /tmp/load-balancer-index.txt

Assign task using least-connections

LEAST_LOADED=$(echo "$WORKER_STATUS" | jq -r 'sort_by(.active_tasks) | first | .worker')

pilotctl --json send-message "$LEAST_LOADED" \
  --data "{\"type\":\"task_assignment\",\"task_id\":\"$TASK_ID\"}"

Workflow Example

Distribute 10 tasks across 3 workers:

#!/bin/bash
WORKERS=$(pilotctl --json peers --search "pool:compute-workers" | jq -r '.[].address')
WORKER_ARRAY=($WORKERS)

ROBIN_INDEX=0

for i in {1..10}; do
  WORKER=${WORKER_ARRAY[$ROBIN_INDEX]}
  ROBIN_INDEX=$(( (ROBIN_INDEX + 1) % ${#WORKER_ARRAY[@]} ))

  pilotctl --json send-message "$WORKER" \
    --data "{\"type\":\"task_assignment\",\"task_id\":\"task-$i\"}" &
done
wait

Dependencies

Requires pilot-protocol skill, jq, and uuidgen.