Cómo Knock construyó su agente de IA sobre un sistema de archivos virtual y bash

Fuentes: Files over tools: how we built the Knock Agent using a virtual file system and bash

Knock, plataforma de mensajería para clientes, presentó en marzo de 2026 su Knock Agent, un agente de IA capaz de gestionar flujos de trabajo, plantillas, audiencias y segmentación desde el panel de control, Slack, la API o un servidor MCP. Este artículo explica la arquitectura interna de esa herramienta y por qué el equipo descartó el enfoque tradicional de exponer una función por cada recurso de la API.

El primer prototipo seguía un patrón de herramienta por tipo, en el que cada función encapsulaba una primitiva de la API de gestión de Knock (añadir un paso de retardo a un flujo, construir una plantilla de correo, etc.). El sistema funcionaba, pero no escalaba: el número de herramientas crecía al ritmo de la API y saturaba la ventana de contexto del modelo.

La solución llegó al descubrir cómo el equipo de Vercel había construido d0, su agente interno de datos, usando el sistema de archivos como capa de contexto y bash como lenguaje de scripting. Knock adaptó esa filosofía a su producto. Como ya disponía de una CLI que descarga los recursos al sistema de archivos local, el equipo podía entregar al agente un sistema de archivos virtual con el contenido completo de la cuenta y permitirle ejecutar bash sobre él. Para editar un flujo o una plantilla, el agente modifica el archivo correspondiente y luego llama a una función de persistencia que devuelve el cambio a Knock.

Para ejecutar bash sin arrancar una máquina virtual Linux, Knock recurrió a just-bash, una biblioteca en TypeScript publicada por Vercel durante las vacaciones de 2025. Como la compañía trabaja sobre Elixir, el colaborador Ivar Vong portó la biblioteca a ese lenguaje, conservando los tests originales como especificación. El agente se apoya en un bucle típico sobre la API de Anthropic, respaldado por flujos duraderos con la biblioteca Oban y Postgres. En cada sesión se inicia perezosamente un proceso sandbox que contiene la instancia de bash y el sistema de archivos virtual, con los recursos cargados bajo demanda.

Las herramientas expuestas al modelo son cinco: bash, read_file, edit_file, write_file y upsert_resource, esta última responsable de sincronizar los cambios con la cuenta de Knock. El bucle del agente emite además un registro de eventos completo que se almacena en Postgres y se transmite en streaming a los clientes en formato NDJSON. Para usos más complejos, el equipo valora migrar a un sandbox real o añadir Python como segundo lenguaje de scripting.