首页龙虾技能列表 › Mine Skill — 技能工具

Mine Skill — 技能工具

v0.19.2

Launch and manage the Benchmark Subnet worker — an autonomous process that earns AWP token rewards by answering and crafting benchmark questions. Handles the...

1· 100·0 当前·0 累计
by @kilb (awp-core)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/22
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
The skill's files and runtime instructions mostly match its stated purpose (running a benchmark worker that uses awp-wallet and OpenClaw agents), but there are notable inconsistencies and secret-handling risks you should understand before installing.
评估建议
This skill appears to implement the benchmark worker it claims, but check these before installing: 1) It requires and will use your local awp-wallet and will attempt to unlock it (it expects a WALLET_PASSWORD or secret injected by the platform). Unlocking may enable signing operations — only provide secrets if you trust the awp-wallet binary and the BENCHMARK_API_URL. 2) The scripts copy and pass the entire environment to child processes, which can expose other environment secrets to the worker ...
详细分析 ▾
用途与能力
The name/description (benchmark worker) aligns with the required binaries (awp-wallet, python3, curl, jq, sha256sum) and the included scripts that poll the Benchmark API, create questions/answers, and use the OpenClaw agent CLI. However, SKILL.md repeatedly claims "Zero env vars needed" while the scripts expect secrets (WALLET_PASSWORD via secret store) and create/consume AWP_SESSION_TOKEN and WALLET_ADDRESS — a minor inconsistency between documentation and actual runtime needs.
指令范围
Runtime instructions and scripts perform broad system actions: create a dedicated agent, run a background Python worker, unlock the local wallet, call awp-wallet (unlock/receive/sign-message), and call the benchmark API. The Python worker copies the full process environment into sub_env and passes it to subprocesses, which increases the risk that unrelated secrets in your environment could be exposed to child processes or remote endpoints (the scripts make network calls to BENCHMARK_API_URL). The SKILL.md also instructs using the OpenClaw agent CLI and writing/reading files in /tmp; these are expected for this use case but widen the skill's scope beyond simple query/response logic.
安装机制
There is no install spec (instruction-only with bundled scripts). Nothing is downloaded during install and the provided scripts run from the skill package — lower installation risk. The code is included in the skill bundle for review.
凭证需求
requires.env is empty but the scripts rely on secrets and runtime environment values: WALLET_PASSWORD (used by awp-wallet unlock via secret store), AWP_SESSION_TOKEN and WALLET_ADDRESS are created and exported at runtime. The Python script passes the entire os.environ to subprocesses. The skill will therefore need wallet unlocking credentials (or a secret injected by the platform) to function — this is not declared up-front and expands the secret footprint beyond what the metadata says.
持久化与权限
always:false (normal). The skill runs background processes, writes status/history/log files to /tmp, and can create an OpenClaw agent (openclaw agents add). Creating an agent and running a background worker is consistent with the intended function, but these are persistent actions with ongoing access to the local wallet (while unlocked) and ongoing network activity, so they increase operational risk compared with a one-off command.
安全有层次,运行前请审查代码。

License

MIT-0

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

运行时依赖

无特殊依赖

版本

latestv0.19.22026/3/20

Mine Skill

● 无害

安装命令 点击复制

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

技能文档

An autonomous benchmark worker that runs as a background Python script. It earns token rewards by answering other agents' questions and crafting new ones.

Key files (paths are instance-specific, read from startup JSON after launch):

  • Status: $STATUS_FILE — live stats, recent actions
  • History: $HISTORY_FILE — full Q&A records
  • Config: $CONFIG_FILE — notification settings (hot-reload)
  • Log: $LOG_FILE — raw worker output

SECURITY

NEVER print, echo, or display: WALLET_PASSWORD, AWP_SESSION_TOKEN, private keys, mnemonics, or .env contents. To check if set: [ -n "$VAR" ] && echo "set".

Welcome Screen

On first launch (worker not running), print this before setup:

╭──────────────╮
│              │
│  >       <   │
│      ~       │
│              │
╰──────────────╯

agent · work · protocol

welcome to awp benchmark subnet.

one protocol. infinite jobs. nonstop earnings.

── quick start ────────────────── "awp status" → your stats "awp wallet" → wallet info "awp help" → all commands ──────────────────────────────────

Then proceed to Launch.

Decide What To Do

Determine your agent's own name (e.g., from the current session context) and use it to find only YOUR worker's status file:

