Salta ai contenuti

Strumenti

Gestisci gli strumenti che un LLM può utilizzare.

Gli strumenti permettono al LLM di eseguire azioni nella tua codebase. OpenCode viene fornito con una serie di strumenti integrati, ma puoi estenderlo con strumenti personalizzati o server MCP.

Per impostazione predefinita, tutti gli strumenti sono abilitati e non richiedono l’autorizzazione per essere eseguiti. Puoi controllare il comportamento degli strumenti tramite autorizzazioni.


Configura

Usa il campo permission per controllare il comportamento degli strumenti. Puoi consentire, negare o richiedere l’approvazione per ogni strumento.

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

Puoi anche utilizzare i caratteri jolly per controllare piu strumenti contemporaneamente. Ad esempio, per richiedere l’approvazione per tutti gli strumenti di un server MCP:

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

Scopri di piu sulla configurazione delle autorizzazioni.


Integrati

Ecco tutti gli strumenti integrati disponibili in OpenCode.


bash

Esegui comandi shell nel tuo ambiente di progetto.

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

Questo strumento consente al LLM di eseguire comandi di terminale come npm install, git status o qualsiasi altro comando shell.


edit

Modifica i file esistenti utilizzando sostituzioni di stringhe esatte.

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

Questo strumento esegue modifiche precise ai file sostituendo corrispondenze di testo esatte. È il metodo principale con cui il LLM modifica il codice.


write

Crea nuovi file o sovrascrive quelli esistenti.

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

Usa questo per consentire al LLM di creare nuovi file. Sovrascriverà i file esistenti se sono già presenti.


read

Leggi il contenuto dei file dalla tua codebase.

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

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


grep

Cerca contenuti nei file utilizzando espressioni regolari.

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

Ricerca rapida del contenuto nella tua codebase. Supporta la sintassi regex completa e il filtraggio dei pattern di file.


glob

Trova file tramite corrispondenza di pattern.

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

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


list

Elenca file e directory in un percorso specificato.

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

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


lsp (sperimentale

Interagisci con i server LSP configurati per ottenere funzionalità di intelligenza del codice come definizioni, riferimenti, informazioni al passaggio del mouse e gerarchia delle chiamate.

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 Server LSP.


patch

Applica patch ai file.

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

Questo strumento applica file di patch alla tua codebase. Utile per applicare diff e patch da varie fonti.


skill

Carica un’abilita](/docs/skills) (un file SKILL.md) e restituisce il suo contenuto nella conversazione.

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

todowrite

Gestisci le liste di attività durante le sessioni di codifica.

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

Crea e aggiorna liste di attività per tenere traccia dei progressi durante operazioni complesse. L’LLM lo usa per organizzare attività a piu passaggi.


todoread

Leggi le liste di attività esistenti.

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

Legge lo stato corrente della lista di attività. Utilizzato dall’LLM per tenere traccia delle attività in sospeso o completate.


webfetch

Recupera contenuti web.

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

Consente al LLM di recuperare e leggere pagine web. Utile per cercare documentazione o ricercare risorse online.


question

Fai domande all’utente durante l’esecuzione.

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

Questo strumento consente al LLM di fare domande all’utente durante un’attività. È utile per:

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

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


Strumenti personalizzati

Gli strumenti personalizzati ti permettono di definire le tue funzioni che l’LLM può chiamare. Questi sono definiti nel tuo file di configurazione e possono eseguire codice arbitrario.

Scopri di piu sulla creazione di strumenti personalizzati.


Server MCP

I server MCP (Model Context Protocol) ti permettono di integrare strumenti e servizi esterni. Ciò include l’accesso ai database, le integrazioni API e i servizi di terze parti.

Scopri di piu sulla configurazione dei server MCP.


Interni

Internamente, gli strumenti come grep, glob e list utilizzano ripgrep. Per impostazione predefinita, ripgrep rispetta i pattern .gitignore, il che significa che i file e le directory elencati nel tuo .gitignore saranno esclusi dalle ricerche e dagli elenchi.


Pattern di ignorazione

Per includere file che normalmente verrebbero ignorati, crea un file .ignore nella radice del tuo progetto. Questo file può consentire esplicitamente determinati percorsi.

.ignore
!node_modules/
!dist/
!build/

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