Communitygithub.com

awp-core/awp-skill

AWP (Agent Work Protocol) — la boîte à outils complète pour le minage d'agents sur Base, Ethereum, Arbitrum et BSC. Utilisez cette compétence lorsque l'utilisateur mentionne explicitement AWP, worknets, veAWP, awp-wallet ou des opérations spécifiques à AWP.

Qu'est-ce que awp-skill ?

Cette compétence vous permet d'interagir avec le protocole AWP (Agent Work Protocol), une plateforme décentralisée pour le minage d'agents sur les blockchains Base, Ethereum, Arbitrum et BSC. Elle gère l'intégralité du cycle de vie : inscription gratuite d'un portefeuille, participation à des réseaux de travail (worknets), délégation de stake, gestion des allocations, liaison d'agents, gouvernance et requêtes diverses. L'utilisateur peut démarrer sans détenir de jetons AWP : l'inscription est gratuite et la plupart des worknets ne nécessitent aucun staking. La compétence repose sur une API JSON-RPC 2.0 centralisée et s'appuie sur l'outil CLI 'awp-wallet' pour la gestion des clés. Elle est idéale pour les développeurs et utilisateurs souhaitant déployer et gérer des agents de travail automatisés.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add awp-core/awp-skill

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Registre AWP

Version de la compétence : 1.9.1

