Cartão de título de 'DeepSeek Harness, no Desktop' com o antetítulo 'DeepSeek, desktop harness', o subtítulo 'É um shell Electron em torno da mesma Web UI. A janela é a parte fácil. O empacotamento é a história.', três pílulas arredondadas com os textos '0.2.1-rc.2', 'Electron + a Web UI' e 'Windows, macOS vezes dois', e uma linha de rodapé com o texto 'Verificado em 21 de outubro de 2026, três instaladores disponíveis, 31 releases no GitHub, zero ativos binários'.
Guides & Insights

DeepSeek Harness Desktop App: o que o instalador realmente coloca na sua máquina

Autor

Rowan Sterling

Data de publicação

Modelos mais recentes · 20Ver todos os modelos →
Benchmarks: Artificial Analysis · atualizado diariamente
Voltar para todas as publicações

O aplicativo desktop DeepSeek Harness é um shell Electron em volta da mesma interface web que você obtém com npx @deepseek-ai/dsh web, e é distribuído como três instaladores específicos para cada plataforma para um harness que atualmente está na versão 0.2.1-rc.2. Essa descrição soa depreciativa e não é essa a intenção. Colocar uma interface funcional dentro de um contêiner desktop é trabalho de um fim de semana; colocá-la em um contêiner que tem seu próprio diretório de runtime, mantém suas tarefas ativas quando você fecha a janela, se atualiza em um canal sem versão estável e preserva suas sessões em cada uma dessas operações é a parte que leva meses, e é a parte que vale a pena conhecer. Se você quer executar o DeepSeek-V4.1-Flash por meio de um harness que vive em uma janela em vez de um terminal, esta é essa build, e as perguntas interessantes são todas sobre o que acontece ao redor da janela.

Duas coisas precisam ser ditas antes dos detalhes. Primeiro, este artigo substitui nossa orientação anterior de que não havia aplicativo para desktop — essa orientação estava correta quando foi escrita em agosto de 2026, e agora está errada. Segundo, esta é uma prévia pública, ainda rotulada como tal no próprio site da DeepSeek, e o empacotamento tem as arestas ásperas que esse rótulo implica. O instalador funciona. A distribuição em torno dele é mais precária do que você imaginaria.

O que a versão desktop realmente é

O aplicativo desktop é uma camada fina do Electron cuja função é iniciar um processo Host e direcionar uma janela para ele. A janela não exibe uma interface de chat própria: ela carrega a entrada Web empacotada incluída no aplicativo em dsh-app://app/, e as caixas de diálogo de atualização que você verá vêm de uma segunda origem empacotada em dsh-app://shell/. Um processo Node filho é iniciado no modo RunAsNode do Electron para iniciar o executor de perfil compartilhado, e o shell encaminha HTTP para o Web Host autenticado, descartando os cabeçalhos transfer-encoding, connection e keep-alive durante a passagem. As respostas de pacote de plugin são marcadas como no-store, o que é um pequeno detalhe com uma consequência visível: altere um plugin e a próxima recarga mostrará a alteração.

Como a URL é dsh-app:// em vez de localhost, não há uma porta fixa para memorizar nem uma colisão de portas para contornar. O Host da área de trabalho escuta, por padrão, em uma porta atribuída pelo SO. Se você precisar de uma porta específica, poderá defini-la por meio de uma substituição de webserver.config.port, mas o padrão deliberadamente não é uma constante, e o Host se vincula a 127.0.0.1. Isso importa se você vem seguindo instruções mais antigas: o número 19387 que circulou nos guias de instalação de agosto não é a porta da área de trabalho, e tratá-lo como tal fará você procurar um serviço que não está lá.

