# OpenFlow **OpenFlow — це візуальний конструктор багатоагентних робочих процесів ШІ.** Перетягуйте картки ролей на полотно, з'єднуйте конвеєр (планувальник → архітектор → кодер), зберігайте його та запускайте зі справжніми паралельними агентами. OpenFlow — самостійний проєкт. Він побудований на [opencode](https://github.com/anomalyco/opencode) і постачається як його форк; його headless-рушій (`opencode serve`) керує агентами під капотом. Увесь власний код OpenFlow міститься в [`packages/flow`](packages/flow); жоден upstream-пакет не змінюється, тож рушій OpenCode лишається актуальним, а злиття з upstream — чистими. Оригінальний README OpenCode наведено нижче. ### Встановлення **Передумови** - [Bun](https://bun.sh) 1.3 або новіший — єдине середовище виконання, потрібне OpenFlow (воно запускає рушій, збірку та полотно). Перевірити: `bun --version`. - [Git](https://git-scm.com). **Отримати код** ```bash git clone https://github.com/SeeRay11/OpenFlow.git cd OpenFlow bun install ``` `bun install` підтягує весь workspace — рушій OpenCode плюс власний код OpenFlow у [`packages/flow`](packages/flow). Перше встановлення велике; воно завантажує нативні залежності рушія. Крок `postinstall` позначає готові допоміжні бінарники `node-pty` як виконувані, а на Windows завершується одразу. ### Зупинити те, що вже працює OpenFlow займає два порти: **4096** для рушія та **5174** для полотна. Якщо їх досі тримає попередній запуск, ручний старт рушія завершується `Error: Unexpected error` / `ServeError` — це зайнятий порт, а не зламане встановлення. `bun openflow.ts` робить це сам: він повторно використовує порт, який уже відповідає, і звільняє той, що лишився зайнятим після мертвого запуску. Убивати старі процеси вручну варто лише тоді, коли потрібен справді свіжий рушій — наприклад, після зміни `opencode.json`, бо рушій кешує конфігурацію проєкту під час старту й більше її не перечитує. **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 ``` Обидві команди безпечні, коли ніщо не слухає: вони просто не знайдуть процесу. Вони вбивають будь-який процес на цих портах, тож спершу перевірте, чи не запущено там щось інше: ```powershell Get-NetTCPConnection -LocalPort 4096,5174 -State Listen | Select-Object LocalPort,OwningProcess ``` ```bash lsof -i :4096 -i :5174 ``` **Якщо рушій завершується помилкою `database is locked`,** десь уже працює інший рушій opencode — друга копія OpenFlow або рушій, який залишив попередній запуск. Усі рушії використовують одну базу даних у каталозі даних opencode, тож другий запущений не може її відкрити. Звільнення портів тут не допомагає, бо той рушій не обов'язково їх тримає. Зупиніть його за тим, що він виконує: ```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' ``` Потім запустіть OpenFlow знову. Якщо це стається щоразу, найімовірніше OpenFlow склоновано у двох місцях і запускаються обидва — залиште один. ### Запуск Одна команда запускає обидва процеси — однаково на будь-якій платформі: ```bash bun openflow.ts ``` Вона запускає рушій, чекає, доки він відповість, а потім відкриває полотно за адресою http://localhost:5174; Ctrl+C зупиняє обидва. Порт, що лишився зайнятим після мертвого запуску, спершу звільняється, а порт, який уже обслуговує запити, повторно використовується, а не запускається вдруге. Два тонкі скрипти загортають той самий файл — для тих, кому звичніший лаунчер власної платформи. Власної логіки вони не мають: вони лише перетворюють прапорці на змінні середовища, які `openflow.ts` і так читає. ```powershell .\openflow.ps1 ``` ```bash ./openflow.sh ``` **У Windows цей скрипт може відмовитися запускатися:** PowerShell типово не виконує непідписані локальні скрипти, тож `.\openflow.ps1` може завершитися помилкою *"openflow.ps1 cannot be loaded because running scripts is disabled on this system"*. Репозиторій, завантажений як ZIP, а не клонований, до того ж позначено як отриманий з інтернету, що блокує його вдруге. `bun openflow.ts` не підпадає під жодне з цих обмежень і є найкоротшим шляхом повз обидва. Щоб усе ж скористатися цим скриптом, дозвольте локальні скрипти для власного облікового запису та зніміть блокування з файлу, якщо він надійшов із ZIP: ```powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned Unblock-File .\openflow.ps1 ``` Прапорці необов'язкові, і всі три поверхні зводяться до одного плану: | PowerShell | shell | змінна середовища | що робить | |---|---|---|---| | `-Project ` | `-p`, `--project ` | `OPENFLOW_PROJECT` | репозиторій, який агенти читають і в який пишуть — **вони правлять справжні файли** | | `-ServerPort ` | `-s`, `--server-port ` | `OPENCODE_SERVER_URL` | порт рушія, типово 4096 | | `-Built` | `-b`, `--built` | `OPENFLOW_BUILT=1` | зібрати й обслуговувати статичний бандл замість запуску vite | | `-Manage` | `-m`, `--manage` | `FLOW_MANAGE_SERVER=1` | віддати рушій у володіння полотну, завдяки чому запрацює його кнопка перезапуску | | `-Help` | `-h`, `--help` | — | вивести список прапорців | | — | — | `OPENFLOW_DRY_RUN=1` | вивести визначений план і нічого не запускати | Або запустіть обидва процеси вручну. Спочатку сервер: ```bash bun run --cwd packages/opencode --conditions=browser src/index.ts serve --port 4096 ``` Потім полотно, за адресою http://localhost:5174: ```bash bun run --cwd packages/flow dev ``` Або запустіть зібрану версію, яка обслуговує той самий застосунок без 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.

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) --- ### Встановлення ```bash # YOLO curl -fsSL https://opencode.ai/install | bash # Менеджери пакетів npm i -g opencode-ai@latest # або bun/pnpm/yarn scoop install opencode # Windows choco install opencode # Windows brew install anomalyco/tap/opencode # macOS і Linux (рекомендовано, завжди актуально) brew install opencode # macOS і Linux (офіційна формула Homebrew, оновлюється рідше) sudo pacman -S opencode # Arch Linux (Stable) paru -S opencode-bin # Arch Linux (Latest from AUR) mise use -g opencode # Будь-яка ОС nix run nixpkgs#opencode # або github:anomalyco/opencode для найновішої dev-гілки ``` > [!TIP] > Перед встановленням видаліть версії старші за 0.1.x. ### Десктопний застосунок (BETA) OpenCode також доступний як десктопний застосунок. Завантажуйте напряму зі [сторінки релізів](https://github.com/anomalyco/opencode/releases) або [opencode.ai/download](https://opencode.ai/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` або AppImage | ```bash # macOS (Homebrew) brew install --cask opencode-desktop # Windows (Scoop) scoop bucket add extras; scoop install extras/opencode-desktop ``` #### Каталог встановлення Скрипт встановлення дотримується такого порядку пріоритету для шляху встановлення: 1. `$OPENCODE_INSTALL_DIR` - Користувацький каталог встановлення 2. `$XDG_BIN_DIR` - Шлях, сумісний зі специфікацією XDG Base Directory 3. `$HOME/bin` - Стандартний каталог користувацьких бінарників (якщо існує або його можна створити) 4. `$HOME/.opencode/bin` - Резервний варіант за замовчуванням ```bash # Приклади 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 ``` ### Агенти OpenCode містить два вбудовані агенти, між якими можна перемикатися клавішею `Tab`. - **build** - Агент за замовчуванням із повним доступом для завдань розробки - **plan** - Агент лише для читання для аналізу та дослідження коду - За замовчуванням забороняє редагування файлів - Запитує дозвіл перед запуском bash-команд - Ідеально підходить для дослідження незнайомих кодових баз або планування змін Також доступний допоміжний агент **general** для складного пошуку та багатокрокових завдань. Він використовується всередині системи й може бути викликаний у повідомленнях через `@general`. Дізнайтеся більше про [agents](https://opencode.ai/docs/agents). ### Документація Щоб дізнатися більше про налаштування OpenCode, [**перейдіть до нашої документації**](https://opencode.ai/docs). ### Внесок Якщо ви хочете зробити внесок в OpenCode, будь ласка, прочитайте нашу [документацію для контриб'юторів](./CONTRIBUTING.md) перед надсиланням pull request. ### Проєкти на базі OpenCode Якщо ви працюєте над проєктом, пов'язаним з OpenCode, і використовуєте "opencode" у назві, наприклад "opencode-dashboard" або "opencode-mobile", додайте примітку до свого README. Уточніть, що цей проєкт не створений командою OpenCode і жодним чином не афілійований із нами. --- **Приєднуйтеся до нашої спільноти** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode)