Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Ejecutando zerocode

Configuración local

En la misma máquina que el daemon, no se necesita configuración adicional:

sh

zerocode

zerocode encuentra automáticamente el endpoint local del daemon: <data_dir>/data/daemon.sock en Unix, \\.\pipe\zeroclaw-<hash> en Windows. Si el daemon no está en ejecución, zerocode genera uno efímero.

Directorios de trabajo de la sesión

En una conexión local, las sesiones nuevas de Chat y Code se inician en el directorio desde el que ejecutaste zerocode, de modo que las herramientas de archivos y de shell operan sobre ese proyecto. Una sesión local reiniciada hace lo mismo. Si zerocode no puede determinar ese directorio, o su ruta no es UTF-8 válida, la sesión no se crea y se muestra el motivo, en lugar de iniciarla silenciosamente en otro lugar.

A través de una conexión remota (WSS), el directorio desde el que iniciaste zerocode está en otra máquina, por lo que nunca se envía. Las sesiones nuevas de Chat remotas usan el espacio de trabajo configurado del agente seleccionado en el daemon.

El demonio resuelve la raíz solicitada, la comprueba frente a la política del agente e informa del directorio que la sesión utiliza realmente. Los archivos de identidad y personalidad del agente se siguen leyendo desde su espacio de trabajo configurado, independientemente de dónde inicie la sesión.

Code remoto (WSS) siempre pregunta primero. Una sesión remota de Code nueva o reiniciada abre el selector de directorios del lado del daemon antes de crear la sesión, por lo que su raíz siempre es un directorio que seleccionaste en el sistema de archivos del daemon. Ese selector explora la máquina del daemon, no tu máquina local, y no tiene un valor predeterminado al que recurrir.

En el panel Code, /change-directory abre un selector de directorios e inicia una nueva sesión en el directorio seleccionado. Funciona con ambas conexiones: en local, el selector explora esta máquina, y por WSS explora el sistema de archivos del daemon. La sesión existente no se mueve: sigue disponible en su raíz guardada y puedes volver a ella en cualquier momento. Si cancelas el selector, o si el daemon rechaza una selección, regresas a esa sesión sin cambios y se indica el motivo.

Las sesiones de Code reanudadas conservan el directorio de trabajo con el que se crearon, aunque el directorio de lanzamiento o el espacio de trabajo configurado del agente cambien después. Chat se comporta de otra forma: una sesión de Chat que sigue en ejecución en el daemon conserva su directorio cuando zerocode se vuelve a conectar, pero el daemon no guarda el directorio de una sesión de Chat. Una sesión de Chat que el daemon debe reconstruir, por ejemplo tras un reinicio del daemon, empieza en el espacio de trabajo actual del agente seleccionado.

Cambiando sesiones

En los paneles Chat y Code puedes cargar o cambiar de sesión existentes sin reiniciar zerocode:

  • Switch session abre la lista de sesiones (atajo predeterminado: Ctrl+S; reasignable en el keymap).
  • Use las teclas de navegación de la lista para mover la selección (predeterminadas: Arriba/Abajo).
  • Enter cambia a la sesión resaltada.
  • Nueva sesión abre el mismo selector de agente que el botón [+] de la barra lateral y añade una sesión para el agente que elijas, dejando la sesión enfocada en seguimiento (atajo predeterminado: Ctrl+N; reasignable).

Al hacer clic en el cuerpo de una fila de sesión, esta se enfoca; al hacer clic en la ✕ del borde derecho, se cierra esa sesión concreta sin enfocarla antes. Usa [+] en el encabezado de Sesiones para añadir una sesión hermana y [-] para cerrar la sesión enfocada en el panel activo. Cerrar una sesión activa detiene de forma segura su trabajo en curso y conserva el historial duradero.

Al cambiar a una sesión Code existente, esta se reanuda en su propia raíz guardada, mientras que New session inicia una nueva: una sesión local en el directorio desde el que iniciaste zerocode, una sesión remota de Chat en el espacio de trabajo del agente seleccionado y una sesión remota de Code en el directorio que elijas en el selector del lado del daemon. Ninguna de las dos acciones cambia la raíz de una sesión que ya está en ejecución; usa /change-directory cuando quieras que una sesión Code se abra en otro lugar.

La superposición de ayuda en la app muestra tus asignaciones de teclas en vivo para estas acciones.

Las sesiones de Chat/Code y las sesiones respaldadas por ACP usan almacenes diferentes. Si usas el protocolo ACP directamente, usa session/load cuando necesites la reproducción de la transcripción y session/resume cuando solo necesites restaurar el estado de la sesión del lado del servidor. Consulta la documentación de ACP para obtener detalles a nivel de protocolo.

Entrada de texto en terminal

zerocode se ejecuta como una interfaz de usuario de terminal en modo raw. Recibe eventos de teclas y pegado del terminal, no eventos nativos de campo de texto de la plataforma. En macOS, los reemplazos de texto del sistema solo funcionan cuando tu terminal los expande antes de que zerocode reciba la entrada.

