# OpenFlow **OpenFlow to wizualny kreator wieloagentowych przepływów pracy AI.** Przeciągaj karty ról na płótno, połącz potok (planista → architekt → koder), zapisz go i uruchom z prawdziwymi równoległymi agentami. OpenFlow jest osobnym projektem. Jest zbudowany na [opencode](https://github.com/anomalyco/opencode) — i dostarczany jako jego fork — którego bezgłowy silnik (`opencode serve`) napędza agentów pod spodem. Cały własny kod OpenFlow znajduje się w [`packages/flow`](packages/flow); żaden pakiet upstream nie jest modyfikowany, dzięki czemu silnik OpenCode pozostaje aktualny, a scalanie z upstream pozostaje czyste. Oryginalny README OpenCode znajduje się poniżej. ### Instalacja **Wymagania wstępne** - [Bun](https://bun.sh) 1.3 lub nowszy — jedyne środowisko uruchomieniowe, którego OpenFlow potrzebuje (uruchamia silnik, build i płótno). Sprawdź przez `bun --version`. - [Git](https://git-scm.com). **Pobierz kod** ```bash git clone https://github.com/SeeRay11/OpenFlow.git cd OpenFlow bun install ``` `bun install` pobiera cały workspace — silnik OpenCode plus własny kod OpenFlow w [`packages/flow`](packages/flow). Pierwsza instalacja jest duża; pobiera natywne zależności silnika. Krok `postinstall` oznacza prekompilowane binaria pomocnicze `node-pty` jako wykonywalne, a na Windowsie kończy się natychmiast. ### Zatrzymywanie tego, co już działa OpenFlow zajmuje dwa porty: **4096** dla silnika i **5174** dla płótna. Jeśli trzyma je poprzednie uruchomienie, ręczny start silnika kończy się `Error: Unexpected error` / `ServeError` — to zajęty port, a nie zepsuta instalacja. `bun openflow.ts` robi to sam: ponownie używa portu, który już odpowiada, i zwalnia ten, który zostawiło martwe uruchomienie. Ubijaj stare procesy ręcznie tylko wtedy, gdy naprawdę chcesz świeży silnik — na przykład po zmianie `opencode.json`, bo silnik zapisuje konfigurację projektu w pamięci przy starcie i nigdy jej nie czyta ponownie. **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 ``` Obie komendy są bezpieczne, gdy nic nie nasłuchuje — po prostu nie trafią w żaden proces. Ubijają dowolny proces na tych portach, więc sprawdź najpierw, czy nie działa tam coś innego: ```powershell Get-NetTCPConnection -LocalPort 4096,5174 -State Listen | Select-Object LocalPort,OwningProcess ``` ```bash lsof -i :4096 -i :5174 ``` **Jeśli silnik kończy się błędem `database is locked`,** gdzieś już działa inny silnik opencode — druga kopia OpenFlow albo silnik pozostawiony przez wcześniejszy program startowy. Wszystkie silniki dzielą jedną bazę danych w katalogu danych opencode, więc drugi z nich nie zdoła jej otworzyć. Zwolnienie portów nic tu nie daje, bo tamten silnik wcale nie musi ich zajmować. Zatrzymaj go po tym, co uruchamia: ```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' ``` Potem uruchom OpenFlow ponownie. Jeśli zdarza się to za każdym razem, zapewne masz OpenFlow sklonowany w dwóch miejscach i oba są uruchamiane — zostaw jedno. ### Uruchamianie Jedno polecenie uruchamia oba procesy, tak samo na każdej platformie: ```bash bun openflow.ts ``` Uruchamia silnik, czeka, aż zacznie odpowiadać, a następnie otwiera płótno pod adresem http://localhost:5174; Ctrl+C zatrzymuje oba. Port pozostawiony zajęty przez martwe uruchomienie jest najpierw zwalniany, a port, który już obsługuje ruch, jest ponownie wykorzystywany zamiast uruchamiany po raz drugi. Dwa lekkie skrypty opakowują ten sam plik dla osób, które wolą launcher własnej platformy. Nie zawierają własnej logiki — tłumaczą jedynie flagi na zmienne środowiskowe, które `openflow.ts` i tak odczytuje. ```powershell .\openflow.ps1 ``` ```bash ./openflow.sh ``` **W systemie Windows ten skrypt może odmówić uruchomienia:** PowerShell domyślnie nie uruchamia niepodpisanych skryptów lokalnych, więc `.\openflow.ps1` może zakończyć się błędem *"openflow.ps1 cannot be loaded because running scripts is disabled on this system"*. Repozytorium pobrane jako ZIP zamiast sklonowane jest dodatkowo oznaczone jako pochodzące z internetu, co blokuje je po raz drugi. `bun openflow.ts` nie podlega żadnemu z tych ograniczeń i jest najkrótszą drogą, by ominąć oba. Aby mimo to użyć tego skryptu, zezwól na skrypty lokalne dla własnego konta i odblokuj plik, jeśli pochodzi z archiwum ZIP: ```powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned Unblock-File .\openflow.ps1 ``` Flagi są opcjonalne, a wszystkie trzy powierzchnie prowadzą do tego samego planu: | PowerShell | shell | zmienna środowiskowa | co robi | |---|---|---|---| | `-Project ` | `-p`, `--project ` | `OPENFLOW_PROJECT` | repozytorium, które agenci czytają i zapisują — **edytują prawdziwe pliki** | | `-ServerPort ` | `-s`, `--server-port ` | `OPENCODE_SERVER_URL` | port silnika, domyślnie 4096 | | `-Built` | `-b`, `--built` | `OPENFLOW_BUILT=1` | zbuduj i serwuj statyczny pakiet zamiast uruchamiać vite | | `-Manage` | `-m`, `--manage` | `FLOW_MANAGE_SERVER=1` | pozwól, aby to płótno zarządzało silnikiem, dzięki czemu działa jego przycisk restartu | | `-Help` | `-h`, `--help` | — | wypisz listę flag | | — | — | `OPENFLOW_DRY_RUN=1` | wypisz ustalony plan i nic nie uruchamiaj | Albo uruchom oba procesy ręcznie. Najpierw serwer: ```bash bun run --cwd packages/opencode --conditions=browser src/index.ts serve --port 4096 ``` Następnie płótno, pod adresem http://localhost:5174: ```bash bun run --cwd packages/flow dev ``` Albo uruchom wersję zbudowaną, która serwuje tę samą aplikację 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.

Otwartoźródłowy agent kodujący AI.

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) --- ### Instalacja ```bash # YOLO curl -fsSL https://opencode.ai/install | bash # Menedżery pakietów npm i -g opencode-ai@latest # albo bun/pnpm/yarn scoop install opencode # Windows choco install opencode # Windows brew install anomalyco/tap/opencode # macOS i Linux (polecane, zawsze aktualne) brew install opencode # macOS i Linux (oficjalna formuła brew, rzadziej aktualizowana) sudo pacman -S opencode # Arch Linux (Stable) paru -S opencode-bin # Arch Linux (Latest from AUR) mise use -g opencode # dowolny system nix run nixpkgs#opencode # lub github:anomalyco/opencode dla najnowszej gałęzi dev ``` > [!TIP] > Przed instalacją usuń wersje starsze niż 0.1.x. ### Aplikacja desktopowa (BETA) OpenCode jest także dostępny jako aplikacja desktopowa. Pobierz ją bezpośrednio ze strony [releases](https://github.com/anomalyco/opencode/releases) lub z [opencode.ai/download](https://opencode.ai/download). | Platforma | Pobieranie | | --------------------- | ---------------------------------- | | macOS (Apple Silicon) | `opencode-desktop-mac-arm64.dmg` | | macOS (Intel) | `opencode-desktop-mac-x64.dmg` | | Windows | `opencode-desktop-windows-x64.exe` | | Linux | `.deb`, `.rpm` lub AppImage | ```bash # macOS (Homebrew) brew install --cask opencode-desktop # Windows (Scoop) scoop bucket add extras; scoop install extras/opencode-desktop ``` #### Katalog instalacji Skrypt instalacyjny stosuje następujący priorytet wyboru ścieżki instalacji: 1. `$OPENCODE_INSTALL_DIR` - Własny katalog instalacji 2. `$XDG_BIN_DIR` - Ścieżka zgodna ze specyfikacją XDG Base Directory 3. `$HOME/bin` - Standardowy katalog binarny użytkownika (jeśli istnieje lub można go utworzyć) 4. `$HOME/.opencode/bin` - Domyślny fallback ```bash # Przykłady 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 ``` ### Agents OpenCode zawiera dwóch wbudowanych agentów, między którymi możesz przełączać się klawiszem `Tab`. - **build** - Domyślny agent z pełnym dostępem do pracy developerskiej - **plan** - Agent tylko do odczytu do analizy i eksploracji kodu - Domyślnie odmawia edycji plików - Pyta o zgodę przed uruchomieniem komend bash - Idealny do poznawania nieznanych baz kodu lub planowania zmian Dodatkowo jest subagent **general** do złożonych wyszukiwań i wieloetapowych zadań. Jest używany wewnętrznie i można go wywołać w wiadomościach przez `@general`. Dowiedz się więcej o [agents](https://opencode.ai/docs/agents). ### Dokumentacja Więcej informacji o konfiguracji OpenCode znajdziesz w [**dokumentacji**](https://opencode.ai/docs). ### Współtworzenie Jeśli chcesz współtworzyć OpenCode, przeczytaj [contributing docs](./CONTRIBUTING.md) przed wysłaniem pull requesta. ### Budowanie na OpenCode Jeśli pracujesz nad projektem związanym z OpenCode i używasz "opencode" jako części nazwy (na przykład "opencode-dashboard" lub "opencode-mobile"), dodaj proszę notatkę do swojego README, aby wyjaśnić, że projekt nie jest tworzony przez zespół OpenCode i nie jest z nami w żaden sposób powiązany. --- **Dołącz do naszej społeczności** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode)