> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Configurazione avanzata

> Configurazioni avanzate di Devin Desktop, tra cui supporto SSH, Dev Containers, WSL, impostazioni del marketplace delle estensioni, zone diff e accesso ai file .gitignore per Cascade.

Tutte le configurazioni avanzate sono disponibili in Devin Settings, accessibile dal menu a discesa in alto a destra → Devin Settings oppure dalla Command Palette (Ctrl/⌘+Shift+P) → Open Devin User Settings.

<div id="enabling-cascade-access-to-gitignore-files">
  # Abilitare l'accesso di Cascade ai file .gitignore
</div>

Per consentire a Cascade di accedere ai file che corrispondono ai pattern nel file .gitignore del progetto, vai in Devin Settings e poi in "Cascade Gitignore Access". Per impostazione predefinita, è disattivato. Per consentire l'accesso, attivalo facendo clic sull'interruttore.

<div id="agent-diff-zones">
  # Zone diff degli agenti
</div>

Quando un agente modifica i file, Devin Desktop mostra le **zone diff** — aree evidenziate inline nell'editor che mostrano esattamente cosa è cambiato, con controlli per accettare o rifiutare ogni hunk. Tutti gli agenti usano le zone diff per impostazione predefinita.

Puoi disattivare le zone diff per gli agenti non Cascade in Devin Settings → User Interface → **Agent Diff Zones**. Quando sono disattivate, le modifiche degli agenti non Cascade vengono applicate direttamente al file e la barra degli strumenti mostra un semplice pulsante per chiudere invece dei controlli di accettazione/rifiuto.

<div id="ssh-support">
  # Supporto SSH
</div>

