首页龙虾技能列表 › Pilot Map Reduce — 分布式MapReduce

Pilot Map Reduce — 分布式MapReduce

v1.0.0

在代理群体上实现分布式MapReduce,用于并行数据处理。适用于需要跨多个工作节点处理大型数据集、并行执行map阶段后聚合reduce阶段、以及包含combine步骤的并行任务的场景。

0· 39·0 当前·0 累计
by @teoslayer (Calin Teodor)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/9
安全扫描
VirusTotal
可疑
查看报告
OpenClaw
可疑
medium confidence
技能的指令大部分与基于Pilot代理群体的map-reduce相匹配,但存在不一致和缺失步骤(特别是未解释的/tmp结果文件、脆弱的JSON处理以及对pilotctl配置的隐式假设),在安装前需谨慎。
评估建议
该技能似乎实现了Pilot协议的合法map-reduce模式,但在安装或运行前存在需要解决的差距和脆弱假设: - 验证pilotctl:从可信来源(主页或官方发布版)安装pilotctl并检查其配置/凭证。该技能假设pilotctl守护进程正在运行,但未提供身份验证或凭证位置的指导。 - 解决/tmp不一致:SKILL.md有时从pilotctl输出读取map结果,有时从/tmp/map-results-$JOB_ID.json读取——请明确使用哪种方法或添加写入文件的步骤。按原样运行提供的脚本可能会失败或静默处理不完整的数据。 - 在沙箱中测试:在小型、非敏感数据集上运行工作流,并使用受控的worker对等节点来确认消息格式和持久化行为。 - 防范JSON注入/格式化问题:脚本将shell变量和jq输出嵌入JSON有效载荷;格式错误的有效载荷可能会破坏reducer或泄露意外字段。在发送前请引用并验证JSON有效载荷。 - 检查数据暴露风险:消息发送到代理群体;确保worker是可信的,且有效载荷不包含机密。确认pilotctl如何持久化或暴露接收到的消息(日志、文件、套接字)。 -...
详细分析 ▾
用途与能力
名称/描述与运行时指令一致:所有命令都使用pilotctl来发现对等节点、发送消息和收集结果。声明的必需二进制文件(pilotctl)是合适的。依赖项列表包含jq和sort,这些在SKILL.md中使用,但在注册表元数据中未声明为必需二进制文件(轻微不匹配)。主页和pilot-protocol依赖与分布式代理框架一致。
指令范围
指令指导代理通过pilotctl列出对等节点、发送消息和读取接收到的消息——所有操作都在声明的目的范围内。但存在有问题的空白:'Shuffle and reduce'部分从/tmp/map-results-$JOB_ID.json读取MAP_RESULTS,但早期收集使用pilotctl --json received(没有步骤写入/tmp文件)。脚本还通过嵌入shell扩展的jq输出来构造JSON有效载荷,这很脆弱,可能会产生无效JSON或意外包含敏感内容。SKILL.md假设pilotctl守护进程正在运行且可访问,但没有解释身份验证、配置路径或消息持久化方式,这会影响安全和数据流假设。
安装机制
纯指令式技能,没有安装规范和代码文件——就任意代码写入磁盘而言风险最低。但是,它需要pilotctl和常见CLI工具存在于PATH中。
凭证需求
注册表元数据未请求环境变量或凭证。这对于CLI驱动的技能是合理的,但pilotctl本身可能依赖本地配置、套接字或凭证(此处未声明)。该技能还引用/tmp用于临时结果(本地文件系统访问)以及通过pilotctl的代理网络;在运行前应验证pilotctl的配置及其使用的任何密钥。
持久化与权限
该技能不请求always:true,不修改其他技能或系统范围设置。仅在调用时运行命令。包本身没有特权持久化行为。
安全有层次,运行前请审查代码。

License

MIT-0

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

运行时依赖

无特殊依赖

版本

latestv1.0.02026/4/9

初始版本

● 可疑

安装命令 点击复制

官方npx clawhub@latest install pilot-map-reduce
镜像加速npx clawhub@latest install pilot-map-reduce --registry https://cn.clawhub-mirror.com

技能文档

在代理群体上实现分布式map-reduce模式,用于并行数据处理。

命令

向worker提交map任务

TOTAL_WORKERS=$(pilotctl --json peers --search "role:mapper" | jq 'length')

for i in $(seq 0 $((TOTAL_WORKERS - 1))); do WORKER=$(pilotctl --json peers --search "role:mapper" | jq -r ".[$i].address") pilotctl --json send-message "$WORKER" \ --data "{\"type\":\"map_task\",\"job_id\":\"$JOB_ID\",\"chunk_start\":$((i 1000)),\"chunk_end\":$(((i + 1) 1000))}" done

收集map结果

EXPECTED_RESULTS=$TOTAL_WORKERS
RECEIVED=0

while [ $RECEIVED -lt $EXPECTED_RESULTS ]; do RESULTS=$(pilotctl --json received \ | jq '[.messages[] | select(.payload.type == "map_result" and .payload.job_id == "'$JOB_ID'")] | length') RECEIVED=$RESULTS sleep 1 done

Shuffle and reduce

MAP_RESULTS=$(cat /tmp/map-results-$JOB_ID.json)

KEYS=$(echo "$MAP_RESULTS" | jq -r '.[].payload.results | to_entries | .[].key' | sort -u)

for key in $KEYS; do VALUES=$(echo "$MAP_RESULTS" | jq -r '[.[].payload.results."'$key'" // empty] | flatten') pilotctl --json send-message "$REDUCER" \ --data "{\"type\":\"reduce_task\",\"job_id\":\"$JOB_ID\",\"key\":\"$key\",\"values\":$VALUES}" done

工作流示例

跨分布式文本语料库的词计数:

#!/bin/bash

JOB_ID="wordcount-$(date +%s)"

# MAP phase MAPPERS=$(pilotctl --json peers --search "role:mapper" | jq -r '.[].address')

for i in $(seq 0 9); do pilotctl --json send-message "${MAPPERS[$i]}" \ --data "{\"type\":\"map_task\",\"job_id\":\"$JOB_ID\",\"chunk\":$i}" & done wait

# REDUCE phase sleep 5

MAP_RESULTS=$(pilotctl --json received \ | jq '[.messages[] | select(.payload.type == "map_result")]')

FINAL=$(echo "$MAP_RESULTS" | jq 'map({(.payload.word): .payload.count}) | add') echo "$FINAL"

依赖项

需要pilot-protocol技能、jq和sort。

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

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

了解定制服务