Tarjeta de título de «DeepSeek Harness, en el escritorio» con el antetítulo «DeepSeek, harness de escritorio», el subtítulo «Es un envoltorio de Electron alrededor de la misma interfaz web. La ventana es la parte fácil. El empaquetado es la historia.», tres píldoras redondeadas que dicen «0.2.1-rc.2», «Electron + la interfaz web» y «Windows, macOS por duplicado», y una línea de pie de página que dice «Verificado el 21 de octubre de 2026, tres instaladores activos, 31 lanzamientos de GitHub, cero archivos binarios».
Guides & Insights

Aplicación de escritorio DeepSeek Harness: qué coloca realmente el instalador en tu equipo

Autor

Rowan Sterling

Fecha de publicación

Últimos modelos · 20Ver todos los modelos →
Benchmarks: Artificial Analysis · actualizado a diario
Volver a todas las publicaciones

La aplicación de escritorio DeepSeek Harness es un shell de Electron que envuelve la misma interfaz web que obtienes con npx @deepseek-ai/dsh web, y se distribuye como tres instaladores específicos para cada plataforma para un harness que actualmente se encuentra en la versión 0.2.1-rc.2. Esa descripción suena despectiva y no pretende serlo. Envolver una interfaz funcional en un contenedor de escritorio es trabajo de un fin de semana; envolverla en un contenedor que tenga su propio directorio de ejecución, mantenga tus tareas activas cuando cierras la ventana, se actualice por un canal sin versión estable y conserve tus sesiones a lo largo de cada una de esas operaciones es la parte que lleva meses, y es la parte sobre la que vale la pena leer. Si quieres ejecutar DeepSeek-V4.1-Flash mediante un harness que viva en una ventana en lugar de una terminal, esta es esa compilación, y las preguntas interesantes giran todas en torno a lo que ocurre alrededor de la ventana.

Hay dos cosas que deben decirse antes de los detalles. Primero, este artículo reemplaza nuestra orientación anterior de que no había una aplicación de escritorio; esa orientación era correcta cuando se escribió en agosto de 2026, y ahora es incorrecta. Segundo, esta es una vista previa pública, que todavía aparece etiquetada como tal en el propio sitio de DeepSeek, y el empaquetado tiene las asperezas que esa etiqueta implica. El instalador funciona. La distribución que lo rodea es más escasa de lo que cabría suponer.

Qué es realmente la compilación de escritorio

La aplicación de escritorio es una capa fina de Electron cuya función es iniciar un proceso Host y apuntar una ventana hacia él. La ventana no maqueta su propia interfaz de chat: carga la entrada Web empaquetada e incluida dentro de la aplicación en dsh-app://app/, y los diálogos de actualización que verá provienen de un segundo origen empaquetado en dsh-app://shell/. Se lanza un proceso Node hijo en el modo RunAsNode de Electron para iniciar el ejecutor de perfil compartido, y el shell reenvía HTTP al Web Host autenticado, descartando las cabeceras transfer-encoding, connection y keep-alive a su paso. Las respuestas del paquete de plugins se marcan como no-store, lo cual es un detalle pequeño con una consecuencia visible: cambie un plugin y la siguiente recarga mostrará el cambio.

Como la URL es dsh-app:// en lugar de localhost, no hay un puerto fijo que recordar ni una colisión de puertos que sortear. El Host de escritorio escucha por defecto en un puerto asignado por el sistema operativo. Si necesitas uno específico, puedes establecerlo mediante una sobrescritura de webserver.config.port, pero el valor predeterminado deliberadamente no es una constante, y el Host se enlaza a 127.0.0.1. Esto importa si has estado siguiendo instrucciones antiguas: el número 19387 que circuló en las guías de instalación de agosto no es el puerto de escritorio, y tratarlo como tal te llevará a buscar un servicio que no está ahí.

La fijación de versiones es más estricta de lo que parece a primera vista. Electron y @deepseek-ai/dsh siempre tienen exactamente la misma versión —no un rango ni una versión mayor compatible—, así que actualizar el harness implica una versión de escritorio, y no existe ninguna combinación admitida de un dsh nuevo con una ventana antigua. El proceso de Electron adquiere un bloqueo de instancia única durante toda la vida del proceso y tiene propiedad exclusiva sobre $DSH_HOME/profiles/desktop. Esa exclusividad es real: la CLI no puede arrancar ese perfil, y un npm instalado con dsh no puede modificarlo. Lo que ambas instalaciones sí comparten es el estado que te importa —sesiones, ajustes, credenciales, espacios de trabajo y almacenamiento, todo bajo $DSH_HOME. Lo que no comparten son los paquetes ejecutables, la activación de plugins, los archivos de bloqueo ni node_modules, y por eso instalar un plugin en el perfil de escritorio no es la misma operación que instalarlo en el perfil de la CLI.