Il consueto supporto SSH in VSCode è concesso in licenza da Microsoft, quindi ne abbiamo implementato uno nostro appositamente per Devin Desktop. Richiede che [OpenSSH](https://www.openssh.com/) sia installato, ma per il resto ha dipendenze minime e dovrebbe "semplicemente funzionare", come d'abitudine. Puoi accedere a SSH da `Remote-SSH` nella command palette oppure tramite il pulsante `Open a Remote Window` in basso a sinistra.
Questa estensione ha funzionato molto bene per il nostro sviluppo interno, ma ci sono alcune limitazioni e bug noti:

* Al momento supportiamo solo connessioni SSH verso host remoti basati su Linux.

* La consueta estensione Microsoft "Remote - SSH" (e l'estensione [open-remote-ssh](https://github.com/jeanp413/open-remote-ssh)) non funzionerà: non installarla, perché entra in conflitto con il nostro supporto.

* Al momento non offriamo ancora tutte le funzionalità dell'estensione SSH di Microsoft. Per ora supportiamo soprattutto la cosa più importante: la connessione a un host. Se hai richieste di funzionalità, faccelo sapere!

* Per accedere a un devcontainer su un host remoto dopo esserti connesso via SSH, usa la command palette (Ctrl/Cmd+Shift+P) e scegli una delle seguenti opzioni:

<Frame>
  <img src="https://mintcdn.com/cognitionai/WE51TvKjsiyk1ZHl/desktop/assets/windsurf/ssh-devcontainer-options.png?fit=max&auto=format&n=WE51TvKjsiyk1ZHl&q=85&s=4a7de13e7604b6569cec985d92bfa75d" width="394" height="65" data-path="desktop/assets/windsurf/ssh-devcontainer-options.png" />
</Frame>

* L'agent forwarding SSH è attivo per impostazione predefinita e userà la connessione più recente di Devin Desktop a quell'host. Se riscontri problemi, prova a ricaricare la finestra per aggiornare la connessione.

* Su Windows, vedrai alcune finestre di `cmd.exe` quando ti viene richiesta la password. È normale: le elimineremo presto.

* Se riscontri problemi, assicurati innanzitutto di riuscire a collegarti via ssh al tuo host remoto usando il normale `ssh` in un terminale. Se il problema persiste, includi l'output della scheda `Output > Remote SSH (Devin)` in qualsiasi bug report.

<div id="dev-containers">
  # Dev Containers
</div>

Devin Desktop supporta i Development Container su Mac, Windows e Linux, sia per i flussi di lavoro locali sia per quelli remoti (tramite SSH).

Prerequisiti:

* Locale: Docker deve essere installato sul tuo computer e accessibile dal terminale di Devin Desktop.
* Remoto tramite SSH: connettiti a un host remoto usando Devin Desktop Remote-SSH. Docker deve essere installato e accessibile sull'host remoto (dalla shell remota). Il progetto deve includere un file `devcontainer.json` o una configurazione equivalente.

Comandi disponibili (sia nelle finestre locali che in quelle remote):

1. `Dev Containers: Open Folder in Container`
   * Apre un nuovo workspace usando un file `devcontainer.json` specificato.
2. `Dev Containers: Reopen in Container`
   * Riapre il workspace corrente in un nuovo container definito dal file `devcontainer.json`.
3. `Dev Containers: Attach to Running Container`
   * Si collega a un container Docker esistente e vi connette il workspace corrente. Se il container non segue la [specifica dei Development Container](https://containers.dev/implementors/spec/), Devin Desktop proverà a rilevare al meglio l'utente remoto e l'environment.
4. `Dev Containers: Reopen Folder Locally`
   * Quando sei connesso a un development container, si disconnette e riapre il workspace nel filesystem locale.
5. `Dev Containers: Show Devin Desktop Dev Containers Log`
   * Apre l'output del log di Dev Containers per la risoluzione dei problemi.

Questi comandi sono disponibili dalla command palette e vengono visualizzati anche quando fai clic sul pulsante `Open a Remote Window` in basso a sinistra (anche quando sei connesso a un host remoto tramite SSH).

Correlati:

* `Remote Explorer: Focus on Dev Containers (Devin Desktop) View` — apre rapidamente la vista Dev Containers.

<div id="known-limitations">
  ### Limitazioni note
</div>

Devin Desktop attualmente non esegue i [comandi del ciclo di vita della Dev Container Specification](https://containers.dev/implementors/json_reference/#lifecycle-scripts):

* `onCreateCommand`
* `updateContentCommand`
* `postCreateCommand`
* `postStartCommand`
* `postAttachCommand`

Questo vale sia per i comandi del ciclo di vita a livello di container (definiti in `devcontainer.json`) sia per quelli a livello di feature (definiti in `devcontainer-feature.json`). Anche l'installazione dei dotfile non viene eseguita.

**Cosa funziona:**

* Gli script `install.sh` delle feature (vengono eseguiti in fase di build dell'immagine)
* I `mounts` delle feature (i volumi vengono montati nel runtime del container)
* Il campo `entrypoint` delle feature (viene eseguito a ogni avvio del container)
* Tutte le altre operazioni in fase di build dell'immagine (Dockerfile, docker-compose, feature)

<div id="workaround-using-a-feature-entrypoint-for-runtime-setup">
  ### Soluzione alternativa: uso dell'entrypoint di una feature per la configurazione del runtime
</div>

Se stai creando una feature Dev Container che deve eseguire la configurazione all'avvio del container (ad esempio, per configurare file da un volume montato), usa il campo `entrypoint` della feature invece di un comando del ciclo di vita. L'entrypoint viene eseguito a ogni avvio del container dopo che i volumi sono stati montati ed è completamente autonomo: chi utilizza la tua feature non deve modificare il proprio `devcontainer.json`.

Nel tuo `devcontainer-feature.json`, dichiara l'entrypoint:

```json theme={null}
{
    "name": "my-feature",
    "id": "my-feature",
    "version": "1.0.0",
    "mounts": [
        { "type": "volume", "source": "my-volume", "target": "/data/my-dir" }
    ],
    "entrypoint": "/usr/local/share/my-feature/entrypoint.sh"
}
```

Nel tuo `install.sh` (eseguito durante la build dell'immagine), scrivi lo script di entrypoint:

```bash theme={null}
#!/usr/bin/env bash
set -e
mkdir -p /usr/local/share/my-feature
cat > /usr/local/share/my-feature/entrypoint.sh << 'EOF'
#!/bin/sh
# Setup dipendente dal mount (eseguito ad ogni avvio del container, il volume è montato)
if [ -d /data/my-dir ]; then
    mkdir -p /etc/myapp
    cp /data/my-dir/config /etc/myapp/config
fi
exit 0
EOF
chmod +x /usr/local/share/my-feature/entrypoint.sh
```

<Note>
  Lo script di entrypoint dovrebbe eseguire la propria configurazione e terminare normalmente. Non concluderlo con `exec "$@"` — il wrapper dell'entrypoint della CLI si occupa di passare il controllo al comando del container. Mantieni lo script leggero, perché viene eseguito in modo sincrono prima che l'IDE si connetta.
</Note>

<div id="wsl-beta">
  # WSL (Beta)
</div>

A partire dalla versione 1.1.0, Devin Desktop offre supporto beta per Windows Subsystem for Linux. Devi aver già installato e configurato WSL sul tuo computer Windows.

Puoi accedere a WSL facendo clic sul pulsante `Open a Remote Window` in basso a sinistra, oppure selezionando `Remote-WSL` nella command palette.

<div id="extension-marketplace">
  # Marketplace delle estensioni
</div>

Puoi cambiare il marketplace da cui scarichi le estensioni. Per farlo, vai in `Devin Settings` e modifica l'URL del Marketplace nella sezione `General`.

<Frame>
  <img src="https://mintcdn.com/cognitionai/WE51TvKjsiyk1ZHl/desktop/assets/windsurf/marketplace.png?fit=max&auto=format&n=WE51TvKjsiyk1ZHl&q=85&s=9815a3e8bfc880187c2fc01126c8264b" width="3420" height="2130" data-path="desktop/assets/windsurf/marketplace.png" />
</Frame>

<div id="devin-desktop-plugins">
  ## Plugin di Devin Desktop
</div>

<AccordionGroup>
  <Accordion title="Devin Pyright">
    Cerca "Devin Pyright" oppure incolla `@id:codeium.windsurfPyright` nella barra di ricerca delle estensioni.
  </Accordion>
</AccordionGroup>
