1 puntos por GN⁺ 2024-10-24 | 1 comentarios | Compartir por WhatsApp
  • Agent.exe es una app simple de Electron que permite controlar directamente una computadora local con la nueva función computer use de Claude; el proyecto debe considerarse una prueba de concepto
  • Es una app creada porque el proyecto base incluido se sentía demasiado pesado, y está diseñada para que Claude 3.5 Sonnet realice tareas en la computadora local del usuario
  • Para ejecutarla, el flujo consiste en clonar el repositorio, correr npm install, renombrar .env.example a .env, agregar la Anthropic API Key y ejecutar npm start
  • El sistema compatible es MacOS; como las dependencias son multiplataforma, en teoría Windows y Linux también serían posibles
  • Las restricciones conocidas son que solo funciona en la pantalla principal, que la IA pasa a tomar control completo de la computadora y que Claude funciona mejor si se instala Firefox

Objetivo de Agent.exe

  • Agent.exe es una app que permite controlar la computadora usando la función computer use de Claude
  • Está implementada como una app de Electron para que Claude 3.5 Sonnet manipule directamente la computadora local
  • El proyecto es una prueba de concepto y se indica que no hay planes de mantenerlo ni de fusionar pull requests
    • Se puede hacer un fork y ampliarlo libremente

Motivo de creación y funcionamiento

  • Surgió con el objetivo de comprobar qué tan bien funciona la nueva computer use API de Claude
  • El proyecto base proporcionado por Anthropic se sentía demasiado pesado, así que se creó una app más simple
  • Había un plan para agregar un modo semi-auto, en el que el usuario confirmara cada acción antes de ejecutarla, pero se consideró innecesario porque cada paso era demasiado lento
  • Si el modelo se confunde, el usuario puede presionar el botón stop para finalizar la ejecución

Cómo empezar

  • Clonar el repositorio y moverse al directorio
  • Instalar las dependencias
    • npm install
  • Renombrar el archivo .env.example a .env y agregar la Anthropic API Key
  • Ejecutar la app
    • npm start
  • Luego, pedirle al modelo mediante un prompt que realice tareas en la computadora

Sistemas compatibles y restricciones

  • El sistema compatible es MacOS
  • Como todas las dependencias son multiplataforma, Windows y Linux también son posibles en teoría
  • Las limitaciones conocidas son las siguientes
    • Solo funciona en la primary display
    • La IA toma control completo de la computadora
    • Puede haber muchas otras limitaciones

Consejos de uso y roadmap

  • Se indica que Claude prefiere mucho Firefox
    • Aunque usará otros navegadores si es estrictamente necesario, funciona mucho mejor si Firefox está instalado
  • El proyecto fue escrito en unas 6 horas y se indica que es poco probable que continúe
  • Los pull requests pueden revisarse y fusionarse si parecen adecuados

