DeepSeek CLI

O que existe de verdade no terminal da DeepSeek: o harness oficial dsh, os modos de execução, a arquitetura de plugins e as alternativas via API — cada tópico na sua aba.

A DeepSeek tem CLI próprio?

Respostadsh21/09/2026

Sim — mas não é um CLI de chat clássico. O produto de terminal first-party da DeepSeek é o DeepSeek Harness, cujo comando é dsh: um agent harness open-source (licença MIT) mantido pela DeepSeek AI, com Web UI, modos one-shot, servidor ACP/SDK e TUI instalável por plugin.

O que responderam, em três camadas

  • Oficial: @deepseek-ai/dsh (DeepSeek Harness) — repo deepseek-ai/deepseek-harness, em developer preview
  • Oficialmente suportado: usar a API da DeepSeek dentro de CLIs de terceiros — Claude Code, Codex, GitHub Copilot, OpenCode — porque a API é compatível com OpenAI e Anthropic
  • Comunidade (não oficial): uma penca de deepseek-cli no PyPI/GitHub e o dsc (deepseekcode, binário Go). Chamar esses de "o CLI do DeepSeek" é erro comum
Em uma frase: o CLI oficial da DeepSeek é o dsh (DeepSeek Harness) — um harness de agentes extensível, não um wrapper de chat.

O que é o DeepSeek Harness (dsh)?

HarnessOpen SourceMIT21/09/2026

É um agent harness: a camada que roda o agente em volta do modelo — sessões, ferramentas, permissões, plugins, protocolos de transporte e interfaces. Desenvolvido pela DeepSeek AI, é open-source sob MIT.

Arquitetura em uma linha

"Everything is a plugin", construído sobre o framework Cordis (o mesmo autor de Koishi), cujo paradigma é descrito no paper A Programming Paradigm for Spatiotemporal Composability. Na prática: Web UI, SDK, ACP e TUI são perfis de plugins, não binários separados.

O que o agente faz

  • Lê e edita arquivos do workspace
  • Executa comandos
  • Delega trabalho (subagentes) e mantém um plano
  • Pede aprovação em operações conforme a política de permissão ativa

Estágio do projeto

Developer preview: o README avisa explicitamente que existirão breaking changes de compatibilidade. Antes de rodar, leia o SAFETY.md. Ele executa comandos na sua máquina — trate como qualquer agente de código.

Números do projeto

  • Repo: github.com/deepseek-ai/deepseek-harness (MIT)
  • Pacote npm: @deepseek-ai/dsh — "o único launcher Node suportado"
  • Docs: deepseek-harness.github.io/deepseek-harness
  • Runtime Python: a wheel empacota o mesmo comando

Quais são os modos de entrada do comando dsh?

CLIEntry modesProfiles21/09/2026

O dsh tem uma gramática própria de argumentos: ele parseia apenas as suas flags e repassa todo o resto para o perfil que o launcher inicializa. Os modos suportados são:

ComandoPara que serve
dsh <nome> / dsh --profile <nome>Sobe o perfil nomeado em $DSH_HOME/profiles/<nome>
dsh --profile <nome> --from-default-profile <template>Cria um perfil custom a partir de um template shipped e já boota
dsh --profile acpServe clientes de automação via ACP stdio até desconectar
dsh --profile headless "job"Roda uma sessão persistida, imprime a resposta final e sai (one-shot)
dsh --profile sdkServe clientes SDK via JSON-RPC stdio até shutdown
dsh --profile sdk-minimalServe clientes SDK com a árvore de agente mínima standalone
dsh webSobe o perfil Web
dsh plugin --profile <nome> <args pnpm>Gerencia plugins do perfil repassando para o pnpm dentro do diretório do perfil

Passando argumentos para o app

O primeiro token que o launcher não reconhece marca o início dos argumentos do app. Ou seja: --help depois de --profile web é o help do app web, não do launcher.

dsh --profile web --port 8080       # --port é do app web
dsh --profile tui --resume <id>     # --resume é do app de terminal (perfil instalado)
dsh --profile headless "run the tests"
dsh --help                          # esse sim é o help do launcher

Como inspecionar sem bootar

  • --dump-default-config e --dump-config mostram a árvore de configuração composta
  • O diretório de invocação vira o workspace root default
  • Os perfis web, headless, sdk, sdk-minimal e acp se auto-inicializam no primeiro uso
  • O nome desktop é reservado ao perfil do Electron — o CLI rejeita boot/config/plugin nele

Como instalar e rodar o dsh?

Setupnpmpnpm21/09/2026

Do npm (mais rápido)

Instale o Node.js e rode direto com npx:

npx @deepseek-ai/dsh web

Isso sobe a Web UI em http://127.0.0.1:3080 por padrão e abre no browser. Em sessão SSH ele apenas imprime a URL (o cliente SSH/editor cuida do forward). Passe --no-open para não abrir o browser automaticamente.

Do código-fonte

git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web

pnpm run build prepara os artefatos uma vez; pnpm dsh web usa os artefatos buildados sem rebuildar. Para desenvolvimento em TypeScript, pnpm dsh <args> roda a entry e repassa todos os argumentos.

Primeiro uso na Web UI

  • Settings → Models: cole sua API key da DeepSeek e salve — a rota passa a valer na hora, sem restart
  • Choose workspace: adicione o diretório do projeto (a UI não deixa compor sessão sem workspace selecionado)
  • Mande a primeira task: "Summarize this repository and identify its main packages"

Outros caminhos

  • Python SDK: a wheel do runtime empacota o mesmo comando; o perfil SDK default é sdk e o exemplo mínimo usa sdk-minimal
  • One-shot no CI: dsh --profile headless "seu job"
  • Integração com editores/agentes: perfil acp via stdio

Perfis, bundles e plugins: como o dsh se compõe

CordisPlugin system21/09/2026

Um perfil é um diretório com dois arquivos: um package.json (dependências de plugins out-of-tree + o manifesto dsh.profile com a lista ordenada de bundles) e um cordis.patch.yml (a camada de overrides do usuário).

A ordem de composição da árvore

A árvore compõe sobre uma raiz vazia, nesta ordem exata:

  • O patch de cada bundle, na ordem de dsh.profile.bundles
  • O cordis.patch.yml do perfil
  • O $DSH_HOME/cordis.patch.yml (nível home)
  • Os overlays de --patch

Bundles shipped

  • @deepseek-ai/dsh-base — base do agente
  • @deepseek-ai/dsh-web-app — a Web UI
  • @deepseek-ai/dsh-headless — execução one-shot
  • @deepseek-ai/dsh-sdk-app / dsh-sdk-minimal — servidores SDK
  • @deepseek-ai/dsh-acp-app — servidor ACP

Bundles citados na lista resolvem primeiro da instalação do dsh e depois do node_modules do próprio perfil, onde o pnpm instala plugins de terceiros.

Detalhes que economizam dor de cabeça

  • HMR: com dsh-hmr habilitado no YAML, o perfil observa o manifesto e os patch files e recompõe tudo num reload serializado; sem HMR, mudanças valem no restart
  • Overlays opcionais em config/examples/: webhooks de review do GitHub, Schedule session-local, servidores MCP de memória e ferramentas Cordis em runtime — nunca vêm em perfil default
  • Lock de escrita: o Plugin Manager compartilha operações de pacote e o lock de escrita do perfil com dsh plugin
  • Publicando plugins: adicione o tópico dsh-plugin no repositório para ficar descobrível

Alternativa oficial: usar a API da DeepSeek dentro de CLIs de terceiros

Claude CodeCodexOpenCode21/09/2026

A doc da DeepSeek é explícita: a API é compatível com os formatos OpenAI e Anthropic, então você pode plugá-la em Claude Code, GitHub Copilot, OpenCode e companhia — sem escrever código. É o caminho mais maduro hoje se você só quer um agente de terminal usando os modelos da DeepSeek.

Endpoints e modelos

ItemValor
base_url (OpenAI)https://api.deepseek.com
base_url (Anthropic)https://api.deepseek.com/anthropic
modelosdeepseek-flash, deepseek-v4-pro
API keyplatform.deepseek.com/api_keys

Os nomes legados deepseek-v4-flash e deepseek-v4-flash-vision-exp ainda são aceitos, mas os modelos correspondentes foram aposentados — as requisições são servidas pelo DeepSeek-V4.1-Flash e cobradas ao preço do Flash.

Claude Code apontado para a DeepSeek

Se você já tem o Claude Code instalado, basta exportar as variáveis:

export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=<sua DeepSeek API Key>
export ANTHROPIC_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-flash
export CLAUDE_CODE_SUBAGENT_MODEL=deepseek-flash
export CLAUDE_CODE_EFFORT_LEVEL=max
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432

Depois é só entrar no projeto e rodar claude. O sufixo [1m] seleciona a janela de contexto de 1M (o modelo da tabela acima tem 1M de contexto).

Mapeamento de nomes de modelo

  • Modelos começando com claude-opusdeepseek-v4-pro (cobrado ao preço do V4 Pro)
  • Modelos começando com claude-haiku ou claude-sonnetdeepseek-flash

Web search

A API da DeepSeek suporta nativamente a ferramenta de Web Search do Claude Code. Quando o modelo julga que a pergunta precisa de busca, ele invoca a tool e a busca acontece via API da DeepSeek. Atenção: isso gera requisições LLM adicionais para resumir o conteúdo recuperado — logo, tokens extras.

Bônus: pelo mapeamento de nomes, também dá para apontar o modo desenvolvedor do Claude Desktop para a DeepSeek trocando apenas base_url e api_key — o que contorna as restrições de nome de modelo do app.

E os deepseek-cli que aparecem no Google? São oficiais?

Não oficiaisArmadilha21/09/2026

Não. A busca por "DeepSeek CLI" devolve majoritariamente projetos de terceiros que parecem oficiais pelo nome. Vale saber diferenciar:

ProjetoO que éOficial?
@deepseek-ai/dshDeepSeek Harness — agent harness com Web UI, SDK, ACP e TUI por pluginSim, DeepSeek AI (MIT)
PierrunoYT/deepseek-cliCLI em Python (PyPI deepseek-cli) com REPL, modo thinking e presets de temperaturaNão — comunidade
holasoymalva/deepseek-cliAssistente de código em linha de comando sobre os modelos DeepSeek CoderNão — comunidade
deepseekcode (dsc)Agente de terminal em binário Go único, com TUI, modo one-shot e sessões em SQLiteNão — comunidade

Detalhe interessante dos CLIs comunitários

Vários já aproveitam a compatibilidade Anthropic da API da DeepSeek: é uma propriedade do serviço, não do CLI — o que significa que você pode apontar ferramentas como o Claude Code para lá, como visto na aba anterior.

Cuidado com o nome: nada impede que um projeto comunitário adote um nome que pareça first-party. Para saber se algo é oficial, confira se está sob a organização deepseek-ai no GitHub ou se é referenciado na doc oficial em api-docs.deepseek.com.