329 lines
8.6 KiB
Plaintext
329 lines
8.6 KiB
Plaintext
---
|
|
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.
|