Edición de Composer

El compositor de Chat y de Code admite estos valores predeterminados. «Principal» significa Comando en macOS y Control en el resto de sistemas; los alias literales de Control también funcionan cuando tu terminal los envía.

AcciónAtajo predeterminado
Deshacer / RehacerPrincipal+Z / Principal+Mayús+Z (también Control+Z / Control+Mayús+Z)
Seleccionar todoPrimary+A (también Control+A)
Copiar / cortar selecciónPrimary+C / Primary+X (también Control+C / Control+X)
Extender selecciónShift+flechas, Shift+Inicio/Fin
Extender la selección por palabraAlt+Shift+Left/Right
Eliminar la palabra siguienteAlt+Delete
Borrar textoPrimary+U (también Control+U)

El historial de deshacer pertenece al borrador actual y conserva como máximo 100 grupos de edición. La escritura consecutiva, incluidos los espacios, se deshace en un solo paso. Una pausa de dos segundos, el movimiento del cursor o de la selección, un clic o arrastre del ratón, u otro comando de edición terminan el grupo de escritura. El texto pegado, la autocompletación, cortar, borrar y el salto de línea forman cada uno una edición separada. Escribir sobre una selección inicia un nuevo grupo; deshacer restaura el texto seleccionado y la selección. El movimiento del cursor no crea una edición. Una nueva edición de texto después de deshacer descarta rehacer. Deshacer y rehacer restauran el texto, el cursor y la selección, pero nunca añaden ni eliminan adjuntos. Enviar, cambiar de sesión o cargar un mensaje en cola para editarlo inicia un historial nuevo.

Los atajos de selección actúan sobre el compositor enfocado, no sobre la barra lateral de la cola. Copiar la entrada seleccionada no cancela un turno en ejecución ni cierra la aplicación; sin ninguna selección de entrada, Control+C conserva su comportamiento de cancelar/salir. Los diálogos y la navegación por la transcripción mantienen sus propios atajos. Usa /attach para explorar archivos; la acción configurable browse files no tiene atajo predeterminado porque Primary+A ahora selecciona texto. La superposición de Ayuda muestra los atajos configurados actualmente.

Los atajos de la terminal o del sistema operativo pueden interceptar los eventos de Command, Control o del portapapeles antes de que zerocode los reciba. La copia al portapapeles usa el soporte de OSC 52 de la terminal; el pegado entre corchetes (bracketed paste) sigue disponible.

Opciones de CLI

BanderaDescripción
--connect <url>Conectar a un daemon remoto mediante WSS (p. ej., wss://host:9781)
--tls-skip-verifyOmitir la verificación del certificado TLS. Necesario para certificados autofirmados
--config-dir <path>Anular el directorio de configuración

Estado del terminal

zerocode publica automáticamente el estado del turno de Chat o Code más urgente en la terminal mediante dos convenciones de secuencias de escape:

  • OSC 2 establece un título de pestaña corto y legible para humanos, como ⏳ my-agent — working o ⚠ my-agent — awaiting approval.
  • OSC 9;4 informa del progreso como “borrado”, “indeterminado” o “advertencia” sin requerir que otro programa analice el texto del título.

Ambas secuencias derivan la semántica de inactivo, en curso, bloqueado y terminado a partir del contrato de ciclo de vida sin contenido en zeroclaw-api; Zerocode conserva detalles localizados como pensando, respondiendo o la herramienta actual solo para la visualización. Cada sesión activa en la barra lateral es candidata, esté enfocada o no: bloqueado tiene prioridad sobre en curso, en curso tiene prioridad sobre inactivo, y una sesión con nombre gana los empates.

Esto son metadatos de terminal, no una conexión a un gestor de espacios de trabajo concreto. Las terminales y multiplexores compatibles pueden mostrarlos, conservarlos o consumirlos; el software que no admite estas secuencias las ignora. La carga útil incluye solo el alias del agente seleccionado y un estado o nombre de herramienta acotado. Nunca incluye el prompt, los argumentos de las herramientas, la salida de las herramientas ni el texto de la respuesta.

Si se pierde la conexión con el daemon, zerocode borra inmediatamente el progreso y publica el título neutral ✓ zerocode en lugar de conservar un estado en caché de trabajo o bloqueo. El estado de la sesión sigue disponible para la reconexión, y el estado de sesión en vivo solo se vuelve a proyectar después de que el daemon se reconecte.

Al salir normalmente o al recibir señales de terminación compatibles, zerocode borra el progreso y restaura el título de la terminal cuando la terminal admite una pila de títulos. Para las terminales que no la tienen, escribe un título neutro de respaldo zerocode. Como todos los programas de terminal, no puede limpiar nada tras un SIGKILL no capturable ni tras un apagado abrupto de la máquina. Una actualización posterior del título desde la terminal o la shell, o cerrar la pestaña, elimina esa visualización obsoleta.