Português
Documentação
Ferramentas

Tools

Gerencie as ferramentas que um LLM pode usar.

As ferramentas permitem que o LLM execute ações na sua base de código. O OpenCode vem com um conjunto de ferramentas integradas, mas você pode estendê-lo com ferramentas personalizadas ou servidores MCP.

Por padrão, todas as ferramentas estão habilitadas e não precisam de permissão para serem executadas. Você pode controlar o comportamento das ferramentas por meio de permissões.


Configurar

Use o campo permission para controlar o comportamento das ferramentas. Você pode permitir, negar ou exigir aprovação para cada ferramenta.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}

Você também pode usar curingas para controlar várias ferramentas de uma vez. Por exemplo, para exigir aprovação para todas as ferramentas de um servidor MCP:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "mymcp_*": "ask"
  }
}

Saiba mais sobre como configurar permissões.


Integradas

Aqui estão todas as ferramentas integradas disponíveis no OpenCode.


bash

Executa comandos de shell no ambiente do seu projeto.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "bash": "allow"
  }
}

Esta ferramenta permite que o LLM execute comandos de terminal como npm install, git status ou qualquer outro comando de shell.


edit

Modifica arquivos existentes usando substituições exatas de string.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

Esta ferramenta realiza edições precisas em arquivos, substituindo correspondências exatas de texto. É a principal forma pela qual o LLM modifica código.


write

Cria novos arquivos ou sobrescreve os existentes.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

Use isto para permitir que o LLM crie novos arquivos. Ela sobrescreverá os arquivos existentes, caso já existam.

Nota: A ferramenta write é controlada pela permissão edit, que abrange todas as modificações em arquivos (edit, write, apply_patch).


read

Lê o conteúdo de arquivos da sua base de código.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "read": "allow"
  }
}

Esta ferramenta lê arquivos e retorna seu conteúdo. Ela suporta a leitura de intervalos específicos de linhas para arquivos grandes.


grep

Pesquisa o conteúdo de arquivos usando expressões regulares.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "grep": "allow"
  }
}

Busca rápida de conteúdo em toda a sua base de código. Suporta a sintaxe completa de regex e filtragem por padrão de arquivo.


glob

Encontra arquivos por correspondência de padrão.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "glob": "allow"
  }
}

Busca arquivos usando padrões glob como **/*.js ou src/**/*.ts. Retorna os caminhos de arquivos correspondentes ordenados por horário de modificação.


lsp (experimental)

Interage com seus servidores LSP configurados para obter recursos de inteligência de código, como definições, referências, informações de hover e hierarquia de chamadas.

Nota: Esta ferramenta só está disponível quando OPENCODE_EXPERIMENTAL_LSP_TOOL=true (ou OPENCODE_EXPERIMENTAL=true).

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "lsp": "allow"
  }
}

As operações suportadas incluem goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls e outgoingCalls.

Para configurar quais servidores LSP estão disponíveis para o seu projeto, veja Servidores LSP.


apply_patch

Aplica patches em arquivos.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow"
  }
}

Esta ferramenta aplica arquivos de patch à sua base de código. Útil para aplicar diffs e patches de várias origens.

Ao lidar com os hooks tool.execute.before ou tool.execute.after, verifique input.tool === "apply_patch" (e não "patch").

apply_patch usa output.args.patchText em vez de output.args.filePath. Os caminhos são incorporados em linhas de marcação dentro do patchText e são relativos à raiz do projeto (por exemplo: *** Add File: src/new-file.ts, *** Update File: src/existing.ts, *** Move to: src/renamed.ts, *** Delete File: src/obsolete.ts).

Nota: A ferramenta apply_patch é controlada pela permissão edit, que abrange todas as modificações em arquivos (edit, write, apply_patch).


skill

Carrega uma skill (um arquivo SKILL.md) e retorna seu conteúdo na conversa.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "skill": "allow"
  }
}

todowrite

Gerencia listas de tarefas durante as sessões de codificação.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "todowrite": "allow"
  }
}

Cria e atualiza listas de tarefas para acompanhar o progresso durante operações complexas. O LLM usa isto para organizar tarefas de várias etapas.

Nota: Esta ferramenta está desabilitada por padrão para subagentes, mas você pode habilitá-la manualmente. Saiba mais


webfetch

Busca conteúdo da web.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "webfetch": "allow"
  }
}

Permite que o LLM busque e leia páginas da web. Útil para consultar documentação ou pesquisar recursos online.


websearch

Pesquisa informações na web.

Nota: Esta ferramenta só está disponível ao usar o provedor OpenCode ou quando a variável de ambiente OPENCODE_ENABLE_EXA está definida com qualquer valor truthy (por exemplo, true ou 1).

Para habilitá-la ao iniciar o OpenCode:

OPENCODE_ENABLE_EXA=1 opencode
opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "websearch": "allow"
  }
}

Realiza buscas na web usando a Exa AI para encontrar informações relevantes online. Útil para pesquisar tópicos, encontrar acontecimentos atuais ou reunir informações além do corte de dados de treinamento.

Nenhuma chave de API é necessária — a ferramenta se conecta diretamente ao serviço MCP hospedado da Exa AI, sem autenticação.

Dica: Use websearch quando precisar encontrar informações (descoberta), e webfetch quando precisar recuperar conteúdo de uma URL específica (recuperação).


question

Faz perguntas ao usuário durante a execução.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "question": "allow"
  }
}

Esta ferramenta permite que o LLM faça perguntas ao usuário durante uma tarefa. É útil para:

  • Reunir preferências ou requisitos do usuário
  • Esclarecer instruções ambíguas
  • Obter decisões sobre escolhas de implementação
  • Oferecer opções sobre qual direção tomar

Cada pergunta inclui um cabeçalho, o texto da pergunta e uma lista de opções. Os usuários podem selecionar entre as opções fornecidas ou digitar uma resposta personalizada. Quando há várias perguntas, os usuários podem navegar entre elas antes de enviar todas as respostas.


Ferramentas personalizadas

As ferramentas personalizadas permitem que você defina suas próprias funções que o LLM pode chamar. Elas são definidas no seu arquivo de configuração e podem executar código arbitrário.

Saiba mais sobre como criar ferramentas personalizadas.


Servidores MCP

Os servidores MCP (Model Context Protocol) permitem que você integre ferramentas e serviços externos. Isso inclui acesso a banco de dados, integrações de API e serviços de terceiros.

Saiba mais sobre como configurar servidores MCP.


Internals

Internamente, ferramentas como grep e glob usam o ripgrep (opens in a new tab) por baixo dos panos. Por padrão, o ripgrep respeita os padrões do .gitignore, o que significa que arquivos e diretórios listados no seu .gitignore serão excluídos das buscas e listagens.


Padrões de ignore

Para incluir arquivos que normalmente seriam ignorados, crie um arquivo .ignore na raiz do seu projeto. Esse arquivo pode permitir explicitamente determinados caminhos.

!node_modules/
!dist/
!build/

Por exemplo, este arquivo .ignore permite que o ripgrep busque dentro dos diretórios node_modules/, dist/ e build/, mesmo que estejam listados no .gitignore.