{"id":191,"date":"2026-10-07T09:17:26","date_gmt":"2026-10-07T05:17:26","guid":{"rendered":"https:\/\/demensdeum.com\/blog\/2026\/10\/07\/opencode-deepseek\/"},"modified":"2026-10-07T09:17:26","modified_gmt":"2026-10-07T05:17:26","slug":"opencode-deepseek","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/pt\/2026\/10\/07\/opencode-deepseek\/","title":{"rendered":"Instalando OpenCode e conectando DeepSeek"},"content":{"rendered":"<p>OpenCode \u00e9 um agente de programa\u00e7\u00e3o aberto que fica no terminal. Ele pode ler arquivos de projeto, editar c\u00f3digo, executar comandos e testes, pesquisar no reposit\u00f3rio e trabalhar com git &#8211; quase a mesma coisa que Claude Code e outros agentes de console fazem. A principal diferen\u00e7a \u00e9 que o OpenCode n\u00e3o est\u00e1 vinculado a um provedor modelo: dezenas de provedores podem ser conectados por meio dele, incluindo o DeepSeek. Neste post irei descrever a instala\u00e7\u00e3o do agente e a conex\u00e3o do DeepSeek a ele.<\/p>\n<h2>O que voc\u00ea precisa<\/h2>\n<p>Voc\u00ea s\u00f3 precisa de duas coisas para funcionar:<\/p>\n<ul>\n<li><b>Terminal moderno.<\/b> WezTerm, Alacritty, Ghostty, Kitty ou qualquer outro serve.<\/li>\n<li><b>Chave de API do provedor.<\/b> No nosso caso, DeepSeek.<\/li>\n<\/ul>\n<p>O Node.js n\u00e3o \u00e9 necess\u00e1rio se voc\u00ea instalar o agente com um script de instala\u00e7\u00e3o padr\u00e3o &#8211; o bin\u00e1rio chega pronto.<\/p>\n<h2>Instala\u00e7\u00e3o<\/h2>\n<p>A maneira mais f\u00e1cil \u00e9 o script de instala\u00e7\u00e3o oficial:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>curl -fsSL https:\/\/opencode.ai\/install | bash\n<\/code><\/pre>\n<\/div>\n<p>Ele detectar\u00e1 a pr\u00f3pria plataforma e colocar\u00e1 o arquivo execut\u00e1vel em PATH. Ap\u00f3s a instala\u00e7\u00e3o, voc\u00ea deve verificar se tudo est\u00e1 no lugar:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>opencode --version\n<\/code><\/pre>\n<\/div>\n<p>Se o comando exibir a vers\u00e3o, a instala\u00e7\u00e3o foi bem-sucedida.<\/p>\n<h2>Instala\u00e7\u00e3o usando outros m\u00e9todos<\/h2>\n<p>Se preferir gerenciadores de pacotes, existem v\u00e1rias op\u00e7\u00f5es. Atrav\u00e9s do Node.js:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>npm install -g opencode-ai\n<\/code><\/pre>\n<\/div>\n<p>Bun, pnpm e Yarn podem fazer o mesmo:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>bun install -g opencode-ai\npnpm install -g opencode-ai\nyarn global add opencode-ai\n<\/code><\/pre>\n<\/div>\n<p>macOS e Linux possuem Homebrew. Observa\u00e7\u00e3o: o que \u00e9 recomendado \u00e9 o toque dos desenvolvedores, e n\u00e3o a f\u00f3rmula oficial &#8211; ela \u00e9 atualizada com menos frequ\u00eancia:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>brew install anomalyco\/tap\/opencode\n<\/code><\/pre>\n<\/div>\n<p>No Arch Linux:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>sudo pacman -S opencode\nparu -S opencode-bin\n<\/code><\/pre>\n<\/div>\n<p>O primeiro comando instala a vers\u00e3o est\u00e1vel do reposit\u00f3rio, o segundo &#8211; a vers\u00e3o mais recente do AUR.<\/p>\n<h2>Instala\u00e7\u00e3o no Windows<\/h2>\n<p>No Windows \u00e9 recomendado trabalhar via WSL: assim o desempenho \u00e9 maior e a compatibilidade com as capacidades do agente \u00e9 completa. Mas tamb\u00e9m existem m\u00e9todos nativos. Via Chocolatey, Scoop ou npm:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>choco install opencode\nscoop install opencode\nnpm install -g opencode-ai\n<\/code><\/pre>\n<\/div>\n<p>Tamb\u00e9m existe uma op\u00e7\u00e3o atrav\u00e9s do Mise, bem como um cont\u00eainer Docker:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>mise use -g github:anomalyco\/opencode\ndocker run -it --rm ghcr.io\/anomalyco\/opencode\n<\/code><\/pre>\n<\/div>\n<p>Finalmente, o bin\u00e1rio finalizado sempre pode ser obtido na p\u00e1gina de lan\u00e7amentos no GitHub.<\/p>\n<h2>Chave DeepSeek<\/h2>\n<p>A chave \u00e9 criada em sua conta pessoal DeepSeek. Acesse platform.deepseek.com, abra a se\u00e7\u00e3o com chaves de API e clique em criar uma nova chave. \u00c9 melhor salvar a string resultante imediatamente: ela ser\u00e1 mostrada apenas uma vez.<\/p>\n<h2>Conex\u00e3o DeepSeek<\/h2>\n<p>Depois tudo \u00e9 feito dentro do pr\u00f3prio agente. Inicie o OpenCode no terminal:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>opencode\n<\/code><\/pre>\n<\/div>\n<p>Na interface executamos o comando de conex\u00e3o:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>\/connect\n<\/code><\/pre>\n<\/div>\n<p>Na lista de provedores que se abre, procure por <b>DeepSeek<\/b>, selecione-o e insira a chave API. As chaves adicionadas desta forma s\u00e3o salvas em um arquivo:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>~\/.local\/share\/opencode\/auth.json\n<\/code><\/pre>\n<\/div>\n<p>Ap\u00f3s a conex\u00e3o, resta selecionar o modelo com o comando:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>\/models\n<\/code><\/pre>\n<\/div>\n<p>Os modelos DeepSeek estar\u00e3o dispon\u00edveis na lista, incluindo <b>deepseek-v4-pro<\/b>, <b>deepseek-flash<\/b> e <b>deepseek-v4-flash<\/b>. Para trabalhos rotineiros no reposit\u00f3rio, a op\u00e7\u00e3o flash \u00e9 suficiente; Para tarefas complexas, faz sentido mudar para o profissional.<\/p>\n<h2>Configura\u00e7\u00e3o via config<\/h2>\n<p>Se voc\u00ea n\u00e3o deseja armazenar a chave atrav\u00e9s de um mestre ou precisa definir seu pr\u00f3prio endere\u00e7o API, o provedor \u00e9 descrito diretamente no arquivo de configura\u00e7\u00e3o <b>opencode.json<\/b>:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"provider\": {\n    \"deepseek\": {\n      \"options\": {\n        \"baseURL\": \"https:\/\/api.deepseek.com\"\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>O campo <b>baseURL<\/b> \u00e9 \u00fatil se voc\u00ea usar um proxy ou seu pr\u00f3prio gateway. Neste caso, \u00e9 conveniente transferir a pr\u00f3pria chave para uma vari\u00e1vel de ambiente:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>export DEEPSEEK_API_KEY=\u0432\u0430\u0448_\u043a\u043b\u044e\u0447_deepseek\nopencode\n<\/code><\/pre>\n<\/div>\n<p>Essa op\u00e7\u00e3o \u00e9 boa para CI e lan\u00e7amentos \u00fanicos: a chave n\u00e3o vai para o armazenamento, mas fica apenas no ambiente do processo.<\/p>\n<h2>Primeiro lan\u00e7amento do projeto<\/h2>\n<p>V\u00e1 para o diret\u00f3rio do projeto e inicie o agente:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>cd \u0432\u0430\u0448_\u043f\u0440\u043e\u0435\u043a\u0442\nopencode\n<\/code><\/pre>\n<\/div>\n<p>O primeiro passo \u00e9 inicializ\u00e1-lo:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>\/init\n<\/code><\/pre>\n<\/div>\n<p>OpenCode analisar\u00e1 a estrutura do projeto e criar\u00e1 um arquivo <b>AGENTS.md<\/b> &#8211; um an\u00e1logo das instru\u00e7\u00f5es para o agente. Vale a pena comprometer esse arquivo com o git: ele ajuda o agente a entender as conven\u00e7\u00f5es e padr\u00f5es adotados no projeto.<\/p>\n<h2>Como usar<\/h2>\n<p>O trabalho \u00e9 estruturado da mesma forma que com outros agentes. Alguns truques que voc\u00ea deve saber imediatamente:<\/p>\n<ul>\n<li><b>Modo de planejamento.<\/b> A tecla <b>Tab<\/b> alterna o agente entre os modos de planejamento e montagem. No primeiro, ele apenas sugere como resolver o problema e n\u00e3o altera nada \u2013 \u00e9 conveniente verificar a ideia antes de fazer altera\u00e7\u00f5es.<\/li>\n<li><b>Links para arquivos.<\/b> A tecla <b>@<\/b> abre uma pesquisa difusa nos arquivos do projeto para transferir um arquivo espec\u00edfico para o agente no contexto.<\/li>\n<li><b>Reverter altera\u00e7\u00f5es.<\/b> O comando <b>\/undo<\/b> desfaz as \u00faltimas edi\u00e7\u00f5es e retorna a solicita\u00e7\u00e3o original, <b>\/redo<\/b> as retorna. Voc\u00ea pode reverter v\u00e1rias etapas seguidas.<\/li>\n<li><b>Compartilhando uma conversa.<\/b> O comando <b>\/share<\/b> cria um link para a conversa atual e o copia para a \u00e1rea de transfer\u00eancia. Por padr\u00e3o, as conversas n\u00e3o s\u00e3o publicadas em lugar nenhum.<\/li>\n<\/ul>\n<p>Para altera\u00e7\u00f5es simples, voc\u00ea n\u00e3o precisa mudar para o modo de planejamento, mas descrever imediatamente o que precisa ser feito e especificar os arquivos via @.<\/p>\n<h2>No que prestar aten\u00e7\u00e3o<\/h2>\n<p>Alguns pontos pr\u00e1ticos. O OpenCode n\u00e3o requer assinatura: voc\u00ea paga diretamente ao provedor quando gasta tokens, portanto, sess\u00f5es longas com DeepSeek s\u00e3o previsivelmente mais baratas do que os modelos principais. A chave \u00e9 armazenada localmente em auth.json &#8211; vale a pena considerar isso em uma m\u00e1quina compartilhada, mas para ambientes de outras pessoas uma vari\u00e1vel de ambiente \u00e9 mais confi\u00e1vel.<\/p>\n<p>E mais uma coisa: a qualidade das respostas para problemas arquitet\u00f4nicos complexos difere entre modelos de classes diferentes, ent\u00e3o para o projeto faz sentido pegar um modelo mais forte e deixar a rotina para um modelo r\u00e1pido e barato.<\/p>\n<h2>Links<\/h2>\n<p><a href=\"https:\/\/opencode.ai\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/docs\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/docs\/providers\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/providers\/<\/a><br \/>\n<a href=\"https:\/\/github.com\/anomalyco\/opencode\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/anomalyco\/opencode<\/a><br \/>\n<a href=\"https:\/\/platform.deepseek.com\/api_keys\" rel=\"noopener\" target=\"_blank\">https:\/\/platform.deepseek.com\/api_keys<\/a><br \/>\n<a href=\"https:\/\/api-docs.deepseek.com\" rel=\"noopener\" target=\"_blank\">https:\/\/api-docs.deepseek.com<\/a><\/p>\n<h2>Fontes<\/h2>\n<p><a href=\"https:\/\/opencode.ai\/docs\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/docs\/providers\/#deepseek\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/providers\/#deepseek<\/a><br \/>\n<a href=\"https:\/\/github.com\/anomalyco\/opencode\/releases\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/anomalyco\/opencode\/releases<\/a><br \/>\n<a href=\"https:\/\/models.dev\/\" rel=\"noopener\" target=\"_blank\">https:\/\/models.dev\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenCode \u00e9 um agente de programa\u00e7\u00e3o aberto que fica no terminal. Ele pode ler arquivos de projeto, editar c\u00f3digo, executar comandos e testes, pesquisar no reposit\u00f3rio e trabalhar com git &#8211; quase a mesma coisa que Claude Code e outros agentes de console fazem. A principal diferen\u00e7a \u00e9 que o OpenCode n\u00e3o est\u00e1 vinculado a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-191","post","type-post","status-publish","format-standard","hentry","category-notes"],"translation":{"provider":"WPGlobus","version":"3.0.6","language":"pt","enabled_languages":["en","ru","zh","de","ja","fr","es","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"es":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=191"}],"version-history":[{"count":0,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/191\/revisions"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}