Tres instaladores, un canal de actualización, ninguna versión estable

Two-column fact card titled 'Three installers, one update channel, no stable release'. The left column, headed 'Files on download.deepseek.com', lists Windows 64-bit .exe at 289.4 MB as 0.2.1-rc.2 linked from the page, macOS Apple silicon .dmg at 265.0 MB as 0.2.1-rc.2 linked from the page, and macOS Intel .dmg at 289.5 MB as 0.2.1-rc.1 'served, but no link anywhere on the page', followed by rows reading 'All three responses HTTP 200', 'All three last modified 17 Oct 2026' and 'Intel build lags by one release candidate'. The right column, headed 'Update and distribution channels', lists Windows x64 updater nightly.yml, macOS arm64 updater nightly-mac.yml, macOS x64 updater nightly-mac.yml, latest.yml any target 404, GitHub releases '31, all prerelease', release assets 0, and npm latest 0.2.1-rc.2. The footer reads 'Read on 21 October 2026. Nightly here is a channel name, not a build time: the Windows and Apple-silicon feeds both serve 0.2.1-rc.2, dated 17 October.'

Existen tres instaladores y los tres responden. El ejecutable de Windows de 64 bits tiene 289.385.456 bytes y se sirve con HTTP 200. La imagen de disco para Apple silicon tiene 264.990.950 bytes, también 200. La imagen de disco para Mac Intel tiene 289.480.824 bytes, también 200. Los tres se modificaron por última vez el 17 de octubre de 2026. Solo dos de ellos están enlazados desde la página de descargas. La compilación para Intel está activa, es accesible y no hay ningún enlace que apunte a ella en deepseek.com/en/harness/ — si tienes un Mac Intel y seguiste la página, llegarías razonablemente a la conclusión de que no había una compilación para ti.

Screenshot of the DeepSeek Harness page at deepseek.com/en/harness, showing the 'Preview' eyebrow, the large DeepSeek Harness wordmark, the line 'Ready to use. Right now.' with the subheading 'Everyday tasks, coding, or your own harness, it starts here', the sentence announcing the public preview and open-source release, a 'Download for Windows' button, and a product screenshot showing a session list beside a chat panel introducing the harness as built on Cordis's 'everything is a plugin' architecture.

La compilación para Intel también está una versión por detrás. Su canal de actualizaciones indica 0.2.1-rc.1; los canales de Windows y de Apple silicon indican ambos 0.2.1-rc.2. Una diferencia de una candidata de lanzamiento no supone una gran brecha en funciones, pero es una señal real de qué objetivos se compilan primero y cuáles se verifican al final, y es justo el tipo de cosa que quieres saber antes de comprometer tus sesiones de trabajo con una plataforma.

Los canales de actualización son donde el relato de la distribución se queda corto. Los feeds son por destino, bajo /dsh-desk/feeds/<target>/ en el mismo host. Windows x64 resuelve nightly.yml; ambos destinos de macOS resuelven nightly-mac.yml. Si pides a cualquiera de los tres latest.yml o latest-mac.yml recibes un 404: no hay canal estable, ni canal beta, ni forma de excluirte del que existe. Las propias notas de publicación de DeepSeek confirman la disposición en lugar de contradecirla: cada versión publica un feed nightly, y solo las versiones estables publican un latest feed que apunta a los mismos artefactos. "Nightly" en este contexto es un nombre de canal y no una cadencia de compilación: los feeds de Windows y de Apple silicon sirven ambos la misma compilación 0.2.1-rc.2, fechada el 17 de octubre, con el paquete de Windows con marca de tiempo 09:22 UTC y el paquete de Apple silicon 09:57 UTC. Así que tienes la maquinaria del actualizador automático, el sondeo con fluctuaciones, el retroceso hasta un límite de una hora, y ninguna forma de pedir algo distinto de lo que contiene actualmente el canal de vista previa.

