Bienvenido al blog de Agent!: una app, cualquier IA, control total de tu Mac
Qué es AgentiLoop Agent!, por qué lo construí como lo construí y qué vas a encontrar aquí, contado directamente desde el código fuente.
Hola, soy Todd. Desarrollo AgentiLoop Agent!, un agente de IA nativo para macOS, y este es su blog.
Quería un sitio donde explicar las partes de Agent! que no caben en un README ni en unas notas de versión. Por qué una salvaguarda tiene la forma que tiene. Por qué el bucle del agente revisa su propio trabajo. Qué se rompió en una release candidate y cómo lo arreglamos. Casi todo lo que leas aquí sale directamente del código, porque es lo que mejor conozco. De vez en cuando también echaré un vistazo al mundo más amplio de los agentes de IA y a lo que significa para tu Mac.
Si acabas de llegar, empieza por aquí. Piensa en esta entrada como en el mapa.
Qué es Agent!
Agent! es 100% Swift y SwiftUI nativo. Escribes (o dices) lo que quieres y se pone a hacer el trabajo en tu Mac, en vez de explicarte cómo hacerlo:
- Escribe código de verdad. Lee tu proyecto, edita archivos con diffs de reemplazo de cadenas, compila en Xcode, lee los errores, los corrige y hace commit con git.
- Maneja cualquier app del Mac a través de la API de Accesibilidad, además de AppleScript, JXA y 51 puentes de ScriptingBridge para apps.
- Ejecuta comandos de shell como tú o como root, mediante un Launch Agent y un Launch Daemon registrados con SMAppService y accesibles por XPC.
- Funciona con 23 proveedores de LLM, además de Apple Intelligence en el dispositivo: Claude, Codex, OpenAI, Gemini, Grok, Mistral, DeepSeek, Qwen, Z.ai, OpenRouter, Ollama, vLLM, LM Studio y más.
- Te escucha. Di "Agent!" seguido de una tarea, o escríbele desde tu iPhone por iMessage (solo remitentes aprobados).
El README lo resume en cuatro palabras: Siri responde. Agent! actúa.
Sin NPM, sin Electron
Esta es la parte que sorprende a la gente. No hay envoltorio de Electron. No hay runtime de Node. No hay ninguna carpeta node_modules comiéndose tu disco en silencio. Escribí yo mismo cada paquete Swift del que depende Agent!, y cada uno vive en su propio repositorio dentro de la organización AgentiLoop:
| Paquete | Función |
|---|---|
| AgentTools | Esquemas de herramientas, prompts de sistema y gestión de proveedores |
| AgentLLM | Protocolos, tipos y registro de proveedores de LLM |
| AgentMCP | Cliente MCP (stdio y HTTP) |
| AgentAccess | Automatización de Accesibilidad |
| AgentEventBridges | Protocolos de ScriptingBridge para más de 50 apps del Mac |
| AgentD1F | Motor de diffs multilínea |
| AgentSwift | Análisis de código con SwiftSyntax |
| AgentColorSyntax · AgentTerminalNeo | Resaltado de sintaxis · markdown de terminal retro |
| AgentAudit | Registro de auditoría con os.log |
El resultado es una app que apenas consume RAM y que aun así trae de serie automatización de Xcode, análisis de sintaxis Swift, Accesibilidad, AppleScript, automatización de Safari y MCP.
El bucle en el centro
Todo en Agent! gira en torno a una idea: un bucle de tareas que se verifica a sí mismo. El modelo piensa, llama a una herramienta, mira el resultado real y se corrige. Eso solo funciona si puedes fiarte de él, así que hay unas cuantas reglas integradas:
- Las herramientas no se pueden fingir. Cada llamada pasa por un único despachador y devuelve una salida real. Si el modelo dice "lo he pulsado" sin haber llamado de verdad a ninguna herramienta, Agent! se lo señala y le envía una corrección.
- "Terminado" exige pruebas. Una tarea no puede darse por acabada hasta que sus criterios de
goal_stateestén marcados con evidencias, como una compilación en verde o un test que pasa. - Primero se lee, luego se edita. Agent! se niega a editar un archivo que el modelo no ha leído, o que ha cambiado en disco desde que lo leyó (se comprueba con SHA-256). El rechazo le entrega al modelo el archivo actualizado, así que el siguiente intento usa las líneas correctas.
- Todo se puede deshacer. Cada edición se guarda como instantánea durante una semana. Puedes revertir un solo archivo o rebobinar una tarea entera con
rewind_task.
En próximas entradas desmontaré cada una de estas reglas.
AgentScript: Swift con permisos completos
AgentScript es una de mis piezas favoritas. Los scripts son archivos Swift normales y corrientes. Agent! compila cada uno en un .dylib con SwiftPM y lo carga dentro de su propio proceso con dlopen, así que tu script obtiene los mismos permisos de macOS que ya tiene Agent!: Accesibilidad, Automatización, Calendario, Contactos, Mail, Fotos y el resto. Solo necesitas un punto de entrada:
import Foundation
import CalendarBridge // any `import XBridge` auto-wires, no Package.swift edits
@_cdecl("script_main")
public func scriptMain() -> Int32 {
print("Hello from AgentScript! 👋")
return 0
}
Todo lo que imprime el script vuelve al modelo, y el valor de retorno es el código de salida. La app incluye unos 35 ejemplos, entre ellos TodayEvents, NowPlaying, CheckMail y CreateDmg.
Una seguridad que puedes leer
Agent! puede ejecutar comandos como root. Eso es pedir mucha confianza, así que la seguridad no puede ser solo una diapositiva en una presentación. Es código, y puedes leerlo en GitHub. Un ShellSafetyService programado de forma fija rechaza los comandos catastróficos antes de que lleguen a enviarse, y el daemon con privilegios repite la misma comprobación por su lado. También hay una segunda opinión opcional llamada Jev que valora la probabilidad de que un comando destruya datos. El primer análisis a fondo explica exactamente cómo funciona.
La familia sigue creciendo
El mismo bucle de agente ahora también funciona en la terminal, en macOS, Windows y Linux. Hay dos CLI con las mismas capacidades: AgentiLoopCLI en Rust y AgentiLoopGo en Go. Mi dato curioso favorito del README: Agent! para Mac escribió a sus propios hermanitos.
Qué encontrarás aquí
- Funcionamiento interno: el bucle del agente, la compactación de contexto, el despacho de herramientas, los subagentes, la memoria y los planes.
- Seguridad: salvaguardas, el modelo de confianza de XPC y lo que los incidentes recientes con agentes nos enseñan a todos los demás.
- Notas de versión con el porqué: qué cambió en cada build y el bug que lo hizo necesario.
- Guías prácticas: recetas de AgentScript, cómo elegir proveedor con poco presupuesto y cómo trabajar de forma totalmente local.
- El mundo de los agentes en general: noticias y análisis, siempre de vuelta a lo que significan para tu Mac.
Agent! funciona en macOS 14.6 o posterior, en Apple Silicon e Intel, y es gratuito para uso personal. Descárgalo aquí abajo, dale algo real que hacer y cuéntame qué tal te va.