Communitygithub.com

liuyewang/computer-usage-summary-skill

Résumés d'activité ActivityWatch multiplateformes, respectueux de la vie privée, pour Codex.

Qu'est-ce que computer-usage-summary-skill ?

Cette compétence permet à un agent IA (comme Codex) de résumer l'utilisation de l'ordinateur d'un utilisateur en s'appuyant sur ActivityWatch, une solution de suivi locale et respectueuse de la vie privée. Elle est compatible avec macOS, Windows et Linux, et fonctionne via l'API locale d'ActivityWatch avec Python 3.9+. L'utilité principale est de fournir des rapports précis sur le temps d'activité, les temps AFK, les sessions d'applications et l'utilisation par projet, le tout sans jamais exposer de données sensibles. La compétence gère également les scénarios où ActivityWatch est indisponible, en indiquant clairement les données manquantes plutôt que de les deviner à partir de sources non fiables (comme l'historique du navigateur). Elle impose des règles de confidentialité strictes, comme le nettoyage des titres de fenêtres et l'absence d'export de données sans consentement explicite de l'utilisateur.

Compatible avec~Claude Code✓Codex CLI~Cursor
npx skills add liuyewang/computer-usage-summary-skill

Demander à votre IA préférée

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

Documentation

Résumé d'Utilisation de l'Ordinateur

Aperçu

Utilisez d'abord les données locales d'ActivityWatch. Cette compétence prend en charge macOS, Windows et Linux partout où l'API locale ActivityWatch et Python 3.9+ sont disponibles. La configuration équilibrée en matière de confidentialité prévue enregistre uniquement les applications au premier plan, les titres de fenêtres nettoyés et l'état AFK. N'installez pas d'extensions de navigateur, n'activez pas aw-sync, ne configurez pas de stockage cloud et n'exposez pas l'API locale.

Les temps d'application et AFK historiques précis n'existent qu'à partir du moment où ActivityWatch commence l'enregistrement. Ne les déduisez pas à partir de la durée de fonctionnement des processus, des journaux système macOS, de l'historique du navigateur ou de bases de données non documentées.

Configuration et Vérification

Utilisez cette section uniquement lorsqu'ActivityWatch est manquant, arrêté ou a besoin de réparation.

  1. Inspectez l'application ActivityWatch locale, son paramètre de démarrage, les processus locaux et le répertoire de données ActivityWatch de l'utilisateur actuel. Ne remplacez pas une installation fonctionnelle.
  2. Laissez l'utilisateur choisir une source d'installation officielle. Avant de la lancer ou d'activer le démarrage automatique, vérifiez l'éditeur et le statut de sécurité du système d'exploitation. Sur macOS, utilisez codesign --verify --deep --strict et spctl --assess --type execute. Arrêtez-vous si la validation échoue, sauf si l'utilisateur en décide explicitement autrement.
  3. Activez uniquement les observateurs de fenêtre et AFK. Laissez macOS demander l'autorisation d'accessibilité via son interface normale ; ne contournez ou ne modifiez jamais les autorisations de confidentialité par programmation.
  4. Sous Windows, exécutez python -m pip install tzdata une fois pour que Python puisse résoudre les fuseaux horaires IANA comme Asia/Singapore de manière cohérente.
  5. Confirmez que le serveur local http://127.0.0.1:5600 a des compartiments currentwindow et afkstatus contenant des événements. Le seuil AFK par défaut est de 180 secondes.

Solution de Rechange Sans ActivityWatch

Lorsque l'application, l'API locale, les compartiments ou les événements de la plage demandée sont indisponibles :

  • Marquez le temps actif, le temps AFK, les sessions et les nombres de lancements comme indisponible, pas zéro.
  • Un instantané de l'application au premier plan ou en cours d'exécution ne prouve que le présent, pas la plage demandée.
  • Utilisez Screen Time uniquement lorsque l'utilisateur rend ses totaux visibles disponibles ; étiquetez-le Screen Time signalé et ne lisez pas les bases de données privées.
  • Inspectez l'historique du navigateur uniquement pour une demande explicite au niveau du site Web. Inspectez les documents récents ou l'historique du terminal uniquement après une autorisation explicite et spécifique à la source. Traitez tous ces résultats comme des indices de métadonnées, pas des durées.

Flux de Travail

  1. Établissez la plage de dates locale et le fuseau horaire.
  2. Exécutez scripts/activitywatch_summary.py --date today, utilisez --period week ou --period month autour d'une date de référence, ou utilisez les dates inclusives --start YYYY-MM-DD --end YYYY-MM-DD. Ajoutez --timezone Area/City pour des horodatages locaux reproductibles. Gardez --api-url sur l'interface de bouclage.
  3. Utilisez active_seconds et afk_seconds uniquement lorsqu'ActivityWatch les confirme. Décrivez foreground_sessions comme des intervalles de premier plan observés, pas des lancements de processus.
  4. Utilisez les noms d'applications et les titres de fenêtres nettoyés pour reconstruire la chronologie. Un titre est confirmé uniquement lorsqu'il soutient directement l'activité décrite.
  5. Lorsque l'utilisateur a besoin de rapports de projet/client ou facturables, proposez un fichier --rules JSON local optionnel. Faites correspondre uniquement les titres nettoyés. Expliquez que la première règle correspondante gagne et ne créez ou ne téléchargez jamais de règles sans consentement.
  6. Pour la sortie tableur, exécutez un tableau par commande :
    • --format markdown --table apps pour le chat.
    • --format tsv --table apps pour copier directement dans un logiciel de tableur.
    • --format tsv --table timeline pour des lignes chronologiques.
    • --format csv --table apps --csv-bom --output report.csv pour un fichier compatible Excel, uniquement lorsque l'utilisateur demande à en enregistrer un.
    • --report client-timesheet pour les lignes facturables projet/client.
    • --report weekly-review pour un tableau de révision compact.
    • --report app-trend pour les lignes de tendance quotidienne locales.
  7. Lorsqu'ActivityWatch est indisponible, retournez sa raison structurée. Les sorties Markdown, TSV et CSV fournissent les colonnes status, reason et source.

Règles de Confidentialité

  • Traitez les titres de fenêtres comme sensibles. Supprimez les URL, tronquez les titres longs et n'incluez jamais d'URL de navigateur complètes.
  • Conservez les titres nettoyés par défaut pour une chronologie utile ; utilisez --hide-titles si l'utilisateur souhaite un export sans titres.
  • Utilisez la plus petite quantité utile de contexte de titre ; les tableaux d'application et de résumé n'ont pas besoin de titres.
  • Échappez les cellules de tableur qui pourraient être interprétées comme des formules.
  • Gardez les rapports locaux à la conversation en cours. N'exportez, ne téléchargez et ne partagez pas les données d'activité sans l'approbation explicite de l'utilisateur.

Skills associés