# OpenFlow **OpenFlow เป็นเครื่องมือสร้างเวิร์กโฟลว์ AI แบบหลายเอเจนต์ในเชิงภาพ** ลากการ์ดบทบาทลงบน ผืนผ้าใบ เชื่อมต่อไปป์ไลน์ (ผู้วางแผน → สถาปนิก → ผู้เขียนโค้ด) บันทึกไว้ แล้วรันด้วยเอเจนต์ ที่ทำงานขนานกันจริง OpenFlow เป็นโปรเจกต์ของตัวเอง มันสร้างขึ้นบน [opencode](https://github.com/anomalyco/opencode) — และเผยแพร่เป็นฟอร์ก (fork) ของมัน — โดยเอนจินแบบไม่มีส่วนติดต่อ (`opencode serve`) เป็นตัวขับเคลื่อนเอเจนต์อยู่เบื้องหลัง โค้ด ของ OpenFlow เองทั้งหมดอยู่ใน [`packages/flow`](packages/flow) ไม่มีการแก้ไขแพ็กเกจ upstream ใด ๆ ดังนั้นเอนจิน OpenCode จึงทันสมัยอยู่เสมอ และการ merge จาก upstream ก็ สะอาด README ต้นฉบับของ OpenCode อยู่ด้านล่างนี้ ### การติดตั้ง **สิ่งที่ต้องมีก่อน** - [Bun](https://bun.sh) 1.3 ขึ้นไป — รันไทม์เดียวที่ OpenFlow ต้องใช้ (มันรันเอนจิน การ build และผืนผ้าใบ) ตรวจสอบด้วย `bun --version` - [Git](https://git-scm.com) **รับโค้ด** ```bash git clone https://github.com/SeeRay11/OpenFlow.git cd OpenFlow bun install ``` `bun install` จะดึงเวิร์กสเปซทั้งหมด — เอนจิน OpenCode พร้อมกับโค้ดของ OpenFlow เองใน [`packages/flow`](packages/flow) การติดตั้งครั้งแรกมีขนาดใหญ่ มันจะดาวน์โหลดดีเพนเดนซี เนทีฟของเอนจิน ส่วนขั้นตอน `postinstall` เพียงแค่ทำเครื่องหมายให้ไบนารีตัวช่วยของ `node-pty` ที่ build มาแล้วสามารถรันได้ และบน 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 แทนการ clone ยังถูกทำเครื่องหมายว่ามาจากอินเทอร์เน็ต ซึ่งบล็อกมันอีกทางหนึ่งด้วย `bun openflow.ts` ไม่ติดข้อจำกัดทั้งสองข้อนี้ และเป็นทางที่สั้นที่สุดในการข้ามทั้งคู่ หากยัง ต้องการใช้สคริปต์ตัวนี้ ให้อนุญาตสคริปต์ในเครื่องสำหรับบัญชีของคุณเอง และปลดบล็อกไฟล์หากมันมาจาก ZIP: ```powershell Set-ExecutionPolicy -Scope CurrentUser RemoteSigned Unblock-File .\openflow.ps1 ``` แฟล็กเป็นตัวเลือกเสริม และทั้งสามช่องทางให้ผลลัพธ์เป็นแผนเดียวกัน: | PowerShell | shell | ตัวแปรสภาพแวดล้อม | ทำอะไร | |---|---|---|---| | `-Project
OpenFlow is an independent fork. It is not affiliated with, sponsored by, or endorsed by the OpenCode team.
เอเจนต์การเขียนโค้ดด้วย AI แบบโอเพนซอร์ส
English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt
[](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 formula อย่างเป็นทางการ อัปเดตน้อยกว่า) 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 สำหรับสาขาพัฒนาล่าสุด ``` > [!TIP] > ลบเวอร์ชันที่เก่ากว่า 0.1.x ก่อนติดตั้ง ### แอปพลิเคชันเดสก์ท็อป (เบต้า) 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 Specification 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)