11 puntos por GN⁺ 2024-04-22 | 1 comentarios | Compartir por WhatsApp
  • Windrecorder es una app open source que guarda localmente el historial de pantalla de Windows para poder rebobinarlo y buscarlo más tarde; es una herramienta de memoria personal cercana a una alternativa a Rewind/Copilot Recall
  • La pantalla se guarda en archivos fragmentados de 15 minutos mediante ffmpeg o capturas de pantalla a intervalos continuos, y se indexa con la API local de OCR de Windows y embeddings de imagen
  • Desde una Web UI local se pueden encontrar pantallas pasadas por título de ventana, palabras clave de texto o descripción de imagen, y también es posible excluir de la grabación programas específicos o áreas de la pantalla
  • Todo el procesamiento de datos ocurre únicamente en la computadora del usuario, sin nube; al estar basada en Python, su estructura es fácil de revisar y modificar, aunque el rendimiento puede ser lento
  • Actualmente, el repositorio usa una estructura local sin cifrar; las funciones de LLM son limitadas, y el alcance práctico de uso son el resumen diario de títulos y la búsqueda

Grabación de pantalla y búsqueda con rebobinado

  • Windrecorder es una herramienta de memoria de pantalla personal para volver a encontrar información que el usuario vio pero que luego resulta difícil ubicar, como páginas web, videos o mensajes de chat
  • Sus principales inspiraciones son la app para Mac Rewind y “The Entire History of You”, el episodio S1E3 de Black Mirror
  • El método de grabación de pantalla es simple
    • Usa ffmpeg o capturas de pantalla a intervalos continuos
    • Guarda la pantalla en archivos fragmentados de 15 minutos
    • Indexa el historial con la API local de OCR de Windows y embeddings de imagen
  • El usuario puede especificar programas o zonas de la pantalla que no desea registrar
  • En la Web UI local, se pueden rebobinar y buscar pantallas pasadas usando las siguientes pistas
    • Título de la ventana
    • Palabras clave de texto
    • Descripción de imagen
  • Como funciones adicionales, incluye tiempo de uso de pantalla diario y periódico, resúmenes circadianos y generación de lightboxes mensuales

Diseño local-first y limitaciones actuales

  • Todo el procesamiento se realiza únicamente en la computadora del usuario y no presupone almacenamiento en la nube ni suscripción
  • Como está construido conectando varias funciones en Python, su funcionamiento interno es transparente y es fácil que el usuario lo modifique por su cuenta
    • A cambio, el rendimiento puede volverse lento
  • El desarrollador no es un desarrollador profesional; creó la herramienta por interés personal y para su propio uso
    • Después de usarla durante un tiempo, considera que ya es lo suficientemente madura y sólida
    • Se agradecen issues, debates y contribuciones
  • Las desventajas actuales también son claras
    • El almacén de datos es transparente y no está cifrado
    • El usuario puede aprovechar libremente los datos locales estructurados, pero también debe tener cuidado con su protección
  • Las funciones de LLM no están incorporadas de forma amplia
    • Actualmente, las funciones de LLM se limitan principalmente a decidir llamadas a la API según la intención del usuario y a ajustar resultados de búsqueda
    • Todavía no llega a la etapa de entender, analizar y recordar directamente todos los datos, ni de actuar según la intención del usuario
    • El resumen diario de títulos y la función de búsqueda disponibles actualmente son el alcance realizable en Windrecorder