O pin de versão é mais rígido do que parece à primeira vista. Electron e @deepseek-ai/dsh sempre têm exatamente a mesma versão — não um intervalo, nem uma major compatível — então atualizar o harness é fazer um lançamento desktop, e não existe combinação suportada de um novo dsh com uma janela antiga. O processo Electron adquire um bloqueio de instância única com duração do processo e detém com exclusividade $DSH_HOME/profiles/desktop. Essa exclusividade é real: a CLI não consegue iniciar esse perfil, e um npm instalado via dsh não consegue alterá-lo. O que as duas instalações compartilham é o estado que importa para você — sessões, configurações, credenciais, workspaces e armazenamento, tudo em $DSH_HOME. O que elas não compartilham são pacotes executáveis, ativação de plugins, lockfiles ou node_modules, e é por isso que instalar um plugin no perfil desktop não é a mesma operação que instalá-lo no perfil da CLI.

Três instaladores, um canal de atualização, nenhuma versão estável

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.'

Existem três instaladores e todos os três respondem. O executável Windows de 64 bits tem 289.385.456 bytes e foi servido com HTTP 200. A imagem de disco para Apple Silicon tem 264.990.950 bytes, também com 200. A imagem de disco para Mac Intel tem 289.480.824 bytes, também com 200. Todos os três foram modificados pela última vez em 17 de outubro de 2026. Apenas dois deles têm links na página de download. A compilação para Intel está no ar, é acessível e não tem nenhum link apontando para ela em lugar algum de deepseek.com/en/harness/ — se você estiver em um Mac Intel e tiver seguido a página, concluiria razoavelmente que não havia uma compilação para você.

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.

A compilação para Intel também está uma versão atrasada. O feed de atualizações dela lista 0.2.1-rc.1; os feeds do Windows e do Apple silicon listam ambos 0.2.1-rc.2. Um release candidate não representa uma grande diferença em recursos, mas é um sinal real sobre quais alvos são compilados primeiro e quais são verificados por último, e é exatamente o tipo de coisa que você quer saber antes de comprometer suas sessões de trabalho com uma plataforma.

Os canais de atualização são onde a história da distribuição fica frágil. Os feeds são por alvo, em /dsh-desk/feeds/<target>/ no mesmo host. O Windows x64 resolve nightly.yml; ambos os alvos macOS resolvem nightly-mac.yml. Peça a qualquer um dos três latest.yml ou latest-mac.yml e você recebe um 404 — não há canal stable, nem canal beta, e não há como optar por sair do único que existe. As próprias notas de publicação da DeepSeek confirmam o arranjo em vez de contradizê-lo: toda versão publica um feed nightly, e apenas versões stable publicam um latest feed apontando para os mesmos artefatos. “Nightly”, neste contexto, é um nome de canal, e não uma cadência de builds — os feeds do Windows e do Apple silicon servem ambos a mesma build 0.2.1-rc.2, datada de 17 de outubro, com o pacote do Windows com carimbo de data/hora 09:22 UTC e o pacote do Apple silicon 09:57 UTC. Então você tem a maquinaria de atualização automática, polling com jitter, backoff até um teto de uma hora, e nenhuma forma de pedir algo além do que o canal de prévia contém no momento.

O GitHub apresenta o mesmo argumento por outro ângulo. O repositório deepseek-ai/deepseek-harness — 256.559 estrelas e 30.921 forks quando foi consultado em 21 de outubro de 2026 — tinha 31 releases na mesma data, todas sinalizadas como pré-lançamento, e todas com zero ativos binários anexados. Nada na página de Releases é baixável. Se você quiser um build, você o obtém em download.deepseek.com ou no npm, onde @deepseek-ai/dsh atualmente resolve latest para 0.2.1-rc.2. O repositório é uma fonte da verdade para o changelog e um beco sem saída para o artefato, o que é incomum o suficiente para valer a pena afirmar claramente, porque o instinto ao ver 31 releases é esperar um instalador em uma delas.

O que o instalador grava e o que ele se recusa a tocar