Exigences et Sécurité

  • Runtime : python3, node (pour le pont wallet-raw-call.mjs)
  • Portefeuille : CLI awp-wallet — installer depuis https://github.com/awp-core/awp-wallet
  • Identifiant : jeton de session awp-wallet (transmis via --token ; généré par awp-wallet unlock ; aucun mot de passe fourni par l'utilisateur). Les nouvelles versions du portefeuille ne nécessitent plus de déverrouillage — --token est optionnel pour la rétrocompatibilité avec les anciens portefeuilles.
  • Chaîne : variable d'environnement EVM_CHAIN (optionnelle, défaut : base). Accepte le nom ou l'ID numérique.
  • Points d'accès réseau (codés en dur, non modifiables — sécurité par conception pour empêcher le détournement de variables d'environnement) :
    • https://api.awp.sh/v2 — API JSON-RPC AWP
    • https://mainnet.base.org — RPC EVM Base
    • wss://api.awp.sh/ws/live — WebSocket pour les événements en temps réel (optionnel)
  • Fichiers écrits (tous facultatifs, le démon nécessite le consentement explicite de l'utilisateur) :
    • ~/.awp/daemon.pid, ~/.awp/daemon.log — moniteur en arrière-plan
    • ~/.awp/notifications.json, ~/.awp/status.json — cache d'état du protocole
    • ~/.awp/openclaw.json — configuration push OpenClaw (créé uniquement par l'utilisateur, la compétence ne le crée jamais automatiquement)

API — JSON-RPC 2.0

Tous les appels API de cette compétence utilisent JSON-RPC 2.0 via POST :

POST https://api.awp.sh/v2
Content-Type: application/json

Requête : {"jsonrpc":"2.0","method":"namespace.method","params":{...},"id":1} Découverte : GET https://api.awp.sh/v2 | WebSocket : wss://api.awp.sh/ws/live | Par lot : jusqu'à 20 par requête.

Explorateurs : Base → basescan.org | Ethereum → etherscan.io | Arbitrum → arbiscan.io | BSC → bscscan.com

Dans tout ce document, toutes les commandes curl utilisent POST JSON-RPC vers https://api.awp.sh/v2. N'utilisez pas de chemins GET de style REST.

Référence des Méthodes API

Système

MéthodeParamètresDescription
stats.globalaucunStatistiques globales du protocole : total d'utilisateurs, worknets, AWP misé, AWP émis, chaînes actives
registry.getchainId?Toutes les adresses de contrats + informations du domaine EIP-712. Omettre chainId pour un tableau des 4 chaînes.
health.checkaucunRetourne {"status": "ok"} si l'API fonctionne
health.detailedaucunSanté par chaîne : bloc de synchronisation de l'indexeur, état du keeper, latence RPC
chains.listaucunTableau de {chainId, name, status, explorer} pour toutes les chaînes prises en charge

Utilisateurs

MéthodeParamètresDescription
users.listchainId?, page?, limit?Liste paginée des utilisateurs pour une chaîne
users.listGlobalpage?, limit?Liste inter-chaîne dédupliquée des utilisateurs
users.countchainId?Nombre total d'utilisateurs enregistrés
users.getaddress (requis), chainId?Détails de l'utilisateur : solde, agents liés, destinataire, statut d'enregistrement
users.getPortfolioaddress (requis), chainId?Portfolio complet : identité + staking + positions NFT + allocations + délégués
users.getDelegatesaddress (requis), chainId?Liste des adresses que cet utilisateur a autorisées comme délégués

Adresse et Nonce

MéthodeParamètresDescription
address.checkaddress (requis), chainId?Vérifier le statut d'enregistrement, la liaison, le destinataire. Voir le format de réponse ci-dessous.
address.resolveRecipientaddress (requis), chainId?Parcourir la chaîne de liaison jusqu'à la racine, retourner le destinataire effectif des récompenses
address.batchResolveRecipientsaddresses[] (requis, max 500), chainId?Résoudre par lot les destinataires effectifs (appel on-chain)
nonce.getaddress (requis), chainId?Nonce EIP-712 de AWPRegistry (pour bind/unbind/setRecipient/registerWorknet/grantDelegate/revokeDelegate). Remarque : peut être en retard par rapport à l'état on-chain ; préférez lire AWPRegistry.nonces(user) on-chain pour la signature.
nonce.getStakingaddress (requis), chainId?Nonce EIP-712 de AWPAllocator (pour allocate/deallocate). Remarque : peut être en retard par rapport à l'état on-chain ; préférez lire AWPAllocator.nonces(user) on-chain pour la signature.

Agents

MéthodeParamètresDescription
agents.getByOwnerowner (requis), chainId?Tous les agents (adresses) qui ont été liés à ce propriétaire
agents.getDetailagent (requis), chainId?Détails de l'agent : propriétaire, chaîne de liaison, état de délégation
agents.lookupagent (requis), chainId?Recherche rapide : retourne {"ownerAddress": "0x..."}
agents.batchInfoagents[] (requis, max 100), worknetId (requis), chainId?Requête par lot : informations de l'agent + leur mise dans le worknet spécifié

Staking

MéthodeParamètresDescription
staking.getBalanceaddress (requis), chainId?Retourne {totalStaked, totalAllocated, unallocated} en chaînes wei
staking.getUserBalanceGlobaladdress (requis)Identique à ci-dessus mais agrégé sur TOUTES les chaînes
staking.getPositionsaddress (requis), chainId?Tableau des positions veAWP : {tokenId, amount, lockEndTime, createdAt}
staking.getPositionsGlobaladdress (requis)Positions sur toutes les chaînes (inclut chainId par position)
staking.getAllocationsaddress (requis), chainId?, page?, limit?Enregistrements d'allocations paginés : {agent, worknetId, amount}
staking.getFrozenaddress (requis), chainId?Allocations gelées (provenant de worknets bannis)
staking.getPendingaddress (requis), chainId?Allocations en attente de confirmation
staking.getAgentWorknetStakeagent (requis), worknetId (requis)Mise totale allouée de l'agent dans un worknet spécifique (inter-chaîne)
staking.getAgentWorknetsagent (requis)Tous les worknetIds où cet agent a des allocations non nulles
staking.getWorknetTotalStakeworknetId (requis)Total AWP misé sur tous les agents dans un worknet

Worknets

MéthodeParamètresDescription
worknets.liststatus?, chainId?, page?, limit?Lister les worknets. Filtrer par statut : Pending, Active, Paused, Banned
worknets.listRankedchainId?, page?, limit?Worknets classés par mise totale (du plus élevé au plus bas)
worknets.searchquery (requis, 1-100 caractères), chainId?, page?, limit?Rechercher par nom ou symbole (insensible à la casse)
worknets.getByOwnerowner (requis), chainId?, page?, limit?Worknets possédés par l'adresse
worknets.getworknetId (requis)Détails complets du worknet : nom, symbole, statut, alphaToken, pool LP, propriétaire, mises
worknets.getSkillsworknetId (requis)URI des compétences (métadonnées hors chaîne décrivant les capacités du worknet)
worknets.getEarningsworknetId (requis), page?, limit?Historique des gains AWP paginé par époque
worknets.getAgentInfoworknetId (requis), agent (requis)Informations de l'agent dans un worknet spécifique : mise, validité, destinataire des récompenses
worknets.listAgentsworknetId (requis), chainId?, page?, limit?Agents dans le worknet classés par mise

Émission

MéthodeParamètresDescription
emission.getCurrentchainId?Numéro d'époque actuelle, montant d'émission quotidienne, poids total, époque réglée
emission.getSchedulechainId?Projections d'émission : cumul 30 jours, 90 jours, 365 jours avec décroissance appliquée
emission.getGlobalScheduleaucunMêmes projections mais agrégées sur les 4 chaînes
emission.listEpochschainId?, page?, limit?Liste paginée des époques réglées avec les totaux d'émission
emission.getEpochDetailepochId (requis), chainId?Répartition détaillée : distributions AWP par destinataire pour une époque spécifique

Jetons

MéthodeParamètresDescription
tokens.getAWPchainId?Informations du jeton AWP : totalSupply, maxSupply, circulatingSupply (par chaîne)
tokens.getAWPGlobalaucunInformations AWP agrégées sur toutes les chaînes
tokens.getWorknetTokenInfoworknetId (requis)Informations du jeton Alpha : adresse, nom, symbole, totalSupply, minteur
tokens.getWorknetTokenPriceworknetId (requis)Prix Alpha/AWP depuis le pool LP (cache 10min). Retourne sqrtPriceX96 et prix lisible.

Gouvernance

MéthodeParamètresDescription
governance.listProposalsstatus?, chainId?, page?, limit?Lister les propositions. Statut : Active/Pending/Canceled/Defeated/Succeeded/Queued/Expired/Executed
governance.listAllProposalsstatus?, page?, limit?Liste inter-chaîne des propositions
governance.listGroupedpage?, limit?Vue fusionnée inter-chaîne — même proposalId sur toutes les chaînes fusionné en une entrée
governance.listByStatusGroupedstatus (requis), page?, limit?Propositions fusionnées où au moins une chaîne correspond au statut
governance.getActivepage?, limit?Raccourci aux propositions actives — équivalent à listByStatusGrouped(status="Active")
governance.getProposalproposalId (requis, hex ou décimal), chainId?Détail enrichi : votes en direct, état, 100 premiers votants, quorum, corps + url (signal uniquement), contentHash
governance.decodeProposalActionsproposalId (requis), chainId?Décoder les calldata en appels de fonctions lisibles. Supporte : AWPRegistry, AWPDAO, Treasury, AWPEmission, AWPAllocator, veAWP, AWPWorkNet
governance.getTimelineproposalId (requis), chainId?Chronologie complète du cycle de vie : Created → VotingStarted → VotingEnded → Queued → Executed/Canceled
governance.getQuorumProgressproposalId (requis), chainId?Progression du quorum en temps réel (bps), willPassIfEnded, délai
governance.getEligibleTokensaddress (requis), proposalId (requis), chainId?Éligibilité NFT veAWP par proposition (éligible si createdAt < proposalCreatedAt)
governance.getVotingPoweraddress (requis), proposalId?, chainId?Pouvoir de vote agrégé pour l'adresse
governance.getVoterPowerproposalId (requis), voter (requis), chainId?Statut d'un votant unique sur la proposition (hasVoted, weight, reason)
governance.getVoterVotesGlobalproposalId (requis), voter (requis)Votes inter-chaîne du votant pour une proposition
governance.listProposalVotesGlobalproposalId (requis), grouped?, page?, limit?Tous les votants inter-chaîne pour une proposition
governance.getUserVoteHistoryaddress (requis), page?, limit?Historique complet des votes de l'utilisateur sur toutes les propositions
governance.getUserProposalsaddress (requis), page?, limit?Propositions soumises par l'adresse
governance.getApprovedProposerschainId?Proposants autorisés (contournent le seuil de 200 000 AWP)
governance.isApprovedProposeraddress (requis), chainId?Vérifier si l'adresse est un proposant autorisé
governance.getStatsaucunTableau de bord DAO : total des propositions, votants, taux de réussite, répartition des statuts
governance.getTreasuryaucunRetourne l'adresse du contrat de trésorerie

IMPORTANT : Montrez toujours à l'utilisateur ce que vous faites. Chaque résultat de requête, chaque transaction, chaque événement — imprimez-le clairement. N'exécutez jamais d'appels API en silence.

CRITIQUE : L'inscription est GRATUITE et la plupart des worknets ne nécessitent AUCUN staking. Ne dites PAS aux utilisateurs qu'ils ont besoin de jetons AWP ou de staking pour commencer. Le flux typique est : s'inscrire (gratuit, sans gaz) → choisir un worknet avec min_stake=0 → commencer à gagner immédiatement. Le staking/dépôt d'AWP n'est nécessaire que pour les worknets qui l'exigent explicitement (min_stake > 0), et est complètement optionnel pour démarrer.

Adresses des Contrats (identiques sur les 4 chaînes)

AWPToken:             0x0000A1050AcF9DEA8af9c2E74f0D7CF43f1000A1
AWPRegistry:          0x0000F34Ed3594F54faABbCb2Ec45738DDD1c001A
AWPEmission:          0x3C9cB73f8B81083882c5308Cce4F31f93600EaA9
AWPAllocator:         0x0000D6BB5e040E35081b3AaF59DD71b21C9800AA
veAWP:                0x0000b534C63D78212f1BDCc315165852793A00A8
AWPWorkNet:           0x00000bfbdEf8533E5F3228c9C846522D906100A7
LPManager (proxy):    0x00001961b9AcCD86b72DE19Be24FaD6f7c5b00A2
WorknetTokenFactory:  0x00000a82b06Ea5b5BdD6003fbfb9602FA531CAFE
Treasury:             0x82562023a053025F3201785160CaE6051efD759e
VeAWPHelper:          0x0000561EDE5C1Ba0b81cE585964050bEAE730001
AWPDAO:               0x00006879f79f3Da189b5D0fF6e58ad0127Cc0DA0
Guardian (Safe 3/5):  0x000002bEfa6A1C99A710862Feb6dB50525dF00A3

Les implémentations par défaut de WorknetManager diffèrent selon la chaîne (spécifiques au DEX). Voir references/commands-worknet.md pour les adresses par chaîne. Interroger on-chain via AWPRegistry.defaultWorknetManagerImpl().

Chaînes prises en charge : Base (8453), Ethereum (1), Arbitrum (42161), BSC (56). Toutes les adresses des protocoles principaux sont identiques sur les 4 chaînes.

Au Chargement de la Compétence

Lors de la première interaction dans une nouvelle session, exécutez ces étapes avant de traiter la demande de l'utilisateur. La bannière de bienvenue confirme à l'utilisateur que la compétence AWP est active. Après la bannière, passez à la tâche réelle de l'utilisateur dans la même réponse.

Étape 1 — Écran d'accueil (première interaction dans une nouvelle session) :

Affichez la bannière suivante, puis continuez avec les étapes de configuration restantes et la demande de l'utilisateur.

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

agent · travail · protocole

bienvenue sur awp.

un protocole. des emplois infinis. des gains non-stop.

── démarrage rapide ──────────────────
"awp start"        → s'inscrire + rejoindre (gratuit, pas d'AWP nécessaire)
"awp balance"      → aperçu du staking
"awp worknets"     → parcourir les worknets actifs
"awp watch"        → moniteur en temps réel
"awp help"         → toutes les commandes
──────────────────────────────────────

pas besoin de jetons AWP pour commencer.
inscrivez-vous gratuitement → choisissez un worknet → commencez à gagner.

Après la bannière, continuez immédiatement

…

[tronqué pour la traduction]

Skills associés