OpenFlow, çok ajanlı yapay zekâ iş akışları için görsel bir oluşturucudur. Rol kartlarını bir tuvale sürükleyin, bir işlem hattını (planlayıcı → mimar → kodlayıcı) bağlayın, kaydedin ve gerçek paralel ajanlarla çalıştırın.
OpenFlow kendi başına bir projedir. opencode
üzerine inşa edilmiştir ve onun bir çatalı (fork) olarak dağıtılır; başsız motoru
(opencode serve) alttaki ajanları sürer. OpenFlow'un kendi kodunun tamamı
packages/flow içinde yer alır; hiçbir upstream paketi
değiştirilmez, böylece OpenCode motoru güncel kalır ve upstream birleştirmeleri temiz
kalır. Orijinal OpenCode README'i aşağıda yer alır.
Ön koşullar
- Bun 1.3 veya üzeri — OpenFlow'un ihtiyaç duyduğu tek çalışma
zamanı (motoru, derlemeyi ve tuvali çalıştırır). Kontrol için
bun --version. - Git.
Kodu alın
git clone https://github.com/SeeRay11/OpenFlow.git
cd OpenFlow
bun installbun install tüm workspace'i çeker — OpenCode motoru artı OpenFlow'un
packages/flow içindeki kendi kodu. İlk kurulum büyüktür; motorun
yerel (native) bağımlılıklarını indirir. Bir postinstall adımı node-pty'nin
önceden derlenmiş yardımcı ikili dosyalarını çalıştırılabilir olarak işaretler ve
Windows'ta hemen geri döner.
OpenFlow iki port kullanır: motor için 4096, tuval için 5174. Önceki bir
çalıştırma bunları hâlâ tutuyorsa motoru elle başlatmak Error: Unexpected error / ServeError ile başarısız olur — bu dolu bir porttur, bozuk bir
kurulum değil.
bun openflow.ts bunu kendisi halleder: zaten hizmet veren portu yeniden
kullanır, ölü bir çalıştırmanın bağlı bıraktığını serbest bırakır. Eski
süreçleri yalnızca gerçekten taze bir motor istediğinde kendin sonlandır —
örneğin opencode.json düzenledikten sonra, çünkü motor proje yapılandırmasını
açılışta önbelleğe alır ve bir daha okumaz.
Windows (PowerShell)
Get-NetTCPConnection -LocalPort 4096,5174 -State Listen -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty OwningProcess -Unique |
ForEach-Object { taskkill /pid $_ /T /F }macOS / Linux
lsof -t -i :4096 -i :5174 | xargs kill -9Hiçbir şey dinlemiyorken iki komut da güvenlidir; hiçbir süreçle eşleşmezler. Bu portlardaki her süreci sonlandırırlar, bu yüzden orada başka bir şey çalıştırıyorsan önce kontrol et:
Get-NetTCPConnection -LocalPort 4096,5174 -State Listen | Select-Object LocalPort,OwningProcesslsof -i :4096 -i :5174Motor database is locked hatasıyla başarısız oluyorsa, başka bir yerde zaten
başka bir opencode motoru çalışıyordur — OpenFlow'un ikinci bir kopyası ya da
önceki bir başlatıcının geride bıraktığı bir motor. Bütün motorlar opencode veri
dizinindeki tek bir veritabanını paylaşır, bu yüzden ikinci başlayan onu açamaz.
Burada portları boşaltmak işe yaramaz, çünkü o motor portları tutuyor olmayabilir.
Onun yerine ne çalıştırdığına bakarak durdurun:
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 }pkill -f 'openflow\.ts|src/index\.ts serve|packages/flow dev'Ardından OpenFlow'u yeniden başlatın. Bu her seferinde oluyorsa, büyük ihtimalle OpenFlow iki yere klonlanmış ve ikisi de başlatılıyordur — birini tutun.
Tek bir komut her iki süreci de başlatır, her platformda aynı şekilde:
bun openflow.tsMotoru başlatır, yanıt verene kadar bekler, sonra tuvali http://localhost:5174 adresinde açar; Ctrl+C ikisini de durdurur. Ölü bir çalıştırmanın bağlı bıraktığı bir port önce serbest bırakılır, halihazırda hizmet veren bir port ise ikinci kez başlatılmak yerine yeniden kullanılır.
İki ince betik, kendi platformunun başlatıcısını tercih edenler için aynı dosyayı
sarar. Kendilerine ait bir mantıkları yoktur — yalnızca bayrakları openflow.ts'nin
zaten okuduğu ortam değişkenlerine çevirirler.
.\openflow.ps1./openflow.shWindows'ta bu betik başlamayı reddedebilir: PowerShell varsayılan olarak imzasız
yerel betikleri çalıştırmaz, bu yüzden .\openflow.ps1 "openflow.ps1 cannot be
loaded because running scripts is disabled on this system" hatasıyla
başarısız olabilir. Klonlanmak yerine ZIP olarak indirilen bir depo ayrıca
internetten geldiği şeklinde işaretlenir ve bu da onu ikinci bir yoldan engeller.
bun openflow.ts bunların hiçbirine tabi değildir ve ikisini de aşmanın en kısa
yoludur. Yine de bu betiği kullanmak isterseniz kendi hesabınız için yerel betiklere
izin verin ve dosya bir ZIP'ten geldiyse engelini kaldırın:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
Unblock-File .\openflow.ps1Bayraklar isteğe bağlıdır ve üç yüzey de aynı plana çözümlenir:
| PowerShell | shell | ortam | ne yapar |
|---|---|---|---|
-Project <dir> |
-p, --project <dir> |
OPENFLOW_PROJECT |
ajanların okuyup yazdığı depo — gerçek dosyaları düzenlerler |
-ServerPort <n> |
-s, --server-port <n> |
OPENCODE_SERVER_URL |
motor portu, varsayılan 4096 |
-Built |
-b, --built |
OPENFLOW_BUILT=1 |
vite çalıştırmak yerine statik paketi derleyip sun |
-Manage |
-m, --manage |
FLOW_MANAGE_SERVER=1 |
motorun sahipliğini tuvale bırak; böylece yeniden başlatma düğmesi çalışır |
-Help |
-h, --help |
— | bayrak listesini yazdır |
| — | — | OPENFLOW_DRY_RUN=1 |
çözümlenen planı yazdır ve hiçbir şey başlatma |
Ya da iki süreci elle başlatın. Önce sunucu:
bun run --cwd packages/opencode --conditions=browser src/index.ts serve --port 4096Ardından tuval, http://localhost:5174 adresinde:
bun run --cwd packages/flow devYa da derlenmiş halini çalıştırın; bu, aynı uygulamayı vite olmadan sunar:
bun run --cwd packages/flow build && bun run --cwd packages/flow startOpenFlow is an independent fork. It is not affiliated with, sponsored by, or endorsed by the OpenCode team.
Açık kaynaklı yapay zeka kodlama asistanı.
English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt
# YOLO
curl -fsSL https://opencode.ai/install | bash
# Paket yöneticileri
npm i -g opencode-ai@latest # veya bun/pnpm/yarn
scoop install opencode # Windows
choco install opencode # Windows
brew install anomalyco/tap/opencode # macOS ve Linux (önerilir, her zaman güncel)
brew install opencode # macOS ve Linux (resmi brew formülü, daha az güncellenir)
sudo pacman -S opencode # Arch Linux (Stable)
paru -S opencode-bin # Arch Linux (Latest from AUR)
mise use -g opencode # Tüm işletim sistemleri
nix run nixpkgs#opencode # veya en güncel geliştirme dalı için github:anomalyco/opencodeTip
Kurulumdan önce 0.1.x'ten eski sürümleri kaldırın.
OpenCode ayrıca masaüstü uygulaması olarak da mevcuttur. Doğrudan sürüm sayfasından veya opencode.ai/download adresinden indirebilirsiniz.
| Platform | İndirme |
|---|---|
| macOS (Apple Silicon) | opencode-desktop-mac-arm64.dmg |
| macOS (Intel) | opencode-desktop-mac-x64.dmg |
| Windows | opencode-desktop-windows-x64.exe |
| Linux | .deb, .rpm veya AppImage |
# macOS (Homebrew)
brew install --cask opencode-desktop
# Windows (Scoop)
scoop bucket add extras; scoop install extras/opencode-desktopKurulum betiği (install script), kurulum yolu (installation path) için aşağıdaki öncelik sırasını takip eder:
$OPENCODE_INSTALL_DIR- Özel kurulum dizini$XDG_BIN_DIR- XDG Base Directory Specification uyumlu yol$HOME/bin- Standart kullanıcı binary dizini (varsa veya oluşturulabiliyorsa)$HOME/.opencode/bin- Varsayılan yedek konum
# Örnekler
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 | bashOpenCode, Tab tuşuyla aralarında geçiş yapabileceğiniz iki yerleşik (built-in) ajan içerir.
- build - Varsayılan, geliştirme çalışmaları için tam erişimli ajan
- plan - Analiz ve kod keşfi için salt okunur ajan
- Varsayılan olarak dosya düzenlemelerini reddeder
- Bash komutlarını çalıştırmadan önce izin ister
- Tanımadığınız kod tabanlarını keşfetmek veya değişiklikleri planlamak için ideal
Ayrıca, karmaşık aramalar ve çok adımlı görevler için bir genel alt ajan bulunmaktadır.
Bu dahili olarak kullanılır ve mesajlarda @general ile çağrılabilir.
Ajanlar hakkında daha fazla bilgi edinin.
OpenCode'u nasıl yapılandıracağınız hakkında daha fazla bilgi için dokümantasyonumuza göz atın.
OpenCode'a katkıda bulunmak istiyorsanız, lütfen bir pull request göndermeden önce katkıda bulunma dokümanlarımızı okuyun.
OpenCode ile ilgili bir proje üzerinde çalışıyorsanız ve projenizin adının bir parçası olarak "opencode" kullanıyorsanız (örneğin, "opencode-dashboard" veya "opencode-mobile"), lütfen README dosyanıza projenin OpenCode ekibi tarafından geliştirilmediğini ve bizimle hiçbir şekilde bağlantılı olmadığını belirten bir not ekleyin.