GitHub plantea el mismo argumento desde otro ángulo. El deepseek-ai/deepseek-harness repositorio —256.559 estrellas y 30.921 forks cuando se consultó el 21 de octubre de 2026— tenía 31 versiones en esa misma fecha, todas ellas marcadas como prerelanzamiento y todas ellas con cero archivos binarios adjuntos. Nada en la página de Releases se puede descargar. Si quieres una compilación, la obtienes de download.deepseek.com o de npm, donde @deepseek-ai/dsh actualmente resuelve latest a 0.2.1-rc.2. El repositorio es una fuente de verdad para el registro de cambios y un callejón sin salida para el artefacto, lo cual es lo bastante inusual como para merecer decirlo sin rodeos, porque el instinto al ver 31 versiones es esperar un instalador en alguna de ellas.

Lo que el instalador escribe y lo que se niega a tocar

El instalador de Windows es un paquete NSIS nativo, no un envoltorio de un MSI, y se comporta como tal. Ofrece paletas clara, oscura y automática —seleccionables durante la instalación con /THEME=light, /THEME=dark o /THEME=auto—, un directorio de destino editable y un ámbito de instalación limitado al usuario actual. Las raíces de unidad se rechazan como destinos, y un destino no vacío solo se acepta si ya es una instalación registrada, lo que significa que el instalador se niega a sobrescribir una carpeta no relacionada. En la actualización, la ruta silenciosa espera hasta diez segundos a que la aplicación en ejecución se cierre y luego se detiene con el código de salida 2 si sigue en ejecución. Eso es un fallo honesto en lugar de una instalación corrupta, y aparecerá en cualquier despliegue automatizado que no cierre la aplicación primero.

El desinstalador marca la línea que la mayoría de los desinstaladores traza mal. Elimina el directorio userData de Electron, el directorio del producto dentro de %APPDATA%, y la caché del actualizador dentro de %LOCALAPPDATA%. No toca el directorio de inicio del harness — ~/.dsh, ni donde apunte DSH_HOME —, que contiene tus sesiones, ajustes, credenciales y plugins. Pasar --updated o /KEEP_APP_DATA conserva también los datos de Electron. Así que desinstalar y reinstalar es una forma admitida de arreglar una ventana rota sin perder tu trabajo, y eso es una decisión de diseño deliberada, no un accidente.

Vale la pena conocer los entornos de ejecución incluidos porque son grandes y viven fuera del directorio de la aplicación. Python con numpy, pandas, python-docx, python-pptx, openpyxl, Pillow, lxml y XlsxWriter, además de Node y pnpm, se instalan en $DSH_HOME/dsh-runtimes/dsh-primary-runtime —normalmente ~/.dsh/... en ambas plataformas— la primera vez que un espacio de trabajo declara que los necesita. Por eso la huella en disco tras una semana de uso no es la huella en disco tras la instalación, y por eso una desinstalación que conserva $DSH_HOME también conserva varios cientos de megabytes de entornos de ejecución.

La configuración se lee una vez al inicio desde desktop/settings.json dentro del directorio userData de Electron, que en Windows significa %APPDATA%\@deepseek-ai\dsh-desktop\desktop\settings.json y en macOS significa ~/Library/Application Support/@deepseek-ai/dsh-desktop/desktop/settings.json. DSH_HOME no reubica este archivo — un punto que vale la pena señalar, porque es la única pieza de configuración que no sigue la variable que todo lo demás sigue. La configuración de actualización en ese archivo está en milisegundos: intervalMs tiene un valor predeterminado de 600.000, y maxBackoffMs tiene un valor predeterminado de 3.600.000 y debe ser al menos intervalMs. El jitter tiene un valor predeterminado de 0,2, se limita a un rango de cero a uno y tiene un mínimo de un segundo sin superar nunca el límite de retroceso. Un plazo de inactividad por conexión de 60.000 milisegundos se aplica al tráfico HTTP de actualización, aunque una descarga activa no tiene un plazo de duración total — un enlace lento no se cortará a mitad de la descarga.

Cerrar la ventana no cierra la aplicación.

En ambas plataformas, cerrar la ventana la oculta. En macOS eso es Command-W; en Windows es el botón de cerrar, Alt-F4, o Cerrar desde la barra de tareas. Windows pide confirmación antes de la primera ocultación y escribe un background-close-confirmed flag en el directorio userData de Electron para que pregunte una vez y no cada vez. Windows además mantiene un icono en la bandeja durante toda la ejecución. macOS no incluye ningún icono en la barra de menús, lo que hace que el estado oculto sea realmente invisible allí — la aplicación está en ejecución, las tareas se están ejecutando, y nada en pantalla lo indica hasta que la vuelves a abrir con dsh://open o desde la bandeja, según la plataforma.

