Ir al contenido

Agente de IA

El Agente de IA pone el agente que ya usas dentro de la página del navegador: una vista junto a lo que esté abierto, donde hablas con Claude Code, Codex o cualquier comando que hable el Agent Client Protocol, y la página le entrega lo que hay en pantalla como contexto. El agente se ejecuta en la raíz, lee las mismas instrucciones y el mismo me.md que cualquier agente, y trabaja bajo el mismo contrato de roles. Activado por defecto (eidos plugin disable agent lo desactiva); la página del plugin nombra el agente con el que habla esta máquina.

Nada propio de eidosmd está en el circuito: ni modelo, ni clave, ni endpoint. Nada sale de la máquina salvo a través del agente que configuraste, bajo sus propios permisos, excepto lo que hace el dictado: descarga su modelo de voz una vez y envía una grabación fuera solo si eliges la transcripción alojada con tu propia clave.

  • Una vista Chat en la barra lateral auxiliar: una conversación con el agente, iniciada en la raíz con el primer mensaje y con EIDOS_ROOT definido.
  • Contexto sin pedirlo. Lo que la página tiene abierto viaja con cada mensaje: un Blueprint (plano) por título, id y archivo; una página de lienzo; la tabla de una colección y su filtro; una pestaña de ajustes; un documento de nivel superior. Se muestra en la fila del compositor como un pequeño indicador con su id (su nombre completo al pasar el puntero), que un clic deja fuera de tus mensajes o vuelve a incluir, y el plugin se lo redacta al agente. El primer mensaje de una sesión lleva una nota fija: dónde está el agente, qué leer primero, que su trabajo es la carpeta raíz y nada fuera de ella, que la documentación es eidos standard y eidos instructions, y la persona.
  • Tu mensaje aparece en cuanto lo envías, con el lugar de la respuesta reservado debajo mientras el agente arranca, también el primer mensaje de una conversación nueva.
  • La respuesta llega en streaming mientras el agente contesta, como markdown completo: tablas, listas y código coloreado según su lenguaje, con un botón para copiar cada bloque. Los archivos que cambió se listan bajo la respuesta, y el lector y las tablas se refrescan como con cualquier cambio en disco. El desplazamiento se queda donde lo dejaste, con Ir a lo último mientras el final no está a la vista.
  • Los ids son enlaces. Un id que la raíz tiene, en una respuesta o en tu propio mensaje (el de un plano, una tarea, una decisión, una vista guardada, o un id anterior que una tarea o una decisión conserva), abre su página en el área principal, y con ⌘ o Ctrl, o el botón central, en una pestaña nueva; al pasar por encima muestra su título, y el estado de una tarea o una decisión. Un id en un bloque de código, o uno que no nombra nada, queda como está escrito.
  • El chat tiene su propio zoom. Con el foco en el chat, Ctrl o ⌘ con + y - lo agrandan o lo achican y 0 lo devuelve; con el foco en cualquier otro sitio, las mismas teclas hacen zoom en la app como siempre.
  • Las llamadas a herramientas no hacen ruido. Cada llamada del agente es una línea: un icono según su tipo, unas pocas palabras (Ejecutó pnpm test, Leyó specs/a.md, Editó 2 archivos) y una rueda, una marca o una cruz. Un clic abre lo que entró y lo que salió, con la salida larga cortada y Mostrar más. Las llamadas seguidas son una sola línea que las cuenta («Ejecutó 6 comandos, leyó 4 archivos») y se abre a la lista. Una llamada que falló se marca en rojo, en su propia línea y en la de su grupo.
  • Cada mensaje tiene sus acciones al pasar el ratón: copiarlo; editar uno tuyo y enviarlo de nuevo, lo que retira todo lo que vino después, de modo que el agente responde otra vez en una sesión nueva a la que se le cuentan los turnos que quedan; y reintentar la última respuesta.
  • La caja de mensaje crece con lo que escribes y guarda un borrador por conversación. Debajo hay una sola fila: +, los comandos con barra, la página abierta, el modo, el modelo y el esfuerzo del agente como un chip cada uno, y Enviar. Pega, suelta o adjunta una imagen o un archivo de texto (+ y luego Subir desde el equipo): una imagen va como imagen cuando el agente las acepta (Claude Code lo hace), un archivo de texto como un archivo que el agente lee, y cualquier otra cosa se rechaza. @ (o + y luego Añadir contexto) ofrece Blueprints, tareas y decisiones por id, título o archivo (las flechas para moverte, Intro o Tab para elegir), y el elegido es una ficha con su id, @B-8R9V, que Retroceso borra entera; un id escrito completo también lo es. Una pestaña o una entrada de la barra lateral arrastrada a la caja llega como esa misma ficha. Un mensaje enviado mientras el agente trabaja espera en una cola bajo la respuesta y sale cuando termina. Intro envía, Mayús+Intro salta de línea, Esc detiene la respuesta, y las flechas arriba y abajo recorren los mensajes que enviaste en la conversación como el historial de una terminal, y abajo después del más reciente devuelve lo que estabas escribiendo.
  • Los permisos son del agente. Una petición de permiso que el agente plantea se muestra tal como el agente la redactó y se responde en la vista; nada se aprueba en tu nombre, y estás en la vista en cada mensaje. Las lecturas y escrituras de archivos del agente se responden solo dentro de la raíz.
  • Comandos con barra. / al principio de un mensaje, o el botón de la barra, los lista: /new, /clear (la conversación vuelve a su inicio), /rename (con lo que sigue), /done (elimina la conversación y abre la siguiente), /settings, /check (la comprobación de la raíz, con lo que encuentra escrito en la conversación), /explain (el agente resume lo que lleva el mensaje) y /grill; con Backlog activo, /task pide al agente que cree una tarea, y con Decisions activo, /decide que registre una decisión. Con Git activo, /git-commit pide al agente que haga commit de tus cambios al momento, y /git-publish y /git-fetch ejecutan Publish y Fetch y cuentan en la conversación cómo ha ido. /migrate aparece solo mientras la raíz va por detrás del estándar que trae esta app: el agente te enseña el plan de eidos migrate --dry-run, migra cuando dices que sí, y luego ejecuta la comprobación y corrige lo que quede. Comandos con barra en la página del plugin lista cada uno con su origen y añade los tuyos: un nombre, una descripción y el prompt que envía ($ARGUMENTS toma lo que sigue al comando), guardados compartidos con la raíz o locales.
  • Dictado. El micrófono junto a Enviar, o Empezar a dictar (⇧⌘D, Ctrl+Shift+D fuera de un Mac, cambiable en Hot keys; pulsado otra vez, para), abre un panel sobre la caja de mensaje: elige el micrófono, mira su nivel, habla tan suelto como quieras y pulsa Parar o Intro. Lo que dijiste queda donde está el cursor, como texto que editar; solo se envía cuando lo envías. Esc o Cancelar lo descarta. Mientras escucha, la caja de mensaje no admite escritura, así que con el foco en el chat Intro y Esc son del dictado, nunca Enviar ni detener la respuesta; en cualquier otro lugar de la app conservan su sentido, así que puedes moverte por ella y seguir hablando. Whisper lo escribe en la página, sin conexión después del primer dictado, que descarga el modelo de voz una vez para todo el equipo (unos 175 MB con ONNX Runtime en una GPU, unos 105 MB sin ella). Poner en limpio con IA, apagado hasta que lo enciendas, hace que tu agente quite muletillas y arranques en falso y corrija la puntuación antes de que entre, en un agente propio con el modelo más rápido que ofrece (un Haiku en Claude Code), nunca el de la conversación; Usar literal, o ⌘Z (Ctrl+Z), devuelve lo que dijiste palabra por palabra. Cómo se escribe guarda tus propias instrucciones: tono, grafías, nombres. La sección Dictado de la página del plugin tiene los mismos interruptores, el modelo con el que poner en limpio y Transcripción alojada con tu propia clave de OpenAI en lugar de Whisper en la página.
  • El interrogatorio. /grill en la caja de mensaje (ofrecido mientras escribes la barra, con lo que vaya después como tu apertura) empieza una conversación en la que el Agente de IA cuestiona lo que está abierto: lee el Blueprint, o el Framework (el marco), y hace una pregunta cada vez sobre lo que el texto deja sin decir, sin responder nunca por ti. Solo pregunta lo que tu rol puede responder, en sus palabras y a su profundidad: el rol del usuario elegido como tú en Users, si no el de .eidos/me.md, con su contrato, y tu calibración de me.md cuando su rol es el mismo. Elegir un usuario de otro rol es ponerte en su lugar: el Agente de IA te interroga como ese usuario, solo por su rol. What did we find? la cierra con cada hueco, lo que dijiste y en qué parte del Blueprint va, con los huecos de otro rol aparte y el rol que decide cada uno, y ofrece escribirlos a través del permiso habitual del agente.
  • Un mensaje de commit para Git. Con el plugin Git activo, Summarize en Source control y cada guardado automático le piden al Agente de IA un mensaje de commit de una línea. Responde con un agente propio, que no se guarda en ninguna conversación, sin permitir ninguna edición ni herramienta, así que ninguna conversación en curso espera ni se toca; si no llega respuesta, el guardado automático usa en su lugar un mensaje simple. Commit messages, en la página del plugin, redacta lo que se le pide, con los cambios detrás; vacío, una línea de asunto en imperativo de menos de 100 caracteres.
  • Buscar duplicados con IA. En una tarea que aún no empezó (en el estado por defecto del Backlog o en un estado de la primera columna del tablero), Buscar duplicados con IA aparece sobre sus propiedades, en su página y en su modal, mientras haya un agente configurado. Al pulsarlo, y solo entonces, la tarea y el resto del backlog van a un agente propio, sin ediciones ni herramientas, y vuelven los posibles duplicados, cada uno con su motivo: Vincular como duplicado o Vincular como relacionado escribe el vínculo en la tarea como lo hace eidos backlog link, y No es un duplicado deja el par fuera de toda revisión posterior desde cualquiera de las dos tareas, diciendo quién lo descartó y cuándo, con Deshacer. La última revisión se guarda, así que sigue ahí al volver; Revisar de nuevo la reemplaza y conserva cada No es un duplicado.
  • Agente de IA: Enfocar el chat (⌃⌘I, Ctrl+Alt+I fuera de un Mac, que puedes cambiar en Hot keys) muestra la vista y pone el cursor en su caja de mensaje; es el único comando Enfocar de la vista Chat. Agente de IA: Enfocar la respuesta del chat pone el cursor en la última respuesta, y las flechas arriba y abajo pasan de un mensaje al siguiente. Agente de IA: Conversación nueva (⌥⌘N, Ctrl+Alt+N fuera de un Mac) empieza una allí.
  • Varias conversaciones a la vez. Cada una tiene su propio proceso del agente, así que empezar, detener o dejar una nunca espera a otra. Una conversación sigue cuando pasas a otra o cierras la página, y muestra su respuesta hasta ese momento al volver. Cada una muestra cómo va en la lista y junto a su título: trabajando, te espera (un permiso que pide), terminada o falló. La que te necesita mientras miras otra cosa se avisa una vez, con un aviso en la página y con la notificación del escritorio cuando la página no está delante (el navegador pregunta una vez si puede); la pestaña Chat las cuenta. Corren hasta cuatro agentes a la vez: pasado eso, uno inactivo deja su sitio, y con los cuatro trabajando un mensaje nuevo se rechaza y lo dice. Un agente inactivo diez minutos se termina, y el siguiente mensaje de la conversación retoma su sesión.
  • El título cambia de conversación. Con una sola, el título es solo su título, con Conversación nueva al lado. Con otras, el título abre la lista de ellas, las fijadas primero, cada una con dónde está y cuándo se movió por última vez, y Todas las conversaciones debajo abre la lista entera. La lista muestra todas las conversaciones, la última en moverse primero, cada una titulada con su primer mensaje hasta que la renombras, con cuándo se movió por última vez. La búsqueda encuentra una por su título o por lo que se dijo en ella. El menú de una fila la abre, la renombra, la fija, la hace local o compartida y la elimina (se pregunta una vez); eliminar la que se muestra abre la siguiente de la lista, y una conversación nueva solo cuando no queda ninguna. Las fijadas van primero, en el orden en que las arrastras; las fijadas y su orden son tuyos, guardados en el local.yaml de la raíz. Una conversación local lleva el portátil.
  • Las conversaciones se comparten con la raíz, para que cualquiera en ella pueda abrir y continuar una, o son locales; el Guardar de una sin guardar pregunta cuál. Una conversación que sigue después de que el agente se reinicia continúa en la sesión del propio agente, recargada con session/load de ACP donde el agente lo ofrece; si no, a una sesión nueva se le cuentan los turnos hasta entonces, y nada de más aparece en la conversación.