O instalador do Windows é um pacote NSIS nativo, não um wrapper em torno de um MSI, e comporta-se como tal. Você obtém paletas clara, escura e automática — selecionáveis no momento da instalação com /THEME=light, /THEME=dark ou /THEME=auto — um diretório de destino editável e um escopo de instalação limitado ao usuário atual. As raízes de unidade são rejeitadas como destinos, e um destino não vazio só é aceito se já for uma instalação registrada, o que significa que o instalador se recusa a substituir uma pasta não relacionada. Na atualização, o caminho silencioso aguarda até dez segundos para que o aplicativo em execução termine e então para com código de saída 2 se ele ainda estiver em execução. Trata-se de uma falha honesta, e não de uma instalação corrompida, e aparecerá em qualquer implantação por script que não encerre o aplicativo primeiro.

O desinstalador define o limite que a maioria dos desinstaladores erra. Ele remove o diretório userData do Electron, o diretório do produto em %APPDATA%, e o cache do atualizador em %LOCALAPPDATA%. Ele não mexe na home do harness — ~/.dsh, ou onde quer que DSH_HOME aponte —, que guarda suas sessões, configurações, credenciais e plugins. Passar --updated ou /KEEP_APP_DATA também mantém os dados do Electron. Portanto, desinstalar e reinstalar é uma forma suportada de corrigir uma janela quebrada sem perder seu trabalho, e isso é uma decisão de projeto deliberada, e não um acidente.

Vale a pena conhecer os runtimes incluídos porque são grandes e ficam fora do diretório do aplicativo. Python com numpy, pandas, python-docx, python-pptx, openpyxl, Pillow, lxml e XlsxWriter, além de Node e pnpm, são instalados em $DSH_HOME/dsh-runtimes/dsh-primary-runtime — normalmente ~/.dsh/... em ambas as plataformas — na primeira vez que um workspace declara precisar deles. É por isso que o espaço em disco após uma semana de uso não é o mesmo de após a instalação, e por que uma desinstalação que preserva $DSH_HOME também preserva várias centenas de megabytes de runtimes.

As configurações são lidas uma única vez na inicialização a partir de desktop/settings.json dentro do diretório userData do Electron, o que no Windows significa %APPDATA%\@deepseek-ai\dsh-desktop\desktop\settings.json e no macOS significa ~/Library/Application Support/@deepseek-ai/dsh-desktop/desktop/settings.json. DSH_HOME não realoca este arquivo — um ponto que vale destacar, porque é a única peça de configuração que não segue a variável que todo o restante segue. As configurações de atualização nesse arquivo estão em milissegundos: intervalMs tem como padrão 600.000, e maxBackoffMs tem como padrão 3.600.000 e deve ser pelo menos intervalMs. O jitter tem como padrão 0,2, é limitado ao intervalo de zero a um e tem piso de um segundo, sem nunca exceder o limite de backoff. Um prazo de inatividade por conexão de 60.000 milissegundos se aplica ao tráfego HTTP de atualização, embora um download ativo não tenha prazo total — um link lento não será interrompido no meio do download.

Fechar a janela não encerra o aplicativo

Em ambas as plataformas, fechar a janela a oculta. No macOS, isso é Command-W; no Windows, é o botão de fechar, Alt-F4, ou Fechar na barra de tarefas. O Windows pede uma confirmação antes da primeira ocultação e grava um sinalizador background-close-confirmed no diretório userData do Electron, para pedir apenas uma vez e não toda vez. O Windows também mantém um ícone na bandeja durante toda a execução. O macOS não inclui nenhum ícone na barra de menus, o que torna o estado oculto genuinamente invisível ali — o app está em execução, as tarefas estão em execução, e nada na tela indica isso até você reabri-lo com dsh://open ou a bandeja, dependendo da plataforma.

O que sobrevive ao ocultamento é a parte útil. As tarefas em execução continuam em execução, e na próxima vez que a janela for exibida ela apresenta o mesmo documento com a mesma sessão, os mesmos rascunhos e a mesma posição de rolagem. Este é um comportamento diferente de uma aba de navegador que você fecha e reabre, e é o motivo pelo qual a versão desktop vale a pena existir, se o seu trabalho envolve tarefas de agente de longa duração: você pode fechar a janela e deixar a tarefa terminar.