1 comentarios

 
GN⁺ 2024-10-24
Comentarios de Hacker News
  • Es una buena idea. Como alguien con experiencia en automatización de escritorio y Electron, revisé rápidamente el código fuente y sentí que valía la pena probarlo para tareas básicas
    La implementación es un wrapper delgado sobre la API de Anthropic y, como el enfoque es paso a paso, me dio confianza de que podría matar el proceso antes de que hiciera algo raro. Cerré las cosas que Anthropic no debería ver en las capturas de pantalla, y la instalación en un M1 también fue fluida, así que lo tenía corriendo en unos minutos
    La tarea básica fue “buscar vuelos Seattle-SF del martes al jueves de la próxima semana”, y al ejecutarlo con mi clave de API de Anthropic usó Chrome. Cada paso de acción tomó unos segundos, abrió Google Flights correctamente, pero reservó mal las fechas
    Originalmente intentó elegir el 2 de noviembre, pero esa opción estaba tapada por la propia ventana de Agent.exe, así que seleccionó el 20 de noviembre. Me dio curiosidad si Claude notaría la fecha auxiliar incorrecta y se corregiría solo, pero la dejó así y aun así declaró éxito, diciendo que había encontrado un viaje de 1 semana cuando en realidad había encontrado uno de 4 semanas
    Este experimento costó $0.38 en créditos y unos 20 segundos, y pienso seguir experimentando

    • Qué interesante futuro donde puedo quemar 70 dólares por hora viendo cómo el cursor en mi computadora aprieta botones
    • Soy el autor original. A menudo declara con total seguridad que tuvo éxito incluso cuando en realidad no completó la tarea, y con solo ver la captura de pantalla debería tener información suficiente para saberlo
      Este patrón de fallo me sorprende un poco, porque 3.5 Sonnet al menos tiende a alucinar bastante menos que otros modelos en respuestas API de texto normal
    • Si eliges la captura de pantalla de la ventana objetivo como fuente en vez de toda la pantalla, probablemente evitarías que la ventana de Agent la tape
      const getScreenshot = async (windowTitle: string) => {  
      const { width, height } = getScreenDimensions();  
      const aiDimensions = getAiScaledScreenDimensions();
      
      const sources = await desktopCapturer.getSources({  
      types: ['window'],  
      thumbnailSize: { width, height },  
      });
      
      const targetWindow = sources.find(source => source.name === windowTitle);
      
      if (targetWindow) {  
      const screenshot = targetWindow.thumbnail;  
      // Resize the screenshot to AI dimensions  
      const resizedScreenshot = screenshot.resize(aiDimensions);  
      // Convert the resized screenshot to a base64-encoded PNG  
      const base64Image = resizedScreenshot.toPNG().toString('base64');  
      return base64Image;  
      }  
      throw new Error(`Window with title "${windowTitle}" not found`);  
      };  
      
    • Las salvaguardas sí se aplican. Le pedí que le enviara un mensaje a un amigo en Discord y devolvió este error

      Lo siento, pero no puedo enviar mensajes directamente ni transmitir comunicaciones en nombre de los usuarios. Eso incluye enviar mensajes a amigos o contactos. Aunque la interfaz de Discord parece estar abierta, no debo enviar mensajes en nombre del usuario. Debes escribir y enviar el mensaje tú mismo.
      error({"message":"I cannot send messages or communications on behalf of users."})

    • Si cuesta $68.00 por hora usar un asistente que hasta podría reservarte el vuelo equivocado, la situación actual me deja un poco más tranquilo
  • ¿Cuánto falta para que pueda añadir a escondidas un daemon al sistema? Antes nos preocupaba que espías soviéticos accedieran a secretos estadounidenses; ahora es casi como si simplemente lo subiéramos todo a internet para que todos lo vean
    Con el antivirus o firewall de hoy esto no se puede impedir, ni siquiera que dañe archivos en mi propia computadora, y ni hablar de la red
    Me hace pensar en esta escena: https://makeagif.com/i/BA7Yt3

    • Es simple. Hay que tratar esto tal cual es: otro usuario más
      Un usuario que se distrae fácilmente, en quien no puedes confiar para no pasarle información a terceros y que puede caer en engaños simples
      Como mínimo necesita una cuenta separada sin permisos sudo ni acceso a archivos secretos, y en el mejor de los casos necesita una máquina virtual aparte
      Estoy más familiarizado con Azure, pero AWS también debería servir, y si quieres separar la IA de las cosas a las que no debería acceder, puedes crear una VM en Azure y tenerla corriendo unas horas por menos de 1 dólar
    • Por otro lado, sí, pero como desarrollador, un paquete de Python o Node.js que instalas y ejecutas también puede hacer exactamente lo mismo, y aun así el mundo sigue funcionando más o menos
    • Un sistema de nivel producto como este ya es justamente ese daemon. Toma capturas de pantalla y las envía a una máquina no confiable, y también recibe comandos desde esa máquina
      Para hacerlo aunque sea algo seguro, como mínimo tendrías que controlar la máquina que ejecuta la inferencia, e idealmente la inferencia debería correr en la misma máquina que uso yo
    • Solo hay que esperar a Windows Update y vendrá integrado. No hace falta descargar algo de internet que tiene funcionalidad y tal vez hasta privacidad
  • Hace unos años salió en las noticias la historia de un niño pequeño que dijo “Alexa, pídeme una casa de muñecas”, y las Alexas de la gente que estaba viendo la transmisión lo oyeron y pidieron una casa de muñecas
    Solo queda esperar qué pasa cuando salga una serie exitosa de Netflix donde alguien diga “Delete C:\Windows”

    • Mi palabra de activación es “Computer”, como en Star Trek, así que de verdad me preocupa que al volver a ver un episodio viejo alguien diga “Computer, reverse the polarity” y termine apagando la red eléctrica
      Planeo darle a mi IA acceso al interruptor de alimentación del crosspoint, por diversión
    • format c: /autotest
  • Cambiando un poco de tema, hace poco probé Cursor en modo “compose” para arrancar un proyecto full stack desde cero, y me dejó en shock
    No sé si la gente de la industria del software realmente dimensiona cuánto va a cambiar todo por completo en los próximos 5 años. Para entonces, cuesta imaginar que la gente siga escribiendo código a mano, tecleándolo directamente

    • Todos lo saben. Ya pasaron varias olas de reacción y, en general, se está decantando hacia la idea de que la ingeniería de software siempre se trató de diseño, comunicación y colaboración, y que presionar teclas para meter código en la máquina era solo un mal necesario para poder hacer el trabajo de verdad
    • Creo que todos los que están prestando atención esperan que venga un gran cambio. Lo que no sabemos es cómo va a cambiar, y se toma como un resultado posible incluso que “cosas como el desarrollo de software dejen de existir”, así que buscan posicionarse para poder aprovecharlo, caiga donde caiga el impacto
      Pero los ejemplos que hemos visto hasta ahora, en su mayoría, eran proyectos relativamente simples iniciados desde cero. El solo hecho de que funcione ya es sorprendente hasta resultar difícil de creer, pero la mayor parte del desarrollo de software real consiste en agregar funciones a código existente o corregir bugs. Ese tipo de código normalmente supera la ventana de contexto de la mayoría de los modelos de lenguaje grandes
    • Puedo imaginar al 100% que, en adelante, los desarrolladores serán más hábiles para decidir cuándo escribir código directamente y cuándo escribir un prompt
    • Yo también lo probé y sí, impresiona, pero igual sigue siendo flojo en todos los aspectos
      Para que la industria cambie por completo, tendría que continuar la mejora exponencial de los últimos 2 años, y no parece haber señales de que eso vaya a pasar
    • Sí. Estoy produciendo mucho más código que antes, pero la mayor parte sigue siendo copiar y pegar
  • Me estoy yendo un poco del tema, pero está relacionado. Me pregunto qué se usa para automatizar apps GUI que no son el navegador en Wayland de Linux. A veces lo necesito, pero esta combinación en particular nunca me ha salido bien
    Las apps CLI se pueden hacer con Bash/Python/u otra cosa, las apps del navegador con Selenium/Playwright. En Xorg hay bibliotecas toscas pero útiles para salir del apuro, y en Windows hay muchas soluciones de RPA
    Pero para Wayland no he encontrado nada realmente confiable

    • Puedes revisar https://github.com/agentsea/agentd y https://github.com/agentsea/agentdesk
      Se pueden conectar a contenedores de escritorio y VMs que ejecutan Linux
      Nosotros ya veníamos haciendo esto desde hace tiempo, antes de que Claude lo pusiera de moda
    • Esa es una de las principales razones por las que no me cambio a Wayland
    • La mayoría de las apps que no son del navegador tienen flags o una versión CLI
  • “Limitaciones conocidas: permitir que la IA tome control total de la computadora” :)

  • Parece soporte multiplataforma con macOS como plataforma principal, pero me pregunto por qué el nombre es .exe

    • Supongo que porque .exe tiene una nostalgia y calidad de meme que .app no tiene
    • .exe es mejor. Da más miedo y evoca la fantasía de un virus informático. .app se ve demasiado inofensivo
    • Si desactivas la bandera “Hide Extension” en Get Info, se convierte en Agent.exe.app
      Es broma; no sé si es verdad, pero suena lo bastante posible
    • No sería un caso sin precedentes. OCaml también usa esa extensión para ejecutables en todas las plataformas. Al final será cuestión de gustos, pero este nombre me parece claro y conciso, y tiene las cualidades que más valoro en un nombre
    • Creo que es simplemente un meme
  • Parece que solo funciona en tareas simples. Le pedí que creara una tabla sencilla en la app de Mac de Rhino y en OnShape dentro de una pestaña de Chrome, y parecía perderse por completo
    En Rhino, sí veía que la app estaba abierta, pero solo decía que estaba haciendo varias acciones, como crear figuras, sin que en realidad se viera nada, y pasaba a la siguiente acción aunque el paso anterior no hubiera terminado. No verificaba si la tarea previa había concluido
    En OnShape, decía que iba a crear una figura, luego elegía la opción equivocada del menú y aun así seguía adelante como si estuviera usando la herramienta correcta, continuando con la siguiente acción como si la anterior ya hubiera terminado

  • Escalofriante. Quizá sería divertido si lo dejas air-gapped y haces que programe su propio OS, pero no lo quiero ni cerca de mis datos reales

    • De acuerdo. Eso fue exactamente lo primero que pensé al verlo: separar el trabajo en dos computadoras. Una para este tipo de integración con IA y otra, aunque no esté totalmente air-gapped, con una seguridad mucho más estricta
    • Lástima, pero a los dueños del negocio les encantan estas cosas. Algo como: “mis empleados también se equivocan todo el tiempo, así que ahora puedo tener 100 empleados más por el mismo precio. No voy a calcular cuánto van a aumentar los errores por hora, así que cállate”
  • Computer, hazme rico con cripto publicando shitposts de memes todo el día mientras yo cuido a mi familia y trabajo en el jardín
    El futuro va en dirección a que el que usa la computadora es el tonto. La riqueza real está en no tocar una computadora para nada