Modèle / jeu de données
Player-YN/PawWork_ZhuaZhua avatar
Player-YN/PawWork_ZhuaZhua

PawWork_ZhuaZhua : un agent Chrome qui part de votre sélection, pas d'un prompt vide

Paw Work - selection-first web agent for Chrome: select on the live page, describe the outcome, take away an editable office file. BYOK, sandboxed, no server.

2 596 étoiles10 forksJavaScriptMIT
GitHub

En bref

De quoi s’agit-il ?
Extension Chrome MV3 non empaquetée, PawWork_ZhuaZhua transforme un onglet déjà connecté en machine programmable et rend un fichier bureautique éditable. Le point de départ est la sélection sur la page vivante, pas une requête abstraite.
À qui s’adresse-t-il ?
À adopter si vous travaillez déjà dans un Chrome connecté et voulez transformer une sélection de page en tableur ou document éditable sans faire transiter vos données par un serveur tiers. À éviter si vous cherchez une extension installable depuis le Chrome Web Store, un modèle hébergé, ou si vos cibles sont des pages chrome:// et du Web Store, qui renvoient NEED_PAGE.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 6 jours.
En quel langage est-il écrit ?
Principalement JavaScript, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème : l'agent qui ne voit pas ce que vous voyez

La plupart des agents de navigateur démarrent sur une page blanche conversationnelle. Vous décrivez une intention, l'agent demande une URL, puis tente de reconstituer un contexte que vous aviez déjà sous les yeux. PawWork_ZhuaZhua prend le problème par l'autre bout. Le README résume la posture en une phrase : traiter le Chrome déjà connecté comme un ordinateur programmable, et considérer 爪爪 comme l'agent installé sur cette machine. La sélection faite sur la page vivante devient le point d'entrée, et la sortie attendue est un fichier bureautique éditable. Le public visé est donc précis : quelqu'un qui a déjà une session ouverte quelque part (une boutique, un back-office, un tableau de bord interne) et qui veut en extraire une structure sans écrire de script. Le README insiste sur ce que le projet n'est pas : ni un widget de sélection, ni une application du Chrome Web Store. C'est un dossier à charger en mode développeur.

Side panel, service worker, agent offscreen : la chaîne réelle

L'architecture tient en une ligne dans le README : side panel vers service worker vers offscreen SessionWorkspaceService vers AI SDK ToolLoopAgent. Le side panel est l'interface, le service worker MV3 fait la plomberie, et le travail de l'agent vit dans un document offscreen, ce qui évite de dépendre de la durée de vie courte d'un service worker. Les outils exposés au modèle sont nommés et peu nombreux. action opère sur l'onglet actif : un snapshot d'abord, puis une mutation avec le ref et le rev de cette génération, ce qui implique que toute modification invalide les références précédentes. run exécute du JavaScript invité dans un sandbox et donne accès à un objet sys couvrant tabs, eval, fetch, cdp, download et screenshot. sheet, doc et web ouvrent respectivement une table Univer, un document Univer et un canevas marqué data-paw-kind=site. inspect, acquire et clarify servent à lire l'état de session, faire entrer du web public, et mettre en pause pour une question ou un plan. Le README précise une distinction qui compte : sys n'est pas un outil du modèle, c'est l'environnement dans lequel run s'exécute. Conséquence pratique, l'authentification passe par sys.fetch({ as: "page" }) à l'intérieur de run, ce qui réutilise les cookies de l'onglet plutôt que de les extraire.

Charger le dossier et fournir sa clé

Il n'y a pas de listing sur le Chrome Web Store, et le README l'assume. La procédure est celle d'une extension non empaquetée. Téléchargez le zip de release ou clonez le dépôt et utilisez le dossier extension/. Ouvrez chrome://extensions, activez le mode développeur, cliquez sur Load unpacked, puis sélectionnez ce dossier, manifest.json devant se trouver à sa racine. Ouvrez ensuite le side panel, collez une clé BYOK dans pagewand_providers, et envoyez une tâche sur une page http(s) normale. Le nom affiché du panneau est 爪爪 · 完全解放版. Après une modification des fichiers dans le dossier chargé, le README indique de cliquer sur 重新加载 sur la carte de l'extension, et précise qu'aucun npm quotidien n'est nécessaire. Un seul playbook est livré, page-restyle. Le reste passe par run et sys.eval. Le dépôt fournit aussi une commande de test, node --test tests/runtime-regression.test.mjs, sans que le README détaille ce qu'elle couvre.

Les contraintes qui décident avant le premier essai

