Asistentes de IA
Hilos de agente
Un hilo de agente supervisado es un trabajo que delegas a un agente de programación y al que vuelves más tarde. La Bandeja es donde todos ellos rinden cuentas, te dicen qué necesitan y mantienen su propia copia aislada de tu repositorio.
Conversaciones iniciadas fuera de Deska
La bandeja de escritorio tiene un selector de origen en el encabezado: Deska, Externas o Todos los orígenes. Empieza en Deska y recuerda tu elección entre la bandeja compacta y la completa. Los tabs de estado y la búsqueda filtran el origen seleccionado, sin añadir más tabs.
El historial externo incluye por ahora Claude Code y Codex en esta computadora, también las carpetas configuradas para sus cuentas separadas. Una conversación que ya corresponde a una tarea de Deska se excluye de la lista externa. Al abrirla ves sus mensajes recientes, solo en lectura. Continúa en su terminal original; consultarla no la importa ni inicia otro agente.
Trabajando requiere evidencia de un proceso activo. Un archivo reciente por sí solo no demuestra actividad. Cuando Deska no puede verificarla, también en Windows, la fila dice Estado sin confirmar. La lista se actualiza mientras la bandeja está abierta y enfocada. Los errores de lectura se indican. Los demás agentes, teléfonos y computadoras remotas no muestran historial externo en esta versión.
Adjuntar archivos
Usa Adjuntar archivos para adjuntar documentos, código, archivos comprimidos o cualquier otro tipo de archivo. En escritorio también puedes pegarlos o arrastrarlos al mensaje. Puedes iniciar una tarea solo con adjuntos.
En escritorio, HEIC/HEIF y TIFF se convierten localmente a PNG, al igual que SVG, BMP y otros formatos que el navegador pueda decodificar. El archivo convertido lleva el sufijo .png. Si no hay un decodificador, el original sigue adjunto con el aviso Vista previa no disponible. PNG, JPEG, GIF y WebP conservan su formato.
En una tarea de la computadora que estás usando, un archivo que arrastras o eliges desde Finder o el Explorador de archivos se adjunta donde está, de cualquier tamaño: el agente lo lee en su lugar y no se copia nada. El chip muestra su tipo, nombre y tamaño. Si mueves o borras el archivo antes de que el agente lo lea, la tarea te pide adjuntarlo de nuevo y el mensaje muestra Movido o eliminado. Haz clic en un archivo del mensaje para mostrarlo en Finder o el Explorador de archivos. Los archivos pegados no tienen lugar en el disco, así que pueden ocupar hasta 10 MB, igual que las imágenes que el modelo ve. En una tarea de otra computadora, los archivos se copian por el enlace remoto, que permite 1.5 MB por archivo y 5 MB de contenido base64 por mensaje. Adjuntar un archivo no garantiza que el modelo pueda interpretar cualquier formato. En el teléfono y app.deska.dev, Elegir un archivo abre el selector de archivos; la biblioteca y la cámara siguen disponibles donde corresponda. En el teléfono, toca una imagen en la caja de mensaje para verla en pantalla completa, con Quitar para sacarla, o toca su ✕. Una imagen que enviaste desde el teléfono también aparece en el mensaje y en A continuación, y se abre en pantalla completa; las imágenes enviadas desde otro dispositivo se muestran como un número, y sus vistas previas están en escritorio.
La Bandeja
El tablero se llama Bandeja. Ábrelo desde el chip de la Bandeja que está junto a Dex (una lista rápida de tus tareas, con pestañas y un cuadro de búsqueda cuando tienes más de cinco, y Nueva tarea y Abrir la bandeja en su pie), o como una página permanente del cuaderno del lado derecho, que Cmd/CtrlJ muestra u oculta. Cmd/CtrlShiftJ no abre el tablero: salta directo al siguiente hilo que te necesita. El tablero es una fila por hilo, en franjas según lo que quiere cada uno de ti: Te necesita, Trabajando, Listo e Inactivo. El hilo atascado esperando una aprobación queda por encima del que trabaja tranquilamente, y dentro de cada franja va primero el hilo más reciente, así que una fila solo se mueve cuando cambia su estado.
Sobre la lista hay cuatro controles. Las pestañas de alcance eligen cuánto de tu trabajo ves: Worktree es el worktree en el que estás, luego Proyecto y Todo. Filtrar deja solo los estados y agentes que marques, y cada opción muestra cuántos hilos dejaría: Aprobación, Respuesta, Falló, Trabajando, Listo e Inactivo, más una entrada por agente cuando el tablero tiene más de uno. Marcar dos estados muestra los hilos de cualquiera de los dos; marcar un estado y un agente muestra solo los que cumplen ambos. El botón cuenta las opciones activas, Deska recuerda el filtro entre sesiones y Quitar filtro (en el menú, o en un tablero donde nada coincide) devuelve todos los hilos. Por demanda cambia la agrupación a Por proyecto y de vuelta. La búsqueda encuentra títulos, ramas, rutas y mensajes de error, y se acota más con repo: y path:. Nada de esto toca los pliegues Concluidos y Archivados.
Nueva tarea toma el tablero con un compositor de borradores, y el compositor es el hilo hasta el primer envío: no se crea nada hasta que sale el mensaje. Dónde corre el trabajo es un menú de chips: tu propio checkout (con el nombre de su rama, y los cambios caen directo en tus archivos), Nuevo worktree o un worktree existente. El selector de modelo elige el agente y el modelo, y Ajustes agrupa el pensamiento y los permisos. Para el destino de worktree, la franja de ramas ofrece un chip de rama base, y Deska puede traer esa base primero desde origin para que el hilo arranque sobre lo que tiene el remoto en lugar de una rama local desactualizada. Hacer checkout de un pull request… es un selector en vivo que lista los pull requests abiertos del repositorio a través de gh; elegir uno fuerza el destino de worktree, porque un pull request siempre corre en su propia copia.
Para escribir varias tareas seguidas, presiona Cmd/CtrlEnter en lugar de Enter: la tarea arranca y el siguiente borrador se abre a su lado, listo para escribir, con el mismo agente, modelo y modos. Mientras mantienes Cmd/Ctrl, el botón dice Empezar y otra. El atajo se puede cambiar en Ajustes → Atajos de teclado.
Cada fila muestra primero el título y el estado del hilo, seguidos de una línea compacta con el proyecto o la rama. Selecciona Detalles para leer las notas completas, la información de actualizaciones del proveedor y la configuración de la sesión, o para renombrar, posponer, dar por terminado, archivar o eliminar el hilo. Las causas de error y las preguntas pendientes siguen visibles en la lista. El estado permanece visible al pasar el cursor. Las etiquetas de estado identifican las tareas que necesitan atención sin franjas de color al borde de las filas. Los detalles expandidos separan el problema actual, los datos de la sesión, las notas de actividad y el directorio de trabajo con una jerarquía visual clara.
Algunos controles mantienen legible un tablero cargado:
- Concluir hilo mueve una fila que ya diste por terminada a un pliegue compacto Concluidos al final. Se queda ahí hasta que la devuelvas. Debajo hay un pliegue Archivados, para las filas que ocultaste por completo.
- Posponer hilo posterga una fila hasta la hora que elijas (en una hora, esta tarde, mañana, la próxima semana). Un hilo pospuesto regresa antes por su cuenta si llega a una aprobación, hace una pregunta o falla, y lleva una marca Despertó hasta que lo revisas.
El tablero se lee bien desde el teclado: J y K (o las flechas) mueven la selección y Enter abre la fila seleccionada. Abrir una fila entrega el panel completo a ese hilo, reproduciendo la conversación desde su registro durable, incluidos los turnos que corrieron antes de que arrancara este proceso de la aplicación, y Esc devuelve el panel al tablero.
Qué está pidiendo un hilo
Cada fila lleva un estado, aquí listados del más al menos urgente:
- Bloqueado significa que el agente llegó a una aprobación y no puede continuar hasta que la permitas o la deniegues. La fila dice aprobación.
- Esperando tu respuesta significa que el agente hizo una pregunta que no es una solicitud de permiso. La fila dice respuesta.
- En ejecución significa que hay un turno en curso. Si un turno se aceptó pero todavía no arrancó, la fila dice Preparando worktree… o Iniciando agente…, para que un mensaje aceptado nunca parezca congelado.
- Error significa que falló un turno o la sesión que lo sostiene. Cuando Deska pudo clasificar la falla, nombra la causa, por ejemplo No se pudo iniciar la CLI o La CLI instalada es demasiado antigua. Un turno que falló porque su agente no tiene sesión iniciada ofrece iniciarla ahí mismo. Uno cuyo inicio de sesión fue rechazado dice Sesión cerrada y nombra la cuenta, por ejemplo Claude Code no pudo usar la sesión de [email protected]. Vuelve a iniciar sesión para seguir., con el mensaje del propio agente plegado debajo y Volver a iniciar sesión; consulta Dentro de un hilo.
- Terminado pero sin ver significa que un turno se completó desde la última vez que miraste ese hilo: abriste su fila, o su panel era el enfocado en el lienzo con Deska al frente. La marca se limpia cuando de verdad lo miras, no cuando termina el trabajo.
- Inactivo significa que el hilo está vivo y esperando tu próximo mensaje.
- Detenido significa que tú lo detuviste. Un hilo detenido puede volver a arrancar.
Pulsa Cmd/CtrlShiftJ desde cualquier parte de la aplicación para saltar al siguiente hilo que te necesita. Recorre en ciclo todos los hilos en espera y luego vuelve a empezar, así que pulsarlo varias veces barre la lista completa. Se salta las filas archivadas, asentadas y aún pospuestas salvo que sean justamente las que levantan la mano, y no hace nada cuando ningún hilo está esperando.
Hilos frente a sesiones sueltas
El tablero muestra dos tipos de fila, y la diferencia está en qué sobrevive. Un hilo es durable: su historial, sus preguntas pendientes, sus puntos de control y sus ajustes quedan escritos, así que sigue levantando la mano aunque se reinicie el proveedor y vuelve a abrirse con la aplicación. Una sesión suelta es una sesión de proveedor iniciada fuera del sistema de hilos; aparece en el tablero mientras vive y muere con su proceso.
Esa diferencia se nota en todo. Las sesiones sueltas no tienen rama, ni worktree, ni diffs por turno, ni tarjeta de plan, ni registro de actividad, y no se pueden archivar, asentar ni posponer. Cuando quieras un trabajo del que puedas alejarte y al que puedas volver, arranca un hilo.
Las sesiones estructuradas de cualquiera de los dos tipos corren sobre el mismo runtime descrito en Agentes de programación. Si prefieres manejar un CLI a mano, eso sigue funcionando en una terminal normal.
Worktrees de git aislados
Un hilo cuyo destino de ejecución es Nuevo worktree obtiene su propio worktree de git: una segunda copia del mismo repositorio, en su propia rama y en su propio directorio. Varios agentes pueden entonces trabajar sobre un proyecto al mismo tiempo sin tocar nunca los archivos de los demás, ni los tuyos.
- Tu rama no se mueve. El worktree se corta desde el HEAD actual (o la base que hayas indicado) sobre una rama nueva bajo el espacio de nombres
deska/, así que engit branchqueda claro qué ramas creó Deska. La rama lleva el nombre de la tarea; si otro hilo ya tiene ese nombre, se le agrega un número (deska/hotfix-2). Tu propio árbol de trabajo se queda exactamente donde estaba. - La copia vive fuera del repositorio, en la carpeta de datos de la aplicación de Deska, así que no aparece nada dentro del directorio de tu proyecto.
- Cada turno completado queda en un punto de control. Las instantáneas van a un espacio de refs privado de git, nunca a tus ramas, ni a HEAD, ni al índice. El detalle del hilo lista los archivos que cambió cada turno con las líneas añadidas y eliminadas, y ofrece restaurar el árbol a como estaba antes de ese turno. Un turno cuyo punto de control no se pudo capturar lo dice y desactiva su propio revert, en lugar de ofrecer una acción que iba a fallar.
- Deska se da cuenta si la copia se mueve. Si algo ejecuta
git checkoutogit resetdentro del worktree de un hilo, el hilo registra una advertencia que nombra ambas ramas y muestra un aviso con la acción para volver. Nunca rechaza el turno, porque el cambio bien pudo ser intencional. - La limpieza automática es conservadora. Deska solo elimina copias dentro de su propia carpeta de worktrees que ya no pertenecen a ningún hilo, que git reconoce y que no tienen nada sin confirmar. Cualquier cosa con trabajo sin confirmar se deja intacta, y esta limpieza nunca elimina una rama, así que los commits de un hilo siempre siguen ahí.
El menú de la fila puede abrir una terminal ya situada en la copia propia del hilo, que es la forma más rápida de inspeccionar lo que hizo un agente.
Cuando termines con la copia de una tarea, abre sus Detalles en la Bandeja y elige Quitar worktree, o elimínala desde el selector de worktrees. La tarea se detiene para siempre y se queda en la Bandeja para que la leas. No se puede eliminar mientras el agente está trabajando, y las terminales abiertas dentro del worktree se cierran antes. La carpeta y la rama siguen la misma regla que al eliminar cualquier worktree.
Eliminar hilo… elimina el worktree de la tarea con esa misma regla. Su confirmación dice cuántos archivos sin commit se van con él, y Deska guarda una copia de ellos durante 30 días. La rama se va también solo cuando no se pierde nada de ella; si no, se queda con sus commits.
Preparar worktrees nuevos con deska.json
Una copia recién creada suele necesitar trabajo antes de que un agente pueda hacer algo útil en ella: instalar dependencias, generar código, escribir un archivo de entorno. Coloca un archivo deska.json en la raíz de tu proyecto y Deska lo hará por ti.
El archivo contiene un arreglo scripts, con un name y un command en cada entrada. La primera entrada marcada con runOnWorktreeCreate en true es el hook de preparación: corre una sola vez, dentro del worktree recién cortado, antes de que arranque el primer turno del hilo. El script corre con el worktree como directorio de trabajo y recibe DESKA_PROJECT_ROOT y DESKA_WORKTREE_PATH en su entorno. Solo corre un hook por worktree, aunque varias entradas lleven la marca.
Deska lee el manifiesto primero desde la copia del worktree y luego desde la raíz del proyecto, así que una rama puede fijar su propia preparación mientras un deska.json sin confirmar sigue funcionando.
deska.json mal formado: las entradas incorrectas se omiten y se reportan, y un archivo que no es JSON válido se ignora por completo. Una configuración escrita a mano nunca puede atascar un hilo.Dentro de un hilo
Abrir una fila despliega el mismo detalle que muestra el panel completo: la transcripción, lo que sea que el agente esté esperando, los archivos que cambió y lo que Deska hizo en tu nombre.
- Las aprobaciones llegan como tarjetas. Enter permite la solicitud, S la permite por el resto de la sesión, D la deniega y Esc cancela el turno. Una solicitud que parece destructiva (un borrado, un force push, un reset duro) pierde a propósito las teclas de aceptación y debe aprobarse con un clic deliberado.
- Las preguntas llegan en sus propias tarjetas, y las teclas 1 a 9 eligen una opción. Una pregunta con varios pasos se muestra como una sola tarjeta por pasos. También puedes escribir una respuesta en el chat, aunque haya opciones; responde al paso que estás viendo y conserva las elecciones anteriores. La tarjeta se cierra al aceptar las respuestas y permanece disponible para reintentar si falla el envío. Las preguntas también se cierran al terminar su turno. Las tarjetas pendientes se apilan de la más antigua a la más nueva, así que la del frente siempre es la que toca responder.
- Los subagentes muestran su progreso encima de la conversación mientras trabajan. La lista desaparece cuando todos terminan, también al volver a abrir una tarea finalizada; cada uno además conserva una fila en la conversación. Una lista larga se desplaza en su sitio y mantiene a la vista el subagente más reciente que sigue trabajando, así la conversación de abajo conserva su espacio. En el lienzo, haz clic en un subagente (o en el conteo agentes en curso) para abrirlo en una ventana prendida al borde derecho de la tarea: lo que devolvió, los pasos que dio y las instrucciones que recibió, mientras la tarea sigue abierta a su lado. Haz clic en otro subagente para mostrarlo en la misma ventana, o en el mismo otra vez para cerrarla. Separar la deja como ventana propia y libera el borde de la tarea para el siguiente. Claude Code, Codex y OpenCode informan lo que devolvió un subagente; Claude Code y Codex también informan sus pasos. Cursor y Antigravity informan su objetivo y su estado.
- Cambios en el encabezado de una tarea abre lo que la tarea cambió en esa misma ventana de su borde, así la conversación conserva su altura. Fuera del lienzo (el cuaderno) sigue abriéndose encima de la conversación.
- Los archivos que muestra una respuesta (una captura, un archivo compartido, una imagen que el agente dejó en
/tmp) se abren al hacer clic en esa misma ventana del borde de la tarea: la imagen al ancho de la ventana con zoom y Copiar imagen, un PDF o el texto tal cual, más Guardar archivo. Haz clic otra vez en el mismo archivo para cerrarlo. Fuera del lienzo (el cuaderno) se abre en un visor completo. - Los planes propuestos aparecen como una tarjeta Plan propuesto cuando termina un turno de planificación. Desde ahí puedes devolverlo al mismo hilo con Implementar, pedir cambios con Refinar, separar el trabajo con Implementar en un hilo con worktree nuevo para que el plan y su ejecución queden aparte (con el mismo modelo y esfuerzo con que se hizo el plan), o descartarlo con Descartar. La tarjeta pertenece al turno que propuso el plan: cuando decides, o envías cualquier otro mensaje, se va y el plan queda en la conversación como una línea que dice qué pasó con él: Implementando, Implementado, Descartado, Enviado a una tarea nueva, No implementado o Reemplazado por un plan más nuevo. Si el turno que lo implementa se detiene, la tarjeta vuelve para que lo intentes de nuevo, hasta que envíes otra cosa. El teléfono muestra el plan al final de la conversación hasta el siguiente mensaje, con los mismos estados, y también puede descartarlo.
- Los diffs por turno listan cada turno completado con sus archivos cambiados y el conteo de líneas, y se abren en una vista archivo por archivo. Un diff de rama muy grande se recorta, y el panel lo dice en lugar de mostrar un fragmento como si fuera el cambio completo.
- Copiar cierra cada turno terminado. Copia todo lo que el agente escribió en ese turno, en orden y en markdown, sin el registro de herramientas, para pegar la respuesta tal cual en otro agente, una nota o un issue. Aparece cuando el turno termina, ya sea que acabó, falló o lo detuviste. Por ahora solo en la app de escritorio.
- Edita un mensaje con el lápiz junto a Copy, debajo de cualquier mensaje que enviaste. El mensaje se abre donde está; cámbialo y presiona Enter (o Send). La tarea vuelve a antes de ese mensaje y corre de nuevo desde tu edición: el agente olvida la respuesta y todo lo que siguió, los archivos que esos turnos cambiaron se restauran cuando el proyecto es un repositorio git, y los turnos anteriores se pliegan en discarded turns para que nada se pierda de vista. La línea bajo el editor dice qué reemplaza Send antes de que lo presiones. Si la tarea sigue trabajando, el editor se abre pero Send espera a que termine. Si el agente no puede volver a ese punto, no cambia nada y el editor te dice por qué. Claude Code, Codex y OpenCode pueden hacerlo; Cursor y Antigravity no tienen forma de volver atrás en una conversación, así que el lápiz lo explica en lugar de abrirse. Lo que el agente hizo fuera del proyecto, como una instalación o un push, no se deshace. Claude Code solo puede volver a mensajes enviados después de esta actualización. Por ahora solo en la app de escritorio.
- Los archivos de resultado y las imágenes generadas aparecen como enlaces en la conversación. Selecciona uno para abrirlo en Deska. En el teléfono, Deska lee el archivo de forma segura desde la computadora que ejecutó la tarea; las imágenes compatibles se abren en el visor integrado.
- La compactación ocurre cuando la conversación se acerca al límite de contexto del modelo y el proveedor resume los turnos anteriores para poder seguir. La fila lo anota (compactado una vez, compactado 3 veces) para que sepas que la memoria del agente sobre los primeros turnos ahora es un resumen. Selecciona el nombre del agente en el encabezado del chat para consultar tokens y contexto; el anillo aparece solo cuando el proveedor reporta una ventana real.
Mientras arranca el agente, Mensaje en cola confirma que tu mensaje fue aceptado. El progreso de preparación queda en la franja sobre el compositor. Los avisos aparecen bajo los controles; las advertencias y los errores tienen prioridad y mantienen su explicación completa visible.
Cuando un turno falla porque su agente no tiene sesión iniciada en esa computadora, el teléfono muestra una sola tarjeta en lugar del error: por ejemplo Cursor no inició sesión en Deska Cloud, con un botón Iniciar sesión en Cursor. El inicio de sesión corre en esa computadora y, cuando termina, el mensaje se vuelve a enviar solo; si tenía archivos adjuntos, regresa al compositor, listo para enviarlo con un toque. Si iniciaste la sesión desde la pantalla de agentes después de que el turno falló, la tarjeta ofrece Enviar de nuevo. El error original sigue en Detalles. Consulta Agentes en otra computadora.
El compositor sigue activo mientras corre un turno. Enter encola tu mensaje como el siguiente turno, y Guiar ahora interrumpe el turno en curso para redirigirlo. Los agentes que no se pueden reconducir a mitad de turno lo dicen y encolan el mensaje en su lugar. Para detener el turno en curso, pulsa Detener en la franja sobre el compositor, o mantén Esc hasta que el anillo de ese botón se llene. Soltar antes no cancela nada, así que un toque reflejo nunca mata un turno. Con Claude Code y Codex, el agente principal puede terminar su turno mientras los subagentes que lanzó siguen trabajando en segundo plano. La tarea sigue activa y muestra Subagentes trabajando hasta que terminen, y el aviso de que terminó también los espera; Claude Code luego retoma solo para leer lo que encontraron. Detener también detiene esos subagentes y sigue disponible en escritorio y teléfono. Si solo trabajan subagentes, Enviar inicia un turno nuevo con el agente principal; Guiar ahora no está disponible porque su turno anterior ya terminó.
Los mensajes en cola esperan en A continuación, sobre el compositor, con un conteo de cuántos esperan. A partir de unos cinco la lista se desplaza en su sitio, así que encoles los que encoles, la conversación y el compositor conservan su espacio, y un mensaje que acabas de encolar aparece al final de la lista. Arrastra uno por su asa para cambiar el orden. Pasa el puntero sobre un mensaje, o llega a él con el teclado, para ver sus acciones: Guiar ahora lo envía al turno en curso sin detenerlo, Editar lo devuelve al compositor encima de lo que ya habías escrito y la ✕ lo quita de la cola. La cola avanza cuando el agente termina un turno, así que si Deska se reinicia a mitad de uno, o la sesión del agente termina con un error, el mensaje ofrece Enviar ahora y empieza como el siguiente turno. Haz clic derecho en un mensaje para ver las mismas acciones más Mover arriba y Copiar texto. Los agentes que no se pueden reconducir a mitad de turno no muestran Guiar ahora; sus mensajes corren en orden.
Dex sigue la misma regla: una instrucción que quieres aplicar ya entra al turno en curso, una que dices que puede esperar se pone en cola, y puede quitar un mensaje en cola o enviarlo ya cuando cambias de idea.
El micrófono junto al botón de enviar dicta en la caja. Mientras escucha, el botón de enviar dice Detener y enviar (Detener y encolar durante un turno): una sola pulsación, o Enter, detiene la grabación y envía tus palabras junto con lo que escribiste. Consulta Iniciar un dictado.
El compositor muestra el modelo resuelto cuando se conoce y un control Construir/Plan. Ajustes agrupa pensamiento, ventana de contexto y permisos; Acceso total conserva su nombre en el botón cuando está activo. En paneles estrechos, Construir/Plan también pasa a Ajustes. Estas opciones se aplican al siguiente turno y cada proyecto recuerda los valores para sus tareas nuevas.
El título de la tarea aparece una sola vez en el marco del panel. El encabezado compacto reúne las acciones y un acceso actualizado a la rama o PR. Junto al logo del proveedor nombra la instancia en la que corre la tarea, así dos cuentas del mismo proveedor se distinguen (A, B, Trabajo), con el color de acento de la instancia delante cuando lo tiene. Selecciona ese nombre para consultar el uso de la sesión, o Actualizar para ver las instrucciones de actualización. Los problemas de instalación e inicio de sesión siguen visibles sobre la conversación. El historial de herramientas abrevia las rutas; expande una entrada para ver el comando original. Las aprobaciones históricas muestran un resumen expandible. Las aprobaciones activas mantienen visible la solicitud exacta antes de decidir. Los errores de reinicio explican cómo continuar.
Para la superficie de chat que opera tu lienzo en vez de tu repositorio, consulta Agentes y Dex.