El Agente de IA no trae un agente: arranca el de tu equipo mediante el adaptador ACP de ese agente, que npx descarga la primera vez. Así que un equipo necesita tres cosas: Node.js (que da npx), la sesión iniciada del propio agente y un modelo que la cuenta pueda usar.

  • Codex inicia sesión con npx -y @openai/codex login (una cuenta de ChatGPT) o con una clave de OpenAI en OPENAI_API_KEY, que el Agente de IA pasa al adaptador cuando no hay otra sesión iniciada. Lee su modelo de ~/.codex/config.toml; una línea model = con un modelo que la cuenta no puede usar convierte cada respuesta en un error.
  • Claude Code inicia sesión con /login en claude (o npx -y @anthropic-ai/claude-code).

La barra bajo el agente, en la página del plugin, prueba el agente elegido, y elegir uno lo prueba: Node.js encontrado, el agente arrancado, con la sesión iniciada y respondiendo a un mensaje breve, cada paso marcado, con qué hacer en el paso que falló y Copiar detalles para enviarlo a quien te ayude. La prueba arranca un agente propio, así que no toca ninguna conversación en curso.

Por defecto, el Agente de IA responde con una voz: curioso, llano, un poco seco, aficionado a una buena pregunta y a una respuesta corta. Eso es una voz y nada más; el contrato de roles de me.md y las instrucciones deciden qué muestra y quién tiene una decisión. La página del plugin ofrece esa voz predeterminada, tu propio texto o ninguna.

  • .eidos/plugins/agent/local.yaml, local: el agent (claude-code, codex o custom), command (el comando ACP que ejecutar; sin definir, el adaptador del agente nombrado a través de npx, descargado en el primer uso), persona_mode (default, own, off), persona (tu propio texto) chat_zoom (el zoom propio del chat, en porcentaje) y, del dictado, transcription (local o hosted), dictation_tidy, dictation_instructions y dictation_model. Nunca en commit: el agente con el que hablas no viaja con la raíz.
  • En la carpeta donde Eidos guarda lo que no es de ninguna raíz (~/Library/Application Support/eidosmd en un Mac, %APPDATA%\eidosmd en Windows, ~/.config/eidosmd en Linux): models/, el modelo de voz que el dictado descargó una vez, compartido por todas las raíces, y transcription.yaml, tu clave de transcripción alojada, legible solo por ti y nunca devuelta a la página.
  • .eidos/plugins/agent/settings.yaml: commit_prompt, lo que se le pide para el mensaje de commit de Git, compartido con todos en la raíz; y Agente de IA como usuario (as_user, activo por defecto) con Agente de IA actúa como (acts_as): el usuario con el que se firman los comentarios del Agente de IA, por defecto el usuario propio del plugin, Agente de IA (@agent, con el rol agent de la raíz cuando lo tiene), que aparece como del plugin en la página Users mientras el plugin está activo y se escribe en los usuarios de la raíz la primera vez que hace falta. Elige otro usuario (por ejemplo, Sammy) y el Agente de IA firma como él; apágalo y el Agente de IA no comenta como nadie, sus comentarios rechazados. Desde un shell, eidos plugin set agent as_user off o eidos plugin set agent acts_as sammy. Dejar que el agente cambie el framework (may_change_framework, apagado por defecto) decide si @agent puede usar un comando configure: que escribe; apagado, el comando se niega y dice dónde activarlo. Una raíz que no marca a ninguna persona como editor deja a todos, también al agente, sea cual sea el ajuste. Solo un editor del Framework lo activa.
  • .eidos/plugins/agent/conversations/<id>.yaml: una conversación compartida, en commit. .eidos/plugins/agent/local/conversations/<id>.yaml: una local, que nunca sale de la máquina. Cada una guarda los mensajes, el contexto que llevó cada uno tal como se redactó, los archivos que cambió una respuesta y el id de sesión del agente.
  • .eidos/plugins/agent/duplicates.yaml: la última revisión de duplicados de cada tarea (los candidatos, los motivos del agente, cuándo se hizo) y cada par marcado como No es un duplicado, compartido con la raíz.