Sair é uma ação separada, com a sua própria lógica. Antes de sair, a shell inspeciona o Host para ver se há agentes em execução, incluindo subagentes e agentes à espera de aprovação, mensagens em fila, tarefas em execução ou a parar, e lembretes agendados que estão armados. Se nada disso existir, sai silenciosamente. Se existir algo, é apresentada uma caixa de diálogo de confirmação nativa com o título Sair do DeepSeek Harness?, com uma de três explicações, consoante o que tiver encontrado: as tarefas serão interrompidas, as tarefas agendadas não serão executadas, ou ambas as coisas. Um Host que nunca chegou a estar pronto não pode ter iniciado quaisquer tarefas, pelo que sair nesse estado prossegue sem perguntar. A distinção entre "fechar" e "sair" é o cerne do design, e mantém-se em ambas as plataformas, ainda que apenas uma delas mostre um ícone persistente.

O comando dsh e a ordem que importa

O instalador pode colocar dsh no seu PATH, que é o que permite executar a CLI no mesmo diretório base do harness que o aplicativo de desktop usa. O controle é Gerenciar comando dsh…, e fica imediatamente abaixo de Verificar atualizações… no menu, com três ações: Instalar, Reparar e Remover. No macOS, ele grava um lançador em /usr/local/bin/dsh e solicitará autorização de administrador quando precisar; no Windows, ele registra o comando no PATH do usuário atual.

Duas regras de sequenciamento são fáceis de ignorar e irritantes de descobrir depois. A primeira: execute Remove antes de desinstalar o aplicativo para desktop, porque o desinstalador não remove o registro do dsh. Se desinstalar primeiro, você ficará com uma entrada PATH apontando para um binário que não existe mais. A segunda: se mover o aplicativo para outro local, use Repair no macOS ou Install a partir do novo local no Windows, em vez de presumir que o registro acompanha o aplicativo.

O gerenciamento de plugins para o perfil desktop tem sua própria particularidade. Como o Electron detém exclusivamente $DSH_HOME/profiles/desktop enquanto ele está em execução, instalar nesse perfil não é algo que você faz com o aplicativo aberto. A sequência suportada é iniciar o aplicativo desktop uma vez, encerrá-lo e então executar dsh plugin --profile desktop add <package> na linha de comando. O pacote é instalado no perfil desktop e fica ativo na próxima vez que você abrir a janela.

O que a embalagem já lhe diz está incompleto

A seção de limitações conhecidas do README é excepcionalmente franca, e duas de suas entradas são justamente as que afetarão você primeiro.

• O início de sessão na conta não está conectado. O botão Entrar está desativado. Em vez disso, a primeira execução abre uma janela de boas-vindas de 600 por 700 com um formulário de chave de API; Salvar e continuar grava a chave no armazenamento de credenciais de desenvolvimento, e Configurar mais tarde abre o espaço de trabalho real sem salvar uma. Pressionar Entrar onde ele aparece abre a página da plataforma configurada no navegador do sistema, com o Host sendo responsável pela troca PKCE e por um callback de loopback temporário — a infraestrutura existe, a vinculação da conta não. Na prática, planeje trazer uma chave.

• A assinatura de lançamento e a notarização estão listadas como exigindo o ambiente de lançamento de produção.Isso é o README a ser cauteloso, e é também onde uma medição é mais útil do que uma frase. O executável do Windows publicado traz uma assinatura Authenticode válida com uma cadeia de validação estendida: GlobalSign Root CA–R3, passando pela GlobalSign Code Signing Root R45 e pela GlobalSign GCC R45 EV CodeSigning CA 2020, até um certificado folha emitido para Hangzhou DeepSeek Artificial Intelligence Co., Ltd., com jurisdição indicada como CN / Zhejiang / Hangzhou e categoria empresarial de organização privada. O carimbo de data/hora RFC-3161 dessa assinatura indica 2026-10-17T09:22:04Z, o que corresponde à data de lançamento no feed de atualizações do Windows com uma margem de um minuto, e o resumo SHA-512 do arquivo baixado corresponde ao hash publicado nesse feed byte a byte. Portanto, no Windows, o binário está assinado, com carimbo de data/hora e com hash correspondente hoje, independentemente do que o README diga sobre o processo não estar totalmente em produção. O lado do macOS é uma questão diferente e não verificamos a notarização ali; não transfira o resultado do Windows.

