Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help


id: ADR-001 title: Rust es el lenguaje de implementación para ZeroClaw date: 2026-07-04 status: accepted relates-to:

  • docs/book/src/foundations/fnd-001-intentional-architecture.md
  • docs/book/src/architecture/crates.md
  • Cargo.toml

ADR-001: Rust Es El Lenguaje De Implementación Para ZeroClaw

Este es un registro retroactivo de una decisión tomada antes del proceso formal de ADR. La fecha original exacta de la decisión no está disponible en este registro; la fecha anterior es la fecha en que este ADR se añadió a la documentación de arquitectura.

Este registro se redactó a partir de FND-002 §6.3 y la estructura actual del repositorio. No se recuperó de un archivo ADR anterior.

Contexto

ZeroClaw es un entorno de ejecución de agentes local-first cuya distribución principal necesita ejecutarse sin que el usuario tenga instalado un entorno de ejecución de lenguaje requerido. Se integra con muchos límites del sistema operativo y de red, y mantiene un control estricto sobre la seguridad, la memoria, los procesos, el registro y el comportamiento de configuración.

El proyecto también tiene experimentos adyacentes de sistemas de agentes en otros lenguajes. Esos proyectos son útiles para la exploración, pero el entorno de ejecución necesita un solo lenguaje de implementación para el código que se distribuye como ZeroClaw: proveedores, canales, herramientas, memoria, configuración, gateway, compatibilidad de hardware y la CLI orientada al usuario.

Rust se ajusta a los requisitos que dan forma al runtime:

  • distribución predecible de un solo binario;
  • propiedad explícita y manejo de errores en los límites de E/S y seguridad;
  • redes asíncronas y supervisión de procesos sin una gran dependencia de tiempo de ejecución;
  • compilaciones con funciones habilitadas por característica para canales, hardware, gateway y capacidades opcionales;
  • un espacio de trabajo de Cargo para crates, pruebas, generación de documentación y flujos de trabajo de publicación.

Decisión

El runtime, los crates de primera parte, la CLI, el gateway, los hosts de herramientas, las integraciones de proveedores, las integraciones de canales, los backends de memoria, el esquema de configuración y la compatibilidad de hardware de ZeroClaw se implementan como miembros del workspace de Rust.

Puede existir código que no sea de Rust en los bordes cuando esa sea la frontera correcta: scripts de shell, ayudantes de lanzamiento y empaquetado, recursos web generados, CLIs externas, servidores MCP, scripts de habilidades y huéspedes de plugins. Estas superficies pueden dar soporte, empaquetar, impulsar o extender ZeroClaw, pero no se convierten en la base de implementación del runtime central a menos que una nueva ADR aceptada sustituya a esta.

Consecuencias

Consecuencias positivas:

  • Los colaboradores pueden razonar sobre el comportamiento en tiempo de ejecución a través de un único espacio de trabajo tipado en lugar de varios entornos de ejecución de lenguajes.
  • La compilación, el linting, las pruebas, la generación de documentación, la publicación y la habilitación de funciones para el espacio de trabajo principal se canalizan a través de Cargo.
  • El código sensible a la seguridad se beneficia del modelo de propiedad de Rust y de la propagación explícita de errores.
  • Las integraciones de primera parte comparten límites de crate, contratos de traits y convenciones de registro/configuración.

Consecuencias negativas:

  • Los colaboradores que solo conocen TypeScript, Python, Go o shell deben superar una curva de aprendizaje de Rust antes de cambiar el comportamiento central.
  • Las integraciones con Web, UI y servicios externos necesitan un diseño explícito de límites en lugar de compartir libremente el estado de la aplicación con el runtime.
  • La documentación generada, los catálogos de localización y los artefactos de lanzamiento a menudo dependen de herramientas de Rust incluso cuando el resultado visible es Markdown, Fluent, HTML o metadatos de empaquetado.
  • Los experimentos en proyectos adyacentes deben portarse deliberadamente a Rust antes de convertirse en comportamiento de tiempo de ejecución de ZeroClaw.

Decisiones de seguimiento:

  • ADR-002 registra cómo se exponen los puntos de extensión de Rust dentro del espacio de trabajo.
  • ADR-003 registra el límite entre el plugin y el componente.

Referencias