11 points par GN⁺ 2024-04-22 | 1 commentaires | Partager sur WhatsApp
  • Windrecorder est une application open source qui enregistre localement l’écran Windows afin de pouvoir le rembobiner et y effectuer des recherches plus tard ; elle se présente comme un outil de mémoire personnelle proche d’une alternative à Rewind/Copilot Recall
  • L’écran est enregistré en fichiers segmentés de 15 minutes via ffmpeg ou des captures d’écran à intervalles réguliers, puis indexé à l’aide de l’API OCR locale de Windows et d’embeddings d’images
  • Dans une Web UI locale, il est possible de retrouver d’anciens écrans par titre de fenêtre, mot-clé textuel ou description d’image, avec la possibilité d’exclure certains programmes ou certaines zones de l’écran de l’enregistrement
  • Le traitement des données s’effectue uniquement sur l’ordinateur de l’utilisateur, sans cloud ; comme l’outil est basé sur Python, sa structure est facile à inspecter et à modifier, mais ses performances peuvent être lentes
  • Le stockage actuel repose sur une structure locale non chiffrée ; les fonctions LLM sont limitées, et les usages réellement couverts se résument surtout aux aperçus quotidiens de titres et à la recherche

Enregistrement de l’écran et recherche par rembobinage

  • Windrecorder est un outil de mémoire d’écran personnel destiné à retrouver des informations que l’utilisateur a vues mais qui sont difficiles à retrouver ensuite, comme des pages web, des vidéos ou des messages de chat
  • Ses principales sources d’inspiration sont l’application Mac Rewind et l’épisode S1E3 de Black Mirror, “The Entire History of You”
  • Le mode d’enregistrement de l’écran est simple
    • Il utilise ffmpeg ou des captures d’écran à intervalles réguliers
    • Il enregistre l’écran sous forme de fichiers segmentés de 15 minutes
    • Il indexe les enregistrements avec l’API OCR locale de Windows et des embeddings d’images
  • L’utilisateur peut définir les programmes ou les zones de l’écran à ne pas enregistrer
  • Dans la Web UI locale, il est possible de remonter dans les anciens écrans et d’y effectuer des recherches à partir des indices suivants
    • titre de fenêtre
    • mots-clés textuels
    • description d’image
  • Les fonctions annexes incluent le temps d’utilisation de l’écran par jour et par période, des résumés circadiens et la création d’une lightbox mensuelle

Conception local-first et limites actuelles

  • Tous les traitements sont effectués uniquement sur l’ordinateur de l’utilisateur et ne reposent pas sur un stockage cloud ni sur un abonnement
  • Sa structure, construite en reliant plusieurs fonctions en Python, rend son fonctionnement interne transparent et facile à modifier directement par l’utilisateur
    • En contrepartie, les performances peuvent être lentes
  • Le développeur n’est pas un développeur professionnel ; il a créé cet outil par intérêt personnel et pour son propre usage
    • Après l’avoir utilisé pendant un certain temps, il estime qu’il est suffisamment mûr et robuste
    • Les signalements d’issues, discussions et contributions sont les bienvenus
  • Les limites actuelles sont également claires
    • Le stockage des données est transparent et non chiffré
    • L’utilisateur peut exploiter librement les données locales structurées, mais doit aussi veiller à leur protection
  • Les fonctions LLM ne sont pas très développées
    • À l’heure actuelle, elles se limitent surtout à décider des appels API en fonction de l’intention de l’utilisateur et à ajuster les résultats de recherche
    • L’outil n’en est pas encore au stade où il comprendrait, analyserait et remémorerait directement toutes les données pour agir selon l’intention de l’utilisateur
    • Les aperçus quotidiens de titres et la fonction de recherche actuellement proposés représentent ce que Windrecorder peut concrètement réaliser

