# OpenFlow **Το OpenFlow είναι ένας οπτικός δημιουργός ροών εργασίας AI πολλαπλών πρακτόρων.** Σύρετε κάρτες ρόλων σε έναν καμβά, συνδέστε ένα pipeline (σχεδιαστής → αρχιτέκτονας → προγραμματιστής), αποθηκεύστε το και εκτελέστε το με πραγματικούς παράλληλους πράκτορες. Το OpenFlow είναι δικό του έργο. Είναι χτισμένο πάνω στο [opencode](https://github.com/anomalyco/opencode) — και διανέμεται ως fork του — του οποίου η headless μηχανή (`opencode serve`) οδηγεί τους πράκτορες από κάτω. Όλος ο δικός κώδικας του OpenFlow βρίσκεται στο [`packages/flow`](packages/flow); κανένα upstream πακέτο δεν τροποποιείται, οπότε η μηχανή OpenCode παραμένει ενημερωμένη και τα upstream merges παραμένουν καθαρά. Το αρχικό README του OpenCode ακολουθεί παρακάτω. ### Εγκατάσταση **Προαπαιτούμενα** - [Bun](https://bun.sh) 1.3 ή νεότερο — το μοναδικό runtime που χρειάζεται το OpenFlow (τρέχει τη μηχανή, το build και τον καμβά). Έλεγχος με `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). Η πρώτη εγκατάσταση είναι μεγάλη· κατεβάζει τις native εξαρτήσεις της μηχανής. Ένα βήμα `postinstall` σημειώνει ως εκτελέσιμα τα προμεταγλωττισμένα βοηθητικά binaries του `node-pty` και στα Windows επιστρέφει αμέσως. ### Σταματήστε ό,τι ήδη τρέχει Το OpenFlow χρησιμοποιεί δύο θύρες: **4096** για τη μηχανή και **5174** για τον καμβά. Αν μια προηγούμενη εκτέλεση τις κρατά ακόμη, η χειροκίνητη εκκίνηση της μηχανής αποτυγχάνει με `Error: Unexpected error` / `ServeError` — πρόκειται για δεσμευμένη θύρα, όχι για χαλασμένη εγκατάσταση. Το `bun openflow.ts` το χειρίζεται μόνο του: επαναχρησιμοποιεί μια θύρα που ήδη εξυπηρετεί και ελευθερώνει εκείνη που άφησε δεσμευμένη μια νεκρή εκτέλεση. Τερματίστε μόνοι σας τις παλιές διεργασίες μόνο όταν θέλετε πραγματικά καθαρή μηχανή — για παράδειγμα μετά από αλλαγή στο `opencode.json`, καθώς η μηχανή διαβάζει τη ρύθμιση του project στην εκκίνηση και δεν την ξαναδιαβάζει. **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 σταματά και τα δύο. Μια θύρα που άφησε δεσμευμένη μια νεκρή εκτέλεση απελευθερώνεται πρώτα, και μια θύρα που ήδη εξυπηρετεί επαναχρησιμοποιείται αντί να ξεκινήσει δεύτερη φορά. Δύο ελαφριά scripts τυλίγουν το ίδιο αρχείο για όσους προτιμούν τον launcher της πλατφόρμας τους. Δεν έχουν δική τους λογική — απλώς μεταφράζουν τα flags στις μεταβλητές περιβάλλοντος που το `openflow.ts` ήδη διαβάζει. ```powershell .\openflow.ps1 ``` ```bash ./openflow.sh ``` **Στα Windows το script μπορεί να αρνηθεί να ξεκινήσει:** το PowerShell από προεπιλογή δεν εκτελεί ανυπόγραφα τοπικά scripts, οπότε το `.\openflow.ps1` μπορεί να αποτύχει με *"openflow.ps1 cannot be loaded because running scripts is disabled on this system"*. Ένα repo που κατέβηκε ως ZIP αντί να κλωνοποιηθεί σημειώνεται επιπλέον ως προερχόμενο από το διαδίκτυο, κάτι που το μπλοκάρει με δεύτερο τρόπο. Το `bun openflow.ts` δεν υπόκειται σε κανένα από τα δύο και είναι ο συντομότερος δρόμος να τα προσπεράσετε. Για να χρησιμοποιήσετε παρ' όλα αυτά το script, επιτρέψτε τα τοπικά scripts για τον δικό σας λογαριασμό και ξεμπλοκάρετε το αρχείο αν προήλθε από ZIP: ```powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned Unblock-File .\openflow.ps1 ``` Τα flags είναι προαιρετικά, και οι τρεις επιφάνειες καταλήγουν στο ίδιο σχέδιο: | PowerShell | shell | περιβάλλον | τι κάνει | |---|---|---|---| | `-Project ` | `-p`, `--project ` | `OPENFLOW_PROJECT` | το repo που διαβάζουν και γράφουν οι πράκτορες — **επεξεργάζονται πραγματικά αρχεία** | | `-ServerPort ` | `-s`, `--server-port ` | `OPENCODE_SERVER_URL` | θύρα της μηχανής, προεπιλογή 4096 | | `-Built` | `-b`, `--built` | `OPENFLOW_BUILT=1` | χτίσε και σέρβιρε το στατικό bundle αντί να τρέξει το vite | | `-Manage` | `-m`, `--manage` | `FLOW_MANAGE_SERVER=1` | άσε τον καμβά να έχει τη μηχανή, ώστε να λειτουργεί το κουμπί επανεκκίνησής του | | `-Help` | `-h`, `--help` | — | τύπωσε τη λίστα των flags | | — | — | `OPENFLOW_DRY_RUN=1` | τύπωσε το σχέδιο που προέκυψε και μην ξεκινήσεις τίποτα | Ή ξεκινήστε τις δύο διεργασίες με το χέρι. Πρώτα ο server: ```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.

Ο πράκτορας τεχνητής νοημοσύνης ανοικτού κώδικα για προγραμματισμό.

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 (επίσημος τύπος brew, λιγότερο συχνές ενημερώσεις) sudo pacman -S opencode # Arch Linux (Σταθερό) paru -S opencode-bin # Arch Linux (Τελευταία έκδοση από AUR) mise use -g opencode # Οποιοδήποτε λειτουργικό σύστημα nix run nixpkgs#opencode # ή github:anomalyco/opencode με βάση την πιο πρόσφατη αλλαγή από το dev branch ``` > [!TIP] > Αφαίρεσε παλαιότερες εκδόσεις από τη 0.1.x πριν από την εγκατάσταση. ### Εφαρμογή Desktop (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 ``` #### Κατάλογος Εγκατάστασης Το script εγκατάστασης τηρεί την ακόλουθη σειρά προτεραιότητας για τη διαδρομή εγκατάστασης: 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` στα μηνύματα. Μάθετε περισσότερα για τους [πράκτορες](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)