1 comentarios

 
GN⁺ 2024-04-22
Opiniones en Hacker News
  • Hace casi 20 años ya habían creado algo parecido, e incluso incluía la función de rebobinar hasta un momento específico del pasado y reanudar la ejecución desde ahí.
    http://www.cs.columbia.edu/~orenl/papers/sosp07-dejaview.pdf
    DejaView era una grabadora personal de computadoras virtuales que registraba toda la experiencia de uso del escritorio y permitía reproducirla, navegarla, buscarla y restaurarla; almacenaba e indexaba en conjunto la salida de pantalla, puntos de control del estado de aplicaciones/sistema de archivos y texto visible con contexto.
    Combinaba virtualización de pantalla/sistema operativo/sistema de archivos sin modificar las aplicaciones, el sistema de ventanas ni el kernel del sistema operativo, y sus resultados mostraban que era posible tener grabación continua y búsqueda/reproducción interactiva en apps de escritorio reales sin degradación perceptible de rendimiento para el usuario.

    • Me da curiosidad si realmente lo construyeron o si solo escribieron el paper. También me gustaría saber de dónde se puede descargar.
    • No sé si la URL es correcta. Al abrirla dice que no se encuentra el archivo.
  • También hay un proyecto open source parecido para macOS.
    https://rem.ing
    https://github.com/jasonjmcghee/rem
    El desarrollador lo publicó en HN hace 3 meses, y hubo una discusión bastante buena.
    https://news.ycombinator.com/item?id=38787892

    • Soy la persona que creó rem. Me encantaría que se sumaran al desarrollo.
      Tiene licencia MIT, y también empecé una versión multiplataforma hecha en Rust, https://github.com/jasonjmcghee/xrem, pero todavía está en una etapa temprana y hace falta más ayuda.
    • Me pregunto si alguien lo ha usado durante bastante tiempo. Quisiera saber si realmente ayuda.
    • Estuve buscando algo así para Mac durante un buen rato, me rendí y terminé haciendo yo mismo un script que toma capturas de pantalla cada 10 segundos y otro que las une en video con ffmpeg.
      Me gustaría contribuir, pero no sé nada de Swift; lo que hice eran puros scripts bash corriendo con launchd.
    • También está http://rewind.ai, una empresa que hace lo mismo.
  • Sería genial construir algo así: unas Meta Smart Glasses que tomen una foto cada 2 segundos, envíen las imágenes a un servidor en la nube, ejecuten OCR y detección/etiquetado de objetos, y luego ofrezcan una app para buscar en el pasado o conversar con él.
    Así podrías preguntarle a un LLM cosas como “¿dónde dejé la cartera?”, “¿me devolvieron la tarjeta de crédito después de pagar ayer en el restaurante?” o “¿qué decía la camiseta nueva de mi hija hoy?”.
    Si además tuviera grabación de audio y transcripción, podrías preguntar por la fecha límite acordada en una reunión, el número de teléfono de alguien que conociste en el parque o el nombre del inversionista que viste hoy; y sería todavía mejor si pudiera acceder a las llamadas telefónicas para transcribir e indexar lo que dijo la otra persona.
    Me recuerda al episodio “The Entire History of You” de Black Mirror: https://en.wikipedia.org/wiki/The_Entire_History_of_You

    • Por lo general, los episodios de Black Mirror no están pensados como visiones del futuro que uno quiera imitar.
    • Un restaurante nunca debería llevarse tu tarjeta de crédito fuera de tu vista. De hecho, el personal ni siquiera debería tener que tocar la tarjeta; lo correcto es que tú mismo la pases por la terminal de la caja al salir.
    • Frame de Brilliant Labs se está acercando a un hardware que podría ofrecer esos datos de forma realista, en un formato amigable para el usuario y bastante discreto.
      Ya hice la preventa.
    • Eso es justo lo que hace el muy criticado Humane AI Pin.
  • Me pregunto si alguien ha hecho algo así usando la API de accesibilidad en lugar de OCR, o junto con OCR.
    Se puede obtener el texto directamente desde la API de accesibilidad, así que hacer OCR de todo parece un desperdicio.
    También podría ser una buena forma de conectar LLMs con la UI, y una manera de que estas herramientas recopilen datos de entrenamiento.

    • Dragon NaturallySpeaking admite comandos de voz como “hacer clic en OK” y realmente responde en consecuencia.
      El problema de que Microsoft Office renderizara sus propios widgets se resolvió leyendo con OCR el texto de los widgets y botones para identificar sus etiquetas.
      Este enfoque termina siendo necesario con mucha más frecuencia de lo que uno pensaría. Los desarrolladores suelen decepcionar y no usar las API proporcionadas.
    • Al crear una grabadora de pantalla tipo Loom con búsqueda en pantalla, probé un poco ambas opciones; si quieres que sea independiente del sistema operativo, las diferencias entre las API de accesibilidad de Mac y Windows son grandes, y aun dentro de Windows la implementación varía mucho según la app, así que es difícil determinar qué fue lo que el usuario realmente “vio”.
      Algunas apps omiten datos clave o lo implementan mal. Pensé que la accesibilidad sería fácil, pero en la práctica muchas veces OCR resultó más sencillo.
    • Hice un MVP de grabadora de flujos de trabajo con historial de pantalla.
      Si este enfoque de verdad funciona, supuse que Microsoft o Apple lo integrarían de forma nativa en el sistema operativo como parte de un Copilot que recuerda todo y ayuda con el conocimiento del usuario.
      Mi historial de pantalla no era tan avanzado como la app mencionada aquí, y yo tampoco lo usaba personalmente.
    • Sería bueno poder guardar junto con eso la información de la app en primer plano como metadatos.
  • En Notion aparece una pantalla de bloqueo con “JavaScript must be enabled in order to use Notion” y “Please enable JavaScript to continue”, pero si usas NoScript, por esta forma de bloqueo en realidad no puedes habilitar JavaScript para el sitio.
    Ojalá no redirigieran a una página estática. En esa página no hay JavaScript que puedas permitir caso por caso, y la redirección ocurre tan rápido que no te da oportunidad de habilitar JavaScript en la página principal.
    Permitir solo notion.so tampoco permite saltarse ese bloqueo.

    • Esto es realmente pésimo. Tomaron algo que podría funcionar bien y lo usaron de la peor manera.
      También me sorprende que HTML permita redirecciones sin JavaScript.
  • En Windows también existe TimeSnapper. No es open source, pero el desarrollador aparece de vez en cuando en Hacker News
    https://timesnapper.com/

    • Para seguimiento de tiempo basado en capturas de pantalla y etiquetado avanzado basado en títulos de ventanas y, a veces, documentos abiertos, también está ManicTime. Aunque parece que no tiene OCR
      https://www.manictime.com/
  • Recuerdo varios proyectos de este tipo. El primero que vi fue Savant Recall en 2014; no fue aceptado en YC y terminó liberándose como open source
    Después Ritter, cofundador de Napster, lo tomó, le cambió el nombre a Atlas Recall, le agregó una nueva UI y recibió una inversión de 20 millones de dólares
    Pero un año después cerró de repente, y en LinkedIn figura como “adquirida por Xinova”. Otro del que oí hablar fue Apse, de 2019

  • Se ve muy parecido a https://apse.io/. Ese también usa OCR para convertir todo lo visto en pantalla en un índice buscable
    Me gusta que windrecorder sea open source

  • Según el README de GitHub, los videos ocupan alrededor de 100~200 GB al año, así que no está tan mal

    • Me pregunto sobre cuántas horas promedio por día se basa eso. También me pregunto si elimina escenas sin texto, como películas o juegos
  • Si tienes una idea del tipo “¿por qué no existe una app así?”, implementarla bien por tu cuenta de esta forma inspira a todos

    • La forma más fácil de encontrar una app que haga X es crear una nueva, subirla a HN y revisar los comentarios
    • rewind.ai también es un ejemplo de esto, pero viendo que recientemente movieron estos datos a almacenamiento solo en la nube y cambiaron el nombre a limitless.ai, me alegra que aparezca algo open source como esto
      Es bueno no verse obligado a usar almacenamiento en la nube, y lo digo como alguien que probablemente pronto dejará de ser cliente de pago