# OpenFlow **OpenFlow è un costruttore visuale di workflow di IA multi-agente.** Trascina le schede dei ruoli su un canvas, collega una pipeline (planner → architetto → coder), salvala ed eseguila con veri agenti paralleli. OpenFlow è un progetto a sé. È costruito su [opencode](https://github.com/anomalyco/opencode) — e distribuito come suo fork — il cui motore headless (`opencode serve`) guida gli agenti sotto il cofano. Tutto il codice proprio di OpenFlow risiede in [`packages/flow`](packages/flow); nessun pacchetto upstream viene modificato, così il motore OpenCode resta aggiornato e i merge da upstream restano puliti. Il README OpenCode originale segue qui sotto. ### Installazione **Prerequisiti** - [Bun](https://bun.sh) 1.3 o successivo — l'unico runtime di cui OpenFlow ha bisogno (esegue il motore, la build e il canvas). Usa `bun --version` per verificare. - [Git](https://git-scm.com). **Ottenere il codice** ```bash git clone https://github.com/SeeRay11/OpenFlow.git cd OpenFlow bun install ``` `bun install` scarica l'intero workspace — il motore OpenCode più il codice proprio di OpenFlow in [`packages/flow`](packages/flow). La prima installazione è grande; scarica le dipendenze native del motore. Un passo `postinstall` rende eseguibili i binari di supporto precompilati di `node-pty` e su Windows termina subito. ### Fermare ciò che è già in esecuzione OpenFlow usa due porte: **4096** per il motore e **5174** per il canvas. Se un'esecuzione precedente le tiene ancora occupate, avviare il motore a mano fallisce con `Error: Unexpected error` / `ServeError`: è una porta già occupata, non un'installazione rotta. `bun openflow.ts` se ne occupa da solo: riusa una porta che sta già servendo e libera quella lasciata occupata da un'esecuzione morta. Termina i vecchi processi a mano solo quando vuoi un motore davvero nuovo — per esempio dopo aver modificato `opencode.json`, dato che il motore mette in cache la configurazione del progetto all'avvio e non la rilegge più. **Windows (PowerShell)** ```powershell Get-NetTCPConnection -LocalPort 4096,5174 -State Listen -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess -Unique | ForEach-Object { taskkill /pid $_ /T /F } ``` **macOS / Linux** ```bash lsof -t -i :4096 -i :5174 | xargs kill -9 ``` Entrambi i comandi sono sicuri quando non c'è nulla in ascolto: semplicemente non trovano alcun processo. Terminano qualsiasi processo su quelle porte, quindi controlla prima se ci fai girare altro: ```powershell Get-NetTCPConnection -LocalPort 4096,5174 -State Listen | Select-Object LocalPort,OwningProcess ``` ```bash lsof -i :4096 -i :5174 ``` **Se il motore fallisce con `database is locked`,** un altro motore opencode è già in esecuzione da qualche parte — una seconda copia di OpenFlow, o un motore lasciato da un avvio precedente. Tutti i motori condividono un'unica base di dati nella tua cartella dati di opencode, quindi il secondo ad avviarsi non riesce ad aprirla. Liberare le porte qui non serve, perché quel motore potrebbe non occuparle. Fermalo in base a ciò che sta eseguendo: ```powershell Get-CimInstance Win32_Process -Filter "Name='bun.exe'" | Where-Object { $_.CommandLine -match 'openflow\.ts|src/index\.ts serve|packages/flow dev' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force } ``` ```bash pkill -f 'openflow\.ts|src/index\.ts serve|packages/flow dev' ``` Poi riavvia OpenFlow. Se succede ogni volta, con ogni probabilità hai OpenFlow clonato in due posti e vengono avviati entrambi — tienine uno solo. ### Eseguire Un solo comando avvia entrambi i processi, allo stesso modo su ogni piattaforma: ```bash bun openflow.ts ``` Avvia il motore, attende finché non risponde, poi apre il canvas su http://localhost:5174; Ctrl+C li ferma entrambi. Una porta lasciata occupata da un'esecuzione morta viene prima liberata, e una porta che sta già servendo viene riutilizzata invece di essere avviata due volte. Due script leggeri avvolgono lo stesso file per chi preferisce il launcher della propria piattaforma. Non contengono logica propria: traducono i flag nelle variabili d'ambiente che `openflow.ts` già legge. ```powershell .\openflow.ps1 ``` ```bash ./openflow.sh ``` **Su Windows lo script può rifiutarsi di partire:** per impostazione predefinita PowerShell non esegue script locali non firmati, quindi `.\openflow.ps1` può fallire con *"openflow.ps1 cannot be loaded because running scripts is disabled on this system"*. Un repository scaricato come ZIP anziché clonato viene inoltre marcato come proveniente da internet, il che lo blocca una seconda volta. `bun openflow.ts` non è soggetto a nessuno dei due ed è la via più breve per aggirarli entrambi. Per usare comunque lo script, consenti gli script locali per il tuo account e sblocca il file se proviene da uno ZIP: ```powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned Unblock-File .\openflow.ps1 ``` I flag sono opzionali, e le tre superfici portano allo stesso piano: | PowerShell | shell | ambiente | che cosa fa | |---|---|---|---| | `-Project
OpenFlow is an independent fork. It is not affiliated with, sponsored by, or endorsed by the OpenCode team.
L’agente di coding AI open source.
English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt
[](https://opencode.ai) --- ### Installazione ```bash # YOLO curl -fsSL https://opencode.ai/install | bash # Package manager npm i -g opencode-ai@latest # oppure bun/pnpm/yarn scoop install opencode # Windows choco install opencode # Windows brew install anomalyco/tap/opencode # macOS e Linux (consigliato, sempre aggiornato) brew install opencode # macOS e Linux (formula brew ufficiale, aggiornata meno spesso) sudo pacman -S opencode # Arch Linux (Stable) paru -S opencode-bin # Arch Linux (Latest from AUR) mise use -g opencode # Qualsiasi OS nix run nixpkgs#opencode # oppure github:anomalyco/opencode per l’ultima branch di sviluppo ``` > [!TIP] > Rimuovi le versioni precedenti alla 0.1.x prima di installare. ### App Desktop (BETA) OpenCode è disponibile anche come applicazione desktop. Puoi scaricarla direttamente dalla [pagina delle release](https://github.com/anomalyco/opencode/releases) oppure da [opencode.ai/download](https://opencode.ai/download). | Piattaforma | Download | | --------------------- | ---------------------------------- | | macOS (Apple Silicon) | `opencode-desktop-mac-arm64.dmg` | | macOS (Intel) | `opencode-desktop-mac-x64.dmg` | | Windows | `opencode-desktop-windows-x64.exe` | | Linux | `.deb`, `.rpm`, oppure AppImage | ```bash # macOS (Homebrew) brew install --cask opencode-desktop # Windows (Scoop) scoop bucket add extras; scoop install extras/opencode-desktop ``` #### Directory di installazione Lo script di installazione rispetta il seguente ordine di priorità per il percorso di installazione: 1. `$OPENCODE_INSTALL_DIR` – Directory di installazione personalizzata 2. `$XDG_BIN_DIR` – Percorso conforme alla XDG Base Directory Specification 3. `$HOME/bin` – Directory binaria standard dell’utente (se esiste o può essere creata) 4. `$HOME/.opencode/bin` – Fallback predefinito ```bash # Esempi OPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/install | bash XDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bash ``` ### Agenti OpenCode include due agenti integrati tra cui puoi passare usando il tasto `Tab`. - **build** – Predefinito, agente con accesso completo per il lavoro di sviluppo - **plan** – Agente in sola lettura per analisi ed esplorazione del codice - Nega le modifiche ai file per impostazione predefinita - Chiede il permesso prima di eseguire comandi bash - Ideale per esplorare codebase sconosciute o pianificare modifiche È inoltre incluso un sotto-agente **general** per ricerche complesse e attività multi-step. Viene utilizzato internamente e può essere invocato usando `@general` nei messaggi. Scopri di più sugli [agenti](https://opencode.ai/docs/agents). ### Documentazione Per maggiori informazioni su come configurare OpenCode, [**consulta la nostra documentazione**](https://opencode.ai/docs). ### Contribuire Se sei interessato a contribuire a OpenCode, leggi la nostra [guida alla contribuzione](./CONTRIBUTING.md) prima di inviare una pull request. ### Costruire su OpenCode Se stai lavorando a un progetto correlato a OpenCode e che utilizza “opencode” come parte del nome (ad esempio “opencode-dashboard” o “opencode-mobile”), aggiungi una nota nel tuo README per chiarire che non è sviluppato dal team OpenCode e che non è affiliato in alcun modo con noi. --- **Unisciti alla nostra community** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode)