index.mdx 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. ---
  2. title: Introduzione
  3. description: Inizia con OpenCode.
  4. ---
  5. import { Tabs, TabItem } from "@astrojs/starlight/components"
  6. import config from "../../../../config.mjs"
  7. export const console = config.console
  8. [**OpenCode**](/) e un agente di programmazione AI open source. E disponibile come interfaccia per terminale, app desktop o estensione per IDE.
  9. ![OpenCode TUI con il tema opencode](../../../assets/lander/screenshot.png)
  10. Iniziamo.
  11. ---
  12. #### Prerequisiti
  13. Per usare OpenCode nel terminale, ti serve:
  14. 1. Un emulatore di terminale moderno, come:
  15. - [WezTerm](https://wezterm.org), cross-platform
  16. - [Alacritty](https://alacritty.org), cross-platform
  17. - [Ghostty](https://ghostty.org), Linux and macOS
  18. - [Kitty](https://sw.kovidgoyal.net/kitty/), Linux and macOS
  19. 2. Le chiavi API dei provider LLM che vuoi usare.
  20. ---
  21. ## Installa
  22. Il modo piu semplice per installare OpenCode e usare lo script di installazione.
  23. ```bash
  24. curl -fsSL https://opencode.ai/install | bash
  25. ```
  26. Puoi anche installarlo con i seguenti comandi:
  27. - **Con Node.js**
  28. <Tabs>
  29. <TabItem label="npm">
  30. ```bash
  31. npm install -g opencode-ai
  32. ```
  33. </TabItem>
  34. <TabItem label="Bun">
  35. ```bash
  36. bun install -g opencode-ai
  37. ```
  38. </TabItem>
  39. <TabItem label="pnpm">
  40. ```bash
  41. pnpm install -g opencode-ai
  42. ```
  43. </TabItem>
  44. <TabItem label="Yarn">
  45. ```bash
  46. yarn global add opencode-ai
  47. ```
  48. </TabItem>
  49. </Tabs>
  50. - **Con Homebrew su macOS e Linux**
  51. ```bash
  52. brew install anomalyco/tap/opencode
  53. ```
  54. > Ti consigliamo di usare il tap di OpenCode per avere le release piu aggiornate. La formula ufficiale `brew install opencode` e mantenuta dal team Homebrew e viene aggiornata meno spesso.
  55. - **Con Paru su Arch Linux**
  56. ```bash
  57. sudo pacman -S opencode # Arch Linux (Stable)
  58. paru -S opencode-bin # Arch Linux (Latest from AUR)
  59. ```
  60. #### Windows
  61. :::tip[Consigliato: usa WSL]
  62. Per la migliore esperienza su Windows, ti consigliamo di usare [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Offre prestazioni migliori e piena compatibilita con le funzionalita di OpenCode.
  63. :::
  64. - **Con Chocolatey**
  65. ```bash
  66. choco install opencode
  67. ```
  68. - **Con Scoop**
  69. ```bash
  70. scoop install opencode
  71. ```
  72. - **Con NPM**
  73. ```bash
  74. npm install -g opencode-ai
  75. ```
  76. - **Con Mise**
  77. ```bash
  78. mise use -g github:anomalyco/opencode
  79. ```
  80. - **Con Docker**
  81. ```bash
  82. docker run -it --rm ghcr.io/anomalyco/opencode
  83. ```
  84. Il supporto per installare OpenCode su Windows usando Bun e attualmente in lavorazione.
  85. Puoi anche scaricare il binario dalle [Releases](https://github.com/anomalyco/opencode/releases).
  86. ---
  87. ## Configura
  88. Con OpenCode puoi usare qualsiasi provider LLM configurando le relative chiavi API.
  89. Se e la prima volta che usi provider LLM, ti consigliamo [OpenCode Zen](/docs/zen).
  90. E una lista curata di modelli testati e verificati dal team di OpenCode.
  91. 1. Esegui il comando `/connect` nella TUI, seleziona opencode e vai su [opencode.ai/auth](https://opencode.ai/auth).
  92. ```txt
  93. /connect
  94. ```
  95. 2. Accedi, aggiungi i dettagli di fatturazione e copia la tua chiave API.
  96. 3. Incolla la tua chiave API.
  97. ```txt
  98. ┌ API key
  99. │
  100. │
  101. └ enter
  102. ```
  103. In alternativa, puoi selezionare uno degli altri provider. [Scopri di piu](/docs/providers#directory).
  104. ---
  105. ## Inizializza
  106. Ora che hai configurato un provider, puoi spostarti in un progetto su cui vuoi lavorare.
  107. ```bash
  108. cd /path/to/project
  109. ```
  110. E avviare OpenCode.
  111. ```bash
  112. opencode
  113. ```
  114. Poi inizializza OpenCode per il progetto eseguendo il comando seguente.
  115. ```bash frame="none"
  116. /init
  117. ```
  118. Questo fara analizzare il progetto a OpenCode e creera un file `AGENTS.md` nella root del progetto.
  119. :::tip
  120. Dovresti committare il file `AGENTS.md` del progetto su Git.
  121. :::
  122. Questo aiuta OpenCode a capire la struttura del progetto e gli stili di codice usati.
  123. ---
  124. ## Utilizzo
  125. Ora sei pronto a usare OpenCode sul tuo progetto. Sentiti libero di chiedergli qualsiasi cosa!
  126. Se e la prima volta che usi un agente di programmazione AI, ecco alcuni esempi che possono aiutare.
  127. ---
  128. ### Fai domande
  129. Puoi chiedere a OpenCode di spiegarti la codebase.
  130. :::tip
  131. Usa il tasto `@` per fare una ricerca fuzzy dei file nel progetto.
  132. :::
  133. ```txt frame="none" "@packages/functions/src/api/index.ts"
  134. How is authentication handled in @packages/functions/src/api/index.ts
  135. ```
  136. Questo e utile se c'e una parte della codebase su cui non hai lavorato.
  137. ---
  138. ### Aggiungi funzionalità
  139. Puoi chiedere a OpenCode di aggiungere nuove funzionalita al progetto. Pero ti consigliamo prima di chiedergli di creare un piano.
  140. 1. **Crea un piano**
  141. OpenCode ha una _Plan mode_ che disabilita la possibilita di fare modifiche e si limita a suggerire _come_ implementera la funzionalita.
  142. Passaci con il tasto **Tab**. Vedrai un indicatore nell'angolo in basso a destra.
  143. ```bash frame="none" title="Switch to Plan mode"
  144. <TAB>
  145. ```
  146. Ora descriviamo cosa vogliamo che faccia.
  147. ```txt frame="none"
  148. When a user deletes a note, we'd like to flag it as deleted in the database.
  149. Then create a screen that shows all the recently deleted notes.
  150. From this screen, the user can undelete a note or permanently delete it.
  151. ```
  152. Devi dare a OpenCode abbastanza dettagli per capire cosa vuoi. Aiuta parlargli come se stessi parlando a uno sviluppatore junior del tuo team.
  153. :::tip
  154. Dai a OpenCode molto contesto ed esempi per aiutarlo a capire cosa vuoi.
  155. :::
  156. 2. **Itera sul piano**
  157. Una volta che ti da un piano, puoi dargli feedback o aggiungere piu dettagli.
  158. ```txt frame="none"
  159. We'd like to design this new screen using a design I've used before.
  160. [Image #1] Take a look at this image and use it as a reference.
  161. ```
  162. :::tip
  163. Trascina e rilascia le immagini nel terminale per aggiungerle al prompt.
  164. :::
  165. OpenCode puo analizzare le immagini che gli dai e aggiungerle al prompt. Puoi farlo trascinando e rilasciando un'immagine nel terminale.
  166. 3. **Implementa la funzionalita**
  167. Quando ti senti a tuo agio con il piano, torna in _Build mode_ premendo di nuovo il tasto **Tab**.
  168. ```bash frame="none"
  169. <TAB>
  170. ```
  171. E chiedigli di fare le modifiche.
  172. ```bash frame="none"
  173. Sounds good! Go ahead and make the changes.
  174. ```
  175. ---
  176. ### Apporta modifiche
  177. Per modifiche piu semplici, puoi chiedere a OpenCode di implementarle direttamente senza dover prima rivedere un piano.
  178. ```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
  179. We need to add authentication to the /settings route. Take a look at how this is
  180. handled in the /notes route in @packages/functions/src/notes.ts and implement
  181. the same logic in @packages/functions/src/settings.ts
  182. ```
  183. Assicurati di fornire abbastanza dettagli, cosi OpenCode fa le modifiche giuste.
  184. ---
  185. ### Annulla modifiche
  186. Mettiamo che tu chieda a OpenCode di fare alcune modifiche.
  187. ```txt frame="none" "@packages/functions/src/api/index.ts"
  188. Can you refactor the function in @packages/functions/src/api/index.ts?
  189. ```
  190. Ma ti accorgi che non e quello che volevi. Puoi **annullare** le modifiche usando il comando `/undo`.
  191. ```bash frame="none"
  192. /undo
  193. ```
  194. OpenCode ora ripristina le modifiche e mostra di nuovo il tuo messaggio originale.
  195. ```txt frame="none" "@packages/functions/src/api/index.ts"
  196. Can you refactor the function in @packages/functions/src/api/index.ts?
  197. ```
  198. Da qui puoi modificare il prompt e chiedere a OpenCode di riprovare.
  199. :::tip
  200. Puoi eseguire `/undo` piu volte per annullare piu modifiche.
  201. :::
  202. Oppure puoi **rifare** le modifiche usando il comando `/redo`.
  203. ```bash frame="none"
  204. /redo
  205. ```
  206. ---
  207. ## Condividi
  208. Le conversazioni che fai con OpenCode possono essere [condivise con il tuo team](/docs/share).
  209. ```bash frame="none"
  210. /share
  211. ```
  212. Questo creera un link alla conversazione corrente e lo copiera negli appunti.
  213. :::note
  214. Le conversazioni non vengono condivise per impostazione predefinita.
  215. :::
  216. Ecco un'[esempio di conversazione](https://opencode.ai/s/4XP1fce5) con OpenCode.
  217. ---
  218. ## Personalizza
  219. E tutto qui! Ora sei un pro nell'usare OpenCode.
  220. Per renderlo davvero tuo, ti consigliamo di [scegliere un tema](/docs/themes), [personalizzare i tasti rapidi](/docs/keybinds), [configurare i formatter](/docs/formatters), [creare comandi personalizzati](/docs/commands) o sperimentare con la [configurazione di OpenCode](/docs/config).