# OpenFlow **OpenFlow je vizuelni graditelj višeagentskih AI radnih tokova.** Prevucite kartice uloga na platno, povežite pipeline (planer → arhitekta → koder), sačuvajte ga i pokrenite sa stvarnim paralelnim agentima. OpenFlow je zaseban projekat. Izgrađen je na [opencode](https://github.com/anomalyco/opencode) — i isporučuje se kao njegov fork — čiji headless motor (`opencode serve`) pokreće agente ispod haube. Sav vlastiti kod OpenFlow-a nalazi se u [`packages/flow`](packages/flow); nijedan upstream paket se ne mijenja, pa OpenCode motor ostaje ažuran, a upstream spajanja ostaju čista. Originalni OpenCode README slijedi ispod. ### Instalacija **Preduslovi** - [Bun](https://bun.sh) 1.3 ili noviji — jedini runtime koji je OpenFlow-u potreban (pokreće motor, build i platno). Provjerite sa `bun --version`. - [Git](https://git-scm.com). **Preuzmite kod** ```bash git clone https://github.com/SeeRay11/OpenFlow.git cd OpenFlow bun install ``` `bun install` preuzima cijeli workspace — OpenCode motor plus vlastiti kod OpenFlow-a u [`packages/flow`](packages/flow). Prva instalacija je velika; preuzima nativne zavisnosti motora. Korak `postinstall` označava unaprijed izgrađene pomoćne binarne datoteke `node-pty` kao izvršne, a na Windowsu odmah završava. ### Zaustavljanje onoga što već radi OpenFlow koristi dva porta: **4096** za motor i **5174** za platno. Ako ih prethodno pokretanje još drži, ručno pokretanje motora pada uz `Error: Unexpected error` / `ServeError` — to je zauzet port, a ne pokvarena instalacija. `bun openflow.ts` to rješava sam: ponovo koristi port koji već poslužuje i oslobađa onaj koji je mrtvo pokretanje ostavilo zauzetim. Stare procese gasi sam samo kada želiš zaista svjež motor — na primjer nakon izmjene `opencode.json`, jer motor konfiguraciju projekta učita pri pokretanju i više je ne čita. **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 ``` Obje naredbe su sigurne kada ništa ne sluša — jednostavno ne pronađu nijedan proces. Ubijaju bilo koji proces na tim portovima, pa provjeri prvo ako tamo pokrećeš nešto drugo: ```powershell Get-NetTCPConnection -LocalPort 4096,5174 -State Listen | Select-Object LocalPort,OwningProcess ``` ```bash lsof -i :4096 -i :5174 ``` **Ako motor padne uz `database is locked`,** negdje već radi drugi opencode motor — druga kopija OpenFlowa ili motor koji je ostavio raniji pokretač. Svi motori dijele jednu bazu podataka u vašem opencode direktoriju s podacima, pa je drugi ne može otvoriti. Oslobađanje portova ovdje ne pomaže, jer taj motor ih ne mora držati. Zaustavite ga prema onome što izvršava: ```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' ``` Zatim ponovo pokrenite OpenFlow. Ako se to dešava svaki put, najvjerovatnije imate OpenFlow kloniran na dva mjesta i oba se pokreću — zadržite jedan. ### Pokretanje Jedna komanda pokreće oba procesa, jednako na svakoj platformi: ```bash bun openflow.ts ``` Pokreće motor, čeka dok ne odgovori, a zatim otvara platno na http://localhost:5174; Ctrl+C zaustavlja oba. Port koji je mrtvo pokretanje ostavilo zauzetim prvo se oslobađa, a port koji već poslužuje ponovo se koristi umjesto da se pokrene drugi put. Dvije tanke skripte omotavaju istu tu datoteku za one koji radije koriste pokretač svoje platforme. Nemaju vlastitu logiku — samo prevode zastavice u varijable okruženja koje `openflow.ts` ionako čita. ```powershell .\openflow.ps1 ``` ```bash ./openflow.sh ``` **Na Windowsu ta skripta može odbiti da se pokrene:** PowerShell podrazumijevano ne pokreće nepotpisane lokalne skripte, pa `.\openflow.ps1` može pasti uz *"openflow.ps1 cannot be loaded because running scripts is disabled on this system"*. Repozitorij preuzet kao ZIP umjesto kloniran dodatno je označen kao da dolazi s interneta, što ga blokira i na drugi način. `bun openflow.ts` ne podliježe nijednom od toga i najkraći je put pored oba. Ako ipak želite koristiti tu skriptu, dozvolite lokalne skripte za vlastiti nalog i deblokirajte datoteku ako je došla iz ZIP-a: ```powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned Unblock-File .\openflow.ps1 ``` Zastavice su opcionalne, a sve tri površine vode do istog plana: | PowerShell | shell | okruženje | šta radi | |---|---|---|---| | `-Project ` | `-p`, `--project ` | `OPENFLOW_PROJECT` | repozitorij koji agenti čitaju i u koji pišu — **uređuju stvarne datoteke** | | `-ServerPort ` | `-s`, `--server-port ` | `OPENCODE_SERVER_URL` | port motora, podrazumijevano 4096 | | `-Built` | `-b`, `--built` | `OPENFLOW_BUILT=1` | izgradi i posluži statički bundle umjesto pokretanja vite | | `-Manage` | `-m`, `--manage` | `FLOW_MANAGE_SERVER=1` | pusti da platno upravlja motorom, čime njegovo dugme za restart proradi | | `-Help` | `-h`, `--help` | — | ispiši spisak zastavica | | — | — | `OPENFLOW_DRY_RUN=1` | ispiši razriješeni plan i ne pokreći ništa | Ili pokrenite dva procesa ručno. Prvo server: ```bash bun run --cwd packages/opencode --conditions=browser src/index.ts serve --port 4096 ``` Zatim platno, na http://localhost:5174: ```bash bun run --cwd packages/flow dev ``` Ili ga pokrenite izgrađenog, što poslužuje istu aplikaciju bez vite: ```bash bun run --cwd packages/flow build && bun run --cwd packages/flow start ``` ---

OpenCode logo

OpenFlow is an independent fork. It is not affiliated with, sponsored by, or endorsed by the OpenCode team.

OpenCode je open source AI agent za programiranje.

Discord npm Build status

English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt

[![OpenCode Terminal UI](packages/web/src/assets/lander/screenshot.png)](https://opencode.ai) --- ### Instalacija ```bash # YOLO curl -fsSL https://opencode.ai/install | bash # Package manageri npm i -g opencode-ai@latest # ili bun/pnpm/yarn scoop install opencode # Windows choco install opencode # Windows brew install anomalyco/tap/opencode # macOS i Linux (preporučeno, uvijek ažurno) brew install opencode # macOS i Linux (zvanična brew formula, rjeđe se ažurira) sudo pacman -S opencode # Arch Linux (Stable) paru -S opencode-bin # Arch Linux (Latest from AUR) mise use -g opencode # Bilo koji OS nix run nixpkgs#opencode # ili github:anomalyco/opencode za najnoviji dev branch ``` > [!TIP] > Ukloni verzije starije od 0.1.x prije instalacije. ### Desktop aplikacija (BETA) OpenCode je dostupan i kao desktop aplikacija. Preuzmi je direktno sa [stranice izdanja](https://github.com/anomalyco/opencode/releases) ili sa [opencode.ai/download](https://opencode.ai/download). | Platforma | Preuzimanje | | --------------------- | ---------------------------------- | | macOS (Apple Silicon) | `opencode-desktop-mac-arm64.dmg` | | macOS (Intel) | `opencode-desktop-mac-x64.dmg` | | Windows | `opencode-desktop-windows-x64.exe` | | Linux | `.deb`, `.rpm`, ili AppImage | ```bash # macOS (Homebrew) brew install --cask opencode-desktop # Windows (Scoop) scoop bucket add extras; scoop install extras/opencode-desktop ``` #### Instalacijski direktorij Instalacijska skripta koristi sljedeći redoslijed prioriteta za putanju instalacije: 1. `$OPENCODE_INSTALL_DIR` - Prilagođeni instalacijski direktorij 2. `$XDG_BIN_DIR` - Putanja usklađena sa XDG Base Directory specifikacijom 3. `$HOME/bin` - Standardni korisnički bin direktorij (ako postoji ili se može kreirati) 4. `$HOME/.opencode/bin` - Podrazumijevana rezervna lokacija ```bash # Primjeri 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 uključuje dva ugrađena agenta između kojih možeš prebacivati tasterom `Tab`. - **build** - Podrazumijevani agent sa punim pristupom za razvoj - **plan** - Agent samo za čitanje za analizu i istraživanje koda - Podrazumijevano zabranjuje izmjene datoteka - Traži dozvolu prije pokretanja bash komandi - Idealan za istraživanje nepoznatih codebase-ova ili planiranje izmjena Uključen je i **general** pod-agent za složene pretrage i višekoračne zadatke. Koristi se interno i može se pozvati pomoću `@general` u porukama. Saznaj više o [agentima](https://opencode.ai/docs/agents). ### Dokumentacija Za više informacija o konfiguraciji OpenCode-a, [**pogledaj dokumentaciju**](https://opencode.ai/docs). ### Doprinosi Ako želiš doprinositi OpenCode-u, pročitaj [upute za doprinošenje](./CONTRIBUTING.md) prije slanja pull requesta. ### Gradnja na OpenCode-u Ako radiš na projektu koji je povezan s OpenCode-om i koristi "opencode" kao dio naziva, npr. "opencode-dashboard" ili "opencode-mobile", dodaj napomenu u svoj README da projekat nije napravio OpenCode tim i da nije povezan s nama. --- **Pridruži se našoj zajednici** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode)