---
title: Modalità
description: Modalita diverse per casi d'uso diversi.
---

:::caution
Le modalita ora si configurano tramite l'opzione `agent` nella configurazione di opencode. L'opzione
`mode` e ora deprecata. [Scopri di piu](/docs/agents).
:::

Le modalita in opencode ti permettono di personalizzare comportamento, strumenti e prompt per casi d'uso diversi.

Include due modalita integrate: **build** e **plan**. Puoi personalizzarle oppure configurarne di tue tramite la configurazione di opencode.

Puoi passare da una modalita all'altra durante una sessione oppure configurarle nel file di configurazione.

---

## Integrate

opencode include due modalita integrate.

---

### Build

Build e la modalita **predefinita** con tutti gli strumenti abilitati. E la modalita standard per il lavoro di sviluppo quando ti serve accesso completo alle operazioni sui file e ai comandi di sistema.

---

### Plan

Una modalita limitata pensata per pianificazione e analisi. In modalita plan, i seguenti strumenti sono disabilitati per impostazione predefinita:

- `write` - Non puo creare nuovi file
- `edit` - Non puo modificare file esistenti, tranne i file in `.opencode/plans/*.md` per dettagliare il piano
- `patch` - Non puo applicare patch
- `bash` - Non puo eseguire comandi shell

Questa modalita e utile quando vuoi che l'AI analizzi il codice, suggerisca modifiche o crei piani senza apportare modifiche effettive alla codebase.

---

## Cambiare modalità

Puoi cambiare modalita durante una sessione usando il tasto _Tab_. In alternativa, puoi usare il keybind `switch_mode` che hai configurato.

Vedi anche: [Formatter](/docs/formatters) per informazioni sulla configurazione della formattazione del codice.

---

## Configurazione

Puoi personalizzare le modalita integrate o crearne di tue tramite configurazione. Le modalita si possono configurare in due modi:

### Configurazione JSON

Configura le modalita nel file di configurazione `opencode.json`:

```json title="opencode.json"
{
  "$schema": "https://opencode.ai/config.json",
  "mode": {
    "build": {
      "model": "anthropic/claude-sonnet-4-20250514",
      "prompt": "{file:./prompts/build.txt}",
      "tools": {
        "write": true,
        "edit": true,
        "bash": true
      }
    },
    "plan": {
      "model": "anthropic/claude-haiku-4-20250514",
      "tools": {
        "write": false,
        "edit": false,
        "bash": false
      }
    }
  }
}
```

### Configurazione Markdown

Puoi anche definire modalita usando file markdown. Mettili in:

- Globale: `~/.config/opencode/modes/`
- Progetto: `.opencode/modes/`

```markdown title="~/.config/opencode/modes/review.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
  write: false
  edit: false
  bash: false
---

You are in code review mode. Focus on:

- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations

Provide constructive feedback without making direct changes.
```

Il nome del file markdown diventa il nome della modalita (ad es. `review.md` crea una modalita `review`).

Vediamo queste opzioni di configurazione nel dettaglio.

---

### Modello

Usa la configurazione `model` per sovrascrivere il modello predefinito per questa modalita. E utile per usare modelli diversi ottimizzati per task diversi: per esempio, un modello piu veloce per la pianificazione e uno piu capace per l'implementazione.

```json title="opencode.json"
{
  "mode": {
    "plan": {
      "model": "anthropic/claude-haiku-4-20250514"
    }
  }
}
```

---

### Temperatura

Controlla casualita e creativita delle risposte dell'AI con la configurazione `temperature`. Valori piu bassi rendono le risposte piu focalizzate e deterministiche, mentre valori piu alti aumentano creativita e variabilita.

```json title="opencode.json"
{
  "mode": {
    "plan": {
      "temperature": 0.1
    },
    "creative": {
      "temperature": 0.8
    }
  }
}
```

I valori di temperatura di solito vanno da 0.0 a 1.0:

- **0.0-0.2**: risposte molto focalizzate e deterministiche, ideali per analisi del codice e pianificazione
- **0.3-0.5**: risposte bilanciate con un po' di creativita, buone per task di sviluppo generici
- **0.6-1.0**: risposte piu creative e variabili, utili per brainstorming ed esplorazione

```json title="opencode.json"
{
  "mode": {
    "analyze": {
      "temperature": 0.1,
      "prompt": "{file:./prompts/analysis.txt}"
    },
    "build": {
      "temperature": 0.3
    },
    "brainstorm": {
      "temperature": 0.7,
      "prompt": "{file:./prompts/creative.txt}"
    }
  }
}
```

Se non viene specificata alcuna temperatura, opencode usa i default specifici del modello (tipicamente 0 per la maggior parte dei modelli, 0.55 per i modelli Qwen).

---

### Prompt

Specifica un file di prompt di sistema personalizzato per questa modalita con la configurazione `prompt`. Il file dovrebbe contenere istruzioni specifiche per lo scopo della modalita.

```json title="opencode.json"
{
  "mode": {
    "review": {
      "prompt": "{file:./prompts/code-review.txt}"
    }
  }
}
```

Questo percorso e relativo a dove si trova il file di configurazione. Quindi funziona
sia per la configurazione globale di opencode sia per quella specifica del progetto.

---

### Strumenti

Controlla quali strumenti sono disponibili in questa modalita con la configurazione `tools`. Puoi abilitare o disabilitare strumenti specifici impostandoli a `true` o `false`.

```json
{
  "mode": {
    "readonly": {
      "tools": {
        "write": false,
        "edit": false,
        "bash": false,
        "read": true,
        "grep": true,
        "glob": true
      }
    }
  }
}
```

Se non specifichi gli strumenti, tutti gli strumenti sono abilitati per impostazione predefinita.

---

#### Strumenti disponibili

Ecco tutti gli strumenti che possono essere controllati tramite la configurazione della modalita.

| Strumento   | Descrizione                  |
| ----------- | ---------------------------- |
| `bash`      | Esegue comandi shell         |
| `edit`      | Modifica file esistenti      |
| `write`     | Crea nuovi file              |
| `read`      | Legge contenuti dei file     |
| `grep`      | Cerca nei contenuti dei file |
| `glob`      | Trova file per pattern       |
| `patch`     | Applica patch ai file        |
| `todowrite` | Gestisce liste todo          |
| `webfetch`  | Recupera contenuti web       |

---

## Modalità personalizzate

Puoi creare modalita personalizzate aggiungendole alla configurazione. Ecco esempi con entrambi gli approcci:

### Usando la configurazione JSON

```json title="opencode.json" {4-14}
{
  "$schema": "https://opencode.ai/config.json",
  "mode": {
    "docs": {
      "prompt": "{file:./prompts/documentation.txt}",
      "tools": {
        "write": true,
        "edit": true,
        "bash": false,
        "read": true,
        "grep": true,
        "glob": true
      }
    }
  }
}
```

### Usando file markdown

Crea file di modalita in `.opencode/modes/` per modalita specifiche del progetto oppure in `~/.config/opencode/modes/` per modalita globali:

```markdown title=".opencode/modes/debug.md"
---
temperature: 0.1
tools:
  bash: true
  read: true
  grep: true
  write: false
  edit: false
---

You are in debug mode. Your primary goal is to help investigate and diagnose issues.

Focus on:

- Understanding the problem through careful analysis
- Using bash commands to inspect system state
- Reading relevant files and logs
- Searching for patterns and anomalies
- Providing clear explanations of findings

Do not make any changes to files. Only investigate and report.
```

```markdown title="~/.config/opencode/modes/refactor.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.2
tools:
  edit: true
  read: true
  grep: true
  glob: true
---

You are in refactoring mode. Focus on improving code quality without changing functionality.

Priorities:

- Improve code readability and maintainability
- Apply consistent naming conventions
- Reduce code duplication
- Optimize performance where appropriate
- Ensure all tests continue to pass
```

---

### Casi d'uso

Ecco alcuni casi d'uso comuni per le diverse modalita.

- **Modalita Build**: sviluppo completo con tutti gli strumenti abilitati
- **Modalita Plan**: analisi e pianificazione senza apportare modifiche
- **Modalita Review**: code review con accesso in sola lettura piu strumenti di documentazione
- **Modalita Debug**: focalizzata sull'investigazione con strumenti bash e read abilitati
- **Modalita Docs**: scrittura di documentazione con operazioni sui file ma senza comandi di sistema

Potresti anche trovare che modelli diversi funzionano meglio per casi d'uso diversi.
