Ordo — Chat (extensión de VS Code)
El agente de Ordo dentro de VS Code, con la misma línea visual que la consola de escritorio
(ordo-desktop): chat y conversaciones sobre la carpeta que tengas abierta.
Habla con la misma API que la consola (/api/v1/chat/ + X-Api-Key): ejecuta comandos y
edita archivos en tu máquina, y muestra cada paso como tarjeta comando / salida o
archivo escrito.
Abrir
Clic en el icono de Ordo en la Activity Bar → Abrir chat. El chat se abre como
pestaña del editor, a lo ancho. No hace falta la paleta de comandos.
El panel lateral es una sola vista con tus conversaciones. En su cabecera:
| Botón |
Qué hace |
💬 |
Abrir el chat |
+ |
Nueva conversación |
⟳ |
Refrescar la lista |
⚙ |
Configurar la conexión |
Clic en una conversación la abre en el chat. El chat en sí queda limpio: solo la
conversación y el composer.
Configurar
Si la máquina ya tiene el runner de Ordo, no hay que configurar nada: la extensión
toma ORDO_SERVER, ORDO_CHAT_API_KEY y ORDO_API_URL de las variables de entorno o
del .env del runner (~/Ordo, ~/.ordo, C:\Ordo). La API key va al almacén cifrado,
no a settings.json.
Solo se leen rutas de la máquina, nunca de la carpeta abierta: un .env del
proyecto es contenido del repositorio, y leerlo dejaría que cualquier repo ajeno
apuntara la extensión a su propio servidor con su propia key.
Solo rellena lo que falte: lo que hayas puesto a mano manda. Si no encuentra las tres,
el chat muestra su formulario de conexión — también disponible en ⚙ o en
Ctrl+Shift+P → Ordo: Configurar conexión:
- URL de la API — por defecto
https://ordo.lambdaanalytics.co
- Servidor / máquina — tu máquina en Ordo (ej.
pc-tunombre)
- API key del chat — obligatoria: sin ella no hay conexión con el agente
Los dos primeros quedan como ajustes editables: ordo.apiUrl, ordo.server.
La API key es obligatoria, pero no se guarda como ajuste: settings.json es texto
plano y viaja con Settings Sync. Va al Secret Storage cifrado de VS Code, y por eso
ordo.apiKey no aparece en la lista de ajustes.
Para dejar la extensión como recién instalada (borra ajustes, key y conversación del
workspace): Ctrl+Shift+P → Ordo: Borrar la configuración (empezar de cero).
Usar el chat
- Los pasos del turno se ven en vivo: comando/salida y archivos editados.
@ → mencionar archivos del proyecto, con autocompletado.
/ → comandos: /nueva /auto /manual /opus /sonnet /haiku /limpiar /configurar /ayuda.
Ctrl+V pega capturas; también se pueden arrastrar imágenes al mensaje.
- Modo Auto/Manual, modelo y máquina, en la barra del composer.
- Leer hacia arriba no te arrastra al final: aparece una píldora Contenido nuevo.
Cómo está hecho
Dos mundos que solo se hablan por mensajes:
src/ el host (Node, API de VS Code)
extension.ts activación: vistas y comandos
config.ts ajustes + Secret Storage
api/ordoClient.ts HTTP contra la API de Ordo
chat/
chatService.ts qué se le manda al agente (workdir, modo manual)
chatWebview.ts puente: responde a las llamadas de la webview
chatPanel.ts el chat como pestaña del editor
conversationsView.ts la lista del panel lateral
session.ts conversación y modo, por workspace
fs/workspaceFiles.ts árbol y búsqueda de archivos, selector de imagen
src/webview/ la webview (navegador, sin API de VS Code)
main.ts entrada
app.ts orquesta arranque, envío y acciones
bridge.ts mensajes con el host, en ambos sentidos
transcript.ts el log: mensajes y turnos del agente
steps.ts cómo se ve cada paso (texto, comando, archivo)
markdown.ts markdown mínimo (tablas incluidas)
composer.ts cuadro de texto, adjuntos y menú de / y @
scroller.ts auto-scroll pegajoso
turn.ts ciclo de poll de un turno
media/ chat.html + chat.css (la webview los carga tal cual)
El host expone comandos por nombre (config, start, poll, listFiles…) y la webview
los llama con call(cmd, args). En sentido contrario, los botones del panel lateral mandan
acciones con runUiCommand.
Detalles que conviene conocer antes de tocar:
- El poll devuelve el estado de la conversación, no de un turno — la API no da id de
turno. Si el servidor no arranca un turno nuevo, el primer poll ya responde "listo" con
el resultado anterior;
turn.ts compara la huella del último resultado para no pintar la
misma respuesta dos veces.
- El turno se pinta paso a paso, no de golpe: repintarlo entero encogía el log y el
scroll saltaba al fondo mientras el usuario leía.
- Una webview recién creada aún no escucha mensajes. Cuando el chat está cerrado, los
comandos del panel dejan el estado listo en el host y la webview arranca ya en su sitio.
Desarrollar
npm install
npm run compile # bundle del host + webview + typecheck
F5 # Extension Development Host (usa .vscode/launch.json)
Los artefactos de build (dist/, media/chat.bundle.js) no se versionan.
Empaquetar / instalar
npm run package # genera el .vsix en ordo-vscode/
En VS Code: Extensions → ··· → Install from VSIX… y elige el .vsix.