Lo que sobrevive a la ocultación es la parte útil. Las tareas en ejecución siguen ejecutándose y, la próxima vez que se muestre la ventana, presenta el mismo documento con la misma sesión, los mismos borradores y la misma posición de desplazamiento. Este es un comportamiento distinto del de una pestaña del navegador que cierras y vuelves a abrir, y es la razón por la que merece la pena tener la versión de escritorio si tu trabajo implica tareas de agentes de larga duración: puedes cerrar la ventana y dejar que la tarea termine.

Salir es una acción independiente con su propia lógica. Antes de salir, el shell inspecciona el Host en busca de agentes en ejecución, incluidos subagentes y agentes en espera de aprobación, mensajes en cola, trabajos que se están ejecutando o deteniendo, y recordatorios programados que estén armados. Si no existe ninguno de ellos, sale silenciosamente. Si existe alguno, aparece un diálogo de confirmación nativo titulado ¿Salir de DeepSeek Harness? con una de tres explicaciones según lo que haya encontrado: las tareas se interrumpirán, las tareas programadas no se ejecutarán, o ambas cosas. Un Host que nunca llegó a estar listo no puede haber iniciado ninguna tarea, por lo que salir en ese estado continúa sin preguntar. La distinción entre "cerrar" y "salir" es el objetivo central del diseño, y se mantiene en ambas plataformas aunque solo una de ellas te muestre un icono persistente.

El comando dsh, y el orden que importa

El instalador puede poner dsh en tu PATH, que es lo que te permite ejecutar la CLI contra el mismo harness home que usa la aplicación de escritorio. El control es Gestionar comando dsh…, y se encuentra justo debajo de Buscar actualizaciones… en el menú, con tres acciones: Instalar, Reparar y Eliminar. En macOS, escribe un lanzador en /usr/local/bin/dsh y solicitará autorización de administrador cuando la necesite; en Windows, registra el comando en el PATH del usuario actual.

Dos reglas de secuencia son fáciles de pasar por alto y molestas de descubrir después. La primera: ejecuta Remove antes de desinstalar la aplicación de escritorio, porque el desinstalador no elimina el registro de dsh. Si desinstalas primero, te quedas con una entrada de PATH que apunta a un binario que ya no existe. La segunda: si mueves la aplicación a una ubicación diferente, usa Repair en macOS o Install desde la nueva ubicación en Windows, en lugar de asumir que el registro sigue a la aplicación.

La gestión de complementos del perfil de escritorio tiene su propia particularidad. Como Electron posee en exclusiva $DSH_HOME/profiles/desktop mientras se ejecuta, instalar en ese perfil no es algo que se haga con la aplicación abierta. La secuencia admitida consiste en iniciar la aplicación de escritorio una vez, cerrarla y, después, ejecutar dsh plugin --profile desktop add <package> desde la línea de comandos. El paquete se instala en el perfil de escritorio y estará activo la próxima vez que abra la ventana.

Lo que el envase ya te dice está sin terminar

La sección de limitaciones conocidas del README es inusualmente sincera, y dos de sus entradas son las que te afectarán primero.

• El inicio de sesión de la cuenta no está conectado. El botón Iniciar sesión está deshabilitado. En su lugar, la primera ejecución abre una ventana de bienvenida de 600 por 700 con un formulario de clave de API; Guardar y continuar escribe la clave en el almacén de credenciales de desarrollo, y Configurar más tarde abre el espacio de trabajo real sin guardar ninguna. Al pulsar Iniciar sesión donde aparece, se abre en el navegador del sistema la página de la plataforma configurada, con el Host a cargo del intercambio PKCE y una devolución de llamada de bucle local temporal; la infraestructura existe, la vinculación de la cuenta no. En la práctica, cuente con traer una clave.

