mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-03 11:16:46 +00:00
wip(docs): i18n (#12681)
This commit is contained in:
287
packages/web/src/content/docs/th/server.mdx
Normal file
287
packages/web/src/content/docs/th/server.mdx
Normal file
@@ -0,0 +1,287 @@
|
||||
---
|
||||
title: เซิร์ฟเวอร์
|
||||
description: โต้ตอบกับเซิร์ฟเวอร์ opencode ผ่าน HTTP
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
คำสั่ง `opencode serve` รันเซิร์ฟเวอร์ HTTP ที่ไม่มีหัวซึ่งเปิดเผยตำแหน่งข้อมูล OpenAPI ที่ไคลเอนต์ opencode สามารถใช้ได้
|
||||
|
||||
---
|
||||
|
||||
### การใช้งาน
|
||||
|
||||
```bash
|
||||
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
|
||||
```
|
||||
|
||||
#### ตัวเลือก
|
||||
|
||||
| ธง | คำอธิบาย | ค่าเริ่มต้น |
|
||||
| --------------- | ---------------------------------------- | ---------------- |
|
||||
| `--port` | พอร์ตที่จะฟัง | `4096` |
|
||||
| `--hostname` | ชื่อโฮสต์ที่จะฟัง | `127.0.0.1` |
|
||||
| `--mdns` | เปิดใช้งานการค้นพบ mDNS | `false` |
|
||||
| `--mdns-domain` | ชื่อโดเมนที่กำหนดเองสำหรับบริการ mDNS | `opencode.local` |
|
||||
| `--cors` | ต้นกำเนิดเบราว์เซอร์เพิ่มเติมที่จะอนุญาต | `[]` |
|
||||
|
||||
`--cors` สามารถส่งผ่านได้หลายครั้ง:
|
||||
|
||||
```bash
|
||||
opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### การรับรองความถูกต้อง
|
||||
|
||||
ตั้งค่า `OPENCODE_SERVER_PASSWORD` เพื่อปกป้องเซิร์ฟเวอร์ด้วย HTTP การตรวจสอบสิทธิ์ขั้นพื้นฐาน ชื่อผู้ใช้มีค่าเริ่มต้นเป็น `opencode` หรือตั้งค่า `OPENCODE_SERVER_USERNAME` เพื่อแทนที่ชื่อผู้ใช้ สิ่งนี้ใช้ได้กับทั้ง `opencode serve` และ `opencode web`
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### มันทำงานอย่างไร
|
||||
|
||||
เมื่อคุณรัน `opencode` มันจะเริ่มต้น TUI และเซิร์ฟเวอร์ โดยที่ TUI คือ
|
||||
ลูกค้าที่พูดคุยกับเซิร์ฟเวอร์ เซิร์ฟเวอร์เปิดเผยข้อมูลจำเพาะของ OpenAPI 3.1
|
||||
จุดสิ้นสุด ตำแหน่งข้อมูลนี้ยังใช้เพื่อสร้าง [SDK](/docs/sdk)
|
||||
|
||||
:::tip
|
||||
ใช้เซิร์ฟเวอร์ opencode เพื่อโต้ตอบกับ opencode โดยทางโปรแกรม
|
||||
:::
|
||||
|
||||
สถาปัตยกรรมนี้ช่วยให้ opencode รองรับไคลเอนต์หลายตัว และช่วยให้คุณสามารถโต้ตอบกับ opencode โดยทางโปรแกรมได้
|
||||
|
||||
คุณสามารถเรียกใช้ `opencode serve` เพื่อเริ่มเซิร์ฟเวอร์แบบสแตนด์อโลน ถ้าคุณมี
|
||||
opencode TUI ทำงาน `opencode serve` จะเริ่มเซิร์ฟเวอร์ใหม่
|
||||
|
||||
---
|
||||
|
||||
#### เชื่อมต่อกับเซิร์ฟเวอร์ที่มีอยู่
|
||||
|
||||
เมื่อคุณเริ่ม TUI มันจะสุ่มกำหนดพอร์ตและชื่อโฮสต์ คุณสามารถผ่าน `--hostname` และ `--port` [ธง](/docs/cli) แทนได้ จากนั้นใช้สิ่งนี้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์
|
||||
|
||||
ตำแหน่งข้อมูล [`/tui`](#tui) สามารถใช้เพื่อขับเคลื่อน TUI ผ่านเซิร์ฟเวอร์ ตัวอย่างเช่น คุณสามารถกรอกข้อมูลล่วงหน้าหรือเรียกใช้พร้อมท์ได้ การตั้งค่านี้ถูกใช้โดยปลั๊กอิน OpenCode [IDE](/docs/ide)
|
||||
|
||||
---
|
||||
|
||||
## ข้อมูลจำเพาะ
|
||||
|
||||
เซิร์ฟเวอร์เผยแพร่ข้อมูลจำเพาะ OpenAPI 3.1 ที่สามารถดูได้ที่:
|
||||
|
||||
```
|
||||
http://<hostname>:<port>/doc
|
||||
```
|
||||
|
||||
ตัวอย่างเช่น `http://localhost:4096/doc` ใช้ข้อมูลจำเพาะเพื่อสร้างไคลเอ็นต์หรือตรวจสอบคำขอและประเภทการตอบกลับ หรือดูใน Swagger explorer
|
||||
|
||||
---
|
||||
|
||||
## API
|
||||
|
||||
เซิร์ฟเวอร์ opencode เปิดเผย API ต่อไปนี้
|
||||
|
||||
---
|
||||
|
||||
### ทั่วโลก
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | ---------------- | --------------------------------- | ------------------------------------ |
|
||||
| `GET` | `/global/health` | รับสถานะและเวอร์ชันของเซิร์ฟเวอร์ | `{ healthy: true, version: string }` |
|
||||
| `GET` | `/global/event` | รับกิจกรรมระดับโลก (SSE สตรีม) | สตรีมกิจกรรม |
|
||||
|
||||
---
|
||||
|
||||
### โครงการ
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | ------------------ | ------------------------ | --------------------------------------------- |
|
||||
| `GET` | `/project` | แสดงรายการโครงการทั้งหมด | <a href={typesUrl}><code>Project[]</code></a> |
|
||||
| `GET` | `/project/current` | รับโครงการปัจจุบัน | <a href={typesUrl}><code>Project</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### เส้นทาง & VCS
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | ------- | ----------------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/path` | รับเส้นทางปัจจุบัน | <a href={typesUrl}><code>Path</code></a> |
|
||||
| `GET` | `/vcs` | รับข้อมูล VCS สำหรับโครงการปัจจุบัน | <a href={typesUrl}><code>VcsInfo</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### ตัวอย่าง
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ------ | ------------------- | ---------------------- | ---------- |
|
||||
| `POST` | `/instance/dispose` | กำจัดอินสแตนซ์ปัจจุบัน | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### การกำหนดค่า
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ------- | ------------------- | ----------------------------------- | -------------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/config` | รับข้อมูลการกำหนดค่า | <a href={typesUrl}><code>กำหนดค่า</code></a> |
|
||||
| `PATCH` | `/config` | อัปเดตการกำหนดค่า | <a href={typesUrl}><code>กำหนดค่า</code></a> |
|
||||
| `GET` | `/config/providers` | ผู้ให้บริการรายชื่อและโมเดลเริ่มต้น | `{ providers: `<a href={typesUrl}>ผู้ให้บริการ[]</a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
### ผู้ให้บริการ
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ------ | -------------------------------- | ------------------------------------------- | --------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/provider` | รายชื่อผู้ให้บริการทั้งหมด | `{ all: `<a href={typesUrl}>ผู้ให้บริการ[]</a>`, default: {...}, connected: string[] }` |
|
||||
| `GET` | `/provider/auth` | รับวิธีการตรวจสอบความถูกต้องของผู้ให้บริการ | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
|
||||
| `POST` | `/provider/{id}/oauth/authorize` | ให้สิทธิ์ผู้ให้บริการโดยใช้ OAuth | <a href={typesUrl}><code>การอนุญาตของผู้ให้บริการ</code></a> |
|
||||
| `POST` | `/provider/{id}/oauth/callback` | จัดการการโทรกลับ OAuth สำหรับผู้ให้บริการ | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### เซสชัน
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | หมายเหตุ |
|
||||
| -------- | ---------------------------------------- | ---------------------------------- | -------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session` | แสดงรายการเซสชันทั้งหมด | ส่งคืน <a href={typesUrl}><code>เซสชัน[]</code></a> |
|
||||
| `POST` | `/session` | สร้างเซสชันใหม่ | body: `{ parentID?, title? }` ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `GET` | `/session/status` | รับสถานะเซสชันสำหรับเซสชันทั้งหมด | ส่งคืน `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
|
||||
| `GET` | `/session/:id` | รับรายละเอียดเซสชั่น | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `DELETE` | `/session/:id` | ลบเซสชันและข้อมูลทั้งหมด | ส่งคืน `boolean` |
|
||||
| `PATCH` | `/session/:id` | อัปเดตคุณสมบัติเซสชัน | body: `{ title? }` ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `GET` | `/session/:id/children` | รับเซสชันย่อยของเซสชัน | ส่งคืน <a href={typesUrl}><code>เซสชัน[]</code></a> |
|
||||
| `GET` | `/session/:id/todo` | รับรายการสิ่งที่ต้องทำสำหรับเซสชัน | ส่งคืน <a href={typesUrl}><code>สิ่งที่ต้องทำ[]</code></a> |
|
||||
| `POST` | `/session/:id/init` | วิเคราะห์แอปและสร้าง `AGENTS.md` | เนื้อความ: `{ messageID, providerID, modelID }` ส่งคืน `boolean` |
|
||||
| `POST` | `/session/:id/fork` | แยกเซสชันที่มีอยู่ไปที่ข้อความ | body: `{ messageID? }` ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `POST` | `/session/:id/abort` | ยกเลิกเซสชันที่ทำงานอยู่ | ส่งคืน `boolean` |
|
||||
| `POST` | `/session/:id/share` | แบ่งปันเซสชั่น | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `DELETE` | `/session/:id/share` | ยกเลิกการแชร์เซสชัน | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `GET` | `/session/:id/diff` | รับความแตกต่างสำหรับเซสชั่นนี้ | ข้อความค้นหา: `messageID?` ส่งคืน <a href={typesUrl}><code>FileDiff[]</code></a> |
|
||||
| `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` |
|
||||
|
||||
---
|
||||
|
||||
### ข้อความ
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | หมายเหตุ |
|
||||
| ------ | --------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `GET` | `/session/:id/message` | แสดงรายการข้อความในเซสชัน | ข้อความค้นหา: `limit?` ส่งคืน `{ info: `<a href={typesUrl}>ข้อความ</a>`, parts: `<a href={typesUrl}>ส่วน[]</a>`}[]` |
|
||||
| `POST` | `/session/:id/message` | ส่งข้อความและรอการตอบกลับ | เนื้อความ: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }` ส่งคืน `{ info: `<a href={typesUrl}>ข้อความ</a>`, parts: `<a href={typesUrl}>ส่วน[]</a>`}` |
|
||||
| `GET` | `/session/:id/message/:messageID` | รับรายละเอียดข้อความ | ส่งคืน `{ info: `<a href={typesUrl}>ข้อความ</a>`, parts: `<a href={typesUrl}>ส่วนหนึ่ง[]</a>`}` |
|
||||
| `POST` | `/session/:id/prompt_async` | ส่งข้อความแบบอะซิงโครนัส (ไม่ต้องรอ) | เนื้อความ: เหมือนกับ `/session/:id/message` ส่งคืน `204 No Content` |
|
||||
| `POST` | `/session/:id/command` | ดำเนินการคำสั่งเครื่องหมายทับ | เนื้อความ: `{ messageID?, agent?, model?, command, arguments }` ส่งคืน `{ info: `<a href={typesUrl}>ข้อความ</a>`, parts: `<a href={typesUrl}>ส่วน[]</a>`}` |
|
||||
| `POST` | `/session/:id/shell` | รันคำสั่งเชลล์ | เนื้อความ: `{ agent, model?, command }` ส่งคืน `{ info: `<a href={typesUrl}>ข้อความ</a>`, parts: `<a href={typesUrl}>ส่วน[]</a>`}` |
|
||||
|
||||
---
|
||||
|
||||
### คำสั่ง
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | ---------- | ----------------------- | --------------------------------------------- |
|
||||
| `GET` | `/command` | แสดงรายการคำสั่งทั้งหมด | <a href={typesUrl}><code>Command[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### ไฟล์
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | ------------------------ | ------------------------------ | ----------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/find?pattern=<pat>` | ค้นหาข้อความในไฟล์ | อาร์เรย์ของวัตถุที่ตรงกับ `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `GET` | `/find/file?query=<q>` | ค้นหาไฟล์และไดเร็กทอรีตามชื่อ | `string[]` (paths) |
|
||||
| `GET` | `/find/symbol?query=<q>` | ค้นหาสัญลักษณ์พื้นที่ทำงาน | <a href={typesUrl}><code>Symbol[]</code></a> |
|
||||
| `GET` | `/file?path=<path>` | แสดงรายการไฟล์และไดเร็กทอรี | <a href={typesUrl}><code>FileNode[]</code></a> |
|
||||
| `GET` | `/file/content?path=<p>` | อ่านไฟล์ | <a href={typesUrl}><code>เนื้อหาไฟล์</code></a> |
|
||||
| `GET` | `/file/status` | รับสถานะสำหรับไฟล์ที่ถูกติดตาม | <a href={typesUrl}><code>File[]</code></a> |
|
||||
|
||||
#### `/find/file` พารามิเตอร์การสืบค้น
|
||||
|
||||
- `query` (จำเป็น) — สตริงการค้นหา (การจับคู่แบบคลุมเครือ)
|
||||
- `type` (ไม่บังคับ) — จำกัดผลลัพธ์ไว้ที่ `"file"` หรือ `"directory"`
|
||||
- `directory` (เป็นทางเลือก) — แทนที่รูทโปรเจ็กต์สำหรับการค้นหา
|
||||
- `limit` (ไม่บังคับ) — ผลลัพธ์สูงสุด (1–200)
|
||||
- `dirs` (ไม่บังคับ) — แฟล็กดั้งเดิม (`"false"` ส่งคืนเฉพาะไฟล์)
|
||||
|
||||
---
|
||||
|
||||
### เครื่องมือ (ทดลอง)
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | ------------------------------------------- | ----------------------------------------------- | ---------------------------------------------------- |
|
||||
| `GET` | `/experimental/tool/ids` | แสดงรายการรหัสเครื่องมือทั้งหมด | <a href={typesUrl}><code>รหัสเครื่องมือ</code></a> |
|
||||
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | แสดงรายการเครื่องมือที่มีสกีมา JSON สำหรับโมเดล | <a href={typesUrl}><code>รายการเครื่องมือ</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### LSP, ฟอร์แมตเตอร์ & MCP
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ------ | ------------ | ------------------------------- | -------------------------------------------------------- |
|
||||
| `GET` | `/lsp` | รับ LSP สถานะเซิร์ฟเวอร์ | <a href={typesUrl}><code>LSPStatus[]</code></a> |
|
||||
| `GET` | `/formatter` | รับสถานะฟอร์แมตเตอร์ | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
|
||||
| `GET` | `/mcp` | รับ MCP สถานะเซิร์ฟเวอร์ | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
|
||||
| `POST` | `/mcp` | เพิ่มเซิร์ฟเวอร์ MCP แบบไดนามิก | body: `{ name, config }` ส่งคืนออบเจ็กต์สถานะ MCP |
|
||||
|
||||
---
|
||||
|
||||
### ตัวแทน
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | -------- | ----------------------------- | -------------------------------------------- |
|
||||
| `GET` | `/agent` | รายชื่อตัวแทนที่มีอยู่ทั้งหมด | <a href={typesUrl}><code>ตัวแทน[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### การบันทึก
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ------ | ------- | ------------------------------------------------------------------ | ---------- |
|
||||
| `POST` | `/log` | เขียนรายการบันทึก เนื้อความ: `{ service, level, message, extra? }` | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ------ | ----------------------- | ----------------------------------------------- | --------------- |
|
||||
| `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` |
|
||||
|
||||
---
|
||||
|
||||
### การรับรองความถูกต้อง
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | ----------- | --------------------------------------------------------------------------------- | ---------- |
|
||||
| `PUT` | `/auth/:id` | ตั้งค่าข้อมูลประจำตัวการรับรองความถูกต้อง เนื้อความต้องตรงกับสคีมาของผู้ให้บริการ | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### กิจกรรม
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | -------- | ---------------------------------------------------------------------------- | ------------------------------- |
|
||||
| `GET` | `/event` | สตรีมเหตุการณ์ที่เซิร์ฟเวอร์ส่ง งานแรกคือ `server.connected` จากนั้นงานรถบัส | สตรีมเหตุการณ์ที่เซิร์ฟเวอร์ส่ง |
|
||||
|
||||
---
|
||||
|
||||
### เอกสาร
|
||||
|
||||
| วิธี | เส้นทาง | คำอธิบาย | การตอบสนอง |
|
||||
| ----- | ------- | --------------------------- | ---------------------------------- |
|
||||
| `GET` | `/doc` | ข้อมูลจำเพาะของ OpenAPI 3.1 | HTML หน้าพร้อมข้อมูลจำเพาะ OpenAPI |
|
||||
Reference in New Issue
Block a user