Nada en la terminal habla con el agente: pedirle a la CLI que le pregunte a tu agente, desde tu agente, es un bucle sin nada dentro. La página es la única superficie para una conversación. Sus ajustes se escriben desde la terminal como los de cualquier plugin:

Ventana de terminal
eidos plugin set agent agent codex # the agent, local, in local.yaml
eidos plugin set agent command "my-agent --acp" # a command of your own that speaks ACP
eidos plugin set agent agent --unset # back to Claude Code, the default

Los comandos con barra propios del compositor se editan con eidos agent, como los edita la lista Comandos con barra de la página del plugin:

Ventana de terminal
eidos agent commands # every command and where it comes from; --json for a script
eidos agent configure:command add review --prompt 'Review $ARGUMENTS for gaps' --description 'review what is open'
eidos agent configure:command set review --rename critique # --prompt, --description; --local for a local one
eidos agent configure:command remove critique # --dry-run shows the change and writes nothing

Un comando se comparte con la raíz salvo que --local lo guarde en esta máquina. Un nombre que ya usa la vista Chat o un plugin se rechaza, y también uno que ya tiene otro comando propio. Solo un editor del Framework escribe los compartidos; los locales son siempre tuyos para cambiar.

Nada. Desactivado o sin configurar, no hay proceso, no se envía nada a ninguna parte, y la página del plugin dice cuál de los dos casos es.