Windrecorder – une application Windows open source pour remonter dans le temps et rechercher tout ce qui s’est affiché à l’écran
(tonoko.notion.site)- 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
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
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
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
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
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
Je l’ai déjà précommandé
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
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
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
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
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
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/
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
Dépôt qui pourrait être le code source original de Savant : https://bitbucket.org/theluxury/savant/src/master/
Vidéos montrant comment Atlas Recall fonctionnait ensuite : https://www.youtube.com/@atlasinformatics3316/videos
https://www.geekwire.com/2021/invention-network-company-xino...
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
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
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