Skip to content

Latest commit

 

History

History
295 lines (225 loc) · 12.2 KB

File metadata and controls

295 lines (225 loc) · 12.2 KB

OpenFlow

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.

Kurulum

Ö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 install

bun 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.

Zaten çalışanları durdurma

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 -9

Hiç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,OwningProcess
lsof -i :4096 -i :5174

Motor 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.

Çalıştırma

Tek bir komut her iki süreci de başlatır, her platformda aynı şekilde:

bun openflow.ts

Motoru 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.sh

Windows'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.ps1

Bayraklar 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 4096

Ardından tuval, http://localhost:5174 adresinde:

bun run --cwd packages/flow dev

Ya da derlenmiş halini çalıştırın; bu, aynı uygulamayı vite olmadan sunar:

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.

Açık kaynaklı yapay zeka kodlama asistanı.

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


Kurulum

# 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/opencode

Tip

Kurulumdan önce 0.1.x'ten eski sürümleri kaldırın.

Masaüstü Uygulaması (BETA)

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-desktop

Kurulum Dizini (Installation Directory)

Kurulum betiği (install script), kurulum yolu (installation path) için aşağıdaki öncelik sırasını takip eder:

  1. $OPENCODE_INSTALL_DIR - Özel kurulum dizini
  2. $XDG_BIN_DIR - XDG Base Directory Specification uyumlu yol
  3. $HOME/bin - Standart kullanıcı binary dizini (varsa veya oluşturulabiliyorsa)
  4. $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 | bash

Ajanlar

OpenCode, 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.

Dokümantasyon

OpenCode'u nasıl yapılandıracağınız hakkında daha fazla bilgi için dokümantasyonumuza göz atın.

Katkıda Bulunma

OpenCode'a katkıda bulunmak istiyorsanız, lütfen bir pull request göndermeden önce katkıda bulunma dokümanlarımızı okuyun.

OpenCode Üzerine Geliştirme

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.


Topluluğumuza katılın Discord | X.com