Le README liste des limites qui changent le verdict plus que n'importe quel argument de fonctionnalité. Chrome 135 est le minimum. À partir de Chrome 138, il faut activer Allow User Scripts dans les détails de l'extension si vous voulez sys.eval ou le fetch de page. Avant toute utilisation de CDP, il faut fermer F12 sur l'onglet cible, sinon l'erreur CDP_BUSY remonte. Les pages restreintes, chrome:// et le Chrome Web Store, renvoient NEED_PAGE. Le modèle est nécessairement le vôtre : pas d'hébergement, BYOK uniquement. Et il n'existe pas de catalogue de userscripts, ce qui est un choix de conception autant qu'une limite : le README compare la portée à celle d'un userscript Tampermonkey, tout en refusant d'en fournir le magasin. La carte de session, elle, est décrite comme valable pour la session seulement. Autrement dit, un plan construit avec clarify ne survit pas au redémarrage du navigateur. C'est cohérent avec l'absence de serveur, mais cela veut dire qu'un flux de travail long doit être relancé ou reconstruit.

Ce que la documentation ne tranche pas

Le README reste volontairement court sur plusieurs points qui déterminent l'adoption. La liste des cas d'usage est présentée comme plausible et essayée, avec une mise en garde explicite : ni un banc d'essai, ni un magasin. Aucun chiffre de performance, aucune mesure de coût en jetons, aucune estimation de latence n'apparaît. Le comportement du sandbox de run n'est pas spécifié au-delà de la liste des capacités de sys. La gestion des erreurs est mentionnée par ses codes, CDP_BUSY et NEED_PAGE, sans table de correspondance complète. Le format exact de la configuration pagewand_providers n'est pas détaillé dans le README, seul le nom de la clé est donné. Pour un projet qui se présente comme un agent généraliste sur le navigateur, cette pauvreté documentaire est le principal frein : vous découvrirez les frontières du sandbox en les heurtant. Le fichier AGENTS.md est cité comme la référence pour l'architecture et les contrats d'outils, ce qui déplace la documentation utile hors du README.

Face à un agent piloté par CDP externe

L'alternative la plus proche est un agent de navigateur piloté de l'extérieur par le protocole CDP, du type de ceux qui lancent un Chrome dédié et le contrôlent depuis un processus séparé. La différence d'approche est nette. Un agent externe démarre un profil, donc une session vierge : vous devez vous reconnecter, ou exporter et réinjecter des cookies. PawWork_ZhuaZhua s'installe dans le Chrome que vous utilisez déjà, avec ses cookies en place, et n'ouvre aucun port de débogage vers l'extérieur. En contrepartie, l'agent externe dispose d'un contrôle plus fin du cycle de vie du navigateur et n'a pas à composer avec la durée de vie d'un service worker MV3 ni avec la règle du F12 fermé. Un autre point de comparaison est le userscript classique : même périmètre d'action sur la page, mais aucun modèle dans la boucle, donc aucune capacité à décider quoi faire à partir d'une description d'objectif. PawWork_ZhuaZhua se situe entre les deux, et paie cette position par une installation manuelle et une dépendance à une clé API personnelle.

Maintenance, licence et coût réel

Le projet est sous licence MIT, ce qui autorise la réutilisation, la modification et la redistribution, y compris dans un contexte commercial, à condition de conserver l'avis de licence. Le README ne signale aucune clause supplémentaire, et rien dans le matériel fourni n'indique de composant sous licence incompatible. Cela ne constitue pas un avis juridique : si vous redistribuez une version modifiée, vérifiez les licences des dépendances embarquées, notamment Univer et tldraw, qui ne sont pas détaillées ici. Côté maintenance, le dépôt affiche un dernier push en septembre 2026 et trois releases non empaquetées, dont la plus récente porte le tag v1.0.0-unpacked. Le modèle de distribution par dossier non empaqueté signifie que les mises à jour ne sont pas automatiques : vous remplacez les fichiers et rechargez l'extension. Le README indique explicitement qu'aucun npm quotidien n'est requis après l'installation, ce qui réduit la friction, mais le suivi des changements repose sur vous. La contrepartie financière se déplace vers la clé BYOK, dont le coût dépend entièrement du fournisseur que vous choisissez et du volume de contexte que vous envoyez.

Conclusion éditoriale

À adopter si vous travaillez déjà dans un Chrome connecté et voulez transformer une sélection de page en tableur ou document éditable sans faire transiter vos données par un serveur tiers. À éviter si vous cherchez une extension installable depuis le Chrome Web Store, un modèle hébergé, ou si vos cibles sont des pages chrome:// et du Web Store, qui renvoient NEED_PAGE. Avant de charger le dossier, vérifiez la version de Chrome (135 minimum, 138 pour Allow User Scripts), et testez d'abord une seule tâche sur un onglet http(s) ordinaire avec un onglet F12 fermé, parce que CDP_BUSY bloque le reste.

Sources officielles

  1. Issues
  2. License: MIT
  3. Player-YN/PawWork_ZhuaZhua on GitHub
  4. README
  5. Releases
Notes de la communauté

Notes de la communauté