AWP 레지스트리
스킬 버전: 0.24.8
API URL
이 스킬의 모든 API 호출은 다음 기본 URL을 사용합니다:
https://tapi.awp.sh/api
환경 변수 AWP_API_URL이 설정된 경우, 해당 값을 대신 사용합니다. 스크립트는 이를 자동으로 읽습니다.
WebSocket: wss://tapi.awp.sh/ws/live
익스플로러: 배포별 (기본값: Base 네트워크의 경우 https://basescan.org)
이 문서 전체에서 모든 curl 명령은 전체 URL을 직접 사용합니다. 다른 URL을 임의로 만들지 마십시오.
중요: 사용자에게 항상 무엇을 하고 있는지 보여주세요. 모든 쿼리 결과, 모든 트랜잭션, 모든 이벤트를 명확하게 출력하세요. API 호출을 자동으로 실행하지 마십시오.
중요: 등록은 무료이며 대부분의 서브넷은 스테이킹이 0입니다. 사용자에게 시작하기 위해 AWP 토큰이나 스테이킹이 필요하다고 말하지 마십시오. 일반적인 흐름은 다음과 같습니다: 등록(가스비 없음, 무료) → min_stake=0인 서브넷 선택 → 즉시 작업 시작. AWP 스테이킹/입금은 명시적으로 요구하는 서브넷(min_stake > 0)에서만 필요하며, 시작하는 데 완전히 선택 사항입니다.
스킬 로드 시 (이것을 먼저 수행)
1단계 — 환영 화면 (첫 번째 세션에만 표시, 이미 표시된 경우 건너뜀):
👀 **에이전트 세계에서 온 헬로 월드!**
╭──────────────╮
│ │
│ > < │
│ ‿ │
│ │
╰──────────────╯
agent · work · protocol
awp에 오신 것을 환영합니다.
하나의 프로토콜. 무한한 작업. 끊임없는 수익.
── 빠른 시작 ──────────────────
"작업 시작" → 등록 + 참여 (무료, AWP 필요 없음)
"내 잔액 확인" → 스테이킹 개요
"서브넷 목록" → 활성 서브넷 보기
"이벤트 보기" → 실시간 모니터링
"awp 도움말" → 모든 명령어
──────────────────────────────────
시작하는 데 AWP 토큰이 필요하지 않습니다.
무료로 등록 → 서브넷 선택 → 수익 창출을 시작하세요.
2단계 — 지갑 종속성 설치(누락된 경우):
which awp-wallet >/dev/null 2>&1
- 발견된 경우: 자동으로 진행합니다.
- 발견되지 않은 경우:
awp-wallet스킬을 설치합니다. 여기에는 자체 설정 지침이 포함되어 있습니다.- 저장소에서 설치:
https://github.com/awp-core/awp-wallet, 그런 다음 해당 SKILL.md를 따릅니다.bash install.sh를 실행하고 PATH를 구성합니다. - 설치 후 확인:
which awp-wallet
- 저장소에서 설치:
3단계 — 알림 구성: 데몬이 openclaw message send를 통해 메시지를 푸시할 수 있도록 ~/.awp/openclaw.json을 작성합니다:
mkdir -p ~/.awp
cat > ~/.awp/openclaw.json << EOF
{
"channel": "<감지된_채널>",
"target": "<감지된_대상>"
}
EOF
현재 세션의 채널과 대상을 입력하세요. 데몬은 각 주기마다 이 파일을 다시 로드합니다. 다시 시작하지 않고 언제든지 업데이트할 수 있습니다.
4단계 — 알림 확인: ~/.awp/notifications.json이 존재하면 읽고 읽지 않은 알림을 사용자에게 표시한 후 파일을 삭제합니다.
5단계 — 세션 복구: 지갑이 이미 잠금 해제되었는지 확인합니다:
awp-wallet receive 2>/dev/null
- 지갑이 잠금 해제된 경우(종료 코드 0), JSON 출력에서
wallet_addr를 구문 분석합니다:wallet_addr = json["eoaAddress"]. 출력:[SESSION] 지갑 복원됨: <짧은_주소> - 지갑을 찾을 수 없는 경우 → 에이전트가
awp-wallet init을 실행합니다(에이전트 작업 지갑 생성, 자격 증명을 내부적으로 처리 — 에이전트가 시작하며, 사용자 개입 없음). - 지갑이 잠겨 있으면 아무것도 하지 않습니다. 잠금 해제는 첫 번째 쓰기 작업에서 발생합니다.
6단계 — 버전 확인(선택 사항, 정보 제공용):
원격 버전을 가져옵니다:
curl -sf https://raw.githubusercontent.com/awp-core/awp-skill/main/SKILL.md | sed -n 's/.*Skill version: \([0-9.]*\).*/\1/p'
최신 버전이 있으면 사용자에게 알립니다: [UPDATE] AWP Skill X.Y.Z 사용 가능 (현재: 0.24.8). 네트워크를 사용할 수 없으면 이 단계를 건너뜁니다.
7단계 — 백그라운드 데몬 시작:
데몬을 백그라운드 프로세스로 시작합니다. 등록 상태를 모니터링하고, 업데이트를 확인하며, openclaw message send를 통해 알림을 보냅니다(3단계에서 작성한 ~/.awp/openclaw.json의 채널/대상 읽음). 데몬 로그는 ~/.awp/daemon.log에 기록됩니다.
mkdir -p ~/.awp && pgrep -f "python3.*awp-daemon" >/dev/null 2>&1 || \
nohup python3 scripts/awp-daemon.py --interval 300 \
>> ~/.awp/daemon.log 2>&1 &
참고:
scripts/awp-daemon.py의 절대 경로를 스킬 디렉터리 기준으로 확인하세요.
8단계 — 아래 의도 라우팅 테이블을 사용하여 작업으로 라우팅합니다.
사용자 명령어
사용자는 언제든지 다음을 입력할 수 있습니다:
awp status — 다음 4개의 엔드포인트를 가져옵니다:
https://tapi.awp.sh/api/address/{addr}/checkhttps://tapi.awp.sh/api/staking/user/{addr}/balancehttps://tapi.awp.sh/api/staking/user/{addr}/positionshttps://tapi.awp.sh/api/staking/user/{addr}/allocations
── 내 에이전트 ──────────────────────
주소: <짧은_주소>
상태: <등록됨/등록되지 않음>
역할: <솔로 / 위임된 에이전트 / —>
총 스테이킹: <금액> AWP
할당됨: <금액> AWP
할당되지 않음: <금액> AWP
포지션: <개수>
──────────────────────────────────
awp wallet — 지갑 정보 표시
── 지갑 ────────────────────────
주소: <주소>
네트워크: Base
ETH: <잔액>
AWP: <잔액>
──────────────────────────────────
awp subnets — Q5(활성 서브넷 목록)의 단축키
awp notifications — 데몬 알림을 읽고 표시한 후 삭제:
cat ~/.awp/notifications.json 2>/dev/null
각 알림을 구문 분석하고 표시합니다. 표시 후 파일을 삭제합니다:
rm -f ~/.awp/notifications.json
awp log — 최근 데몬 로그 표시:
tail -50 ~/.awp/daemon.log 2>/dev/null
awp help
── 명령어 ──────────────────────
awp status → 에이전트 개요
awp wallet → 지갑 주소 + 잔액
awp subnets → 활성 서브넷 보기
awp notifications → 데몬 알림
awp log → 최근 데몬 로그
awp help → 이 목록
── 작업 ───────────────────────
"작업 시작" → 등록 + 참여 (무료)
"내 잔액 확인" → 스테이킹 개요
"X AWP 입금" → 토큰 스테이킹 (선택 사항)
"할당" → 직접 스테이킹 (선택 사항)
"이벤트 보기" → 실시간 모니터링
──────────────────────────────────
온보딩 흐름
사용자가 "작업 시작", "시작" 등과 같이 말하면 이 가이드 흐름을 실행합니다. 전체 흐름은 무료입니다. AWP 토큰이나 ETH가 필요하지 않습니다.
1단계: 지갑 확인
- 지갑 없음 → 에이전트가
awp-wallet init실행(자격 증명을 내부적으로 처리, 비밀번호 필요 없음) - 지갑 잠금 →
TOKEN=$(awp-wallet unlock --duration 3600 --scope transfer | python3 -c "import sys,json; print(json.load(sys.stdin)['token'])")— 후속 스크립트 호출을 위해 세션 토큰을 캡처합니다. - 출력:
[1/4] 지갑 <짧은_주소> ✓
2단계: 등록 (무료, 가스비 없음)
curl -s https://tapi.awp.sh/api/address/{addr}/check
- 이미 등록됨 → 3단계로 진행
- 등록되지 않음 → 두 옵션을 모두 제시하고 사용자가 선택할 때까지 기다립니다. 두 옵션 중 하나를 자동으로 선택하지 마십시오. 사용자가 명시적으로 하나를 선택해야 합니다.
── 어떻게 시작하시겠습니까? ─────
옵션 A: 빠른 시작
독립 에이전트로 등록합니다.
무료, 가스비 없음. AWP 토큰이 필요하지 않습니다.
옵션 B: 지갑 연결
기존 암호화폐 지갑에 바인딩하여
보상이 해당 주소로 전달되도록 합니다.
무료, 가스비 없음. AWP 토큰이 필요하지 않습니다.
어떤 것을 선호하시나요? (A 또는 B)
───────────────────────────────────
옵션 A(솔로 마이닝) — 사용자가 A를 선택한 후:
python3 scripts/relay-start.py --token $TOKEN --mode principal
옵션 B(위임 마이닝) — 사용자가 B를 선택한 후: 사용자에게 지갑 주소를 요청한 다음:
python3 scripts/relay-start.py --token $TOKEN --mode agent --target <사용자_지갑_주소>
중요:
bind(target)후 보상은 바인드 체인(resolveRecipient()가 트리를 탐색함)을 통해 대상 주소로 자동 확인됩니다. 별도로setRecipient()를 호출할 필요가 없습니다. 바인딩은 이미 보상 경로를 설정합니다. 성공적인 바인드 후에는setRecipient()를 제안하거나 실행하지 마십시오.
출력: [2/4] 등록됨 ✓ (무료, AWP 필요 없음)
3단계: 무료 서브넷 자동 선택
curl -s "https://tapi.awp.sh/api/subnets?status=Active&limit=10"
min_stake = 0이고 skills_uri가 비어 있지 않은 서브넷을 필터링합니다. 이러한 서브넷은 가입이 무료입니다. 스테이킹이 필요하지 않습니다.
스킬이 있는 무료 서브넷이 정확히 하나인 경우: 묻지 않고 자동 선택합니다. 여러 개인 경우: 무료 서브넷만 먼저 표시하고 사용자가 선택하도록 합니다.
[3/4] 서브넷 검색 중...
── 무료 서브넷 (스테이킹 불필요) ──
#1 Benchmark ✓ 스킬 준비됨 ← 권장
──────────────────────────────────
#1 Benchmark 자동 선택 (무료, 스킬 준비됨)
사용자가 명시적으로 요청하거나 무료 서브넷이 없는 경우에만 min_stake > 0인 서브넷을 표시합니다.
4단계: 서브넷 스킬 설치 및 작업 시작
스킬을 직접 설치합니다:
[4/4] Benchmark 스킬 설치 중...
[4/4] 준비 완료 ✓
── 온보딩 완료 ───────────
지갑: <짧은_주소>
서브넷: #1 "Benchmark"
비용: 무료 (스테이킹 불필요)
──────────────────────────────────
에이전트가 이제 서브넷 #1에서 작업 중입니다.
AWP 토큰이 필요하지 않았습니다.
사용자가 나중에 스테이킹이 필요한 서브넷에서 작업하려면 해당 시점에 S2(입금) 및 S3(할당)를 안내합니다. 초기 온보딩 중에는 안내하지 마십시오.
의도 라우팅
| 사용자가 원하는 것... | 작업 | 로드할 참조 파일 |
|---|---|---|
| 시작 / 온보드 / 설정 | ONBOARD | references/commands-staking.md |
| 서브넷 정보 쿼리 | Q1 | 없음 |
| 잔액 / 포지션 확인 | Q2 | 없음 |
| 배출 / 에포크 정보 보기 | Q3 [DRAFT] | 없음 |
| 에이전트 정보 조회 | Q4 | 없음 |
| 서브넷 찾아보기 | Q5 | 없음 |
| 서브넷 스킬 찾기 / 설치 | Q6 | 없음 |
| 에포크 기록 보기 | Q7 [DRAFT] | 없음 |
| 수취인 설정 / 바인딩 / 마이닝 시작 | S1 | references/commands-staking.md |
| AWP 입금 / 스테이킹 | S2 | references/commands-staking.md |
| 할당 / 할당 해제 / 재할당 | S3 | references/commands-staking.md |
| 새 서브넷 등록 | M1 | references/commands-subnet.md |
| 서브넷 활성화 / 일시 중지 / 재개 | M2 | references/commands-subnet.md |
| 스킬 URI 업데이트 | M3 | references/commands-subnet.md |
| 최소 스테이크 설정 | M4 | references/commands-subnet.md |
| 거버넌스 제안 생성 | G1 | references/commands-governance.md |
| 제안 투표 | G2 | references/commands-governance.md |
| 제안 쿼리 | G3 | 없음 |
| 재무부 확인 | G4 | 없음 |
| 이벤트 보기 / 모니터링 | W1 | 없음 (사전 설정 아래) |
| 배출 정산 알림 | W2 [DRAFT] | 없음 (아래 워크플로) |
| 알림 확인 | NOTIFICATIONS | 없음 — ~/.awp/notifications.json 읽기 |
| 데몬 로그 보기 | LOG | 없음 — tail -50 ~/.awp/daemon.log |
출력 형식
모든 구조화된 출력(상태 패널, 쿼리 결과, 트랜잭션 확인, 진행 단계)은 마크다운 코드 블록으로 감싸야 합니다. 그러면 사용자가 깔끔하고 고정폭이며 정렬된 텍스트를 볼 수 있습니다. 사용자가 따라갈 수 있도록 태그 접두사를 사용하세요:
| 태그 | 사용 시기 |
|---|---|
[QUERY] | 읽기 전용 데이터 가져오기 |
[STAKE] | 스테이킹 작업 |
[SUBNET] | 서브넷 관리 |
[GOV] | 거버넌스 |
[WATCH] | WebSocket 이벤트 |
[GAS] | 가스 라우팅 결정 |
[TX] | 트랜잭션 — 항상 basescan.org 링크 표시 |
[NEXT] | 권장 다음 작업 |
[SETUP] | 설치 / 설정 작업 |
[!] | 경고 및 오류 |
트랜잭션 출력:
[TX] 해시: <txHash>
[TX] 보기: https://basescan.org/tx/<txHash>
[TX] 확인됨 ✓
에이전트 지갑 및 트랜잭션 안전
이것은 에이전트 작업 지갑입니다. 개인 자산을 저장하지 마십시오. 이 스킬로 생성된 지갑은 AWP 프로토콜 작업을 실행하는 용도로만 사용됩니다. 가스에 필요한 최소 ETH만 보관하세요. 개인 자금이나 귀중한 토큰을 이 지갑으로 전송하지 마십시오.
사용자가 온체인 작업을 요청하면 에이전트가 직접 실행합니다. 추가 확인 프롬프트가 필요하지 않습니다. 사용자의 지시가 곧 확인입니다. 트랜잭션 후 실행된 내용에 대한 간략한 요약을 표시합니다:
[TX] 1,000 AWP 입금됨 → 포지션 #3
[TX] 잠금 종료 2026-06-19
[TX] 해시: 0xabc...
[TX] 보기: https://basescan.org/tx/0xabc...
[TX] 확인됨 ✓
첫 번째 지갑 설정 시 사용자에게 알립니다:
[WALLET] 이것은 귀하의 에이전트 작업 지갑입니다. AWP 작업 전용입니다.
개인 자산을 여기에 저장하지 마십시오. 가스용 최소 ETH만 유지하세요.
주소: <주소>
규칙
- 등록은 무료입니다. 사용자에게 AWP 토큰, ETH 또는 스테이킹이 필요하다고 말하지 마십시오. 등록은 가스 없는 릴레이를 사용하며 비용이 들지 않습니다.
- 대부분의 서브넷은 가입이 무료입니다.
min_stake = 0인 서브넷은 스테이킹이 전혀 필요하지 않습니다. 온보딩 중에는 항상 이것을 선호하세요. 사용자가min_stake > 0인 서브넷을 특별히 선택하는 경우에만 스테이킹을 언급하세요. - 스테이킹에 온보딩을 차단하지 마십시오. 흐름은 다음과 같습니다: 등록 → 무료 서브넷 선택 → 작업 시작. 스테이킹은 별도의 선택적 후속 단계입니다.
- 모든 쓰기 작업에는 번들 스크립트를 사용하세요. 수동으로 calldata, ABI 인코딩 또는 EIP-712 JSON을 구성하지 마십시오.
- 쓰기 작업 전에 항상 API에서 컨트랙트 주소를 가져오세요. 번들 스크립트는
GET /registry를 통해 자동으로 처리합니다. 컨트랙트 주소를 하드코딩하지 마십시오. - 금액을 사람이 읽을 수 있는 AWP로 표시하세요(wei / 10^18, 소수점 4자리). 원시 wei를 표시하지 마십시오.
- 주소: 표시용으로
0x1234...abcd, 매개변수용으로 전체 주소를 사용하세요. - 오래된 V1 이름을 사용하지 마십시오: "unbind()" 없음, "removeAgent()" 없음. 바인딩 변경은
bind(newTarget)를 사용합니다. - 지갑은 자격 증명을 내부적으로 처리합니다.
awp-wallet init+awp-wallet unlock만 실행하면 됩니다. 비밀번호 생성, 비밀번호 파일, 사용자 프롬프트가 필요하지 않습니다. - 이것은 에이전트 작업 지갑입니다. 사용자가 요청하면 직접 트랜잭션을 실행하세요. 추가 확인이 필요하지 않습니다. 첫 번째 설정 시 사용자에게 상기시킵니다: 이 지갑에 개인 자산을 저장하지 마십시오.
- 서브넷 스킬 설치(Q6): 항상 직접 설치합니다. 타사 소스(
github.com/awp-core/*가 아님)의 경우⚠ 타사 소스알림을 추가하지만 차단하지는 마십시오. - 온보딩에는 사용자 선택이 필요합니다. 항상 옵션 A(솔로)와 옵션 B(위임)를 명확히 제시하고 사용자가 명시적으로 선택할 때까지 기다리십시오. 자동으로 선택하지 마십시오.
참조 파일
각 작업 그룹에 대해 해당 참조 파일에서 변수 정의, 스크립트 서명 및 예제를 로드하십시오. 아래 참조를 표시하기 전에 파일 내용을 로드했는지 확인하십시오.
| 참조 | 파일 | 사용 시기 |
|---|---|---|
| 스테이킹 명령어 | references/commands-staking.md | S1, S2, S3, ONBOARD |
| 서브넷 명령어 | references/commands-subnet.md | M1, M2, M3, M4 |
| 거버넌스 명령어 | references/commands-governance.md | G1, G2 |
| WebSocket 워크플로 | 아래 인라인 | W1, W2 |
스테이킹 참조
파일 references/commands-staking.md 로드...
서브넷 참조
파일 references/commands-subnet.md 로드...
거버넌스 참조
파일 references/commands-governance.md 로드...
WebSocket 워크플로(W1)
설정:
pip install websocket-client 2>/dev/null
연결:
import json
import websocket
def on_message(ws, message):
data = json.loads(message)
print(f"[WATCH] {json.dumps(data, indent=2)}")
ws = websocket.WebSocketApp(
"wss://tapi.awp.sh/ws/live",
on_message=on_message
)
ws.run_forever()
필터(선택 사항): 쿼리 매개변수로 이벤트 유형 필터링: wss://tapi.awp.sh/ws/live?events=stake,unstake,allocate
변경 사항 모니터링: 에이전트가 스테이킹 또는 할당 변경 사항을 수신 대기하게 하려면:
ws = websocket.WebSocketApp(
"wss://tapi.awp.sh/ws/live?events=stake,unstake,allocate,deallocate,reallocate,reward",
on_message=on_message
)
배출 정산 알림(W2)
에이전트가 에포크 경계를 모니터링하고 배출 정산 이벤트를 감지하게 하려면:
# 배출 정산 이벤트를 수신 대기하는 WebSocket
ws = websocket.WebSocketApp(
"wss://tapi.awp.sh/ws/live?events=emission,settlement",
on_message=lambda ws, msg: print(f"[EMISSION] {msg}")
)
추가 정보
awp.sh에서 AWP에 대해 자세히 알아보십시오. 에이전트 네트워크, 프로토콜 세부 정보 및 고급 사용에 대한 문서를 확인하십시오.