Salta ai contenuti

Strumenti

Gestisci gli strumenti che un LLM puo' usare.

Gli strumenti permettono all’LLM di eseguire azioni nel tuo codebase. OpenCode include un set di strumenti integrati, ma puoi estenderlo con strumenti personalizzati o con server MCP.

Di default, tutti gli strumenti sono abilitati e non richiedono permessi per essere eseguiti. Puoi controllare il comportamento degli strumenti tramite i permessi.


Configura

Usa il campo permission per controllare il comportamento degli strumenti. Puoi consentire, negare o richiedere approvazione per ciascuno.

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

Puoi anche usare wildcard per controllare piu’ strumenti insieme. Per esempio, per richiedere approvazione per tutti gli strumenti di un server MCP:

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

Scopri di piu’ su come configurare i permessi.


Integrati

Ecco tutti gli strumenti integrati disponibili in OpenCode.


bash

Esegui comandi di shell nel tuo ambiente di progetto.

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

Questo strumento permette all’LLM di eseguire comandi da terminale come npm install, git status o qualunque altro comando di shell.


edit

Modifica file esistenti usando sostituzioni esatte di stringhe.

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

Questo strumento esegue modifiche precise ai file sostituendo corrispondenze di testo esatte. E’ il modo principale con cui l’LLM modifica il codice.


write

Crea nuovi file o sovrascrive quelli esistenti.

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

Usalo per consentire all’LLM di creare nuovi file. Sovrascrivera’ i file esistenti se sono gia’ presenti.


read

Leggi il contenuto dei file dal tuo codebase.

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

Questo strumento legge i file e ne restituisce il contenuto. Supporta la lettura di intervalli di righe specifici per file grandi.


grep

Cerca nel contenuto dei file usando espressioni regolari.

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

Ricerca rapida nel contenuto su tutto il codebase. Supporta la sintassi completa delle regex e il filtro per pattern di file.


glob

Trova file tramite pattern matching.

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

Cerca file usando pattern glob come **/*.js o src/**/*.ts. Restituisce i percorsi corrispondenti ordinati per data di modifica.


list

Elenca file e directory in un percorso specifico.

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

Questo strumento elenca il contenuto di una directory. Accetta pattern glob per filtrare i risultati.


lsp (experimental)

Interagisci con i server LSP configurati per ottenere funzionalita’ di code intelligence come definizioni, riferimenti, hover info e call hierarchy.

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

Le operazioni supportate includono goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls e outgoingCalls.

Per configurare quali server LSP sono disponibili per il tuo progetto, vedi LSP Servers.


patch

Applica patch ai file.

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

Questo strumento applica file patch al tuo codebase. Utile per applicare diff e patch da varie fonti.


skill

Carica una skill (un file SKILL.md) e ne restituisce il contenuto nella conversazione.

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

todowrite

Gestisci todo list durante le sessioni di coding.

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

Crea e aggiorna liste di task per tracciare i progressi durante operazioni complesse. L’LLM lo usa per organizzare attivita’ multi-step.


todoread

Leggi le todo list esistenti.

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

Legge lo stato corrente della todo list. Usato dall’LLM per tenere traccia di quali task sono in sospeso o completati.


webfetch

Recupera contenuti dal web.

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

Permette all’LLM di recuperare e leggere pagine web. Utile per consultare documentazione o ricercare risorse online.


websearch

Cerca informazioni sul web.

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

Esegue ricerche web usando Exa AI per trovare informazioni rilevanti online. Utile per ricercare argomenti, trovare eventi attuali o raccogliere informazioni oltre il cutoff dei dati di addestramento.

Non e’ richiesta alcuna API key: lo strumento si connette direttamente al servizio MCP ospitato da Exa AI senza autenticazione.


question

Fai domande all’utente durante l’esecuzione.

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

Questo strumento permette all’LLM di porre domande all’utente durante un task. E’ utile per:

  • Raccogliere preferenze o requisiti dell’utente
  • Chiarire istruzioni ambigue
  • Ottenere decisioni sulle scelte di implementazione
  • Offrire opzioni su che direzione prendere

Ogni domanda include un header, il testo della domanda e una lista di opzioni. Gli utenti possono selezionare dalle opzioni fornite o digitare una risposta personalizzata. Quando ci sono piu’ domande, gli utenti possono navigare tra di esse prima di inviare tutte le risposte.


Strumenti personalizzati

Gli strumenti personalizzati ti permettono di definire funzioni che l’LLM puo’ chiamare. Sono definiti nel tuo file di configurazione e possono eseguire codice arbitrario.

Scopri di piu’ su come creare strumenti personalizzati.


Server MCP

I server MCP (Model Context Protocol) permettono di integrare strumenti e servizi esterni. Questo include accesso a database, integrazioni API e servizi di terze parti.

Scopri di piu’ su come configurare i server MCP.


Interni

Internamente, strumenti come grep, glob e list usano ripgrep sotto al cofano. Di default, ripgrep rispetta i pattern di .gitignore, quindi i file e le directory elencati in .gitignore vengono esclusi da ricerche ed elenchi.


Pattern di ignore

Per includere file che normalmente verrebbero ignorati, crea un file .ignore nella root del progetto. Questo file puo’ consentire esplicitamente certi path.

.ignore
!node_modules/
!dist/
!build/

Per esempio, questo file .ignore permette a ripgrep di cercare dentro node_modules/, dist/ e build/ anche se sono elencate in .gitignore.