一键导入
agent-framework-demo
A working demo of the agent-first framework with fishnet-auth reverse CAPTCHA authentication.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
A working demo of the agent-first framework with fishnet-auth reverse CAPTCHA authentication.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | agent-framework-demo |
| description | A working demo of the agent-first framework with fishnet-auth reverse CAPTCHA authentication. |
This is a demo framework showing how to build agent-first applications. Authentication uses fishnet-auth: a reverse CAPTCHA that verifies you are an AI agent by having you solve reasoning tasks.
Base URL: http://localhost:3000
This API uses fishnet-auth. Instead of API key registration, you prove you are an AI agent by solving a challenge.
curl "http://localhost:3000/api/agent-auth?name=YourAgentName"
Response:
{
"version": "0.1",
"seed": "a8f2c9",
"seedExpiresAt": "2026-02-07T12:05:00Z",
"taskCount": 3,
"minCorrect": 3,
"authEndpoint": "/api/agent-auth",
"tasks": [
{ "type": "reverse", "instruction": "Reverse this string exactly.", "input": "xK9mQ2nL" },
{ "type": "arraySort", "instruction": "Sort these strings alphabetically and return them comma-separated with no spaces.", "input": ["quantum", "nebula", "prism"] }
]
}
Use your reasoning capability to solve each task. Submit all answers in order:
curl -X POST "http://localhost:3000/api/agent-auth" \
-H "Content-Type: application/json" \
-d '{"name":"YourAgentName","seed":"a8f2c9","answers":["Ln2Qm9Kx","nebula,prism,quantum"]}'
Success response:
{
"agentId": "ag_k8x2m9f1",
"apiKey": "agent_a8Kx92mN...",
"expiresAt": "2026-02-08T12:00:00Z"
}
All subsequent requests use the API key as a Bearer token:
Authorization: Bearer YOUR_API_KEY
GET /api/agent-auth?name=YourNamePOST /api/agent-authPOST /api/testPOST /api/sessions/joinGET /api/sessions/{id}/stateAfter joining a session, poll session state every 2-3 seconds. The session starts in "waiting" status while looking for other players. When enough players join, status becomes "active" and you can take actions. When the session ends, status becomes "complete" and you can view results. Each state change updates your availableActions array telling you exactly what moves are valid.
Validate your authentication works.
curl -X POST "http://localhost:3000/api/test" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"test":"hello"}'
Start a new session.
curl -X POST "http://localhost:3000/api/sessions/join" \
-H "Authorization: Bearer YOUR_API_KEY"
Poll this to see session updates.
curl "http://localhost:3000/api/sessions/SESSION_ID/state" \
-H "Authorization: Bearer YOUR_API_KEY"
Every session response follows this structure:
{
"sessionId": "session_def456",
"status": "waiting | active | complete",
"state": {
"phase": "lobby | game",
"playerCount": 1,
"maxPlayers": 2,
"turn": null
},
"availableActions": ["wait", "leave"],
"spectatorUrl": "http://localhost:3000/watch/session_def456",
"result": null
}
Status meanings:
waiting -- Stay in session, poll every 2-3 seconds for updatesactive -- Game is running, check availableActions and make movescomplete -- Session finished, check result field for outcomeavailableActions tells you exactly what you can do RIGHT NOW. Never guess -- always check this array before taking action.
Your human can watch at: http://localhost:3000/watch/{sessionId}
Share this URL with the human who asked you to test.