Skip to content

เซิร์ฟเวอร์

โต้ตอบกับเซิร์ฟเวอร์ opencode ผ่าน HTTP

คำสั่ง opencode serve รันเซิร์ฟเวอร์ HTTP ที่ไม่มีหัวซึ่งเปิดเผยตำแหน่งข้อมูล OpenAPI ที่ไคลเอนต์ opencode สามารถใช้ได้


การใช้งาน

Terminal window
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

ตัวเลือก

Flagคำอธิบายค่าเริ่มต้น
--portพอร์ตที่จะฟัง4096
--hostnameชื่อโฮสต์ที่จะฟัง127.0.0.1
--mdnsเปิดใช้งานการค้นพบ mDNSfalse
--mdns-domainชื่อโดเมนที่กำหนดเองสำหรับบริการ mDNSopencode.local
--corsต้นกำเนิดเบราว์เซอร์เพิ่มเติมที่จะอนุญาต[]

--cors สามารถส่งผ่านได้หลายครั้ง:

Terminal window
opencode serve --cors http://localhost:5173 --cors https://app.example.com

การรับรองความถูกต้อง

ตั้งค่า OPENCODE_SERVER_PASSWORD เพื่อปกป้องเซิร์ฟเวอร์ด้วย HTTP การตรวจสอบสิทธิ์ขั้นพื้นฐาน ชื่อผู้ใช้มีค่าเริ่มต้นเป็น opencode หรือตั้งค่า OPENCODE_SERVER_USERNAME เพื่อแทนที่ชื่อผู้ใช้ สิ่งนี้ใช้ได้กับทั้ง opencode serve และ opencode web

Terminal window
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


API

เซิร์ฟเวอร์ opencode เปิดเผย API ต่อไปนี้


ทั่วโลก

Methodเส้นทางคำอธิบายการตอบสนอง
GET/global/healthรับสถานะและเวอร์ชันของเซิร์ฟเวอร์{ healthy: true, version: string }
GET/global/eventรับกิจกรรมระดับโลก (SSE สตรีม)สตรีมกิจกรรม

โครงการ

Methodเส้นทางคำอธิบายการตอบสนอง
GET/projectแสดงรายการโครงการทั้งหมดProject[]
GET/project/currentรับโครงการปัจจุบันProject

เส้นทาง & VCS

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[]

/find/file พารามิเตอร์การสืบค้น

  • query (จำเป็น) — สตริงการค้นหา (การจับคู่แบบคลุมเครือ)
  • type (ไม่บังคับ) — จำกัดผลลัพธ์ไว้ที่ "file" หรือ "directory"
  • directory (เป็นทางเลือก) — แทนที่รูทโปรเจ็กต์สำหรับการค้นหา
  • limit (ไม่บังคับ) — ผลลัพธ์สูงสุด (1–200)
  • dirs (ไม่บังคับ) — แฟล็กดั้งเดิม ("false" ส่งคืนเฉพาะไฟล์)

เครื่องมือ (ทดลอง)

Methodเส้นทางคำอธิบายการตอบสนอง
GET/experimental/tool/idsแสดงรายการรหัสเครื่องมือทั้งหมดรหัสเครื่องมือ
GET/experimental/tool?provider=<p>&model=<m>แสดงรายการเครื่องมือที่มีสกีมา JSON สำหรับโมเดลรายการเครื่องมือ

LSP, ฟอร์แมตเตอร์ & MCP

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

TUI

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.1HTML หน้าพร้อมข้อมูลจำเพาะ OpenAPI