Desarrollo remoto

GraphoOS está dividido en dos procesos: la ventana, que es dueña del búfer y de cada pulsación, y el proxy, que es dueño del sistema de ficheros, los servidores de lenguaje, el terminal y los plugins. Cuando te conectas a otra máquina solo se ejecuta allí el proxy: escribir nunca espera a la red, mientras que el completado, los diagnósticos, la búsqueda y el terminal ocurren en el equipo remoto, con sus ficheros y sus herramientas.

SSH

Desde la paleta de comandos (⌘⇧P / Ctrl+Shift+P), Conectar a un equipo por SSH, y después user@host (puede seguirle un puerto: user@host:2222). Los equipos que ya usaste aparecen en la lista; el proyecto que tenías abierto allí se vuelve a abrir.

GraphoOS usa el ssh de tu sistema, así que se aplica todo lo de ~/.ssh/config (claves, equipos de salto, alias). En la primera conexión envía el proxy para la plataforma del equipo (graphoos-proxy-<os>-<arch> de la release que estás usando) a ~/.local/share/graphoos-<release>/proxy en Linux, ~/Library/Application Support/dev.graphoos.GraphoOS-<release>/proxy en macOS y %LOCALAPPDATA%\graphoos\GraphoOS-<release>\data\proxy en Windows, y lo arranca; las conexiones siguientes lo reutilizan mientras las versiones coincidan.

Todo lo demás es como en local: el explorador muestra el árbol remoto, los plugins se ejecutan en el remoto (instálalos otra vez allí: el panel de extensiones instala en la carpeta de datos remota), el terminal es una shell en el equipo, y Ejecutar y depurar lanza allí.

Dev Containers

Una carpeta con .devcontainer/devcontainer.json (o .devcontainer.json) se puede trabajar dentro del contenedor que describe: Reabrir en el contenedor, desde la paleta, desde Archivo › Remoto o desde el botón de remoto a la izquierda de la barra de título. El fichero es el mismo que leen VS Code y GitHub Codespaces, con comentarios y comas finales.

Lo que pasa:

  1. El contenedor sale de lo que dice el fichero: se descarga image, se construye build.dockerfile (con build.context, relativo a la carpeta del fichero), o se levanta dockerComposeFile con service mediante docker compose.
  2. La carpeta se monta en workspaceFolder (/workspaces/<carpeta> si el fichero no dice nada), con forwardPorts publicados, remoteEnv puesto, remoteUser como usuario y runArgs añadidos tal cual.
  3. postCreateCommand se ejecuta una vez por contenedor; postAttachCommand, cada vez que el editor se engancha.
  4. El proxy arranca dentro del contenedor y la ventana abre allí la carpeta: los servidores de lenguaje, el terminal, la búsqueda y Ejecutar y depurar usan las herramientas del contenedor.

Abrirla otra vez reutiliza el contenedor (lo arranca si estaba parado). Si devcontainer.json cambia, el contenedor se vuelve a hacer con él. El contenedor se llama graphoos-<carpeta>-<hash>; docker rm -f para empezar de cero. Desconectar del remoto vuelve a tu máquina.

Sirven Docker y Podman, el que esté instalado (Docker Desktop, OrbStack, Colima y Podman funcionan), y se encuentran aunque el editor se haya abierto desde el Finder o un menú del escritorio, cuyo PATH no los incluye. La primera vez, descargar o construir la imagen puede tardar unos minutos; el editor avisa de que ha empezado y abre la carpeta cuando el contenedor está listo, o dice lo que respondió el motor si falla.

Todavía no se leen: features, mounts, customizations ni los comandos del ciclo de vida distintos de los dos de arriba.

Un proxy propio

El proxy se instala en el contenedor igual que en un equipo SSH. Para usar uno compilado por ti (scripts/build_linux_proxies.sh) en vez del de la release, déjalo en una carpeta como graphoos-proxy-linux-<arch> (x86_64, aarch64) y arranca el editor con GRAPHOOS_REMOTE_PROXY_DIR apuntando a esa carpeta; vale también para los equipos SSH. tools/devcontainer_smoke.py hace justo eso para probar el camino entero contra el Docker de tu máquina.

WSL

En Windows, Conectar a un equipo WSL abre una distribución como remoto; el proxy se ejecuta dentro de ella y el proyecto es una ruta de Linux.

Qué se queda en tu máquina

Los ajustes, los mapas de teclas, los temas y la conversación del asistente; a los proveedores de IA se llega desde tu máquina, y el contenido del fichero remoto viaja a través del editor.

Fuente: docs/es/remote-development.md