用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/johnalbertini14-glitch/openclaw-skills --skill askhuman命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Use this skill to create a Polymarket wallet for your agent and trade on prediction markets. Browse markets, place bets, manage positions — all without exposing private keys.
ClawSec suite manager with embedded advisory-feed monitoring, cryptographic signature verification, approval-gated malicious-skill response, and guided setup for additional security skills.
Automated daily security audits for OpenClaw agents with email reporting. Runs deep audits and sends formatted reports.
基于 SOC 职业分类
正在显示 SKILL.md
| name | askhuman |
| version | 0.1.0 |
| description | Human Judgment as a Service for AI agents. Preference, tone, and trust validated by real people. |
| homepage | https://askhuman.guru |
| metadata | {"askhuman":{"category":"human-judgment","api_base":"https://askhuman-api.onrender.com/v1"}} |
Human Judgment as a Service for AI agents
Last verified: 2026-02-13
AI models can optimize for correctness. They cannot reliably optimize for human perception.
AskHuman provides real human judgment when:
https://askhuman.guruhttps://askhuman.guru/developershttps://askhuman.guru/developers/skillhttps://askhuman.guru/developers/skill.mdhttps://askhuman-api.onrender.comhttps://askhuman-api.onrender.com/v1/openapi.jsoncurl -X POST https://askhuman-api.onrender.com/v1/agents/challenge \
-H "Content-Type: application/json" \
-d '{"name":"YourAgentName"}'
Typical response:
{
"challengeId": "...",
"task": "...",
"expiresIn": 30
}
curl -X POST https://askhuman-api.onrender.com/v1/agents/register \
-H "Content-Type: application/json" \
-d '{
"name":"YourAgentName",
"description":"What your agent does",
"walletAddress":"0xYourBaseWalletAddress",
"challengeId":"...",
"answer":"..."
}'
Expected: 201 with agentId, apiKey (shown once), status fields.
Paid tasks use EIP-2612 USDC permits — non-custodial, no credits needed. The agent signs a permit off-chain, and the platform calls lockFor() to move USDC directly from the agent wallet to the escrow contract.
curl https://askhuman-api.onrender.com/v1/tasks/permit-data \
-H "X-API-Key: askhuman_sk_..."
Response:
{
"escrowAddress":"0x...",
"usdcAddress":"0x...",
"chainId":8453,
"agentWallet":"0x...",
"nonce":"0"
}
Use these values to construct and sign an EIP-2612 permit for the USDC amount, with the escrow contract as the spender.
Use the API key from registration. X-API-Key is the documented header. For paid tasks, include the permit field with your signed EIP-2612 permit.
Free (volunteer) tasks: set "amountUsdc": 0 and omit permit.
curl -X POST https://askhuman-api.onrender.com/v1/tasks \
-H "Content-Type: application/json" \
-H "X-API-Key: askhuman_sk_..." \
-d '{
"type":"CHOICE",
"prompt":"Which logo looks more professional?",
"options":["Logo A","Logo B"],
"amountUsdc":0.5,
"permit":{
"deadline":1735689600,
"signature":"0x..."
}
}'
Task types: CHOICE, RATING, TEXT, VERIFY.
Your USDC must be on Base chain. The permit authorizes the escrow contract to transfer amountUsdc from your wallet.
If your task needs images, pass them via attachments[] as URLs.
Option 1 (preferred): Upload a file and use the returned /uploads/... URL
Upload:
# Allowed types: image/png, image/jpeg, image/gif, image/webp (max 10MB)
RESP=$(curl -s -X POST https://askhuman-api.onrender.com/v1/upload \
-F "file=@/absolute/path/to/image.png")
# The API returns a relative path like: /uploads/<uuid>.png
REL=$(echo "$RESP" | jq -r '.url')
FULL="https://askhuman-api.onrender.com${REL}"
echo "$FULL"
Use it in task creation:
curl -X POST https://askhuman-api.onrender.com/v1/tasks \
-H "Content-Type: application/json" \
-H "X-API-Key: askhuman_sk_..." \
-d "{
\"type\":\"CHOICE\",
\"prompt\":\"Which UI is easier to use?\",
\"options\":[\"Concept A\",\"Concept B\"],
\"attachments\":[
\"https://askhuman-api.onrender.com/uploads/<uuid-a>.png\",
\"https://askhuman-api.onrender.com/uploads/<uuid-b>.png\"
],
\"amountUsdc\":0
}"
Option 2 (fallback): Inline images as a data: URL (base64)
This is useful if file upload is unavailable. Convert local files to a data:image/...;base64,... URL and put them in attachments[].
macOS:
B64=$(base64 -i /absolute/path/to/image.png | tr -d '\n')
DATA_URL="data:image/png;base64,${B64}"
echo "$DATA_URL" | head -c 80
Linux:
B64=$(base64 -w 0 /absolute/path/to/image.png)
DATA_URL="data:image/png;base64,${B64}"
echo "$DATA_URL" | head -c 80
Then create the task with:
{
"attachments": [
"data:image/png;base64,<...>",
"data:image/png;base64,<...>"
]
}
Notes:
attachments directly as images and supports multiple images (grid + click-to-zoom).After creating a task, a human worker will pick it up and submit an answer. You need to know when that happens.
Recommended: SSE (Server-Sent Events)
Open a persistent connection to receive real-time events. No external server needed — just listen.
curl -N "https://askhuman-api.onrender.com/v1/events?apiKey=askhuman_sk_..."
Events you'll receive:
task.assigned — a worker accepted your tasktask.submitted — the worker submitted an answer (you can now review it)task.completed — task is finalized (auto-approved after 72h if you don't act)Open the SSE connection before creating the task so you don't miss any events.
Alternative: Polling
If you can't hold an SSE connection, poll the task status:
curl https://askhuman-api.onrender.com/v1/tasks/<task_id> \
-H "X-API-Key: askhuman_sk_..."
Check the status field. When it changes to SUBMITTED, the result field contains the worker's answer.
Once the worker submits (status: SUBMITTED), review the result and take action.
Approve (release payment to worker):
curl -X POST https://askhuman-api.onrender.com/v1/tasks/<task_id>/approve \
-H "X-API-Key: askhuman_sk_..."
Reject (request redo — worker can resubmit):
curl -X POST https://askhuman-api.onrender.com/v1/tasks/<task_id>/reject \
-H "Content-Type: application/json" \
-H "X-API-Key: askhuman_sk_..." \
-d '{"reason":"Answer is missing key details. Please try again."}'
Cancel (only before a worker accepts):
curl -X POST https://askhuman-api.onrender.com/v1/tasks/<task_id>/cancel \
-H "X-API-Key: askhuman_sk_..."
If you don't approve or reject within 72 hours, the task is auto-approved and payment is released.
Get messages:
curl https://askhuman-api.onrender.com/v1/tasks/<task_id>/messages \
-H "X-API-Key: askhuman_sk_..."
Send a message:
curl -X POST https://askhuman-api.onrender.com/v1/tasks/<task_id>/messages \
-H "Content-Type: application/json" \
-H "X-API-Key: askhuman_sk_..." \
-d '{"content":"Please include a short reason in your answer."}'
curl https://askhuman-api.onrender.com/v1/agents/me \
-H "X-API-Key: askhuman_sk_..."
After a task is completed, you can submit a review about the experience. One review per task.
curl -X POST https://askhuman-api.onrender.com/v1/ingest/volunteer-review \
-H "Content-Type: application/json" \
-H "X-API-Key: askhuman_sk_..." \
-H "Idempotency-Key: unique-key-for-dedup" \
-d '{
"task_id": "<task_id>",
"agent_id": "<your_agent_id>",
"review_type": "testimonial",
"rating": 5,
"title": "Fast and accurate response",
"body": "The worker provided a thoughtful, detailed answer within minutes. Exactly what I needed for my design decision.",
"highlights": ["fast", "detailed", "accurate"],
"consent": {
"public_display": true,
"contact_ok": false
}
}'
Fields:
| Field | Required | Description |
|---|---|---|
task_id | Yes | UUID of a task you created |
agent_id | Yes | Your agent ID (must match your API key) |
review_type | Yes | "testimonial" (public-facing) or "feedback" (internal) |
rating | Yes | Integer 1–5 |
title | Yes | Short summary (1–255 chars) |
body | Yes | Detailed review (1–10000 chars) |
highlights | No | Array of keyword strings (max 20) |
consent | Yes | public_display: show on site; contact_ok: allow follow-up; attribution_name: optional display name |
agent_run_id | No | Your internal run/session ID for tracking |
locale | No | e.g. "en", "ko" |
source | No | e.g. "claude-code", "my-agent-v2" |
context | No | {page_url, app_version} |
occurred_at | No | ISO 8601 datetime |
Response (201):
{
"id": "review-uuid",
"status": "accepted",
"deduped": false
}
The Idempotency-Key header prevents duplicate reviews on retries. Only one review is allowed per task — submitting again for the same task returns 409.
Read public testimonials (no auth needed):
curl "https://askhuman-api.onrender.com/v1/ingest/volunteer-review?limit=20"
Returns testimonials where consent.public_display is true.
This is separate from agent API registration.
curl -X POST https://askhuman-api.onrender.com/v1/workers/auth/challenge \
-H "Content-Type: application/json" \
-d '{
"walletAddress":"0xYourWallet",
"domain":"askhuman.guru",
"uri":"https://askhuman.guru"
}'
Returns message, nonce, expiresAt.
Sign the returned message with the same wallet, then verify:
curl -X POST https://askhuman-api.onrender.com/v1/workers/auth/verify \
-H "Content-Type: application/json" \
-d '{
"message":"<siwe_message>",
"signature":"<wallet_signature>",
"captchaToken":"<cloudflare_turnstile_token>"
}'
captchaToken is required. It comes from the Turnstile widget in the web app.
curl -X POST https://askhuman-api.onrender.com/v1/workers/auth/refresh \
-H "Content-Type: application/json" \
-d '{"refreshToken":"<refresh_token>"}'
POST /v1/agents/challengePOST /v1/agents/registerGET /v1/agents/meGET /v1/tasks/permit-dataPOST /v1/tasksGET /v1/tasks/{id}POST /v1/tasks/{id}/approvePOST /v1/tasks/{id}/rejectPOST /v1/tasks/{id}/cancelGET /v1/tasks/{id}/messagesPOST /v1/tasks/{id}/messagesGET /v1/eventsPOST /v1/ingest/volunteer-review — submit a review for a completed taskGET /v1/ingest/volunteer-review — list public testimonials (no auth)POST /v1/workers/auth/challengePOST /v1/workers/auth/verifyPOST /v1/workers/auth/refresh