Relatórios de falhas, e um detalhe que vale a pena saber

Os relatórios de falha são gravados como crash-<UTC time>-<source>.log, em ~/Library/Logs/DeepSeek Harness no macOS ou em um diretório logs sob o caminho userData do Electron no Windows, e os dez mais recentes são mantidos. Essa contagem de retenção é pequena o suficiente para importar: se algo der errado repetidamente e você não olhar por alguns dias, o log que teria explicado a primeira falha terá desaparecido. Copie o diretório se estiver depurando algo intermitente.

O caminho de recuperação para uma configuração corrompida é igualmente específico. O shell renomeia cordis.patch.yml para cordis.patch.yml.bak-<timestamp> sem analisá-lo, portanto o arquivo é preservado em vez de reparado, e o aplicativo inicia com os padrões. Se você editou esse arquivo manualmente, o .bak é onde suas edições foram parar, e ele ainda pode ser lido.

Onde isso deixa o conselho anterior de "sem aplicativo para desktop"

Publicámos orientações em agosto de 2026 segundo as quais o harness não tinha aplicação de ambiente de trabalho e que os utilizadores de Windows deviam executar a versão de terminal — isso era exato na altura e está agora desatualizado. A versão de terminal continua a funcionar e continua a ser a escolha certa para um servidor, um contentor ou qualquer coisa com scripts. O que mudou é que a versão de ambiente de trabalho não é um invólucro de brinquedo: tem um perfil separado, mantém as tarefas ativas mesmo depois de fechar a janela, atualiza-se a si própria e partilha estado com a CLI na direção que te ajuda. Se estavas a adiar a versão de ambiente de trabalho porque o artigo anterior dizia que não existia, essa razão já não se aplica.

Os próprios passos de instalação estão cobertos no nosso guia de instalação e não são repetidos aqui, deliberadamente. O que esse guia não pode lhe dizer é qual dos três instaladores não tem link na página de download, qual alvo está uma versão atrás, que não há um canal de atualização estável no qual se inscrever, e que o binário do Windows é assinado embora o README diga que a assinatura pertence a uma versão futura. Esses são os fatos que decidem se a build para desktop é a opção certa a instalar, e são o motivo pelo qual esta página existe separadamente.

Se preferir não instalar nada

Instalar um harness para acessar um único modelo é muita superfície para pouco trabalho, e o aplicativo desktop é uma prévia com um único canal de atualização e um build Intel para o qual ninguém tem link. Se o que você realmente quer é o DeepSeek-V4.1-Flash — o modelo padrão do harness, o mesmo para o qual as notas da 0.2.1-rc.2 adicionam suporte —, um endpoint de API faz isso sem instalador, sem diretório de perfil e sem ícone na bandeja que você precise lembrar que está em execução.

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.

A comparação a fazer não é entre a aplicação desktop e a API em abstrato. É saber se o trabalho quer um agente capaz de manter um espaço de trabalho aberto com a janela fechada, executar scripts na sua máquina e manter uma sessão ativa durante horas — caso em que os problemas de empacotamento acima valem a pena ser tolerados, e a versão desktop é a única forma de obter esse comportamento — ou se o trabalho é um fluxo de pedidos a um modelo que já é servido noutro lugar. Para o segundo caso, o diretório do modelo é o caminho mais curto, e não há nada neste artigo que mude isso.

Comparados neste artigo1

Detectado a partir deste artigo · Benchmarks: Artificial Analysis · atualizado diariamente