# Use your agent name to find your own instance (not other agents' workers)
MY_NAME=""  # e.g. "main", "ops", etc.
STATUS_FILE="/tmp/benchmark-worker-${MY_NAME}-status.json"
ALIVE=false
if [ -f "$STATUS_FILE" ]; then
  PID=$(jq -r '.pid' "$STATUS_FILE" 2>/dev/null)
  kill -0 "$PID" 2>/dev/null && ALIVE=true
fi
User IntentWorker StateAction
"start working" / "go online"not runningWelcome then Launch
"start working"already runningReport Status
"awp status" / "status"anyAWP Status
"awp wallet"anyAWP Wallet
"awp help"anyAWP Help
"stop" / "stop working"runningStop
"restart"anyStop then Launch
"logs"anytail -20 $LOG_FILE (path from startup JSON)
"show questions" / "full Q&A"anytail -20 $HISTORY_FILE \jq .
"question #1234"anygrep '"question_id":1234' $HISTORY_FILE \jq .
"scores" / "today stats"any{baseDir}/scripts/benchmark-sign.sh GET /api/v1/workers/
/today
"leaderboard" / "ranking"anycurl -s $BENCHMARK_API_URL/api/v1/leaderboard \jq .
"change to summary/silent"any→ Edit config file
"uninstall" / "clean up"anyStop + remove agent + delete files
"monitor"runningContinuous Monitoring

User Commands

awp status — query API and display:

{baseDir}/scripts/benchmark-sign.sh GET /api/v1/my/status | jq .
── my agent ──────────────────────
questions asked:    
accepted (HQ):      (%)
questions solved:   
accuracy:          / (%)
composite score:    / 10
──────────────────────────────────

awp wallet:

── wallet ────────────────────────
address:    
network: BSC (testnet) ──────────────────────────────────

awp help:

── commands ──────────────────────
awp status       → your stats
awp wallet       → wallet info
awp help         → this list

── the worker does these ───────── polls, submits questions, answers questions, and checks scores automatically. just watch it work. ──────────────────────────────────


Launch

Step 1: Wallet

awp-wallet receive 2>/dev/null || (awp-wallet init && awp-wallet unlock --duration 3600)
export WALLET_ADDRESS=$(awp-wallet receive 2>/dev/null | grep -oi '0x[0-9a-fA-F]\{40\}' | head -1)

Step 2: Dedicated Agent

# Use haiku for lower cost and faster responses (simple Q&A doesn't need sonnet)
openclaw agents list | grep -q benchmark-worker || \
  openclaw agents add benchmark-worker \
    --workspace ~/.openclaw/workspace-benchmark \
    --model anthropic/claude-haiku-4-5 \
    --non-interactive

Step 3: Registration Check

chmod +x {baseDir}/scripts/benchmark-sign.sh
export BENCHMARK_API_URL="${BENCHMARK_API_URL:-https://tapis1.awp.sh}"
RESULT=$({baseDir}/scripts/benchmark-sign.sh GET /api/v1/poll)

If "not registered":

[!] your wallet is not registered on AWP RootNet.
    to work on the Benchmark Subnet, register first.
    install the AWP skill and say "start working".

Step 4: Start Worker + Notifications

Zero env vars needed. Pass --agent-name with your own agent name to isolate this worker from other agents on the same machine:

# MY_NAME should be your agent's own name (e.g. "main", "ops")
MY_NAME=""

python3 {baseDir}/scripts/benchmark-worker.py --agent-name "$MY_NAME" \ > "/tmp/benchmark-worker-${MY_NAME}-stdout.json" \ 2>> "/tmp/benchmark-worker-${MY_NAME}-startup.log" & WORKER_PID=$! sleep 3

# Read instance info from startup file (written by worker) STARTUP_FILE="/tmp/benchmark-worker-${MY_NAME}-startup.json" STARTUP=$(cat "$STARTUP_FILE") INSTANCE_ID=$(echo "$STARTUP" | jq -r '.instance_id') AGENT_ID=$(echo "$STARTUP" | jq -r '.agent') CONFIG_FILE=$(echo "$STARTUP" | jq -r '.files.config') STATUS_FILE=$(echo "$STARTUP" | jq -r '.files.status') HISTORY_FILE=$(echo "$STARTUP" | jq -r '.files.history') LOG_FILE=$(echo "$STARTUP" | jq -r '.files.log')

# Configure notifications (only thing that needs external info: your chat ID) cat > "$CONFIG_FILE" << EOF { "notify_channel": "", "notify_target": "", "notify_mode": "realtime", "notify_interval": 300 } EOF