• La firma de lanzamiento y la notarización se indican como que requieren el entorno de lanzamiento de producción. Eso es el README actuando con cautela, y también es un punto en el que una medición resulta más útil que una frase. El ejecutable de Windows publicado lleva una firma Authenticode válida con una cadena de validación extendida: GlobalSign Root CA–R3, pasando por GlobalSign Code Signing Root R45 y GlobalSign GCC R45 EV CodeSigning CA 2020, hasta un certificado hoja emitido para Hangzhou DeepSeek Artificial Intelligence Co., Ltd. con jurisdicción indicada como CN / Zhejiang / Hangzhou y categoría empresarial de organización privada. La marca de tiempo RFC-3161 de esa firma indica 2026-10-17T09:22:04Z, que coincide con la fecha de lanzamiento en el canal de actualizaciones de Windows con un margen de un minuto, y el resumen SHA-512 del archivo descargado coincide byte a byte con el hash publicado en ese canal. Así que, en Windows, el binario está firmado, con marca de tiempo y con el hash coincidente a día de hoy, diga lo que diga el README sobre que el proceso no está completamente llevado a producción. El lado de macOS es una cuestión distinta y no verificamos la notarización allí; no hay que extrapolar el resultado de Windows.

Informes de fallos y un detalle que vale la pena conocer

Los informes de fallos se escriben como crash-<UTC time>-<source>.log en ~/Library/Logs/DeepSeek Harness en macOS o en un directorio logs bajo la ruta userData de Electron en Windows, y se conservan los diez más recientes. Ese número de retención es lo bastante pequeño como para importar: si algo sale mal repetidamente y no lo revisas durante unos días, el registro que habría explicado el primer fallo ya no estará. Copia el directorio si estás depurando algo intermitente.

La ruta de recuperación para una configuración corrupta es igualmente específica. El shell renombra cordis.patch.yml a cordis.patch.yml.bak-<timestamp> sin analizarlo, por lo que el archivo se conserva en lugar de repararse, y la aplicación se inicia con los valores predeterminados. Si has editado manualmente ese archivo, el .bak es donde fueron a parar tus ediciones, y sigue siendo legible.

Qué supone esto para el consejo anterior de «sin aplicación de escritorio»

Publicamos una guía en agosto de 2026 en la que indicábamos que el harness no tenía aplicación de escritorio y que los usuarios de Windows debían usar la versión de terminal; eso era correcto en aquel momento y ahora ha quedado desactualizado. La versión de terminal sigue funcionando y sigue siendo la opción adecuada para un servidor, un contenedor o cualquier cosa que se ejecute mediante scripts. Lo que ha cambiado es que la versión de escritorio no es un envoltorio de juguete: tiene su propio perfil, mantiene las tareas activas aunque se cierre la ventana, se actualiza sola y comparte estado con la CLI en el sentido que te resulta útil. Si estabas posponiendo la versión de escritorio porque el artículo anterior decía que no existía, esa razón ya no existe.

Los pasos de instalación en sí se cubren en nuestro tutorial de instalación y no se repiten aquí, deliberadamente. Lo que ese tutorial no puede indicarle es cuál de los tres instaladores no tiene enlace en la página de descargas, qué plataforma objetivo va una versión por detrás, que no hay ningún canal de actualizaciones estable al que optar, y que el binario de Windows está firmado aunque el README dice que la firma corresponde a una versión futura. Esos son los datos que determinan si la compilación de escritorio es lo que conviene instalar, y son la razón por la que esta página existe por separado.

Si prefieres no instalar nada

Instalar un arnés para acceder a un solo modelo supone demasiada superficie para tan poco trabajo, y la aplicación de escritorio es una versión preliminar con un único canal de actualizaciones y una compilación para Intel a la que nadie enlaza. Si lo que realmente quieres es DeepSeek-V4.1-Flash —el modelo que el arnés usa por defecto, el mismo para el que las notas de la 0.2.1-rc.2 añaden compatibilidad—, un endpoint de API lo consigue sin instalador, sin directorio de perfil y sin un icono en la bandeja que tengas que recordar que está en ejecución.

Screenshot of the OrcaRouter models directory showing the header '213 models, 16 providers', the search and filter controls, a 'How to call any model' panel on the right, and a grid of model cards including a DeepSeek V4.1 Flash card.

La comparación que hay que hacer no es la de la aplicación de escritorio frente a la API en abstracto. Se trata de si el trabajo requiere un agente que pueda mantener un espacio de trabajo abierto tras cerrar la ventana, ejecutar scripts en tu equipo y mantener una sesión activa durante horas —en cuyo caso los problemas de empaquetado anteriores bien merecen tolerarse, y la versión de escritorio es la única forma de obtener ese comportamiento—, o de si el trabajo es una sucesión de solicitudes a un modelo que ya se sirve en otro lugar. Para el segundo caso, el directorio de modelos es la ruta más corta, y nada en este artículo lo cambia.

Comparados en este artículo1

Detectado en este artículo · Benchmarks: Artificial Analysis · actualizado a diario