คำสั่ง opencode serve รันเซิร์ฟเวอร์ HTTP ที่ไม่มีหัวซึ่งเปิดเผยตำแหน่งข้อมูล OpenAPI ที่ไคลเอนต์ opencode สามารถใช้ได้
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
| Flag | คำอธิบาย | ค่าเริ่มต้น |
|---|
--port | พอร์ตที่จะฟัง | 4096 |
--hostname | ชื่อโฮสต์ที่จะฟัง | 127.0.0.1 |
--mdns | เปิดใช้งานการค้นพบ mDNS | false |
--mdns-domain | ชื่อโดเมนที่กำหนดเองสำหรับบริการ mDNS | opencode.local |
--cors | ต้นกำเนิดเบราว์เซอร์เพิ่มเติมที่จะอนุญาต | [] |
--cors สามารถส่งผ่านได้หลายครั้ง:
opencode serve --cors http://localhost:5173 --cors https://app.example.com
ตั้งค่า OPENCODE_SERVER_PASSWORD เพื่อปกป้องเซิร์ฟเวอร์ด้วย HTTP การตรวจสอบสิทธิ์ขั้นพื้นฐาน ชื่อผู้ใช้มีค่าเริ่มต้นเป็น opencode หรือตั้งค่า OPENCODE_SERVER_USERNAME เพื่อแทนที่ชื่อผู้ใช้ สิ่งนี้ใช้ได้กับทั้ง opencode serve และ opencode web
OPENCODE_SERVER_PASSWORD=your-password opencode serve
เมื่อคุณรัน opencode มันจะเริ่มต้น TUI และเซิร์ฟเวอร์ โดยที่ TUI คือ
ลูกค้าที่พูดคุยกับเซิร์ฟเวอร์ เซิร์ฟเวอร์เปิดเผยข้อมูลจำเพาะของ OpenAPI 3.1
จุดสิ้นสุด ตำแหน่งข้อมูลนี้ยังใช้เพื่อสร้าง SDK
สถาปัตยกรรมนี้ช่วยให้ opencode รองรับไคลเอนต์หลายตัว และช่วยให้คุณสามารถโต้ตอบกับ opencode โดยทางโปรแกรมได้
คุณสามารถเรียกใช้ opencode serve เพื่อเริ่มเซิร์ฟเวอร์แบบสแตนด์อโลน ถ้าคุณมี
opencode TUI ทำงาน opencode serve จะเริ่มเซิร์ฟเวอร์ใหม่
เมื่อคุณเริ่ม TUI มันจะสุ่มกำหนดพอร์ตและชื่อโฮสต์ คุณสามารถผ่าน --hostname และ --port ธง แทนได้ จากนั้นใช้สิ่งนี้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์
ตำแหน่งข้อมูล /tui สามารถใช้เพื่อขับเคลื่อน TUI ผ่านเซิร์ฟเวอร์ ตัวอย่างเช่น คุณสามารถกรอกข้อมูลล่วงหน้าหรือเรียกใช้พร้อมท์ได้ การตั้งค่านี้ถูกใช้โดยปลั๊กอิน OpenCode IDE
เซิร์ฟเวอร์เผยแพร่ข้อมูลจำเพาะ OpenAPI 3.1 ที่สามารถดูได้ที่:
http://<hostname>:<port>/doc
ตัวอย่างเช่น http://localhost:4096/doc ใช้ข้อมูลจำเพาะเพื่อสร้างไคลเอ็นต์หรือตรวจสอบคำขอและประเภทการตอบกลับ หรือดูใน Swagger explorer
เซิร์ฟเวอร์ opencode เปิดเผย API ต่อไปนี้
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /global/health | รับสถานะและเวอร์ชันของเซิร์ฟเวอร์ | { healthy: true, version: string } |
GET | /global/event | รับกิจกรรมระดับโลก (SSE สตรีม) | สตรีมกิจกรรม |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /project | แสดงรายการโครงการทั้งหมด | Project[] |
GET | /project/current | รับโครงการปัจจุบัน | Project |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /path | รับเส้นทางปัจจุบัน | Path |
GET | /vcs | รับข้อมูล VCS สำหรับโครงการปัจจุบัน | VcsInfo |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
POST | /instance/dispose | กำจัดอินสแตนซ์ปัจจุบัน | boolean |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /config | รับข้อมูลการกำหนดค่า | กำหนดค่า |
PATCH | /config | อัปเดตการกำหนดค่า | กำหนดค่า |
GET | /config/providers | ผู้ให้บริการรายชื่อและโมเดลเริ่มต้น | { providers: ผู้ให้บริการ[], default: { [key: string]: string } } |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /provider | รายชื่อผู้ให้บริการทั้งหมด | { all: ผู้ให้บริการ[], default: {...}, connected: string[] } |
GET | /provider/auth | รับวิธีการตรวจสอบความถูกต้องของผู้ให้บริการ | { [providerID: string]: ProviderAuthMethod[] } |
POST | /provider/{id}/oauth/authorize | ให้สิทธิ์ผู้ให้บริการโดยใช้ OAuth | การอนุญาตของผู้ให้บริการ |
POST | /provider/{id}/oauth/callback | จัดการการโทรกลับ OAuth สำหรับผู้ให้บริการ | boolean |
| Method | เส้นทาง | คำอธิบาย | หมายเหตุ |
|---|
GET | /session | แสดงรายการเซสชันทั้งหมด | ส่งคืน เซสชัน[] |
POST | /session | สร้างเซสชันใหม่ | body: { parentID?, title? } ส่งคืน เซสชัน |
GET | /session/status | รับสถานะเซสชันสำหรับเซสชันทั้งหมด | ส่งคืน { [sessionID: string]: SessionStatus } |
GET | /session/:id | รับรายละเอียดเซสชั่น | ส่งคืน เซสชัน |
DELETE | /session/:id | ลบเซสชันและข้อมูลทั้งหมด | ส่งคืน boolean |
PATCH | /session/:id | อัปเดตคุณสมบัติเซสชัน | body: { title? } ส่งคืน เซสชัน |
GET | /session/:id/children | รับเซสชันย่อยของเซสชัน | ส่งคืน เซสชัน[] |
GET | /session/:id/todo | รับรายการสิ่งที่ต้องทำสำหรับเซสชัน | ส่งคืน สิ่งที่ต้องทำ[] |
POST | /session/:id/init | วิเคราะห์แอปและสร้าง AGENTS.md | เนื้อความ: { messageID, providerID, modelID } ส่งคืน boolean |
POST | /session/:id/fork | แยกเซสชันที่มีอยู่ไปที่ข้อความ | body: { messageID? } ส่งคืน เซสชัน |
POST | /session/:id/abort | ยกเลิกเซสชันที่ทำงานอยู่ | ส่งคืน boolean |
POST | /session/:id/share | แบ่งปันเซสชั่น | ส่งคืน เซสชัน |
DELETE | /session/:id/share | ยกเลิกการแชร์เซสชัน | ส่งคืน เซสชัน |
GET | /session/:id/diff | รับความแตกต่างสำหรับเซสชั่นนี้ | ข้อความค้นหา: messageID? ส่งคืน FileDiff[] |
POST | /session/:id/summarize | สรุปเซสชัน | เนื้อความ: { providerID, modelID } ส่งคืน boolean |
POST | /session/:id/revert | คืนค่าข้อความ | เนื้อความ: { messageID, partID? } ส่งคืน boolean |
POST | /session/:id/unrevert | กู้คืนข้อความที่เปลี่ยนกลับทั้งหมด | ส่งคืน boolean |
POST | /session/:id/permissions/:permissionID | ตอบสนองต่อการร้องขอการอนุญาต | เนื้อความ: { response, remember? } ส่งคืน boolean |
| Method | เส้นทาง | คำอธิบาย | หมายเหตุ |
|---|
GET | /session/:id/message | แสดงรายการข้อความในเซสชัน | ข้อความค้นหา: limit? ส่งคืน { info: ข้อความ, parts: ส่วน[]}[] |
POST | /session/:id/message | ส่งข้อความและรอการตอบกลับ | เนื้อความ: { messageID?, model?, agent?, noReply?, system?, tools?, parts } ส่งคืน { info: ข้อความ, parts: ส่วน[]} |
GET | /session/:id/message/:messageID | รับรายละเอียดข้อความ | ส่งคืน { info: ข้อความ, parts: ส่วนหนึ่ง[]} |
POST | /session/:id/prompt_async | ส่งข้อความแบบอะซิงโครนัส (ไม่ต้องรอ) | เนื้อความ: เหมือนกับ /session/:id/message ส่งคืน 204 No Content |
POST | /session/:id/command | ดำเนินการคำสั่งเครื่องหมายทับ | เนื้อความ: { messageID?, agent?, model?, command, arguments } ส่งคืน { info: ข้อความ, parts: ส่วน[]} |
POST | /session/:id/shell | รันคำสั่ง shell | เนื้อความ: { agent, model?, command } ส่งคืน { info: ข้อความ, parts: ส่วน[]} |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /command | แสดงรายการคำสั่งทั้งหมด | Command[] |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /find?pattern=<pat> | ค้นหาข้อความในไฟล์ | อาร์เรย์ของวัตถุที่ตรงกับ path, lines, line_number, absolute_offset, submatches |
GET | /find/file?query=<q> | ค้นหาไฟล์และไดเร็กทอรีตามชื่อ | string[] (paths) |
GET | /find/symbol?query=<q> | ค้นหาสัญลักษณ์พื้นที่ทำงาน | Symbol[] |
GET | /file?path=<path> | แสดงรายการไฟล์และไดเร็กทอรี | FileNode[] |
GET | /file/content?path=<p> | อ่านไฟล์ | เนื้อหาไฟล์ |
GET | /file/status | รับสถานะสำหรับไฟล์ที่ถูกติดตาม | File[] |
query (จำเป็น) — สตริงการค้นหา (การจับคู่แบบคลุมเครือ)
type (ไม่บังคับ) — จำกัดผลลัพธ์ไว้ที่ "file" หรือ "directory"
directory (เป็นทางเลือก) — แทนที่รูทโปรเจ็กต์สำหรับการค้นหา
limit (ไม่บังคับ) — ผลลัพธ์สูงสุด (1–200)
dirs (ไม่บังคับ) — แฟล็กดั้งเดิม ("false" ส่งคืนเฉพาะไฟล์)
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /experimental/tool/ids | แสดงรายการรหัสเครื่องมือทั้งหมด | รหัสเครื่องมือ |
GET | /experimental/tool?provider=<p>&model=<m> | แสดงรายการเครื่องมือที่มีสกีมา JSON สำหรับโมเดล | รายการเครื่องมือ |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /lsp | รับ LSP สถานะเซิร์ฟเวอร์ | LSPStatus[] |
GET | /formatter | รับสถานะฟอร์แมตเตอร์ | FormatterStatus[] |
GET | /mcp | รับ MCP สถานะเซิร์ฟเวอร์ | { [name: string]: MCPStatus } |
POST | /mcp | เพิ่มเซิร์ฟเวอร์ MCP แบบไดนามิก | body: { name, config } ส่งคืนออบเจ็กต์สถานะ MCP |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /agent | รายชื่อตัวแทนที่มีอยู่ทั้งหมด | ตัวแทน[] |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
POST | /log | เขียนรายการบันทึก เนื้อความ: { service, level, message, extra? } | boolean |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
POST | /tui/append-prompt | เพิ่มข้อความต่อท้ายข้อความแจ้ง | boolean |
POST | /tui/open-help | เปิดกล่องโต้ตอบความช่วยเหลือ | boolean |
POST | /tui/open-sessions | เปิดตัวเลือกเซสชัน | boolean |
POST | /tui/open-themes | เปิดตัวเลือกธีม | boolean |
POST | /tui/open-models | เปิดตัวเลือกรุ่น | boolean |
POST | /tui/submit-prompt | ส่งข้อความแจ้งปัจจุบัน | boolean |
POST | /tui/clear-prompt | ล้างข้อความแจ้ง | boolean |
POST | /tui/execute-command | ดำเนินการคำสั่ง ({ command }) | boolean |
POST | /tui/show-toast | โชว์ขนมปังปิ้ง ({ title?, message, variant }) | boolean |
GET | /tui/control/next | รอคำขอควบคุมถัดไป | วัตถุคำขอควบคุม |
POST | /tui/control/response | ตอบสนองต่อคำขอควบคุม ({ body }) | boolean |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
PUT | /auth/:id | ตั้งค่าข้อมูลประจำตัวการรับรองความถูกต้อง เนื้อความต้องตรงกับสคีมาของผู้ให้บริการ | boolean |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /event | สตรีมเหตุการณ์ที่เซิร์ฟเวอร์ส่ง งานแรกคือ server.connected จากนั้นงานรถบัส | สตรีมเหตุการณ์ที่เซิร์ฟเวอร์ส่ง |
| Method | เส้นทาง | คำอธิบาย | การตอบสนอง |
|---|
GET | /doc | ข้อมูลจำเพาะของ OpenAPI 3.1 | HTML หน้าพร้อมข้อมูลจำเพาะ OpenAPI |