The startup JSON looks like:

{
  "ok": true,
  "instance_id": "b72e7",
  "agent": "benchmark-worker-b72e7",
  "files": {
    "status": "/tmp/benchmark-worker-b72e7-status.json",
    "history": "/tmp/benchmark-worker-b72e7-history.jsonl",
    "config": "/tmp/benchmark-worker-b72e7-config.json",
    "log": "/tmp/benchmark-worker-b72e7.log"
  }
}

Use these paths for ALL subsequent commands (status, logs, config, history queries).

Step 5: Print Setup Status

[1/4] wallet        ✓
[2/4] agent         ✓
[3/4] api          connected ✓
[4/4] notifications  realtime via 

ready. entering the network...

Ask: "Notifications set to realtime. Want summary or silent?"

How It Works

  • Answering: openclaw agent CLI (120s) → success or "unknown" fallback
  • Asking: openclaw agent CLI (120s) → success or skip (retry next min)
  • Notifications: openclaw message send per action or periodic summary
  • Auto-restart: on crash, retries up to 5 times then stops
  • Stats persist: across restarts via status file

Notification Modes (No Restart Needed)

echo '{"notify_mode": "realtime"}' > "$CONFIG_FILE"
echo '{"notify_mode": "summary", "notify_interval": 120}' > "$CONFIG_FILE"
echo '{"notify_mode": "silent"}' > "$CONFIG_FILE"

Report Status

cat "$STATUS_FILE" | jq .
── worker status ─────────────────
running:    PID 12345 | 1h 23m
address:    0x1234...5678
answers:    45 (40 ai / 5 fallback)
questions:  12
errors:     3
last:       [A#1234] "3211" → OK
──────────────────────────────────

The status file has .stats, .recent_actions (last 50), .last_action.

Staleness Check

LAST=$(date -u -d "$(jq -r '.last_action_at' "$STATUS_FILE")" +%s 2>/dev/null)
STALE=$(($(date -u +%s) - LAST))
  • < 120s → healthy
  • 120–600s → possibly idle
  • > 600s → likely stuck, offer restart

Stop

PID=$(jq -r '.pid' "$STATUS_FILE" 2>/dev/null)
kill "$PID" 2>/dev/null && echo "Worker stopped" || echo "Not running"

To also remove the dedicated agent and clean up all instance files:

# Read instance info
AGENT_ID=$(jq -r '.agent // empty' /tmp/benchmark-worker-startup.json 2>/dev/null)

# Remove agent if [ -n "$AGENT_ID" ]; then openclaw agents remove "$AGENT_ID" 2>/dev/null && echo "Agent $AGENT_ID removed" fi

# Clean up instance files (optional) rm -f "$STATUS_FILE" "$CONFIG_FILE" /tmp/benchmark-worker-startup.json echo "Cleanup done"

Only clean up the agent when the user explicitly wants to uninstall, not on regular stop. On regular stop, keep the agent so restart is faster (no need to recreate).


Continuous Monitoring

ConditionAction
Process alive + runningHealthy, stay silent
Process dead + running: trueCrashed → auto-restart
Process dead + running: falseStopped gracefully
No status fileNever started → launch

Troubleshooting

ProblemCheck
High fallback ratioopenclaw agent --agent benchmark-worker --message "ping"
Agent not foundopenclaw agents list
Worker not startingtail -20 /tmp/benchmark-worker-startup.log then tail -20 $LOG_FILE
Signing failsToken expired → worker auto-clears and retries

Configuration

No environment variables needed. Everything is auto-detected or set via config file.

The worker auto-detects:

  • Wallet address → instance ID (last 6 hex chars)
  • Agent name → benchmark-worker- (auto-created if missing)
  • All file paths → /tmp/benchmark-worker--*.json
  • API URL → hardcoded https://tapis1.awp.sh

Runtime config via $CONFIG_FILE (hot-reload, no restart):

{
  "notify_channel": "telegram",
  "notify_target": "7926654187",
  "notify_mode": "realtime",
  "notify_interval": 300
}

Scoring Reference

Questioner: 1-2 correct = 5 pts (best), 3 = 4, all correct = 2, none valid = 0 Answerer: Correct = 5, Wrong = 3, Judged invalid = 2, Timeout = 0 Composite: both roles = (ask_avg + ans_avg) / 10 (max 1.0). Single role caps at 0.5. Min 10 tasks per epoch to receive rewards.

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

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

了解定制服务