1 commentaires

 
GN⁺ 2024-04-22
Avis sur Hacker News
  • J’avais déjà créé quelque chose de similaire il y a près de 20 ans, avec même la possibilité de rembobiner jusqu’à un moment précis du passé et de reprendre l’exécution à partir de là
    http://www.cs.columbia.edu/~orenl/papers/sosp07-dejaview.pdf
    DejaView était un enregistreur personnel de machine virtuelle capable d’enregistrer l’ensemble de l’expérience d’utilisation du bureau, puis de la rejouer, l’explorer, la rechercher et la restaurer ; il stockait et indexait à la fois la sortie écran, des points de contrôle de l’état des applications et du système de fichiers, ainsi que le texte affiché avec son contexte
    En combinant virtualisation de l’affichage / du système d’exploitation / du système de fichiers, sans modifier les applications, le système de fenêtrage ni le noyau de l’OS, il a montré qu’il était possible d’effectuer un enregistrement continu et une recherche/relecture interactive sur de vraies applications de bureau, sans dégradation perceptible des performances pour l’utilisateur

    • Je me demande s’ils l’ont vraiment construit, ou s’ils ont seulement écrit l’article. J’aimerais aussi savoir où on peut le télécharger
    • Je ne sais pas si l’URL est correcte. Quand on l’ouvre, le fichier est introuvable
  • Il existe aussi un projet open source similaire pour macOS
    https://rem.ing
    https://github.com/jasonjmcghee/rem
    Le développeur l’a posté sur HN il y a 3 mois, et il y a eu une discussion assez intéressante
    https://news.ycombinator.com/item?id=38787892

    • Je suis le créateur de rem. Ce serait super d’avoir de l’aide pour le développement
      C’est sous licence MIT, et j’ai aussi commencé une version multiplateforme en Rust, https://github.com/jasonjmcghee/xrem, mais elle en est encore à ses débuts, donc toute aide supplémentaire est bienvenue
    • Je me demande si quelqu’un l’a utilisé longtemps. J’aimerais savoir si c’est réellement utile
    • J’ai longtemps cherché quelque chose comme ça sur Mac avant d’abandonner, puis j’ai fini par écrire moi-même un script qui prend une capture d’écran toutes les 10 secondes et un autre qui assemble le tout en vidéo avec ffmpeg
      J’aimerais contribuer, mais je ne connais pas du tout Swift, et ce que j’ai fait n’était que des scripts bash lancés avec launchd
    • Il y a aussi http://rewind.ai, une entreprise qui fait la même chose
  • Ce serait cool de créer un truc comme ça : des Meta Smart Glasses prendraient une photo toutes les 2 secondes, enverraient les images vers un serveur cloud, lanceraient OCR et détection/étiquetage d’objets, puis proposeraient une app permettant de rechercher dans le passé ou de dialoguer avec lui
    On pourrait alors demander à un LLM : « Où ai-je posé mon portefeuille ? », « Est-ce qu’on m’a rendu ma carte bancaire après avoir payé au restaurant hier ? », « Qu’est-ce qui était écrit sur le nouveau t-shirt de ma fille aujourd’hui ? »
    Avec l’enregistrement audio et la transcription en plus, on pourrait aussi demander quelle date limite a été décidée en réunion, le numéro de téléphone de la personne rencontrée au parc, ou le nom de l’investisseur vu aujourd’hui ; et ce serait encore mieux si les appels téléphoniques étaient accessibles pour transcrire et indexer ce que dit l’interlocuteur
    Ça fait penser à l’épisode « The Entire History of You » de Black Mirror : https://en.wikipedia.org/wiki/The_Entire_History_of_You

    • En général, les épisodes de Black Mirror ne sont pas conçus comme des futurs qu’on a envie d’imiter
    • Un restaurant ne devrait jamais emporter une carte bancaire hors de votre champ de vision. En fait, le personnel n’a même pas besoin de toucher la carte ; il faudrait la passer soi-même sur le terminal à la caisse en sortant
    • Le Frame de Brilliant Labs se rapproche d’un matériel capable de fournir ce genre de données de manière réaliste, sous une forme conviviale et assez discrète
      Je l’ai déjà précommandé
    • C’est exactement ce que fait le Humane AI Pin, qui a été beaucoup critiqué
  • Je me demande si quelqu’un a déjà construit quelque chose comme ça avec les API d’accessibilité à la place de l’OCR, ou en complément
    Comme on peut récupérer directement le texte depuis les API d’accessibilité, tout faire en OCR me semble du gâchis
    Ce pourrait aussi être une bonne façon de connecter un LLM à l’interface utilisateur, et ce genre d’outil pourrait servir à collecter des données d’entraînement

    • Dragon NaturallySpeaking prend en charge des commandes vocales comme « cliquer sur OK » et réagit effectivement en conséquence
      Le problème de Microsoft Office, qui rendait ses propres widgets, était contourné en lisant par OCR le texte des widgets et des boutons pour en déduire les libellés
      On finit par avoir besoin de cette approche bien plus souvent qu’on ne l’imagine. Les développeurs déçoivent souvent les attentes et n’utilisent pas les API fournies
    • J’ai utilisé un peu les deux en créant un enregistreur d’écran façon Loom avec recherche dans l’écran, et si l’on veut rester indépendant de l’OS, les différences entre les API d’accessibilité de Mac et de Windows sont importantes ; même sous Windows, l’implémentation varie énormément d’une app à l’autre, ce qui rend difficile de déterminer ce que l’utilisateur a réellement « vu »
      Certaines apps omettent des données essentielles ou les implémentent mal. Je pensais que l’accessibilité serait facile, mais en pratique l’OCR était souvent plus simple
    • J’ai créé un MVP d’enregistreur de workflow avec historique d’écran
      Je me suis dit que si cette approche était vraiment pertinente, Microsoft ou Apple l’intégreraient nativement à l’OS comme une partie de Copilot, pour tout mémoriser et aider l’utilisateur à exploiter ses connaissances
      Mon historique d’écran n’était pas aussi avancé que l’app présentée ici, et je ne l’utilisais pas moi-même
    • Ce serait bien de pouvoir aussi enregistrer, comme métadonnées, les informations sur l’app au premier plan
  • Dans Notion, on tombe sur des écrans de blocage « JavaScript must be enabled in order to use Notion » et « Please enable JavaScript to continue » ; avec NoScript, à cause de cette méthode de blocage, il est en fait impossible d’activer JavaScript pour le site
    J’aimerais qu’ils ne redirigent pas vers une page statique. Sur cette page, il n’y a pas de JavaScript à autoriser au cas par cas, et la redirection est trop rapide pour laisser le temps d’activer JavaScript sur la page principale
    Autoriser uniquement notion.so ne permet pas de contourner ce blocage

    • C’est vraiment nul. Ils ont pris quelque chose qui pourrait fonctionner correctement et l’ont utilisé de la pire manière possible
      Je suis aussi surpris que HTML permette une redirection sans JavaScript
  • Sous Windows, il y a aussi TimeSnapper. Ce n’est pas open source, mais son développeur passe parfois sur Hacker News
    https://timesnapper.com/

    • Pour le suivi du temps à partir de captures d’écran et le tagging avancé basé sur les titres de fenêtres, et parfois sur les documents ouverts, il y a aussi ManicTime. En revanche, il ne semble pas y avoir d’OCR
      https://www.manictime.com/
  • Je me souviens de quelques projets de ce genre. Le premier que j’ai vu était Savant Recall, en 2014, qui n’avait pas été retenu par YC et a donc été publié en open source
    Ensuite, Ritter, cofondateur de Napster, l’a repris, l’a renommé Atlas Recall, lui a ajouté une nouvelle interface et a levé 20 millions de dollars
    Mais un an plus tard, le service a soudainement fermé, et LinkedIn indique qu’il a été « acquis par Xinova ». J’ai aussi entendu parler d’Apse, en 2019

  • Cela ressemble beaucoup à https://apse.io/. Là aussi, l’OCR transforme tout ce qui a été vu à l’écran en index consultable
    Ce que j’aime avec windrecorder, c’est que c’est open source

  • D’après le README GitHub, la vidéo représente environ 100 à 200 Go par an, ce qui n’est pas si mal

    • Je me demande sur quelle moyenne d’heures par jour cela se base. Je me demande aussi s’il supprime les scènes sans texte, comme dans les films ou les jeux
  • Quand on a une idée du type « pourquoi cette appli n’existe-t-elle pas ? », réussir à l’implémenter soi-même de cette manière inspire tout le monde

    • Le moyen le plus simple de trouver une appli qui fait X, c’est d’en créer une nouvelle, de la poster sur HN et de lire les commentaires
    • rewind.ai en est aussi un exemple ; vu qu’ils ont récemment déplacé ces données vers un stockage uniquement dans le cloud et se sont renommés limitless.ai, c’est réjouissant de voir apparaître ce genre de projet open source
      C’est bien de ne pas être obligé d’utiliser le stockage cloud, et je dis cela en tant que personne qui va probablement bientôt cesser d’être cliente payante