wip(docs): i18n (#12681)
This commit is contained in:
67
packages/web/src/content/docs/th/1-0.mdx
Normal file
67
packages/web/src/content/docs/th/1-0.mdx
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
title: สำหรับสิ่งนี้ 1.0
|
||||
description: ใน OpenCode 1.0
|
||||
---
|
||||
|
||||
OpenCode 1.0 เป็นเนื้อหา TUI ทั้งหมด
|
||||
|
||||
เราย้ายจาก TUI ใช้ go+bubbletea ที่มีปัญหาด้านประสิทธิภาพและความสามารถไปเป็นพวงกุญแจภายใน (OpenTUI) ที่เขียนด้วย zig+solidjs
|
||||
|
||||
TUIล่าสุดทำงานเหมือนกับเก่าเพราะความเชื่อ Opencode เดียวกัน
|
||||
|
||||
---
|
||||
|
||||
## สู่กรุงเดลต้า
|
||||
|
||||
คุณอัปเดตอัตโนมัติเป็น 1.0 อีกครั้งและปรับปรุงอยู่
|
||||
รุ่นดังกล่าว OpenCode ผู้เล่นเก่าบางเฉียบจะคว้ารางวัลล่าสุดเสมอ
|
||||
|
||||
อย่างต่อเนื่องไม่จำเป็นต้องจดบันทึก
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 1.0.0
|
||||
```
|
||||
|
||||
ส่วนดาวน์เกรดกลับเป็น 0.x อีกต่อไป...
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 0.15.31
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## การเปลี่ยนแปลง UX
|
||||
|
||||
การค้นพบที่ค้นพบโดยความเชื่อโดยแสดงเฉพาะรายละเอียดในส่วนที่แก้ไขและทุบตีเท่านั้น
|
||||
|
||||
ขอคำสั่งซึ่งหมายถึงทุกอย่างไหลผ่านกด ctrl+p จะเรียกสิ่งนี้ถึงคำอธิบายที่อธิบายทุกอย่างที่คุณทำได้
|
||||
|
||||
จักรพรรดิ์อัจฉริยะ (สามารถมีได้) พร้อมข้อมูลข่าวสาร
|
||||
|
||||
เราจะลบสิ่งที่เราเชื่อว่ามีใครใช้จริงออกเลยโปรดเปิดปัญหาแล้วเราจะเพิ่มกลับอย่างรวดเร็ว
|
||||
|
||||
---
|
||||
|
||||
## ทำลายล้าง
|
||||
|
||||
### เปลี่ยนชื่อแล้ว
|
||||
|
||||
- Messages_revert -> Messages_undo
|
||||
- switch_agent -> agent_cycle
|
||||
- switch_agent_reverse -> agent_cycle_reverse
|
||||
- switch_mode -> agent_cycle
|
||||
- switch_mode_reverse -> agent_cycle_reverse
|
||||
|
||||
### คีย์ถูกลบออก
|
||||
|
||||
- Messages_layout_toggle
|
||||
- สิ่ง_ถัดไป
|
||||
- ข้อเสนอที่_เปอร์โตริโก
|
||||
- file_diff_toggle
|
||||
- file_search
|
||||
- file_close
|
||||
- file_list
|
||||
- app_help
|
||||
- โครงการ_init
|
||||
- รายละเอียด_รายละเอียด
|
||||
- สร้างสรรค์_บล็อก
|
||||
156
packages/web/src/content/docs/th/acp.mdx
Normal file
156
packages/web/src/content/docs/th/acp.mdx
Normal file
@@ -0,0 +1,156 @@
|
||||
---
|
||||
title: ACPสามารถช่วย
|
||||
description: ใช้ OpenCode ในโปรแกรมแก้ไขที่ต้องการ ACP
|
||||
---
|
||||
|
||||
OpenCode ที่แสดง [Agent Client Protocol](https://agentclientprotocol.com) หรือ (ACP) ซึ่งสามารถช่วยได้โดยตรงในการแก้ไขและ IDE ที่หน่วยความจำ
|
||||
|
||||
:::tip
|
||||
สำหรับรายชื่อและเครื่องมือที่รองรับ ACPรายงานที่[ACP รายงาน](https://zed.dev/blog/acp-progress-report#available-now)
|
||||
:::
|
||||
|
||||
ACP เป็นแบบเปิดมาตรฐานการสื่อสารระหว่างโปรแกรมแก้ไขโค้ดและตัวแทน AI
|
||||
|
||||
---
|
||||
|
||||
## เม็กซิโก
|
||||
|
||||
บางครั้งใช้ OpenCode ผ่าน ACP ไม่อนุญาตให้โปรแกรมแก้ไขของคุณให้รันคำสั่ง `opencode acp`
|
||||
|
||||
สั่งเริ่ม OpenCode เนื่องจากต้องย่อยที่จำเป็นต้องมี ACP ซึ่งจะต้องแก้ไขโปรแกรมของคุณผ่าน JSON-RPC ผ่าน stdio
|
||||
|
||||
นี่คือตัวอย่างโปรแกรมแก้ไขยอดนิยมที่รองรับ ACP
|
||||
|
||||
---
|
||||
|
||||
### เซด
|
||||
|
||||
อดทนต่อไป [Zed](https://zed.dev) (`~/.config/zed/settings.json`):
|
||||
|
||||
```json title="~/.config/zed/settings.json"
|
||||
{
|
||||
"agent_servers": {
|
||||
"OpenCode": {
|
||||
"command": "opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
สิ่งนั้นเปิดใช้สำหรับ `agent: new thread` ใน **Command Palette**
|
||||
|
||||
คุณต้องผูกมัดอย่างหนักเพื่อแก้ไข `keymap.json` ของคุณ:
|
||||
|
||||
```json title="keymap.json"
|
||||
[
|
||||
{
|
||||
"bindings": {
|
||||
"cmd-alt-o": [
|
||||
"agent::NewExternalAgentThread",
|
||||
{
|
||||
"agent": {
|
||||
"custom": {
|
||||
"name": "OpenCode",
|
||||
"command": {
|
||||
"command": "opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### เจ็ตเบรนส์ IDE
|
||||
|
||||
ไปที่ [JetBrains IDE](https://www.jetbrains.com/) acp.json ของคุณตาม [เอกสาร](https://www.jetbrains.com/help/ai-assistant/acp.html):
|
||||
|
||||
```json title="acp.json"
|
||||
{
|
||||
"agent_servers": {
|
||||
"OpenCode": {
|
||||
"command": "/absolute/path/bin/opencode",
|
||||
"args": ["acp"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
นี่เป็นการเปิดให้ตัวแทน 'OpenCode' ในเนื้อหาของตัวแทน AI Chat
|
||||
|
||||
---
|
||||
|
||||
### Avante.nvim
|
||||
|
||||
ยังคงมี [Avante.nvim](https://github.com/yetone/avante.nvim) ของคุณ:
|
||||
|
||||
```lua
|
||||
{
|
||||
acp_providers = {
|
||||
["opencode"] = {
|
||||
command = "opencode",
|
||||
args = { "acp" }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
จะต้องส่งผ่านวันพรุ่งนี้:
|
||||
|
||||
```lua {6-8}
|
||||
{
|
||||
acp_providers = {
|
||||
["opencode"] = {
|
||||
command = "opencode",
|
||||
args = { "acp" },
|
||||
env = {
|
||||
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### CodeCompanion.nvim
|
||||
|
||||
ลองใช้ OpenCode ACP ใน [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim) ให้เพิ่มสิ่งต่อไปนี้ใน Neovim ของคุณ:
|
||||
|
||||
```lua
|
||||
require("codecompanion").setup({
|
||||
interactions = {
|
||||
chat = {
|
||||
adapter = {
|
||||
name = "opencode",
|
||||
model = "claude-sonnet-4",
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
คุณสามารถใช้ CodeCompanion เพื่อใช้ OpenCode ACP สำหรับแชท
|
||||
|
||||
บางครั้งการส่งผ่านบางครั้ง (เช่น `OPENCODE_API_KEY`) ต้อง [ต้องอธิบายเหตุผล:https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) ในเอกสารประกอบ CodeCompanion.nvim สำหรับรายละเอียดทั้งหมด
|
||||
|
||||
## เพื่อ
|
||||
|
||||
OpenCode เป็นเวลานาน ACP และในการตรวจสอบคุณสมบัติทั้งหมด:
|
||||
|
||||
:::note
|
||||
คำสั่งสแลมในคำสั่งบางคำสั่งเช่น `/undo` และ `/redo` ยังไม่รองรับในขณะนี้
|
||||
:::
|
||||
|
||||
- เครื่องมือใน (ไฟล์ไฟล์คำสั่งอื่นๆ)
|
||||
- คำอธิบายและคำสั่งสแลช
|
||||
- MCP แขกที่นี่คือข้อมูลเพิ่มเติมของ OpenCode ของคุณ
|
||||
- กฎเฉพาะโครงการจาก `AGENTS.md`
|
||||
- คนจัดรูปแบบและ linters เวียนนา
|
||||
- ระบบตัวแทนและระบบ
|
||||
747
packages/web/src/content/docs/th/agents.mdx
Normal file
747
packages/web/src/content/docs/th/agents.mdx
Normal file
@@ -0,0 +1,747 @@
|
||||
---
|
||||
title: ตัวแทน
|
||||
description: และตัวแทนพิเศษ
|
||||
---
|
||||
|
||||
เจ้าหน้าที่คือผู้ช่วย AI ในช่องทางต่างๆ ของอินเทอร์เฟซและอินเทอร์เฟซของโฟลว์เฉพาะได้สามารถสร้างเครื่องมือที่รวบรวมข้อมูลด้วยโมดูลและอินเทอร์เฟซของอินเทอร์เฟซ...
|
||||
|
||||
:::tip
|
||||
ใช้แผนของตัวแทนเพื่อวิเคราะห์โค้ดและทบทวนเหตุผลในการทำการเปลี่ยนแปลงโค้ดใดๆ
|
||||
:::
|
||||
|
||||
การผสมผสานระหว่างตัวแทนระหว่างการประชุมหรือต้องการโดยระบุ `@`
|
||||
|
||||
---
|
||||
|
||||
## ประเภท
|
||||
|
||||
OpenCode มีเอเจนต์สองประเภทตัวแทนหลักและตัวแทนย่อย
|
||||
|
||||
---
|
||||
|
||||
### ตัวแทนหลัก
|
||||
|
||||
ตัวแทนหลักคือผู้ช่วยหลักที่คุณมักจะเกิดขึ้นด้วยโดยตรงในวนดูได้เฉพาะปุ่ม **Tab** หรือปุ่ม `switch_agent` ที่โน่ไว้เจ้าหน้าที่สามารถจัดการระบบของคุณได้โดยได้รับเครื่องมือที่มีคุณลักษณะหลักเช่น Build มีเครื่องมือทั้งหมดในส่วนของแผนถูกจำกัด
|
||||
|
||||
:::tip
|
||||
**Tab** บันทึกเรื่องราวระหว่างตัวแทนหลักดื่มด่ำได้
|
||||
:::
|
||||
|
||||
OpenCode ของเอเจนต์หลักในตัวได้แก่ **Build** และ **Plan** ดี
|
||||
ดูด้านล่าง
|
||||
|
||||
---
|
||||
|
||||
### ตัวแทนย่อย
|
||||
|
||||
ตัวแทนย่อยคือผู้ช่วยเฉพาะทางที่ตัวแทนหลักสามารถเรียกงานเฉพาะได้เฉพาะเรียกได้โดยตรงโดย **@ หมายถึง**ความหมายในข้อความของคุณ
|
||||
|
||||
OpenCode ในการควบคุมเอเจนต์ย่อยในส่วนนี้ได้แก่ **ทั่วไป** และ **สำรวจ** ส่วนดูพื้นที่
|
||||
|
||||
---
|
||||
|
||||
## บิวท์อิน
|
||||
|
||||
OpenCode สืบสวนเอเจนต์หลักในตัวและเอเจนต์ย่อยในอีกหนึ่ง
|
||||
|
||||
---
|
||||
|
||||
### ใช้บิลด์
|
||||
|
||||
__ โหมด: `primary`
|
||||
|
||||
สร้างเว็บหลัก **รองรับ** พร้อมด้วยเครื่องมือทั้งหมดที่มีเอเจนต์มาตรฐานเพื่อให้มีสิทธิ์การเข้าถึงไฟล์และคำสั่งระบบโดยสมบูรณ์
|
||||
|
||||
---
|
||||
|
||||
### ใช้แผน
|
||||
|
||||
__ โหมด: `primary`
|
||||
|
||||
ตัวแทนแบบจำกัดที่ความเชื่อถือและการควบคุมระบบของการที่แจ้งให้ทราบอย่างเป็นทางการและป้องกันการเปลี่ยนแปลงโดยเฉพาะอย่างยิ่ง
|
||||
ตามคำอธิบายตามลำดับทั้งหมดของระบบเป็น `ask`:
|
||||
|
||||
- `file edits`: เนื้อหา แพตช์ และเป็นที่ทั้งหมด
|
||||
- `bash`: คำสั่งทุบตีทั้งหมด
|
||||
|
||||
เอเจนต์นี้มีประโยชน์ต้องการให้ LLM ตรวจสอบโค้ดตรวจสอบการเปลี่ยนแปลงหรือสร้างแผนว่าจะทำดีเบสของคุณจริง
|
||||
|
||||
---
|
||||
|
||||
### ใช้ทั่วไป
|
||||
|
||||
__ โหมด: `subagent`
|
||||
|
||||
ตัวแทนเพื่อค้นหาคำถามที่จำเป็นและต่อเนื่องหลายขั้นตอน อนุญาตให้เข้าถึงเครื่องมือต่างๆ (ยกเว้นการตรวจสอบ) และการปรับปรุงไฟล์ได้เมื่อจำเป็นต้องใช้สิ่งนี้เพื่อรันงานหลายหน่วยพร้อมกัน
|
||||
|
||||
---
|
||||
|
||||
### ใช้สำรวจ
|
||||
|
||||
__ โหมด: `subagent`
|
||||
|
||||
เอเจนต์ความเร็วสูงและอ่านอย่างเดียวสำหรับฐานพื้นฐานโค้ดและตรวจดูไฟล์ได้ใช้สิ่งนี้เมื่อคุณต้องการค้นหาไฟล์อย่างรวดเร็วรูปแบบตามค้นหาโค้ดด้วยคำสำคัญหรือแบบสอบถามเกี่ยวกับโค้ดเบส
|
||||
|
||||
---
|
||||
|
||||
### ใช้การบดอัด
|
||||
|
||||
__ โหมด: `primary`
|
||||
|
||||
เอเจนต์ระบบนั้นมีส่วนช่วยในการสรุปที่ยาวไปสู่บทสรุปที่เล็กลงโดยเฉพาะอย่างยิ่งเมื่อจำเป็นต้องมีและใน UI
|
||||
|
||||
---
|
||||
|
||||
### ใช้ชื่อ
|
||||
|
||||
__ โหมด: `primary`
|
||||
|
||||
ตัวแทนของระบบซึ่งสร้างชื่อที่ออกแบบสั้น ๆ มันทำงานได้โดยไม่ต้องใช้ UI
|
||||
|
||||
---
|
||||
|
||||
### ใช้สรุป
|
||||
|
||||
__ โหมด: `primary`
|
||||
|
||||
ตัวแทนระบบนั้นซึ่งสร้างสรุปการตรวจสอบและทำงานโดยไม่ต้องมี UI
|
||||
|
||||
---
|
||||
|
||||
## เรื่องนั้น
|
||||
|
||||
1. สำหรับตัวแทนหลักให้ใช้ปุ่ม **Tab** เพื่อวนดูตัวแทนที่มีความสำคัญ โปรดใช้การผูกปุ่ม `switch_agent` ที่โรงยิมไว้ได้
|
||||
|
||||
2. สามารถตัวแทนย่อยได้:
|
||||
- ****โดยตัวแทนหลักโดยเฉพาะพิเศษตามคำอธิบาย
|
||||
- เพิ่มเติมโดย **@ ต้องการ** ตัวแทนย่อยในข้อความของคุณเช่น
|
||||
|
||||
```txt frame="none"
|
||||
@general help me search for this function
|
||||
```
|
||||
|
||||
3. **ปรับปรุงระหว่างการปรับปรุง**: เมื่อตัวแทนย่อยสร้างหลังคาและเรียนรู้ร่วมกันระหว่างการปรับปรุงหลักและหลังคาทั้งหมดได้ทั้งหมด:
|
||||
- **\<Leader>+Right** (หรือ `session_child_cycle` keybind ที่คุณรู้ไว้) ในวนผ่าน parent → child1 → child2 → ... → parent
|
||||
- **\<Leader>+Left** (หรือฟัง `session_child_cycle_reverse` keybind) เพื่อวนย้อนกลับผ่าน parent ← child1 ← child2 ← ... ← parent
|
||||
|
||||
เรียนรู้การดำเนินการระหว่างการดำเนินการหลักและงานตัวแทนย่อยเฉพาะเจาะจง
|
||||
|
||||
---
|
||||
|
||||
## เม็กซิโก
|
||||
|
||||
ปรับแต่งเอเจนต์ในหรือสร้างเอเจนต์ได้ผ่านมาได้อย่างไม่น่าเชื่อตัวแทนได้สองวิธี:
|
||||
|
||||
---
|
||||
|
||||
### JSON
|
||||
|
||||
ไม่เชื่อตัวแทนในไฟล์ในกรุง `opencode.json` ของคุณ:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"mode": "primary",
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "{file:./prompts/build.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": true
|
||||
}
|
||||
},
|
||||
"plan": {
|
||||
"mode": "primary",
|
||||
"model": "anthropic/claude-haiku-4-20250514",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false
|
||||
}
|
||||
},
|
||||
"code-reviewer": {
|
||||
"description": "Reviews code for best practices and potential issues",
|
||||
"mode": "subagent",
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### มาร์กดาวน์
|
||||
|
||||
คุณอาจกำหนดเอเจนต์สำหรับไฟล์มาร์กดาวน์ได้หลายสีใน:
|
||||
|
||||
- ทั่วโลก: `~/.config/opencode/agents/`
|
||||
- ต่อโครงการ: `.opencode/agents/`
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Reviews code for quality and best practices
|
||||
mode: subagent
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.1
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are in code review mode. Focus on:
|
||||
|
||||
- Code quality and best practices
|
||||
- Potential bugs and edge cases
|
||||
- Performance implications
|
||||
- Security considerations
|
||||
|
||||
Provide constructive feedback without making direct changes.
|
||||
```
|
||||
|
||||
ชื่อไฟล์มาร์กดาวน์พร้อมกับชื่อเอเจนต์เช่น `review.md` สร้างตัวแทน `review`
|
||||
|
||||
---
|
||||
|
||||
## ต
|
||||
|
||||
มาดูรายละเอียดเพิ่มเติมที่จุดนั้นกัน
|
||||
|
||||
---
|
||||
|
||||
### คำอธิบาย
|
||||
|
||||
ใช้ฟีเจอร์ `description` เพื่อให้คำอธิบายสีนี้ทำอะไรและแนะนำเมื่อใด
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"description": "Reviews code for best practices and potential issues"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
รายการไม่จำเป็น **จำเป็น**
|
||||
|
||||
---
|
||||
|
||||
### นั่น
|
||||
|
||||
เหตุผลของการสุ่มและการตอบกลับของ LLM ด้วย `temperature`
|
||||
|
||||
ค่าที่ต่ำกว่านี้จะตอบสนองมีจุดมุ่งหมายและทราบถึงค่าที่จะช่วยลดการส่งผลและส่งผลถึง
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
อุณหภูมิจะเท่ากัน 0.0 ถึง 1.0:
|
||||
|
||||
- **0.0-0.2**: สิ่งที่เราคาดการณ์และกำหนดไว้เป็นไปได้และวางแผนโค้ด
|
||||
- **0.3-0.5**: ปฏิกิริยาที่สมดุลและเป็นผลให้เกิดงานพัฒนาทั่วไป
|
||||
- **0.6-1.0**: คำตอบที่สร้างสรรค์และหลากหลายมากขึ้นซึ่งมีประโยชน์สำหรับการศึกษาและต่อไป
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"analyze": {
|
||||
"temperature": 0.1,
|
||||
"prompt": "{file:./prompts/analysis.txt}"
|
||||
},
|
||||
"build": {
|
||||
"temperature": 0.3
|
||||
},
|
||||
"brainstorm": {
|
||||
"temperature": 0.7,
|
||||
"prompt": "{file:./prompts/creative.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ข้อสังเกตอุณหภูมิ OpenCode โดยทั่วไปจะมีเฉพาะรุ่นเท่านั้นแล้ว 0 สำหรับรุ่นส่วนใหญ่ 0.55 สำหรับรุ่น Qwen
|
||||
|
||||
---
|
||||
|
||||
### สูงสุด
|
||||
|
||||
จำนวนส่วนประกอบของการวนซ้ำของเอเจนต์ที่เอเจนต์เป็นผลสืบเนื่องด้วยข้อความเท่านั้นวิธีการที่ต้องการควบคุมต้นทุนสามารถกำหนดได้ในแนวทางที่ตัวแทนได้
|
||||
|
||||
หากไม่ได้ตั้งค่านี้ เอเจนต์จะดำเนินต่อไปจนกว่าโมเดลจะจะหยุดหรือผู้ใช้ขัดจังหวะ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"quick-thinker": {
|
||||
"description": "Fast reasoning with limited iterations",
|
||||
"prompt": "You are a quick thinker. Solve problems with minimal steps.",
|
||||
"steps": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ไปถึงความโดดเด่นจะได้รับพร้อมท์พิเศษที่แนะนำให้เรียนรู้ด้วยการสรุปงานและงานที่เหลืออีกครั้ง
|
||||
|
||||
:::caution
|
||||
ช่อง `maxSteps` แบบเดิมเลิกใช้แล้วใช้ `steps` แทน
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### ต่อไปนี้
|
||||
|
||||
ตั้งค่าเป็น `true` ไปถึงสมาชิก
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"disable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### พรอมมาน
|
||||
|
||||
ระบุไฟล์พร้อมท์ระบบสำหรับเอเจนต์นี้ด้วย `prompt`ความละเอียดสูงพร้อมคำแนะนำเฉพาะสำหรับกรณีของตัวแทน
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เกี่ยวเนื่องกับสิ่งนี้กับระบบไฟล์ที่อาจเป็นสาเหตุว่าทำไมจึงสามารถใช้ได้กับทั้ง OpenCode ส่วนกลางและเฉพาะโครงการ
|
||||
|
||||
---
|
||||
|
||||
### อย่างอย่างนั้น
|
||||
|
||||
ใช้ฟังก์ชัน `model` ในส่วนของโมเดลโมเดลสำหรับเอเจนต์นี้มีประโยชน์สำหรับการใช้โมเดลโมเลกุลซึ่งปรับให้เหมาะกับงานโครงสร้างเช่นโมดูลสำหรับโมดูลที่ตรวจสอบที่เก็บข้อมูลจำนวนมากสำหรับการดำเนินการ
|
||||
|
||||
:::tip
|
||||
ไม่ได้ระบุโมเดลตัวแทนหลักๆ [ โมเดลที่ build ทั่วโลก](/docs/config#models) ทำให้ตัวแทนย่อยในเมนูของตัวแทนหลักที่ทอดตัวแทนย่อยทั่วโลก
|
||||
:::
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
รหัสโมเดลในบางครั้ง OpenCode ของคุณใช้รูปแบบ `provider/model-id` เช่นต้องใช้ [OpenCode Zen](/docs/zen) แล้วก็ใช้ `opencode/gpt-5.1-codex` สำหรับ GPT 5.1 Codex
|
||||
|
||||
---
|
||||
|
||||
### เครื่องมือ
|
||||
|
||||
พื้นฐานว่าเครื่องมือนี้สามารถตรวจสอบประสิทธิภาพของเอเจนต์ด้วย `tools` วิจัยเปิดหรือตรวจสอบเครื่องมือเฉพาะเจาะจงเป็น `true` หรือ `false`
|
||||
|
||||
```json title="opencode.json" {3-6,9-12}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"bash": true
|
||||
},
|
||||
"agent": {
|
||||
"plan": {
|
||||
"tools": {
|
||||
"write": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
ความพยายามเฉพาะเอเจนต์จะเน้นไปที่ส่วนกลาง
|
||||
:::
|
||||
|
||||
จำเป็นต้องใช้ไวด์การ์ดเพื่อควบคุมเครื่องมือหลายรายการพร้อมกันได้ยืนยันว่าเครื่องมือทั้งหมดจากเซิร์ฟเวอร์ MCP:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"readonly": {
|
||||
"tools": {
|
||||
"mymcp_*": false,
|
||||
"write": false,
|
||||
"edit": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับเครื่องมือ](/docs/tools)
|
||||
|
||||
---
|
||||
|
||||
### สิทธิ์
|
||||
|
||||
หลักการที่ถูกต้องเพื่อประสิทธิภาพในการดำเนินการที่ตัวแทนหลายแห่งในปัจจุบันความสามารถในการสำหรับเครื่องมือ `edit`, `bash` และ `webfetch` ได้อย่างมีประสิทธิภาพเป็น:
|
||||
|
||||
- `"ask"` — อนุมัติก่อนการเข้าถึงเครื่องมือ
|
||||
- `"allow"` — ประสิทธิภาพการทำงานทั้งหมดเป็นเพียง...
|
||||
- `"deny"` — มันเป็นเครื่องมือ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ทำให้คุณมีสิทธิ์ที่จะต่อตัวแทนได้
|
||||
|
||||
```json title="opencode.json" {3-5,8-10}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny"
|
||||
},
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"edit": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
คุณไม่จำเป็นต้องมีสิทธิ์ในตัวแทน Markdown
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Code review without edits
|
||||
mode: subagent
|
||||
permission:
|
||||
edit: deny
|
||||
bash:
|
||||
"*": ask
|
||||
"git diff": allow
|
||||
"git log*": allow
|
||||
"grep *": allow
|
||||
webfetch: deny
|
||||
---
|
||||
|
||||
Only analyze code and suggest changes.
|
||||
```
|
||||
|
||||
การตั้งค่าเริ่มต้นสำหรับคำสั่งทุบตีเฉพาะได้
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"git push": "ask",
|
||||
"grep *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
นี่อาจใช้รูปแบบ glob
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"git *": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
และอีกครั้งใช้ `*` wildcard เพื่อให้สิทธิ์สำหรับคำสั่งทั้งหมดได้
|
||||
เมื่อกฎเริ่มขึ้นล่าสุดมีความสำคัญมากกว่าที่จะใส่ `*` ไวด์การ์ดขึ้นนำและกฎเฉพาะตามหลัง
|
||||
|
||||
```json title="opencode.json" {8}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git status *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้](/docs/permissions)
|
||||
|
||||
---
|
||||
|
||||
### สิ่ง
|
||||
|
||||
ต้นแบบโหมดของตัวแทนด้วย `mode` บันทึก `mode` บันทึกวิธีการกำหนดวิธีการใช้ตัวแทน
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"mode": "subagent"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
สวัสดี `mode` สามารถตั้งค่าเป็น `primary`, `subagent` หรือ `all` หากไม่ได้ระบุ `mode` ระบบระบบควบคุมเป็น `all`
|
||||
|
||||
---
|
||||
|
||||
### ส่วนนั้น
|
||||
|
||||
ซ่อนตัวแทนย่อยจากเมนูเติมข้อความอัตโนมัติ `@` ด้วย `hidden: true` มีประโยชน์สำหรับตัวแทนย่อยภายในจำเป็นต้องมีโปรแกรมโดยทางอื่นตัวแทนผ่านเครื่องมืองานเท่านั้น
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"internal-helper": {
|
||||
"mode": "subagent",
|
||||
"hidden": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ในที่สุดคุณจะพบในเมนูเติมข้อความอัตโนมัติเท่านั้นที่จำเป็นต้องมีเอเจนต์ที่เป็นได้ผ่านเครื่องมืองานหากต้องการ
|
||||
|
||||
:::note
|
||||
สามารถตัวแทน `mode: subagent` ได้
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### สิทธิ์งาน
|
||||
|
||||
ต้นแบบตัวแทนย่อยที่ตัวแทนสามารถต้องใช้เครื่องมือผ่านงานด้วย `permission.task` ใช้รูปแบบ glob ส่วนใหญ่ที่ใหญ่ขึ้น
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"orchestrator": {
|
||||
"mode": "primary",
|
||||
"permission": {
|
||||
"task": {
|
||||
"*": "deny",
|
||||
"orchestrator-*": "allow",
|
||||
"code-reviewer": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ตั้งเป็น `deny` แอดเจนต์ย่อยจะลบคำอธิบายเครื่องมืองานทั้งหมดนั่นคือโมเดลจะไม่พยายามทำอะไร
|
||||
|
||||
:::tip
|
||||
กฎเพื่อให้ชนะตามลำดับและ **กฎส่วนใหญ่ส่วนใหญ่จะสุดท้ายจะ** ในตัวอย่าง `*` (ปฏิเสธ) และ `orchestrator-*` (อาจจะ) แต่เนื่องจาก `orchestrator-*` มาหลัง `*` ผลลัพธ์ที่เป็น `allow`
|
||||
:::
|
||||
|
||||
:::tip
|
||||
ไม่จำเป็นต้องให้ตัวแทนย่อยใดๆก็ได้โดยตรงผ่านเมนูเติมข้อความอัตโนมัติ `@` สำหรับความต้องการของงานของตัวแทนจะเพิกเฉย
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### สี
|
||||
|
||||
ปรับแต่งความต้องการของตัวแทนใน UI ด้วยตัวเลือก `color` เพื่อดูลักษณะเฉพาะของตัวแทนในการปฏิบัติตาม
|
||||
|
||||
ใช้สีฐานสิบหกที่ถูกต้อง (เช่น `#FF5733`) หรือระบบควบคุม: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"creative": {
|
||||
"color": "#ff6b6b"
|
||||
},
|
||||
"code-reviewer": {
|
||||
"color": "accent"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ท็อปพี
|
||||
|
||||
หลักการของปฏิกิริยาด้วยตัวเลือก `top_p` ทางเลือกแทนการควบคุมการสุ่ม
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"brainstorm": {
|
||||
"top_p": 0.9
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ค่าครองชีพ 0.0 ถึง 1.0 ค่าที่ต่ำกว่าจะเน้นไปที่ค่าที่มักจะเป็นเวลานาน
|
||||
|
||||
---
|
||||
|
||||
### นั่น
|
||||
|
||||
ข้อมูลอื่นๆ ที่คุณระบุในบางครั้งตัวแทนของคุณไปที่ **ส่งผ่านโดยตรง** ในส่วนของโครงสร้างข้อมูล คุณจะต้องดำเนินการและตรวจสอบเฉพาะของข้อมูลเท่านั้นได้
|
||||
|
||||
เช่น ด้วยรูปแบบการใช้เหตุผลของ OpenAI อ่านการควบคุมเพื่อให้เหตุผล:
|
||||
|
||||
```json title="opencode.json" {6,7}
|
||||
{
|
||||
"agent": {
|
||||
"deep-thinker": {
|
||||
"description": "Agent that uses high reasoning effort for complex problems",
|
||||
"model": "openai/gpt-5",
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ตรวจสอบเพิ่มเติมในรุ่นและเฉพาะเจาะจงการสแกนเอกสารของคุณเพื่อดูภาพรวม
|
||||
|
||||
:::tip
|
||||
ต้องการ `opencode models` เพื่อดูรายการที่สมบูรณ์
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## สร้างตัวแทน
|
||||
|
||||
การสร้างตัวแทนใหม่ได้อีกครั้งตามลำดับ:
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
คำสั่งแบบในเวลานี้:
|
||||
|
||||
1. ถามว่าจะบันทึกตัวแทนได้ที่ไหนระดับโลกหรือเฉพาะโครงการ
|
||||
2. คำอธิบายสิ่งที่ตัวแทนควรทำ
|
||||
3. สร้างพรอมต์และตัวระบุชนิดของที่เหมาะสม
|
||||
4. ให้คุณเลือกเครื่องมือที่ตัวแทนอย่างเป็นทางการ
|
||||
5. ในที่สุดสร้างไฟล์มาร์กดาวน์ด้วยเอเจนต์
|
||||
|
||||
---
|
||||
|
||||
## กรณีการใช้งาน
|
||||
|
||||
ต่อไปเป็นกรณีการใช้งานทั่วไปสำหรับตัวแทนต่างๆ
|
||||
|
||||
- **ตัวแทนที่กำลังพัฒนา**: งานพัฒนาใหม่ล่าสุดโดยอาศัยเครื่องมือทั้งหมด
|
||||
- **ตัวแทนแผน**: ผู้วิเคราะห์และวางแผนโดยไม่ทำการเปลี่ยนแปลง
|
||||
- **ตัวแทนตรวจสอบ**: ตรวจสอบโค้ดพร้อมแบบอ่านเพียงอย่างเดียวพร้อมเครื่องมือเอกสารประกอบ
|
||||
- **ตัวแทนแก้ไขข้อบกพร่อง**: ตรวจสอบโดยการตรวจสอบโดยการควบคุมตีและผู้อ่าน
|
||||
- **ตัวแทนเอกสาร**: เนื้อหาเอกสารด้วยไฟล์จัดเก็บข้อมูลที่ระบบปฏิบัติตาม
|
||||
|
||||
---
|
||||
|
||||
## แปลความหมายได้
|
||||
|
||||
ตัวแทนอธิบายว่าคุณอาจจะพบว่ามีประโยชน์
|
||||
|
||||
:::tip
|
||||
คุณเป็นตัวแทนคุณต้องการแบ่งปันหรือไม่? [ส่งประชาสัมพันธ์](https://github.com/anomalyco/opencode)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### ตัวแทนเอกสาร
|
||||
|
||||
```markdown title="~/.config/opencode/agents/docs-writer.md"
|
||||
---
|
||||
description: Writes and maintains project documentation
|
||||
mode: subagent
|
||||
tools:
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are a technical writer. Create clear, comprehensive documentation.
|
||||
|
||||
Focus on:
|
||||
|
||||
- Clear explanations
|
||||
- Proper structure
|
||||
- Code examples
|
||||
- User-friendly language
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ผู้ตรวจสอบความปลอดภัย
|
||||
|
||||
```markdown title="~/.config/opencode/agents/security-auditor.md"
|
||||
---
|
||||
description: Performs security audits and identifies vulnerabilities
|
||||
mode: subagent
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
---
|
||||
|
||||
You are a security expert. Focus on identifying potential security issues.
|
||||
|
||||
Look for:
|
||||
|
||||
- Input validation vulnerabilities
|
||||
- Authentication and authorization flaws
|
||||
- Data exposure risks
|
||||
- Dependency vulnerabilities
|
||||
- Configuration security issues
|
||||
```
|
||||
601
packages/web/src/content/docs/th/cli.mdx
Normal file
601
packages/web/src/content/docs/th/cli.mdx
Normal file
@@ -0,0 +1,601 @@
|
||||
---
|
||||
title: CLI
|
||||
description: OpenCode CLI รับสัญญาณและคำสั่ง
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode CLI โดยเฉพาะอย่างยิ่งจะเริ่มต้น [TUI](/docs/tui) ไม่ต้องทำงานโดยไม่มีข้อใดใดๆ
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
การยอมรับคำสั่งตามเอกสารในนั้นด้วยเหตุนี้ทำให้คุณสามารถพบกับ OpenCode โดยทางโปรแกรมได้
|
||||
|
||||
```bash
|
||||
opencode run "Explain how closures work in JavaScript"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### tui
|
||||
|
||||
เริ่มเปิดให้ผู้ใช้เริ่มใช้ OpenCode
|
||||
|
||||
```bash
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | สั้น | คำอธิบาย |
|
||||
| ------------ | ----- | ------------------------------------------ |
|
||||
| `--continue` | `-c` | มาดูกันเป็นครั้งสุดท้าย |
|
||||
| `--session` | `-s` | รหัสให้ดีเพื่อเหตุการณ์ |
|
||||
| `--prompt` | | แจ้งการใช้งาน |
|
||||
| `--model` | `-m` | รูปแบบการใช้งานรูปแบบ provider/model |
|
||||
| `--agent` | | ตัวแทนการรับ |
|
||||
| `--port` | | ท่าเรือที่จะฟัง |
|
||||
| `--hostname` | | ชื่อที่จะฟัง |
|
||||
|
||||
---
|
||||
|
||||
## คำสั่ง
|
||||
|
||||
OpenCode CLI ยังมีคำสั่งอีกมากมาย
|
||||
|
||||
---
|
||||
|
||||
### agent
|
||||
|
||||
จัดการตัวแทนสำหรับ OpenCode
|
||||
|
||||
```bash
|
||||
opencode agent [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### attach
|
||||
|
||||
สาเหตุว่าทำไมเซิร์ฟเวอร์แบ็กเอนด์ OpenCode ที่รันจริงๆ ซึ่งเริ่มต้นผ่านคำสั่ง `serve` หรือ `web`
|
||||
|
||||
```bash
|
||||
opencode attach [url]
|
||||
```
|
||||
|
||||
วิธีการใช้ TUI กับแบ็กเอนด์ OpenCode ตัวอย่าง:
|
||||
|
||||
```bash
|
||||
# Start the backend server for web/mobile access
|
||||
opencode web --port 4096 --hostname 0.0.0.0
|
||||
|
||||
# In another terminal, attach the TUI to the running backend
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | สั้น | คำอธิบาย |
|
||||
| ----------- | ----- | --------------------------------- |
|
||||
| `--dir` | | ไดเร็กทอรีการทำงานเพื่อเริ่มต้น TUI ใน |
|
||||
| `--session` | `-s` | รหัสให้ดีเพื่อเหตุการณ์ |
|
||||
|
||||
---
|
||||
|
||||
#### create
|
||||
|
||||
สร้างตัวแทนใหม่ด้วยคืนนี้
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
คำสั่งนี้จะแนะนำคุณตลอดไปจนถึงเอเจนต์ใหม่พร้อมพร้อมท์ระบบและประสิทธิภาพของเครื่องมือ
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
รายชื่อตัวแทนทั้งหมดทั้งหมด
|
||||
|
||||
```bash
|
||||
opencode agent list
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### auth
|
||||
|
||||
ขอแจ้งให้ทราบข้อมูลและข้อมูลเข้าสู่ระบบสำหรับ...
|
||||
|
||||
```bash
|
||||
opencode auth [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### login
|
||||
|
||||
OpenCode มีประสิทธิภาพสูงโดยรายชื่อทั่วไปที่ [Models.dev](https://models.dev) ดังนั้นเหตุผลที่เป็นไปได้ API สำหรับความต้องการใดๆ จำเป็นต้องใช้ข้อมูลนี้ถูกที่ `~/.local/share/opencode/auth.json`
|
||||
|
||||
```bash
|
||||
opencode auth login
|
||||
```
|
||||
|
||||
เมื่อ OpenCode เริ่มต้นระบบจะโหลดจากไฟล์ข้อมูลรับรองและไม่จำเป็นต้องคำนึงถึงสิ่งใด ๆ ที่จะพบไฟล์ของคุณหรือ `.env` ในโปรเจ็กต์ของคุณ
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
การแจ้งเตือนที่พิสูจน์ความถูกต้องทั้งหมดซึ่งจัดเป็นไฟล์ข้อมูลสามารถตรวจสอบได้
|
||||
|
||||
```bash
|
||||
opencode auth list
|
||||
```
|
||||
|
||||
หรือฮิลตันสั้น
|
||||
|
||||
```bash
|
||||
opencode auth ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
|
||||
นำคุณออกจากระบบของมักจะพบข้อมูลจากไฟล์รับรองข้อมูล
|
||||
|
||||
```bash
|
||||
opencode auth logout
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### github
|
||||
|
||||
การจัดการเอเจนต์ GitHub สำหรับพื้นที่อัตโนมัติ
|
||||
|
||||
```bash
|
||||
opencode github [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### install
|
||||
|
||||
ตู้เสื้อผ้าเอเจนต์ GitHub ในที่เก็บของคุณ
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
```
|
||||
|
||||
ไม่ว่าคุณจะเริ่มต้นโฟลว์ GitHub Actions และแนะนำคุณตลอดประวัติศาสตร์ [เรียนรู้เพิ่มเติม](/docs/github)
|
||||
|
||||
---
|
||||
|
||||
#### run
|
||||
|
||||
ต้องการตัวแทน GitHub อีกครั้งใน GitHub Actions
|
||||
|
||||
```bash
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### ยอด
|
||||
|
||||
| ยอด | คำอธิบาย |
|
||||
| --------- | -------------------------------------- |
|
||||
| `--event` | การจำลอง GitHub เพื่อขอรับตัวแทน |
|
||||
| `--token` | ความเป็นส่วนตัวของ GitHub |
|
||||
|
||||
---
|
||||
|
||||
### mcp
|
||||
|
||||
เซิร์ฟเวอร์เซิร์ฟเวอร์ Model Context Protocol
|
||||
|
||||
```bash
|
||||
opencode mcp [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### add
|
||||
|
||||
เพลิดเพลินไปกับแขก MCP ในคืนนี้ของคุณ
|
||||
|
||||
```bash
|
||||
opencode mcp add
|
||||
```
|
||||
|
||||
คำสั่งนี้จะแนะนำคุณในคืนนี้ MCP ความเชื่อหรือในตำนาน
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
เชิญแขก MCP ที่ RAM ทั้งหมดและดำรงอยู่
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
```
|
||||
|
||||
ต้องใช้หอพักระยะสั้น
|
||||
|
||||
```bash
|
||||
opencode mcp ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### auth
|
||||
|
||||
ตัดสิทธิ์กับแขก MCP ที่ OAuth
|
||||
|
||||
```bash
|
||||
opencode mcp auth [name]
|
||||
```
|
||||
|
||||
ไม่ต้องระบุชื่อเซิร์ฟเวอร์ คุณจะได้รับแจ้งจากเซิร์ฟเวอร์ที่รองรับ OAuth ที่พร้อมให้บริการ
|
||||
|
||||
รับรองว่ารองรับ OAuth และสถานะยืนยันสิทธิ์ได้
|
||||
|
||||
```bash
|
||||
opencode mcp auth list
|
||||
```
|
||||
|
||||
ต้องใช้หอพักระยะสั้น
|
||||
|
||||
```bash
|
||||
opencode mcp auth ls
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
|
||||
ข้อมูลรับรอง OAuth สำหรับผู้เข้าชม MCP
|
||||
|
||||
```bash
|
||||
opencode mcp logout [name]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### debug
|
||||
|
||||
โปรดตรวจสอบ OAuth สำหรับเซิร์ฟเวอร์ MCP
|
||||
|
||||
```bash
|
||||
opencode mcp debug <name>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### models
|
||||
|
||||
การทดลองแบบจำลองทั้งหมดทั้งหมดจากที่เก็บข้อมูลนี้
|
||||
|
||||
```bash
|
||||
opencode models [provider]
|
||||
```
|
||||
|
||||
คำสั่งนี้แสดงให้เห็นโมเดลทั้งหมดและเป็นที่เก็บข้อมูลของคุณ `provider/model`
|
||||
|
||||
คุณสามารถใช้ชื่อรุ่นได้อย่างแม่นยำใน [ ฟังก์ชั่นของคุณ](/docs/config/)
|
||||
|
||||
สามารถส่งรหัสมีหน้าที่เพื่อกรองโมเดลตามส่วนรายนั้นได้
|
||||
|
||||
```bash
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | คำอธิบาย |
|
||||
| ----------- | ------------------------------------------------------------ |
|
||||
| `--refresh` | โครงสร้างแคชโมเดลจาก models.dev |
|
||||
| `--verbose` | ใช้โมเดลนี้เพื่อตรวจสอบ (รวมข้อมูลเมตาเช่นต้นทุน) |
|
||||
|
||||
ใช้แฟล็ก `--refresh` ในที่นี้รายการโมเดลที่แคชไว้ตรงนั้นมีประโยชน์เพิ่มโมเดลใหม่ให้กับระบบและขอดูโมเดลของข้อมูลใน OpenCode
|
||||
|
||||
```bash
|
||||
opencode models --refresh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### run
|
||||
|
||||
ต้องการ opencode ภายนอกไม่มีการแจ้งโดยแจ้งแจ้งโดยตรง
|
||||
|
||||
```bash
|
||||
opencode run [message..]
|
||||
```
|
||||
|
||||
มีประโยชน์สำหรับการทำงานร่วมกันของการทำงานอัตโนมัติหรือเมื่อต้องการให้ตอบสนองอย่างรวดเร็วเปิด TUI เป็นตัวอย่าง
|
||||
|
||||
```bash "opencode run"
|
||||
opencode run Explain the use of context in Go
|
||||
```
|
||||
|
||||
ขอแนบไปกับฟีเจอร์นี้ `opencode serve` ทำงานอยู่อีกครั้งเวลาของแขก MCP การทำงานหลายอย่าง:
|
||||
|
||||
```bash
|
||||
# Start a headless server in one terminal
|
||||
opencode serve
|
||||
|
||||
# In another terminal, run commands that attach to it
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | สั้น | คำอธิบาย |
|
||||
| ------------ | ----- | ------------------------------------------------------------------ |
|
||||
| `--command` | | คำสั่งให้รันใช้ข้อความสำหรับ args |
|
||||
| `--continue` | `-c` | มาดูกันเป็นครั้งสุดท้าย |
|
||||
| `--session` | `-s` | รหัสให้ดีเพื่อเหตุการณ์ |
|
||||
| `--share` | | เซสชั่น |
|
||||
| `--model` | `-m` | รูปแบบการใช้งานรูปแบบ provider/model |
|
||||
| `--agent` | | ตัวแทนการรับ |
|
||||
| `--file` | `-f` | แนบไปกับข้อความได้เลย |
|
||||
| `--format` | | การรักษา: (จัดรูปแบบ) หรือ json ( อดทนดิบ JSON) |
|
||||
| `--title` | | ชื่อเรื่องสำหรับการเฉลิมฉลอง (ใช้พร้อมท์ที่สามารถนำมาใช้กับค่าตัวยึด) |
|
||||
| `--attach` | | แนบไปกับผู้โดยสาร opencode สำนักงานอยู่ (เช่น http://localhost:4096) |
|
||||
| `--port` | | ท่าเรือสำหรับผู้โดยสารภายในเครื่อง (ตรวจสอบเป็นพอร์ตสุ่ม) |
|
||||
|
||||
---
|
||||
|
||||
### serve
|
||||
|
||||
เริ่มต้นเลานจ์ OpenCode ไม่เพียงแต่สำหรับนักท่องเที่ยวเท่านั้น API ภาพถ่าย [เอกสารรับรอง](/docs/server) เพื่อดู HTTP เต็มรูปแบบ
|
||||
|
||||
```bash
|
||||
opencode serve
|
||||
```
|
||||
|
||||
ตัวควบคุมจะเริ่มต้นเซิร์ฟเวอร์ HTTP ให้ API เข้าถึงฟังก์ชันการทำงานของ opencode ได้อย่างมีประสิทธิภาพ TUI จัดเตรียม `OPENCODE_SERVER_PASSWORD` ประสิทธิภาพของฮาร์ดแวร์ฮาร์ดแวร์ความถูกต้องพื้นฐาน HTTP (ตัวควบคุมของฮาร์ดแวร์คือ `opencode`)
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | คำอธิบาย |
|
||||
| ------------ | ------------------------------------------ |
|
||||
| `--port` | ท่าเรือที่จะฟัง |
|
||||
| `--hostname` | ชื่อที่จะฟัง |
|
||||
| `--mdns` | โปรดตรวจสอบ mDNS |
|
||||
| `--cors` | จำเป็นต้องมีเพิ่มเติมเพื่อการทำงาน CORS |
|
||||
|
||||
---
|
||||
|
||||
### session
|
||||
|
||||
การจัดการ OpenCode
|
||||
|
||||
```bash
|
||||
opencode session [command]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
การแจ้งเตือน OpenCode ทั้งหมด
|
||||
|
||||
```bash
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### ยอด
|
||||
|
||||
| ยอด | สั้น | คำอธิบาย |
|
||||
| ------------- | ----- | ------------------------------------ |
|
||||
| `--max-count` | `-n` | จำกัดการควบคุม N ใหม่ล่าสุด |
|
||||
| `--format` | | ตารางตารางหรือ json (ตาราง) |
|
||||
|
||||
---
|
||||
|
||||
### stats
|
||||
|
||||
แสดงสถิติการเริ่มต้นและค่าใช้จ่ายสำหรับ OpenCode ของคุณ
|
||||
|
||||
```bash
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | คำอธิบาย |
|
||||
| ----------- | --------------------------------------------------------------------------- |
|
||||
| `--days` | แสดงสถิติของ N วันในอดีต (ตลอดเวลา) |
|
||||
| `--tools` | เครื่องมือที่มองเห็น (ทั้งหมด) |
|
||||
| `--models` | แสดงรายละเอียดการใช้งานโมเดล (ซ่อนไว้ตามตัวอย่าง) เอกสารหมายเลขนั้น N หมายเลขบน |
|
||||
| `--project` | กรองตามโครงการ (โครงการทั้งหมดที่มีอยู่: โครงการปัจจุบัน) |
|
||||
|
||||
---
|
||||
|
||||
### export
|
||||
|
||||
ส่งออกข้อมูลข่าวสารเป็น JSON
|
||||
|
||||
```bash
|
||||
opencode export [sessionID]
|
||||
```
|
||||
|
||||
ไม่ระบุรหัสผู้ดูแลระบบ คุณจะได้รับแจ้งจากการปรับปรุงดังกล่าว
|
||||
|
||||
---
|
||||
|
||||
### import
|
||||
|
||||
นำเข้าข้อมูลที่ดีจากไฟล์ JSON หรือแชร์ OpenCode URL
|
||||
|
||||
```bash
|
||||
opencode import <file>
|
||||
```
|
||||
|
||||
ไม่เคยนำเข้าไฟล์ในเครื่องหรือแชร์ OpenCode URL
|
||||
|
||||
```bash
|
||||
opencode import session.json
|
||||
opencode import https://opncd.ai/s/abc123
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### web
|
||||
|
||||
เชิญแขก OpenCode อย่างเป็นทางการด้วยเว็บอินเตอร์เฟส
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
ตัวควบคุมจะเริ่มต้นเซิร์ฟเวอร์ HTTP และเปิดเว็บเองเพื่อเข้าถึง OpenCode ผ่านทางเว็บอินเตอร์เฟส จัดเตรียม `OPENCODE_SERVER_PASSWORD` สำหรับคำอธิบายคุณสมบัติความถูกต้องพื้นฐาน HTTP (ตัวยึดของฮาร์ดแวร์คือ `opencode`)
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | คำอธิบาย |
|
||||
| ------------ | ------------------------------------------ |
|
||||
| `--port` | ท่าเรือที่จะฟัง |
|
||||
| `--hostname` | ชื่อที่จะฟัง |
|
||||
| `--mdns` | โปรดตรวจสอบ mDNS |
|
||||
| `--cors` | จำเป็นต้องมีเพิ่มเติมเพื่อการทำงาน CORS |
|
||||
|
||||
---
|
||||
|
||||
### acp
|
||||
|
||||
เริ่มต้นเซิร์ฟเวอร์ ACP (Agent Client Protocol)
|
||||
|
||||
```bash
|
||||
opencode acp
|
||||
```
|
||||
|
||||
สั่งนี้เริ่มต้นผู้โดยสาร ACP ที่สื่อสารผ่าน stdin/stdout nd-JSON
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | คำอธิบาย |
|
||||
| ------------ | --------------------- |
|
||||
| `--cwd` | ไดเร็กทอรีการทำงาน |
|
||||
| `--port` | ท่าเรือที่จะฟัง |
|
||||
| `--hostname` | ชื่อที่จะฟัง |
|
||||
|
||||
---
|
||||
|
||||
### uninstall
|
||||
|
||||
ไม่ว่า OpenCode และลบไฟล์ทั้งหมดทั้งหมด
|
||||
|
||||
```bash
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | สั้น | คำอธิบาย |
|
||||
| --------------- | ----- | ------------------------------------------- |
|
||||
| `--keep-config` | `-c` | เก็บไฟล์ไว้ที่นี่ |
|
||||
| `--keep-data` | `-d` | บางครั้งเซสชั่นและสแน็ปช็อต |
|
||||
| `--dry-run` | | แสดงสิ่งที่จะลบออกโดยไม่ต้องใช้ออก |
|
||||
| `--force` | `-f` | ข้อความแจ้งข้อความ |
|
||||
|
||||
---
|
||||
|
||||
### upgrade
|
||||
|
||||
อัปเดต opencode เป็นครั้งสุดท้ายหรือเฉพาะเจาะจง
|
||||
|
||||
```bash
|
||||
opencode upgrade [target]
|
||||
```
|
||||
|
||||
เราปรับปรุงเป็นระดับล่าสุด
|
||||
|
||||
```bash
|
||||
opencode upgrade
|
||||
```
|
||||
|
||||
เพื่อพัฒนาเป็นฮอนด้าโดยเฉพาะ
|
||||
|
||||
```bash
|
||||
opencode upgrade v0.1.48
|
||||
```
|
||||
|
||||
#### ยอด
|
||||
|
||||
| ยอด | สั้น | คำอธิบาย |
|
||||
| ---------- | ----- | ----------------------------------------------------------------- |
|
||||
| `--method` | `-m` | วิธีการติดตั้งที่ใช้curl, npm, pnpm, ขนมปัง, ชง |
|
||||
|
||||
---
|
||||
|
||||
## ระดับโลก
|
||||
|
||||
opencode CLI รับค่าสถานะสากลต่อไป
|
||||
|
||||
| ยอด | สั้น | คำอธิบาย |
|
||||
| -------------- | ----- | ------------------------------------ |
|
||||
| `--help` | `-h` | แสดงความช่วยเหลือ |
|
||||
| `--version` | `-v` | หมายเลขการพิมพ์ |
|
||||
| `--print-logs` | | พิมพ์บันทึกไปยัง stderr |
|
||||
| `--log-level` | | ระดับการเรียนรู้ (DEBUG, INFO, WARN, ERROR) |
|
||||
|
||||
---
|
||||
|
||||
## อีกครั้งหนึ่ง
|
||||
|
||||
OpenCode สามารถทำได้ตามที่กล่าวมาข้างต้น
|
||||
|
||||
| ส่วนนั้น | พิมพ์ | คำอธิบาย |
|
||||
| ------------------------------------- | ------- | ------------------------------------------------- |
|
||||
| `OPENCODE_AUTO_SHARE` | บูลิน | แชร์การแจ้งเตือน |
|
||||
| `OPENCODE_GIT_BASH_PATH` | เชือก | เข้าสู่ Git Bash ได้บน Windows |
|
||||
| `OPENCODE_CONFIG` | เชือก | ไปยังไฟล์ฟิลม์ |
|
||||
| `OPENCODE_CONFIG_DIR` | เชือก | เพื่อเป็นไดเร็กทอรีคุณสามารถดู |
|
||||
| `OPENCODE_CONFIG_CONTENT` | เชือก | เนื้อหาเหมือนกับ json แบบอินไลน์ |
|
||||
| `OPENCODE_DISABLE_AUTOUPDATE` | บูลิน | ตรวจสอบระบบควบคุมอัตโนมัติ |
|
||||
| `OPENCODE_DISABLE_PRUNE` | บูลิน | การควบคุมการกำจัดข้อมูลเก่า |
|
||||
| `OPENCODE_DISABLE_TERMINAL_TITLE` | บูลิน | เพื่อเป็นชื่อระบบควบคุมอัตโนมัติ |
|
||||
| `OPENCODE_PERMISSION` | เชือก | มีสิทธิ์ json แบบอินไลน์ |
|
||||
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | บูลิน | การติดตามผลเริ่มต้น |
|
||||
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | บูลิน | ค่ำคืนนี้อาหารค่ำ LSP อัตโนมัติ |
|
||||
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | บูลิน | รูปแบบการทดลอง |
|
||||
| `OPENCODE_DISABLE_AUTOCOMPACT` | บูลิน | เพื่อการกระชับระบบอัตโนมัติ |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | บูลิน | การควบคุมดูแลจาก `.claude` (พร้อมท์ + ทักษะ) |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | บูลิน | การควบคุมดูแล `~/.claude/CLAUDE.md` |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | บูลิน | ต่อมา `.claude/skills` |
|
||||
| `OPENCODE_DISABLE_MODELS_FETCH` | บูลิน | ปิดใช้การดึงโมเดลจากแหล่งที่มาของข้อมูล |
|
||||
| `OPENCODE_FAKE_VCS` | เชือก | ประธานาธิบดี VCS ปลอมเพื่อการทดสอบ |
|
||||
| `OPENCODE_DISABLE_FILETIME_CHECK` | บูลิน | ตรวจสอบเวลาไฟล์เพื่อตรวจสอบ |
|
||||
| `OPENCODE_CLIENT` | เชือก | คนที่ระบุลูกค้า (ส่วนคือ `cli`) |
|
||||
| `OPENCODE_ENABLE_EXA` | บูลิน | นอกจากนี้เรายังมีเว็บ Exa |
|
||||
| `OPENCODE_SERVER_PASSWORD` | เชือก | เอกสารสิทธิ์พื้นฐานสำหรับ `serve`/@@1@@ |
|
||||
| `OPENCODE_SERVER_USERNAME` | เชือก | เมนบอร์ดระบบควบคุมคุณสมบัติความถูกต้องพื้นฐาน ( `opencode`) |
|
||||
| `OPENCODE_MODELS_URL` | เชือก | ขอขอบคุณ URL สำหรับข้อมูลดึงข้อมูลโมเดล |
|
||||
|
||||
---
|
||||
|
||||
### ส่วนนั้น
|
||||
|
||||
อาจเป็นไปได้ว่าคุณสมบัติการทดลองนี้สามารถปรับเปลี่ยนหรือถูกลบออกได้
|
||||
|
||||
| ส่วนนั้น | พิมพ์ | คำอธิบาย |
|
||||
| ----------------------------------------------- | ------- | --------------------------------------- |
|
||||
| `OPENCODE_EXPERIMENTAL` | บูลิน | ในที่สุดเราก็ทดลองทั้งหมด |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | บูลิน | การแจ้งเตือนการแจ้งเตือน |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | บูลิน | ยังไงก็ตามการเลือกที่จะเลือกใน TUI |
|
||||
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | ตัวเลข | การหมดเวลาเริ่มต้นสำหรับคำสั่ง bash ในหน่วย ms |
|
||||
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | ตัวเลข | เหตุผลที่สูงสุดสำหรับตอบกลับ LLM |
|
||||
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | บูลิน | เพื่อให้ตัวดูไฟล์สำหรับ dir ทั้งหมด |
|
||||
| `OPENCODE_EXPERIMENTAL_OXFMT` | บูลิน | เพื่อให้เป็นไปตามแมตเตอร์ oxfmt |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | บูลิน | สามารถใช้เครื่องมือทดลอง LSP |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | บูลิน | ไม่ใช่ตัวดูไฟล์ |
|
||||
| `OPENCODE_EXPERIMENTAL_EXA` | บูลิน | คุณสมบัติ Exa ทดลอง |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TY` | บูลิน | ตรวจสอบประเภท LSP แบบทดลอง |
|
||||
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | บูลิน | สามารถใช้มาร์กดาวน์รุ่นทดลองได้ |
|
||||
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | บูลิน | เพื่อเป็นโหมด |
|
||||
323
packages/web/src/content/docs/th/commands.mdx
Normal file
323
packages/web/src/content/docs/th/commands.mdx
Normal file
@@ -0,0 +1,323 @@
|
||||
---
|
||||
title: คำสั่ง
|
||||
description: คำสั่งสร้างคำสั่งอีกครั้งที่ซ้ำกัน
|
||||
---
|
||||
|
||||
คำสั่งดังกล่าวระบุพรอมต์จำเป็นต้องร้องขอเมื่อคำสั่งนั้นถูกดำเนินการใน TUI
|
||||
|
||||
```bash frame="none"
|
||||
/my-command
|
||||
```
|
||||
|
||||
คำสั่งแบบกำหนดเองเป็นส่วนเพิ่มเติมจากคำสั่งในตัว เช่น `/init`, `/undo`, `/redo`, `/share`, `/help` [เรียนรู้เพิ่มเติม](/docs/tui#คำสั่ง)
|
||||
|
||||
---
|
||||
|
||||
## สร้างไฟล์คำสั่ง
|
||||
|
||||
สร้างไฟล์มาร์กดาวน์ในไดเร็กทอรี `commands/` เพื่อกำหนดคำสั่งทำตาม
|
||||
|
||||
สร้าง `.opencode/commands/test.md`:
|
||||
|
||||
```md title=".opencode/commands/test.md"
|
||||
---
|
||||
description: Run tests with coverage
|
||||
agent: build
|
||||
model: anthropic/claude-3-5-sonnet-20241022
|
||||
---
|
||||
|
||||
Run the full test suite with coverage report and show any failures.
|
||||
Focus on the failing tests and suggest fixes.
|
||||
```
|
||||
|
||||
frontmatter กำหนดคุณสมบัติคำสั่งเนื้อหาโดยละเอียด
|
||||
|
||||
ใช้คำสั่งโดยพิมพ์ `/` คำสั่งคำสั่ง
|
||||
|
||||
```bash frame="none"
|
||||
"/test"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## เม็กซิโก
|
||||
|
||||
คำสั่งนี้จะผ่าน OpenCode หรือโดยการดำเนินการไฟล์มาร์กดาวน์ในไดเร็กทอรี `commands/`
|
||||
|
||||
---
|
||||
|
||||
### JSON
|
||||
|
||||
ใช้ส่วน `command` ใน OpenCode ของคุณ [config](/docs/config):
|
||||
|
||||
```json title="opencode.jsonc" {4-12}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"command": {
|
||||
// This becomes the name of the command
|
||||
"test": {
|
||||
// This is the prompt that will be sent to the LLM
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
|
||||
// This is shown as the description in the TUI
|
||||
"description": "Run tests with coverage",
|
||||
"agent": "build",
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
รันคำสั่งนี้ใน TUI:
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### มาร์กดาวน์
|
||||
|
||||
หากต้องการกำหนดคำสั่งของไฟล์มาร์กดาวน์ได้คุณจะต้องดำเนินการใน:
|
||||
|
||||
- ทั่วโลก: `~/.config/opencode/commands/`
|
||||
- ต่อโครงการ: `.opencode/commands/`
|
||||
|
||||
```markdown title="~/.config/opencode/commands/test.md"
|
||||
---
|
||||
description: Run tests with coverage
|
||||
agent: build
|
||||
model: anthropic/claude-3-5-sonnet-20241022
|
||||
---
|
||||
|
||||
Run the full test suite with coverage report and show any failures.
|
||||
Focus on the failing tests and suggest fixes.
|
||||
```
|
||||
|
||||
ชื่อไฟล์มาร์กดาวน์ในชื่อคำสั่งเช่น `test.md` ให้
|
||||
คุณวิ่ง:
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## เรามีพร้อมท์
|
||||
|
||||
พร้อมรองรับคำสั่งรองรับตามตำแหน่งและพิเศษหลายรายการ
|
||||
|
||||
---
|
||||
|
||||
### บทความโทรทัศน์
|
||||
|
||||
ส่งผ่านข้อเขียนไปยังคำสั่งของวงดนตรี `$ARGUMENTS`
|
||||
|
||||
```md title=".opencode/commands/component.md"
|
||||
---
|
||||
description: Create a new component
|
||||
---
|
||||
|
||||
Create a new React component named $ARGUMENTS with TypeScript support.
|
||||
Include proper typing and basic structure.
|
||||
```
|
||||
|
||||
รันคำสั่งพร้อมอาร์กิวเมนต์:
|
||||
|
||||
```bash frame="none"
|
||||
/component Button
|
||||
```
|
||||
|
||||
และ `$ARGUMENTS` จะเป็นอย่างไร `Button`
|
||||
|
||||
เราสามารถเข้าถึงแต่ละจุดได้ตามความต้องการตามหลัก:
|
||||
|
||||
- `$1` - อาร์กิวเมนต์แรก
|
||||
- `$2` - อาร์กิวเมนต์ที่สอง
|
||||
- `$3` - อาร์กิวเมนต์ที่สาม
|
||||
- นั่น...
|
||||
|
||||
เช่น:
|
||||
|
||||
```md title=".opencode/commands/create-file.md"
|
||||
---
|
||||
description: Create a new file with content
|
||||
---
|
||||
|
||||
Create a file named $1 in the directory $2
|
||||
with the following content: $3
|
||||
```
|
||||
|
||||
รันคำสั่ง:
|
||||
|
||||
```bash frame="none"
|
||||
/create-file config.json src "{ \"key\": \"value\" }"
|
||||
```
|
||||
|
||||
คุณจะรู้สึกได้ถึงความสูง:
|
||||
|
||||
- `$1` กับ `config.json`
|
||||
- `$2` กับ `src`
|
||||
- `$3` กับ `{ "key": "value" }`
|
||||
|
||||
---
|
||||
|
||||
### ส่วนเชล
|
||||
|
||||
ใช้ _!`command`_เพื่อที่จะฉีดประสิทธิภาพสูง [bash command](/docs/tui#bash-commands) ติดตั้งพรอมต์ของคุณ
|
||||
|
||||
เพื่อเป็นคำสั่งสร้างความพยายามเพื่อวิเคราะห์การทดสอบของการทดสอบ:
|
||||
|
||||
```md title=".opencode/commands/analyze-coverage.md"
|
||||
---
|
||||
description: Analyze test coverage
|
||||
---
|
||||
|
||||
Here are the current test results:
|
||||
!`npm test`
|
||||
|
||||
Based on these results, suggest improvements to increase coverage.
|
||||
```
|
||||
|
||||
หรือตรวจสอบการเปลี่ยนแปลงล่าสุด:
|
||||
|
||||
```md title=".opencode/commands/review-changes.md"
|
||||
---
|
||||
description: Review recent changes
|
||||
---
|
||||
|
||||
Recent git commits:
|
||||
!`git log --oneline -10`
|
||||
|
||||
Review these changes and suggest any improvements.
|
||||
```
|
||||
|
||||
คำสั่งไดเร็กทอรีรากของโปรเจ็กต์การปฏิบัติตามคำสั่งพร้อมท์
|
||||
|
||||
---
|
||||
|
||||
### อ้างถึงไฟล์
|
||||
|
||||
รวมไฟล์ในคำสั่งของคุณ `@` ในชื่อไฟล์
|
||||
|
||||
```md title=".opencode/commands/review-component.md"
|
||||
---
|
||||
description: Review component
|
||||
---
|
||||
|
||||
Review the component in @src/components/Button.tsx.
|
||||
Check for performance issues and suggest improvements.
|
||||
```
|
||||
|
||||
เนื้อหาไฟล์จะถูกรวมไว้ด้วยการประกาศอย่างเป็นทางการ
|
||||
|
||||
---
|
||||
|
||||
## ต
|
||||
|
||||
มาดูรายละเอียดเพิ่มเติมกัน
|
||||
|
||||
---
|
||||
|
||||
### เทม
|
||||
|
||||
`template` กำหนดพรอมต์ที่จะเป็นไปได้ LLM จะดำเนินการคำสั่ง
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"test": {
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
รายการไม่จำเป็น **จำเป็น**
|
||||
|
||||
---
|
||||
|
||||
### คำอธิบาย
|
||||
|
||||
ใช้ตัวเลือก `description` เพื่อให้คำอธิบายโดยย่อเกี่ยวกับสิ่งที่คำสั่งทำ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"test": {
|
||||
"description": "Run tests with coverage"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
คำอธิบายที่เป็นคำอธิบายใน TUI คุณต้องการเขียนคำสั่ง
|
||||
|
||||
---
|
||||
|
||||
### ตัวแทน
|
||||
|
||||
ใช้ `agent` เพื่อระบุทางเลือกว่า [ตัวแทน](/docs/agents) ใดควรดำเนินการคำสั่งนี้
|
||||
นี่คือ [ตัวแทนย่อย](/docs/agents/#subagents) คำสั่งจะไม่จำเป็นต้องทำการย่อยตัวแทนย่อยตาม...
|
||||
เหตุผลที่ทำให้สิ่งนี้เป็นไปได้ `subtask` เป็น `false`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"review": {
|
||||
"agent": "plan"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ขึ้นอยู่กับ ** ตัวเลือก** หากไม่ได้ระบุเหตุผลว่าเป็นเอเจนต์ปัจจุบันของคุณ
|
||||
|
||||
---
|
||||
|
||||
### งานย่อย
|
||||
|
||||
ใช้ `subtask` บูลีนเพื่อไม่จำเป็นต้องทำอะไรเลย [subagent](/docs/agents/#subagents)
|
||||
เพราะเหตุใดจะช่วยให้คำสั่งไม่ทำให้ระบบหลักของคุณเสียหาย และจะ **บังคับ** เอเจนต์ให้ความเห็นตัวแทนย่อย
|
||||
โปรดดู `mode` เพื่อดูการตั้งค่าเป็น `primary` ในคืนนี้ [agent](/docs/agents) แขก
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"analyze": {
|
||||
"subtask": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ส่วนนี้ **ทางเลือก**
|
||||
|
||||
---
|
||||
|
||||
### อย่างอย่างนั้น
|
||||
|
||||
ใช้ `model` ไปจนถึงโมเดลเริ่มต้นสำหรับคำสั่งนี้
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"command": {
|
||||
"analyze": {
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ส่วนนี้ **ทางเลือก**
|
||||
|
||||
---
|
||||
|
||||
## บิวท์อิน
|
||||
|
||||
opencode มีคำสั่งในคำสั่งหลายเช่น `/init`, `/undo`, `/redo`, `/share`, `/help`; [เรียนรู้เพิ่มเติม](/docs/tui#คำสั่ง)
|
||||
|
||||
:::note
|
||||
คำสั่งนี้สามารถดำเนินการได้ในขั้นตอนนี้
|
||||
:::
|
||||
|
||||
บันทึกคำสั่งด้วยชื่อเดียวกันคำสั่งย้ำคำสั่งใน
|
||||
685
packages/web/src/content/docs/th/config.mdx
Normal file
685
packages/web/src/content/docs/th/config.mdx
Normal file
@@ -0,0 +1,685 @@
|
||||
---
|
||||
title: การกำหนดค่า
|
||||
description: การใช้การกำหนดค่า OpenCode JSON
|
||||
---
|
||||
|
||||
คุณสามารถกำหนดค่า OpenCode ได้โดยใช้ไฟล์กำหนดค่า JSON
|
||||
|
||||
---
|
||||
|
||||
## รูปแบบ
|
||||
|
||||
OpenCode รองรับทั้งรูปแบบ **JSON** และ **JSONC** (JSON พร้อมความคิดเห็น)
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
// Theme configuration
|
||||
"theme": "opencode",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"autoupdate": true,
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## สถานที่
|
||||
|
||||
คุณสามารถวางการกำหนดค่าของคุณในสถานที่ต่าง ๆ สองสามแห่งและมี
|
||||
ลำดับความสำคัญที่แตกต่างกัน
|
||||
|
||||
:::note
|
||||
ไฟล์การกำหนดค่า **ถูกรวมเข้าด้วยกัน** โดยไม่มีการแทนที่
|
||||
:::
|
||||
|
||||
ไฟล์การกำหนดค่าจะถูกรวมเข้าด้วยกัน โดยไม่มีการแทนที่ การตั้งค่าจากตำแหน่งการกำหนดค่าต่อไปนี้จะรวมกัน การกำหนดค่าในภายหลังจะแทนที่การกำหนดค่าก่อนหน้าสำหรับคีย์ที่ขัดแย้งกันเท่านั้น การตั้งค่าที่ไม่ขัดแย้งจากการกำหนดค่าทั้งหมดจะยังคงอยู่
|
||||
|
||||
ตัวอย่างเช่น หากการกำหนดค่าส่วนกลางของคุณตั้งค่า `theme: "opencode"` และ `autoupdate: true` และการกำหนดค่าโปรเจ็กต์ของคุณตั้งค่า `model: "anthropic/claude-sonnet-4-5"` การกำหนดค่าสุดท้ายจะรวมการตั้งค่าทั้งสามรายการไว้ด้วย
|
||||
|
||||
---
|
||||
|
||||
### ลำดับความสำคัญ
|
||||
|
||||
แหล่งที่มาของการกำหนดค่าถูกโหลดตามลำดับนี้ (แหล่งที่มาภายหลังจะแทนที่แหล่งที่มาก่อนหน้า):
|
||||
|
||||
1. **การกำหนดค่าระยะไกล** (จาก `.well-known/opencode`) - ค่าเริ่มต้นขององค์กร
|
||||
2. **การกำหนดค่าสากล** (`~/.config/opencode/opencode.json`) - การตั้งค่าของผู้ใช้
|
||||
3. **การกำหนดค่าแบบกำหนดเอง** (`OPENCODE_CONFIG` env var) - การแทนที่แบบกำหนดเอง
|
||||
4. **การกำหนดค่าโครงการ** (`opencode.json` ในโครงการ) - การตั้งค่าเฉพาะโครงการ
|
||||
5. **`.opencode` ไดเรกทอรี** - ตัวแทน คำสั่ง ปลั๊กอิน
|
||||
6. **การกำหนดค่าแบบอินไลน์** (`OPENCODE_CONFIG_CONTENT` env var) - การแทนที่รันไทม์
|
||||
|
||||
ซึ่งหมายความว่าการกำหนดค่าโปรเจ็กต์สามารถแทนที่ค่าเริ่มต้นส่วนกลางได้ และการกำหนดค่าส่วนกลางสามารถแทนที่ค่าเริ่มต้นขององค์กรระยะไกลได้
|
||||
|
||||
:::note
|
||||
ไดเรกทอรี `.opencode` และ `~/.config/opencode` ใช้ **ชื่อพหูพจน์** สำหรับไดเรกทอรีย่อย: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` และ `themes/` ชื่อเอกพจน์ (เช่น `agent/`) ยังรองรับความเข้ากันได้แบบย้อนหลังด้วย
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### ระยะไกล
|
||||
|
||||
องค์กรสามารถจัดเตรียมการกำหนดค่าเริ่มต้นผ่านทางจุดสิ้นสุด `.well-known/opencode` สิ่งนี้จะถูกดึงออกมาโดยอัตโนมัติเมื่อคุณตรวจสอบสิทธิ์กับผู้ให้บริการที่รองรับ
|
||||
|
||||
โหลดการกำหนดค่าระยะไกลก่อน โดยทำหน้าที่เป็นเลเยอร์พื้นฐาน แหล่งการกำหนดค่าอื่นๆ ทั้งหมด (ส่วนกลาง โปรเจ็กต์) สามารถแทนที่ค่าเริ่มต้นเหล่านี้ได้
|
||||
|
||||
ตัวอย่างเช่น หากองค์กรของคุณมีเซิร์ฟเวอร์ MCP ที่ถูกปิดใช้งานตามค่าเริ่มต้น:
|
||||
|
||||
```json title="Remote config from .well-known/opencode"
|
||||
{
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": false
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
คุณสามารถเปิดใช้งานเซิร์ฟเวอร์เฉพาะในการกำหนดค่าภายในเครื่องของคุณได้:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ทั่วโลก
|
||||
|
||||
วางการกำหนดค่า OpenCode ส่วนกลางของคุณใน `~/.config/opencode/opencode.json` ใช้การกำหนดค่าส่วนกลางสำหรับการตั้งค่าทั้งผู้ใช้ เช่น ธีม ผู้ให้บริการ หรือปุ่มลัด
|
||||
|
||||
การกำหนดค่าส่วนกลางจะแทนที่ค่าเริ่มต้นขององค์กรระยะไกล
|
||||
|
||||
---
|
||||
|
||||
### ต่อโครงการ
|
||||
|
||||
เพิ่ม `opencode.json` ในรูทโปรเจ็กต์ของคุณ การกำหนดค่าโปรเจ็กต์มีความสำคัญสูงสุดในบรรดาไฟล์กำหนดค่ามาตรฐาน โดยจะแทนที่การกำหนดค่าทั้งส่วนกลางและระยะไกล
|
||||
|
||||
:::tip
|
||||
วางการกำหนดค่าเฉพาะโปรเจ็กต์ไว้ที่รากของโปรเจ็กต์ของคุณ
|
||||
:::
|
||||
|
||||
เมื่อ OpenCode เริ่มต้นระบบ จะค้นหาไฟล์กำหนดค่าในไดเร็กทอรีปัจจุบันหรือข้ามไปยังไดเร็กทอรี Git ที่ใกล้ที่สุด
|
||||
|
||||
นอกจากนี้ยังปลอดภัยที่จะตรวจสอบใน Git และใช้สคีมาเดียวกันกับสคีมาระดับโลก
|
||||
|
||||
---
|
||||
|
||||
### เส้นทางที่กำหนดเอง
|
||||
|
||||
ระบุเส้นทางไฟล์กำหนดค่าที่กำหนดเองโดยใช้ตัวแปรสภาพแวดล้อม `OPENCODE_CONFIG`
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG=/path/to/my/custom-config.json
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
มีการโหลดการกำหนดค่าแบบกำหนดเองระหว่างการกำหนดค่าส่วนกลางและโครงการตามลำดับความสำคัญ
|
||||
|
||||
---
|
||||
|
||||
### ไดเรกทอรีที่กำหนดเอง
|
||||
|
||||
ระบุไดเร็กทอรีการกำหนดค่าที่กำหนดเองโดยใช้ `OPENCODE_CONFIG_DIR`
|
||||
ตัวแปรสภาพแวดล้อม ไดเร็กทอรีนี้จะถูกค้นหาตัวแทน, คำสั่ง,
|
||||
โหมดและปลั๊กอินเหมือนกับไดเร็กทอรี `.opencode` มาตรฐานและควร
|
||||
เป็นไปตามโครงสร้างเดียวกัน
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
ไดเร็กทอรีที่กำหนดเองถูกโหลดหลังจากไดเร็กทอรี config ส่วนกลางและ `.opencode` ดังนั้นจึง **สามารถแทนที่** การตั้งค่าได้
|
||||
|
||||
---
|
||||
|
||||
## สคีมา
|
||||
|
||||
ไฟล์กำหนดค่ามีสคีมาที่กำหนดไว้ใน [**`opencode.ai/config.json`**](https://opencode.ai/config.json)
|
||||
|
||||
ผู้แก้ไขของคุณควรสามารถตรวจสอบและเติมข้อความอัตโนมัติตามสคีมาได้
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
คุณสามารถกำหนดการตั้งค่าเฉพาะ TUI ผ่านตัวเลือก `tui`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
},
|
||||
"diff_style": "auto"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ตัวเลือกที่มี:
|
||||
|
||||
- `scroll_acceleration.enabled` - เปิดใช้งานการเร่งความเร็วการเลื่อนแบบ macOS **มีลำดับความสำคัญมากกว่า `scroll_speed`.**
|
||||
- `scroll_speed` - ตัวคูณความเร็วการเลื่อนแบบกำหนดเอง (ค่าเริ่มต้น: `3` ขั้นต่ำ: `1`) ไม่สนใจหาก `scroll_acceleration.enabled` คือ `true`
|
||||
- `diff_style` - ควบคุมการเรนเดอร์ต่าง `"auto"` ปรับให้เข้ากับความกว้างของเทอร์มินัล `"stacked"` จะแสดงคอลัมน์เดียวเสมอ
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ TUI ที่นี่](/docs/tui)
|
||||
|
||||
---
|
||||
|
||||
### เซิร์ฟเวอร์
|
||||
|
||||
คุณสามารถกำหนดการตั้งค่าเซิร์ฟเวอร์สำหรับคำสั่ง `opencode serve` และ `opencode web` ผ่านตัวเลือก `server`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"server": {
|
||||
"port": 4096,
|
||||
"hostname": "0.0.0.0",
|
||||
"mdns": true,
|
||||
"mdnsDomain": "myproject.local",
|
||||
"cors": ["http://localhost:5173"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ตัวเลือกที่มี:
|
||||
|
||||
- `port` - พอร์ตสำหรับฟัง
|
||||
- `hostname` - ชื่อโฮสต์ที่จะฟัง เมื่อเปิดใช้งาน `mdns` และไม่ได้ตั้งชื่อโฮสต์ ค่าเริ่มต้นจะเป็น `0.0.0.0`
|
||||
- `mdns` - เปิดใช้งานการค้นหาบริการ mDNS ซึ่งช่วยให้อุปกรณ์อื่นๆ บนเครือข่ายค้นพบเซิร์ฟเวอร์ OpenCode ของคุณได้
|
||||
- `mdnsDomain` - ชื่อโดเมนที่กำหนดเองสำหรับบริการ mDNS ค่าเริ่มต้นเป็น `opencode.local` มีประโยชน์สำหรับการเรียกใช้หลายอินสแตนซ์บนเครือข่ายเดียวกัน
|
||||
- `cors` - ต้นกำเนิดเพิ่มเติมเพื่ออนุญาต CORS เมื่อใช้เซิร์ฟเวอร์ HTTP จากไคลเอนต์ที่ใช้เบราว์เซอร์ ค่าจะต้องเป็นต้นกำเนิดแบบเต็ม (สคีมา + โฮสต์ + พอร์ตเสริม) เช่น `https://app.example.com`
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับเซิร์ฟเวอร์ที่นี่](/docs/server)
|
||||
|
||||
---
|
||||
|
||||
### เครื่องมือ
|
||||
|
||||
คุณสามารถจัดการเครื่องมือที่ LLM สามารถใช้ได้ผ่านตัวเลือก `tools`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับเครื่องมือที่นี่](/docs/tools)
|
||||
|
||||
---
|
||||
|
||||
### โมเดล
|
||||
|
||||
คุณสามารถกำหนดค่าผู้ให้บริการและรุ่นที่คุณต้องการใช้ในการกำหนดค่า OpenCode ของคุณได้ผ่านตัวเลือก `provider`, `model` และ `small_model`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {},
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"small_model": "anthropic/claude-haiku-4-5"
|
||||
}
|
||||
```
|
||||
|
||||
ตัวเลือก `small_model` จะกำหนดค่าโมเดลแยกต่างหากสำหรับงานที่ไม่ซับซ้อน เช่น การสร้างชื่อเรื่อง ตามค่าเริ่มต้น OpenCode จะพยายามใช้โมเดลที่ถูกกว่าหากมีให้บริการจากผู้ให้บริการของคุณ ไม่เช่นนั้นโมเดลจะกลับไปเป็นโมเดลหลักของคุณ
|
||||
|
||||
ตัวเลือกผู้ให้บริการอาจรวมถึง `timeout` และ `setCacheKey`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"options": {
|
||||
"timeout": 600000,
|
||||
"setCacheKey": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `timeout` - คำขอหมดเวลาเป็นมิลลิวินาที (ค่าเริ่มต้น: 300000) ตั้งค่าเป็น `false` เพื่อปิดใช้งาน
|
||||
- `setCacheKey` - ตรวจสอบให้แน่ใจว่าได้ตั้งค่าคีย์แคชสำหรับผู้ให้บริการที่กำหนดเสมอ
|
||||
|
||||
คุณยังสามารถกำหนดค่า [รุ่นท้องถิ่น](/docs/models#local) ได้ [เรียนรู้เพิ่มเติม](/docs/models)
|
||||
|
||||
---
|
||||
|
||||
#### ตัวเลือกเฉพาะของผู้ให้บริการ
|
||||
|
||||
ผู้ให้บริการบางรายรองรับตัวเลือกการกำหนดค่าเพิ่มเติมนอกเหนือจากการตั้งค่า `timeout` และ `apiKey` ทั่วไป
|
||||
|
||||
##### อเมซอน ข้อเท็จจริง
|
||||
|
||||
Amazon Bedrock รองรับ AWS-การกำหนดค่าเฉพาะ:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"amazon-bedrock": {
|
||||
"options": {
|
||||
"region": "us-east-1",
|
||||
"profile": "my-aws-profile",
|
||||
"endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `region` - AWS ภูมิภาคสำหรับ Bedrock (ค่าเริ่มต้นเป็น `AWS_REGION` env var หรือ `us-east-1`)
|
||||
- `profile` - AWS ตั้งชื่อโปรไฟล์จาก `~/.aws/credentials` (ค่าเริ่มต้นเป็น `AWS_PROFILE` env var)
|
||||
- `endpoint` - จุดสิ้นสุดที่กำหนดเอง URL สำหรับจุดสิ้นสุด VPC นี่เป็นนามแฝงสำหรับตัวเลือก `baseURL` ทั่วไปโดยใช้คำศัพท์เฉพาะ AWS หากระบุทั้งสองรายการ `endpoint` จะมีความสำคัญกว่า
|
||||
|
||||
:::note
|
||||
โทเค็นผู้ถือ (`AWS_BEARER_TOKEN_BEDROCK` หรือ `/connect`) มีความสำคัญมากกว่าการตรวจสอบสิทธิ์ตามโปรไฟล์ ดู [ลำดับความสำคัญในการรับรองความถูกต้อง](/docs/providers#การรับรองความถูกต้อง-เหนือกว่า) สำหรับรายละเอียด
|
||||
:::
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับการกำหนดค่า Amazon Bedrock](/docs/providers#amazon-bedrock)
|
||||
|
||||
---
|
||||
|
||||
### ธีมส์
|
||||
|
||||
คุณสามารถกำหนดค่าธีมที่คุณต้องการใช้ในการกำหนดค่า OpenCode ของคุณได้ผ่านตัวเลือก `theme`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": ""
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมที่นี่](/docs/themes)
|
||||
|
||||
---
|
||||
|
||||
### ตัวแทน
|
||||
|
||||
คุณสามารถกำหนดค่าตัวแทนเฉพาะสำหรับงานเฉพาะผ่านตัวเลือก `agent`
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"code-reviewer": {
|
||||
"description": "Reviews code for best practices and potential issues",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
|
||||
"tools": {
|
||||
// Disable file modification tools for review-only agent
|
||||
"write": false,
|
||||
"edit": false,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
คุณยังสามารถกำหนดตัวแทนโดยใช้ไฟล์มาร์กดาวน์ใน `~/.config/opencode/agents/` หรือ `.opencode/agents/` [เรียนรู้เพิ่มเติมที่นี่](/docs/agents)
|
||||
|
||||
---
|
||||
|
||||
### ตัวแทนเริ่มต้น
|
||||
|
||||
คุณสามารถตั้งค่าตัวแทนเริ่มต้นได้โดยใช้ตัวเลือก `default_agent` ซึ่งจะกำหนดว่าเอเจนต์ใดที่จะใช้เมื่อไม่มีการระบุอย่างชัดเจน
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"default_agent": "plan"
|
||||
}
|
||||
```
|
||||
|
||||
ตัวแทนเริ่มต้นจะต้องเป็นตัวแทนหลัก (ไม่ใช่ตัวแทนย่อย) ซึ่งอาจเป็นตัวแทนในตัว เช่น `"build"` หรือ `"plan"` หรือ [ตัวแทนที่กำหนดเอง](/docs/agents) ที่คุณกำหนดไว้ หากไม่มีตัวแทนที่ระบุหรือเป็นตัวแทนย่อย OpenCode จะถอยกลับไปที่ `"build"` พร้อมคำเตือน
|
||||
|
||||
การตั้งค่านี้ใช้กับอินเทอร์เฟซทั้งหมด: TUI, CLI (`opencode run`) แอปเดสก์ท็อป และ GitHub Action
|
||||
|
||||
---
|
||||
|
||||
### การแบ่งปัน
|
||||
|
||||
คุณสามารถกำหนดค่าคุณสมบัติ [แบ่งปัน](/docs/share) ได้ผ่านทางตัวเลือก `share`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"share": "manual"
|
||||
}
|
||||
```
|
||||
|
||||
ใช้เวลา:
|
||||
|
||||
- `"manual"` - อนุญาตให้แชร์ด้วยตนเองผ่านคำสั่ง (ค่าเริ่มต้น)
|
||||
- `"auto"` - แบ่งปันการสนทนาใหม่โดยอัตโนมัติ
|
||||
- `"disabled"` - ปิดการใช้งานการแชร์ทั้งหมด
|
||||
|
||||
ตามค่าเริ่มต้น การแชร์จะถูกตั้งค่าเป็นโหมดกำหนดเอง ซึ่งคุณต้องแชร์การสนทนาอย่างชัดเจนโดยใช้คำสั่ง `/share`
|
||||
|
||||
---
|
||||
|
||||
### คำสั่ง
|
||||
|
||||
คุณสามารถกำหนดค่าคำสั่งที่กำหนดเองสำหรับงานซ้ำๆ ได้ผ่านตัวเลือก `command`
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"command": {
|
||||
"test": {
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
|
||||
"description": "Run tests with coverage",
|
||||
"agent": "build",
|
||||
"model": "anthropic/claude-haiku-4-5",
|
||||
},
|
||||
"component": {
|
||||
"template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
|
||||
"description": "Create a new component",
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
คุณยังสามารถกำหนดคำสั่งโดยใช้ไฟล์มาร์กดาวน์ใน `~/.config/opencode/commands/` หรือ `.opencode/commands/` [เรียนรู้เพิ่มเติมที่นี่](/docs/commands)
|
||||
|
||||
---
|
||||
|
||||
### ปุ่มลัด
|
||||
|
||||
คุณสามารถปรับแต่งปุ่มลัดของคุณได้ผ่านตัวเลือก `keybinds`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {}
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมที่นี่](/docs/keybinds)
|
||||
|
||||
---
|
||||
|
||||
### อัปเดตอัตโนมัติ
|
||||
|
||||
OpenCode จะดาวน์โหลดการอัปเดตใหม่โดยอัตโนมัติเมื่อเริ่มต้นระบบ คุณสามารถปิดการใช้งานนี้ได้โดยใช้ตัวเลือก `autoupdate`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"autoupdate": false
|
||||
}
|
||||
```
|
||||
|
||||
หากคุณไม่ต้องการการอัปเดตแต่ต้องการรับการแจ้งเตือนเมื่อมีเวอร์ชันใหม่ ให้ตั้งค่า `autoupdate` เป็น `"notify"`
|
||||
โปรดสังเกตว่าสิ่งนี้ใช้ได้เฉพาะเมื่อไม่ได้ติดตั้งโดยใช้ตัวจัดการแพ็คเกจเช่น Homebrew
|
||||
|
||||
---
|
||||
|
||||
### ฟอร์แมตเตอร์
|
||||
|
||||
คุณสามารถกำหนดค่าตัวจัดรูปแบบโค้ดผ่านตัวเลือก `formatter`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"disabled": true
|
||||
},
|
||||
"custom-prettier": {
|
||||
"command": ["npx", "prettier", "--write", "$FILE"],
|
||||
"environment": {
|
||||
"NODE_ENV": "development"
|
||||
},
|
||||
"extensions": [".js", ".ts", ".jsx", ".tsx"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับฟอร์แมตเตอร์ที่นี่](/docs/formatters)
|
||||
|
||||
---
|
||||
|
||||
### สิทธิ์
|
||||
|
||||
ตามค่าเริ่มต้น opencode **อนุญาตการดำเนินการทั้งหมด** โดยไม่ต้องมีการอนุมัติอย่างชัดเจน คุณสามารถเปลี่ยนสิ่งนี้ได้โดยใช้ตัวเลือก `permission`
|
||||
|
||||
ตัวอย่างเช่น เพื่อให้แน่ใจว่าเครื่องมือ `edit` และ `bash` ต้องได้รับการอนุมัติจากผู้ใช้:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "ask",
|
||||
"bash": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับการอนุญาตที่นี่](/docs/permissions)
|
||||
|
||||
---
|
||||
|
||||
### การบดอัด
|
||||
|
||||
คุณสามารถควบคุมลักษณะการทำงานของการบีบอัดบริบทได้โดยใช้ตัวเลือก `compaction`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"compaction": {
|
||||
"auto": true,
|
||||
"prune": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
- `auto` - กระชับเซสชันโดยอัตโนมัติเมื่อบริบทเต็ม (ค่าเริ่มต้น: `true`)
|
||||
- `prune` - ลบเอาท์พุตเครื่องมือเก่าเพื่อบันทึกโทเค็น (ค่าเริ่มต้น: `true`)
|
||||
|
||||
---
|
||||
|
||||
### ผู้เฝ้าดู
|
||||
|
||||
คุณสามารถกำหนดค่ารูปแบบการละเว้นตัวเฝ้าดูไฟล์ได้ผ่านตัวเลือก `watcher`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"watcher": {
|
||||
"ignore": ["node_modules/**", "dist/**", ".git/**"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
รูปแบบเป็นไปตามไวยากรณ์ glob ใช้ตัวเลือกนี้เพื่อยกเว้นไดเร็กทอรีที่มีเสียงดังจากการดูไฟล์
|
||||
|
||||
---
|
||||
|
||||
### MCP เซิร์ฟเวอร์
|
||||
|
||||
คุณสามารถกำหนดค่าเซิร์ฟเวอร์ MCP ที่คุณต้องการใช้ผ่านตัวเลือก `mcp`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {}
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมที่นี่](/docs/mcp-servers)
|
||||
|
||||
---
|
||||
|
||||
### ปลั๊กอิน
|
||||
|
||||
[ปลั๊กอิน](/docs/plugins) ขยาย OpenCode ด้วยเครื่องมือที่กำหนดเอง hooks และการผสานรวม
|
||||
|
||||
วางไฟล์ปลั๊กอินใน `.opencode/plugins/` หรือ `~/.config/opencode/plugins/` คุณยังสามารถโหลดปลั๊กอินจาก npm ผ่านตัวเลือก `plugin`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมที่นี่](/docs/plugins)
|
||||
|
||||
---
|
||||
|
||||
### คำแนะนำ
|
||||
|
||||
คุณสามารถกำหนดค่าคำแนะนำสำหรับรุ่นที่คุณใช้ผ่านตัวเลือก `instructions`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
|
||||
}
|
||||
```
|
||||
|
||||
สิ่งนี้จะนำอาร์เรย์ของเส้นทางและรูปแบบ glob ไปยังไฟล์คำสั่ง [เรียนรู้เพิ่มเติม
|
||||
เกี่ยวกับกฎที่นี่](/docs/rules)
|
||||
|
||||
---
|
||||
|
||||
### ผู้ให้บริการที่พิการ
|
||||
|
||||
คุณสามารถปิดการใช้งานผู้ให้บริการที่โหลดโดยอัตโนมัติผ่านตัวเลือก `disabled_providers` สิ่งนี้มีประโยชน์เมื่อคุณต้องการป้องกันไม่ให้โหลดผู้ให้บริการบางรายแม้ว่าจะมีข้อมูลประจำตัวอยู่ก็ตาม
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"disabled_providers": ["openai", "gemini"]
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
`disabled_providers` มีลำดับความสำคัญมากกว่า `enabled_providers`
|
||||
:::
|
||||
|
||||
ตัวเลือก `disabled_providers` ยอมรับอาร์เรย์ของรหัสผู้ให้บริการ เมื่อผู้ให้บริการถูกปิดใช้งาน:
|
||||
|
||||
- มันจะไม่ถูกโหลดแม้ว่าจะมีการตั้งค่าตัวแปรสภาพแวดล้อมก็ตาม
|
||||
- มันจะไม่ถูกโหลดแม้ว่าจะมีการกำหนดค่าคีย์ API ผ่านคำสั่ง `/connect`
|
||||
- รุ่นของผู้ให้บริการจะไม่ปรากฏในรายการการเลือกรุ่น
|
||||
|
||||
---
|
||||
|
||||
### ผู้ให้บริการที่เปิดใช้งาน
|
||||
|
||||
คุณสามารถระบุรายชื่อผู้ให้บริการที่อนุญาตได้ผ่านตัวเลือก `enabled_providers` เมื่อตั้งค่าแล้ว เฉพาะผู้ให้บริการที่ระบุเท่านั้นที่จะเปิดใช้งาน และผู้ให้บริการอื่นๆ ทั้งหมดจะถูกละเว้น
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"enabled_providers": ["anthropic", "openai"]
|
||||
}
|
||||
```
|
||||
|
||||
สิ่งนี้มีประโยชน์เมื่อคุณต้องการจำกัด OpenCode ให้ใช้เฉพาะผู้ให้บริการบางราย แทนที่จะปิดการใช้งานทีละราย
|
||||
|
||||
:::note
|
||||
`disabled_providers` มีลำดับความสำคัญมากกว่า `enabled_providers`
|
||||
:::
|
||||
|
||||
หากผู้ให้บริการปรากฏทั้ง `enabled_providers` และ `disabled_providers` `disabled_providers` จะมีลำดับความสำคัญสำหรับความเข้ากันได้แบบย้อนหลัง
|
||||
|
||||
---
|
||||
|
||||
### การทดลอง
|
||||
|
||||
ปุ่ม `experimental` มีตัวเลือกที่อยู่ระหว่างการพัฒนา
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"experimental": {}
|
||||
}
|
||||
```
|
||||
|
||||
:::caution
|
||||
ตัวเลือกการทดลองไม่เสถียร อาจมีการเปลี่ยนแปลงหรือลบออกโดยไม่ต้องแจ้งให้ทราบล่วงหน้า
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## ตัวแปร
|
||||
|
||||
คุณสามารถใช้การทดแทนตัวแปรในไฟล์กำหนดค่าของคุณเพื่ออ้างอิงตัวแปรสภาพแวดล้อมและเนื้อหาไฟล์ได้
|
||||
|
||||
---
|
||||
|
||||
### ตัวแปร Env
|
||||
|
||||
ใช้ `{env:VARIABLE_NAME}` เพื่อทดแทนตัวแปรสภาพแวดล้อม:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "{env:OPENCODE_MODEL}",
|
||||
"provider": {
|
||||
"anthropic": {
|
||||
"models": {},
|
||||
"options": {
|
||||
"apiKey": "{env:ANTHROPIC_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
หากไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อม ตัวแปรนั้นจะถูกแทนที่ด้วยสตริงว่าง
|
||||
|
||||
---
|
||||
|
||||
### ไฟล์
|
||||
|
||||
ใช้ `{file:path/to/file}` เพื่อทดแทนเนื้อหาของไฟล์:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["./custom-instructions.md"],
|
||||
"provider": {
|
||||
"openai": {
|
||||
"options": {
|
||||
"apiKey": "{file:~/.secrets/openai-key}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เส้นทางไฟล์อาจเป็น:
|
||||
|
||||
- สัมพันธ์กับไดเร็กทอรีไฟล์ปรับแต่ง
|
||||
- หรือเส้นทางที่แน่นอนเริ่มต้นด้วย `/` หรือ `~`
|
||||
|
||||
สิ่งเหล่านี้มีประโยชน์สำหรับ:
|
||||
|
||||
- เก็บข้อมูลที่ละเอียดอ่อนเช่นคีย์ API ไว้ในไฟล์แยกกัน
|
||||
- รวมไฟล์คำสั่งขนาดใหญ่โดยไม่ทำให้การกำหนดค่าของคุณเกะกะ
|
||||
- การแชร์ข้อมูลโค้ดการกำหนดค่าทั่วไปในไฟล์กำหนดค่าหลายไฟล์
|
||||
170
packages/web/src/content/docs/th/custom-tools.mdx
Normal file
170
packages/web/src/content/docs/th/custom-tools.mdx
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: เครื่องมือที่กำหนดเอง
|
||||
description: สร้างเครื่องมือที่ LLM สามารถเรียกใช้ใน opencode
|
||||
---
|
||||
|
||||
เครื่องมือแบบกำหนดเองคือฟังก์ชันที่คุณสร้างขึ้นซึ่ง LLM สามารถเรียกใช้ระหว่างการสนทนาได้ โดยทำงานร่วมกับ [เครื่องมือในตัว](/docs/tools) ของ opencode เช่น `read`, `write` และ `bash`
|
||||
|
||||
---
|
||||
|
||||
## การสร้างเครื่องมือ
|
||||
|
||||
เครื่องมือถูกกำหนดให้เป็นไฟล์ **TypeScript** หรือ **JavaScript** อย่างไรก็ตาม คำจำกัดความของเครื่องมือสามารถเรียกใช้สคริปต์ที่เขียนใน **ภาษาใดก็ได้** — TypeScript หรือ JavaScript ใช้สำหรับคำจำกัดความของเครื่องมือเท่านั้น
|
||||
|
||||
---
|
||||
|
||||
### ที่ตั้ง
|
||||
|
||||
สามารถกำหนดได้:
|
||||
|
||||
- ภายในเครื่องโดยวางไว้ในไดเรกทอรี `.opencode/tools/` ของโครงการของคุณ
|
||||
- หรือทั่วโลกโดยวางไว้ที่ `~/.config/opencode/tools/`
|
||||
|
||||
---
|
||||
|
||||
### โครงสร้าง
|
||||
|
||||
วิธีที่ง่ายที่สุดในการสร้างเครื่องมือคือการใช้ตัวช่วย `tool()` ซึ่งให้ความปลอดภัยและการตรวจสอบประเภท
|
||||
|
||||
```ts title=".opencode/tools/database.ts" {1}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Query the project database",
|
||||
args: {
|
||||
query: tool.schema.string().describe("SQL query to execute"),
|
||||
},
|
||||
async execute(args) {
|
||||
// Your database logic here
|
||||
return `Executed query: ${args.query}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
**ชื่อไฟล์** จะกลายเป็น **ชื่อเครื่องมือ** ข้างต้นจะสร้างเครื่องมือ `database`
|
||||
|
||||
---
|
||||
|
||||
#### เครื่องมือหลายอย่างต่อไฟล์
|
||||
|
||||
คุณยังสามารถส่งออกเครื่องมือหลายรายการจากไฟล์เดียวได้ การส่งออกแต่ละครั้งจะกลายเป็น **เครื่องมือแยกต่างหาก** โดยมีชื่อ **`<filename>_<exportname>`**:
|
||||
|
||||
```ts title=".opencode/tools/math.ts"
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export const add = tool({
|
||||
description: "Add two numbers",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args) {
|
||||
return args.a + args.b
|
||||
},
|
||||
})
|
||||
|
||||
export const multiply = tool({
|
||||
description: "Multiply two numbers",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args) {
|
||||
return args.a * args.b
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
สิ่งนี้จะสร้างเครื่องมือสองอย่าง: `math_add` และ `math_multiply`
|
||||
|
||||
---
|
||||
|
||||
### ข้อโต้แย้ง
|
||||
|
||||
คุณสามารถใช้ `tool.schema` ซึ่งก็คือ [Zod](https://zod.dev) เพื่อกำหนดประเภทอาร์กิวเมนต์
|
||||
|
||||
```ts "tool.schema"
|
||||
args: {
|
||||
query: tool.schema.string().describe("SQL query to execute")
|
||||
}
|
||||
```
|
||||
|
||||
คุณยังสามารถนำเข้า [Zod](https://zod.dev) ได้โดยตรงและส่งคืนออบเจ็กต์ธรรมดา:
|
||||
|
||||
```ts {6}
|
||||
import { z } from "zod"
|
||||
|
||||
export default {
|
||||
description: "Tool description",
|
||||
args: {
|
||||
param: z.string().describe("Parameter description"),
|
||||
},
|
||||
async execute(args, context) {
|
||||
// Tool implementation
|
||||
return "result"
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### บริบท
|
||||
|
||||
เครื่องมือได้รับบริบทเกี่ยวกับเซสชันปัจจุบัน:
|
||||
|
||||
```ts title=".opencode/tools/project.ts" {8}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Get project information",
|
||||
args: {},
|
||||
async execute(args, context) {
|
||||
// Access context information
|
||||
const { agent, sessionID, messageID, directory, worktree } = context
|
||||
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
ใช้ `context.directory` สำหรับไดเร็กทอรีการทำงานของเซสชัน
|
||||
ใช้ `context.worktree` สำหรับรูท git worktree
|
||||
|
||||
---
|
||||
|
||||
## ตัวอย่าง
|
||||
|
||||
### เขียนเครื่องมือใน Python
|
||||
|
||||
คุณสามารถเขียนเครื่องมือของคุณเป็นภาษาใดก็ได้ที่คุณต้องการ นี่คือตัวอย่างที่บวกตัวเลขสองตัวโดยใช้ Python
|
||||
|
||||
ขั้นแรก สร้างเครื่องมือเป็นสคริปต์ Python:
|
||||
|
||||
```python title=".opencode/tools/add.py"
|
||||
import sys
|
||||
|
||||
a = int(sys.argv[1])
|
||||
b = int(sys.argv[2])
|
||||
print(a + b)
|
||||
```
|
||||
|
||||
จากนั้นสร้างคำจำกัดความของเครื่องมือที่เรียกใช้:
|
||||
|
||||
```ts title=".opencode/tools/python-add.ts" {10}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
import path from "path"
|
||||
|
||||
export default tool({
|
||||
description: "Add two numbers using Python",
|
||||
args: {
|
||||
a: tool.schema.number().describe("First number"),
|
||||
b: tool.schema.number().describe("Second number"),
|
||||
},
|
||||
async execute(args, context) {
|
||||
const script = path.join(context.worktree, ".opencode/tools/add.py")
|
||||
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
|
||||
return result.trim()
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
ที่นี่เราใช้ยูทิลิตี้ [`Bun.$`](https://bun.com/docs/runtime/shell) เพื่อรันสคริปต์ Python
|
||||
76
packages/web/src/content/docs/th/ecosystem.mdx
Normal file
76
packages/web/src/content/docs/th/ecosystem.mdx
Normal file
@@ -0,0 +1,76 @@
|
||||
---
|
||||
title: ระบบนิเวศ
|
||||
description: โปรเจ็กต์และการผสานรวมที่สร้างด้วย OpenCode
|
||||
---
|
||||
|
||||
ชุดโครงการชุมชนที่สร้างขึ้นบน OpenCode
|
||||
|
||||
:::note
|
||||
ต้องการเพิ่มโครงการที่เกี่ยวข้องกับ OpenCode ของคุณลงในรายการนี้หรือไม่ ส่งพีอาร์.
|
||||
:::
|
||||
|
||||
คุณยังสามารถลองดู [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) และ [opencode.cafe](https://opencode.cafe) ซึ่งเป็นชุมชนที่รวบรวมระบบนิเวศและชุมชนไว้ด้วยกัน
|
||||
|
||||
---
|
||||
|
||||
## ปลั๊กอิน
|
||||
|
||||
| ชื่อ | คำอธิบาย |
|
||||
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
||||
| [opencode-เดย์โทนา](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | เรียกใช้เซสชัน OpenCode โดยอัตโนมัติในแซนด์บ็อกซ์ Daytona ที่แยกออกมาพร้อม git sync และการแสดงตัวอย่างแบบสด |
|
||||
| [opencode-helicone-เซสชัน](https://github.com/H2Shami/opencode-helicone-session) | แทรกส่วนหัวเซสชัน Helicone โดยอัตโนมัติสำหรับการจัดกลุ่มคำขอ |
|
||||
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | ฉีดประเภท TypeScript/Svelte ลงในไฟล์ที่อ่านโดยอัตโนมัติด้วยเครื่องมือค้นหา |
|
||||
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | ใช้การสมัครสมาชิก ChatGPT Plus/Pro แทนเครดิต API |
|
||||
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | ใช้แผน Gemini ที่มีอยู่ของคุณแทนการเรียกเก็บเงิน API |
|
||||
| [opencode-ต้านแรงโน้มถ่วง-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | ใช้โมเดลฟรีของ Antigravity แทนการเรียกเก็บเงิน API |
|
||||
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | การแยกคอนเทนเนอร์ Devcontainer แบบหลายสาขาพร้อมโคลนแบบตื้นและพอร์ตที่กำหนดอัตโนมัติ |
|
||||
| [opencode-google-ต้านแรงโน้มถ่วง-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | ปลั๊กอิน Google Antigravity OAuth พร้อมรองรับ Google Search และการจัดการ API ที่แข็งแกร่งยิ่งขึ้น |
|
||||
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | ปรับการใช้โทเค็นให้เหมาะสมโดยการตัดเอาท์พุตของเครื่องมือที่ล้าสมัย |
|
||||
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | เพิ่มการสนับสนุนการค้นหาเว็บแบบเนทีฟสำหรับผู้ให้บริการที่รองรับด้วยรูปแบบที่มีเหตุผลของ Google |
|
||||
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | ช่วยให้ตัวแทน AI สามารถเรียกใช้กระบวนการเบื้องหลังใน PTY และส่งข้อมูลเชิงโต้ตอบให้พวกเขาได้ |
|
||||
| [opencode-shell-กลยุทธ์](https://github.com/JRedeker/opencode-shell-strategy) | คำแนะนำสำหรับคำสั่งเชลล์แบบไม่โต้ตอบ - ป้องกันการแฮงค์จากการดำเนินการที่ขึ้นอยู่กับ TTY |
|
||||
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | ติดตามการใช้งาน OpenCode ด้วย Wakatime |
|
||||
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | ทำความสะอาดตารางมาร์กดาวน์ที่ผลิตโดย LLM |
|
||||
| [opencode-morph-ใช้อย่างรวดเร็ว](https://github.com/JRedeker/opencode-morph-fast-apply) | การแก้ไขโค้ดเร็วขึ้น 10 เท่าด้วย Morph Fast Apply API และเครื่องหมายแก้ไขแบบ Lazy |
|
||||
| [โอ้ ฉัน-opencode](https://github.com/code-yeongyu/oh-my-opencode) | ตัวแทนเบื้องหลัง, เครื่องมือ LSP/AST/MCP ที่สร้างไว้ล่วงหน้า, ตัวแทนที่ได้รับการดูแลจัดการ, เข้ากันได้กับ Claude Code |
|
||||
| [ผู้แจ้ง opencode](https://github.com/panta82/opencode-notificator) | การแจ้งเตือนบนเดสก์ท็อปและเสียงเตือนสำหรับเซสชัน OpenCode |
|
||||
| [opencode-แจ้ง](https://github.com/mohak34/opencode-notifier) | การแจ้งเตือนบนเดสก์ท็อปและเสียงเตือนสำหรับการอนุญาต การดำเนินการเสร็จสิ้น และเหตุการณ์ข้อผิดพลาด |
|
||||
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | การตั้งชื่อเซสชัน Zellij อัตโนมัติที่ขับเคลื่อนด้วย AI ตามบริบทของ OpenCode |
|
||||
| [opencode-เก่ง](https://github.com/zenobi-us/opencode-skillful) | อนุญาตให้ตัวแทน OpenCode โหลดแบบ Lazy Load ตามความต้องการพร้อมการค้นพบทักษะและการแทรก |
|
||||
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | หน่วยความจำถาวรตลอดเซสชันโดยใช้ Supermemory |
|
||||
| [@ผู้วางแผน/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | การตรวจสอบแผนเชิงโต้ตอบพร้อมคำอธิบายประกอบแบบภาพและการแชร์ส่วนตัว/offline |
|
||||
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | ขยาย opencode /commands ไปสู่ระบบการประสานที่มีประสิทธิภาพพร้อมการควบคุมโฟลว์แบบละเอียด |
|
||||
| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | กำหนดเวลางานที่เกิดซ้ำโดยใช้ launchd (Mac) หรือ systemd (Linux) ด้วยไวยากรณ์ cron |
|
||||
| [ไมโครโค้ด](https://github.com/vtemian/micode) | ระดมความคิดอย่างมีโครงสร้าง → วางแผน → นำเวิร์กโฟลว์ไปใช้ด้วยความต่อเนื่องของเซสชัน |
|
||||
| [ตุลาคม](https://github.com/vtemian/octto) | UI เบราว์เซอร์แบบโต้ตอบสำหรับการระดมความคิด AI ด้วยแบบฟอร์มคำถามหลายข้อ |
|
||||
| [opencode-พื้นหลัง-ตัวแทน](https://github.com/kdcokenny/opencode-background-agents) | เอเจนต์พื้นหลังสไตล์ Claude Code พร้อมการมอบหมายแบบอะซิงก์และการคงอยู่ของบริบท |
|
||||
| [opencode-แจ้งเตือน](https://github.com/kdcokenny/opencode-notify) | การแจ้งเตือนระบบปฏิบัติการดั้งเดิมสำหรับ OpenCode – ทราบเมื่องานเสร็จสมบูรณ์ |
|
||||
| [opencode-พื้นที่ทำงาน](https://github.com/kdcokenny/opencode-workspace) | ชุดสายรัดประสานหลายเอเจนต์ที่ให้มา – ส่วนประกอบ 16 ชิ้น ติดตั้งเพียงครั้งเดียว |
|
||||
| [opencode-เวิร์กทรี](https://github.com/kdcokenny/opencode-worktree) | เวิร์กทรีคอมไพล์ไร้แรงเสียดทานสำหรับ OpenCode |
|
||||
|
||||
---
|
||||
|
||||
## โครงการ
|
||||
|
||||
| ชื่อ | คำอธิบาย |
|
||||
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- |
|
||||
| [คิมากิ](https://github.com/remorses/kimaki) | บอท Discord เพื่อควบคุมเซสชัน OpenCode สร้างขึ้นบน SDK |
|
||||
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | ปลั๊กอิน Neovim สำหรับข้อความแจ้งที่ทราบโดยบรรณาธิการ ซึ่งสร้างขึ้นบน API |
|
||||
| [พอร์ทัล](https://github.com/hosenur/portal) | UI เว็บบนมือถือเป็นครั้งแรกสำหรับ OpenCode บน Tailscale/VPN |
|
||||
| [เทมเพลตปลั๊กอิน opencode](https://github.com/zenobi-us/opencode-plugin-template/) | เทมเพลตสำหรับสร้างปลั๊กอิน OpenCode |
|
||||
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | ส่วนหน้า Neovim สำหรับ opencode - เอเจนต์การเข้ารหัส AI ที่ใช้เทอร์มินัล |
|
||||
| [ai-sdk-ผู้ให้บริการ-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | ผู้ให้บริการ Vercel AI SDK สำหรับการใช้งาน OpenCode ผ่าน @opencode-ai/sdk |
|
||||
| [เปิดห้อง](https://github.com/btriapitsyn/openchamber) | แอพเว็บ / เดสก์ท็อปและส่วนขยายรหัส VS สำหรับ OpenCode |
|
||||
| [OpenCode-ออบซิเดียน](https://github.com/mtymek/opencode-obsidian) | ปลั๊กอิน Obsidian ที่ฝัง OpenCode ไว้ใน UI ของ Obsidian |
|
||||
| [โอเพ่นเวิร์ค](https://github.com/different-ai/openwork) | ทางเลือกโอเพ่นซอร์สแทน Claude Cowork ซึ่งขับเคลื่อนโดย OpenCode |
|
||||
| [ocx](https://github.com/kdcokenny/ocx) | ตัวจัดการส่วนขยาย OpenCode พร้อมโปรไฟล์แบบพกพาและแยกส่วน |
|
||||
| [โค้ดโนแมด](https://github.com/NeuralNomadsAI/CodeNomad) | แอปเดสก์ท็อป เว็บ มือถือ และไคลเอ็นต์ระยะไกลสำหรับ OpenCode |
|
||||
|
||||
---
|
||||
|
||||
## ตัวแทน
|
||||
|
||||
| ชื่อ | คำอธิบาย |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| [ตัวแทน](https://github.com/Cluster444/agentic) | เอเจนต์ AI แบบแยกส่วนและคำสั่งสำหรับการพัฒนาแบบมีโครงสร้าง |
|
||||
| [opencode-ตัวแทน](https://github.com/darrenhinde/opencode-agents) | กำหนดค่า พรอมต์ เอเจนต์ และปลั๊กอินสำหรับเวิร์กโฟลว์ที่ได้รับการปรับปรุง |
|
||||
170
packages/web/src/content/docs/th/enterprise.mdx
Normal file
170
packages/web/src/content/docs/th/enterprise.mdx
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: องค์กร
|
||||
description: การใช้ OpenCode อย่างปลอดภัยในองค์กรของคุณ
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Enterprise เหมาะสำหรับองค์กรที่ต้องการให้แน่ใจว่าโค้ดและข้อมูลของตนไม่หลุดออกจากโครงสร้างพื้นฐาน ซึ่งสามารถทำได้โดยใช้การกำหนดค่าแบบรวมศูนย์ที่ทำงานร่วมกับ SSO และเกตเวย์ AI ภายในของคุณ
|
||||
|
||||
:::note
|
||||
OpenCode จะไม่เก็บโค้ดหรือข้อมูลบริบทใดๆ ของคุณ
|
||||
:::
|
||||
|
||||
ในการเริ่มต้นใช้งาน OpenCode Enterprise:
|
||||
|
||||
1. ทดลองใช้งานภายในกับทีมของคุณ
|
||||
2. **<a href={email}>ติดต่อเรา</a>** เพื่อหารือเกี่ยวกับตัวเลือกด้านราคาและการใช้งาน
|
||||
|
||||
---
|
||||
|
||||
## การทดลอง
|
||||
|
||||
OpenCode เป็นโอเพ่นซอร์สและไม่ได้จัดเก็บโค้ดหรือข้อมูลบริบทใดๆ ของคุณ ดังนั้นนักพัฒนาของคุณสามารถ [เริ่มต้น](/docs/) และดำเนินการทดลองใช้งานได้อย่างง่ายดาย
|
||||
|
||||
---
|
||||
|
||||
### การจัดการข้อมูล
|
||||
|
||||
**OpenCode จะไม่จัดเก็บโค้ดหรือข้อมูลบริบทของคุณ** การประมวลผลทั้งหมดเกิดขึ้นภายในเครื่องหรือผ่านการเรียก API โดยตรงไปยังผู้ให้บริการ AI ของคุณ
|
||||
|
||||
ซึ่งหมายความว่าตราบใดที่คุณใช้ผู้ให้บริการที่คุณเชื่อถือหรือผู้ให้บริการภายใน
|
||||
เกตเวย์ AI คุณสามารถใช้ OpenCode ได้อย่างปลอดภัย
|
||||
|
||||
ข้อแม้เดียวที่นี่คือคุณสมบัติเสริม `/share`
|
||||
|
||||
---
|
||||
|
||||
#### การแบ่งปันการสนทนา
|
||||
|
||||
หากผู้ใช้เปิดใช้งานคุณสมบัติ `/share` การสนทนาและข้อมูลที่เกี่ยวข้องกับการสนทนาจะถูกส่งไปยังบริการที่เราใช้เพื่อโฮสต์เพจแชร์เหล่านี้ที่ opencode.ai
|
||||
|
||||
ขณะนี้ข้อมูลให้บริการผ่านเครือข่าย Edge ของ CDN ของเรา และถูกแคชไว้ที่ Edge ใกล้ผู้ใช้ของคุณ
|
||||
|
||||
เราขอแนะนำให้คุณปิดการใช้งานนี้สำหรับการทดลองใช้ของคุณ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"share": "disabled"
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติมเกี่ยวกับการแชร์](/docs/share)
|
||||
|
||||
---
|
||||
|
||||
### ความเป็นเจ้าของรหัส
|
||||
|
||||
**คุณเป็นเจ้าของโค้ดทั้งหมดที่สร้างโดย OpenCode** ไม่มีข้อจำกัดด้านใบอนุญาตหรือการอ้างสิทธิ์ความเป็นเจ้าของ
|
||||
|
||||
---
|
||||
|
||||
## ราคา
|
||||
|
||||
เราใช้แบบจำลองต่อที่นั่งสำหรับ OpenCode Enterprise หากคุณมีเกตเวย์ LLM ของคุณเอง เราจะไม่เรียกเก็บเงินสำหรับโทเค็นที่ใช้ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือกราคาและการใช้งาน **<a href={email}>ติดต่อเรา</a>**
|
||||
|
||||
---
|
||||
|
||||
## การปรับใช้
|
||||
|
||||
เมื่อคุณทดลองใช้งานเสร็จแล้วและพร้อมที่จะใช้ OpenCode ที่
|
||||
องค์กรของคุณ คุณสามารถ **<a href={email}>ติดต่อเรา</a>** เพื่อหารือเกี่ยวกับ
|
||||
ตัวเลือกการกำหนดราคาและการใช้งาน
|
||||
|
||||
---
|
||||
|
||||
### การกำหนดค่าส่วนกลาง
|
||||
|
||||
เราสามารถตั้งค่า OpenCode เพื่อใช้การกำหนดค่าส่วนกลางเพียงรายการเดียวสำหรับทั้งองค์กรของคุณได้
|
||||
|
||||
การกำหนดค่าแบบรวมศูนย์นี้สามารถทำงานร่วมกับผู้ให้บริการ SSO ของคุณได้ และรับรองว่าผู้ใช้ทุกคนจะเข้าถึงเฉพาะเกตเวย์ AI ภายในของคุณเท่านั้น
|
||||
|
||||
---
|
||||
|
||||
### SSO บูรณาการ
|
||||
|
||||
ด้วยการกำหนดค่าส่วนกลาง OpenCode สามารถทำงานร่วมกับผู้ให้บริการ SSO ขององค์กรของคุณเพื่อตรวจสอบสิทธิ์ได้
|
||||
|
||||
ซึ่งช่วยให้ OpenCode รับข้อมูลรับรองสำหรับเกตเวย์ AI ภายในของคุณผ่านระบบการจัดการข้อมูลประจำตัวที่คุณมีอยู่
|
||||
|
||||
---
|
||||
|
||||
### เกตเวย์ AI ภายใน
|
||||
|
||||
ด้วยการกำหนดค่าส่วนกลาง คุณสามารถกำหนดค่า OpenCode ให้ใช้เกตเวย์ AI ภายในของคุณเท่านั้น
|
||||
|
||||
คุณยังสามารถปิดการใช้งานผู้ให้บริการ AI อื่นๆ ทั้งหมดได้ เพื่อให้มั่นใจว่าคำขอทั้งหมดจะผ่านโครงสร้างพื้นฐานที่ได้รับอนุมัติขององค์กรของคุณ
|
||||
|
||||
---
|
||||
|
||||
### โฮสติ้งด้วยตนเอง
|
||||
|
||||
ในขณะที่เราแนะนำให้ปิดการใช้งานหน้าแบ่งปันเพื่อให้แน่ใจว่าข้อมูลของคุณจะไม่หายไป
|
||||
องค์กรของคุณ เราก็สามารถช่วยคุณโฮสต์พวกเขาเองบนโครงสร้างพื้นฐานของคุณได้
|
||||
|
||||
ขณะนี้อยู่ในแผนงานของเรา หากคุณสนใจ **<a href={email}>แจ้งให้เราทราบ</a>**
|
||||
|
||||
---
|
||||
|
||||
## FAQ
|
||||
|
||||
<details>
|
||||
<summary>What is OpenCode Enterprise?</summary>
|
||||
|
||||
OpenCode Enterprise เหมาะสำหรับองค์กรที่ต้องการให้แน่ใจว่าโค้ดและข้อมูลของตนไม่หลุดออกจากโครงสร้างพื้นฐาน ซึ่งสามารถทำได้โดยใช้การกำหนดค่าแบบรวมศูนย์ที่ทำงานร่วมกับ SSO และเกตเวย์ AI ภายในของคุณ
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>How do I get started with OpenCode Enterprise?</summary>
|
||||
|
||||
เพียงเริ่มต้นด้วยการทดลองใช้ภายในกับทีมของคุณ ตามค่าเริ่มต้น OpenCode จะไม่จัดเก็บโค้ดหรือข้อมูลบริบทของคุณ ทำให้ง่ายต่อการเริ่มต้น
|
||||
|
||||
จากนั้น **<a href={email}>ติดต่อเรา</a>** เพื่อหารือเกี่ยวกับตัวเลือกด้านราคาและการใช้งาน
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>How does enterprise pricing work?</summary>
|
||||
|
||||
เราเสนอราคาสำหรับองค์กรต่อที่นั่ง หากคุณมีเกตเวย์ LLM ของคุณเอง เราจะไม่เรียกเก็บเงินสำหรับโทเค็นที่ใช้ สำหรับรายละเอียดเพิ่มเติม **<a href={email}>ติดต่อเรา</a>** เพื่อขอใบเสนอราคาที่กำหนดเองตามความต้องการขององค์กรของคุณ
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Is my data secure with OpenCode Enterprise?</summary>
|
||||
|
||||
ใช่. OpenCode จะไม่เก็บโค้ดหรือข้อมูลบริบทของคุณ การประมวลผลทั้งหมดเกิดขึ้นภายในเครื่องหรือผ่านการโทรศัพท์ API โดยตรงไปยังผู้ให้บริการ AI ของคุณ ด้วยการกำหนดค่าส่วนกลางและการบูรณาการ SSO ข้อมูลของคุณยังคงปลอดภัยภายในโครงสร้างพื้นฐานขององค์กรของคุณ
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Can we use our own private NPM registry?</summary>
|
||||
|
||||
OpenCode รองรับการลงทะเบียน npm ส่วนตัวผ่านการรองรับไฟล์ `.npmrc` ดั้งเดิมของ Bun หากองค์กรของคุณใช้รีจิสทรีส่วนตัว เช่น JFrog Artifactory, Nexus หรือที่คล้ายกัน โปรดตรวจสอบให้แน่ใจว่านักพัฒนาได้รับการตรวจสอบสิทธิ์ก่อนเรียกใช้ OpenCode
|
||||
|
||||
วิธีตั้งค่าการตรวจสอบสิทธิ์กับรีจิสทรีส่วนตัวของคุณ:
|
||||
|
||||
```bash
|
||||
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
||||
```
|
||||
|
||||
สิ่งนี้จะสร้าง `~/.npmrc` พร้อมรายละเอียดการตรวจสอบสิทธิ์ OpenCode จะอัตโนมัติ
|
||||
หยิบสิ่งนี้ขึ้นมา
|
||||
|
||||
:::caution
|
||||
คุณต้องเข้าสู่ระบบรีจิสทรีส่วนตัวก่อนที่จะเรียกใช้ OpenCode
|
||||
:::
|
||||
|
||||
หรือคุณสามารถกำหนดค่าไฟล์ `.npmrc` ด้วยตนเองได้:
|
||||
|
||||
```bash title="~/.npmrc"
|
||||
registry=https://your-company.jfrog.io/api/npm/npm-virtual/
|
||||
//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
|
||||
```
|
||||
|
||||
นักพัฒนาจะต้องลงชื่อเข้าใช้รีจิสทรีส่วนตัวก่อนที่จะเรียกใช้ OpenCode เพื่อให้แน่ใจว่าสามารถติดตั้งแพ็คเกจจากรีจิสทรีขององค์กรของคุณได้
|
||||
|
||||
</details>
|
||||
130
packages/web/src/content/docs/th/formatters.mdx
Normal file
130
packages/web/src/content/docs/th/formatters.mdx
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: ฟอร์แมตเตอร์
|
||||
description: OpenCode ใช้ตัวจัดรูปแบบเฉพาะภาษา
|
||||
---
|
||||
|
||||
OpenCode จะจัดรูปแบบไฟล์โดยอัตโนมัติหลังจากที่เขียนหรือแก้ไขโดยใช้ตัวจัดรูปแบบเฉพาะภาษา เพื่อให้แน่ใจว่าโค้ดที่สร้างขึ้นเป็นไปตามสไตล์โค้ดของโปรเจ็กต์ของคุณ
|
||||
|
||||
---
|
||||
|
||||
## บิวท์อิน
|
||||
|
||||
OpenCode มาพร้อมกับฟอร์แมตเตอร์ในตัวหลายตัวสำหรับภาษาและเฟรมเวิร์กยอดนิยม ด้านล่างนี้คือรายการฟอร์แมตเตอร์ นามสกุลไฟล์ที่รองรับ และคำสั่งหรือตัวเลือกการกำหนดค่าที่ต้องการ
|
||||
|
||||
| ฟอร์แมตเตอร์ | ส่วนขยาย | ความต้องการ |
|
||||
| -------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| กอฟท์ | .ไป | `gofmt` คำสั่งใช้ได้ |
|
||||
| ผสม | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` คำสั่งใช้ได้ |
|
||||
| สวยกว่า | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml และ [เพิ่มเติม](https://prettier.io/docs/en/index.html) | `prettier` การพึ่งพาใน `package.json` |
|
||||
| ชีวนิเวศน์ | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml และ [เพิ่มเติม](https://biomejs.dev/) | `biome.json(c)` ไฟล์ปรับแต่ง |
|
||||
| ซิกซิก | .ซิก, .ซอน | `zig` คำสั่งใช้ได้ |
|
||||
| เสียงดังกราวรูปแบบ | .c, .cpp, .h, .hpp, .ino และ [เพิ่มเติม](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` ไฟล์ปรับแต่ง |
|
||||
| เคทลินท์ | .kt, .kts | `ktlint` คำสั่งใช้ได้ |
|
||||
| สร้อย | .py, .pyi | คำสั่ง `ruff` ใช้ได้กับ config |
|
||||
| สนิม | .อาร์เอส | `rustfmt` คำสั่งใช้ได้ |
|
||||
| สินค้าfmt | .อาร์เอส | `cargo fmt` คำสั่งใช้ได้ |
|
||||
| ยูวี | .py, .pyi | `uv` คำสั่งใช้ได้ |
|
||||
| รูโบคอป | .rb, .rake, .gemspec, .ru | `rubocop` คำสั่งใช้ได้ |
|
||||
| มาตรฐานrb | .rb, .rake, .gemspec, .ru | `standardrb` คำสั่งใช้ได้ |
|
||||
| htmlเสริมสวย | .erb, .html.erb | `htmlbeautifier` คำสั่งใช้ได้ |
|
||||
| อากาศ | .ร | `air` คำสั่งใช้ได้ |
|
||||
| โผ | .โผ | `dart` คำสั่งใช้ได้ |
|
||||
| ocamlformat | .มล., .มลิ | มีคำสั่ง `ocamlformat` และไฟล์ปรับแต่ง `.ocamlformat` |
|
||||
| ภูมิประเทศ | .tf, .tfvars | `terraform` คำสั่งใช้ได้ |
|
||||
| เปล่งประกาย | .แวววาว | `gleam` คำสั่งใช้ได้ |
|
||||
| ห้าม | .ห้าม | `nixfmt` คำสั่งใช้ได้ |
|
||||
| สับเปลี่ยน | .sh, .ทุบตี | `shfmt` คำสั่งใช้ได้ |
|
||||
| ไพน์ | .php | `laravel/pint` การพึ่งพาใน `composer.json` |
|
||||
| oxfmt (ทดลอง) | .js, .jsx, .ts, .tsx | `oxfmt` การพึ่งพาใน `package.json` และ [แฟล็กตัวแปร env ทดลอง](/docs/cli/#experimental) |
|
||||
| ออร์โมลู | .hs | `ormolu` คำสั่งใช้ได้ |
|
||||
|
||||
ดังนั้นหากโปรเจ็กต์ของคุณมี `prettier` ใน `package.json` OpenCode จะใช้มันโดยอัตโนมัติ
|
||||
|
||||
---
|
||||
|
||||
## มันทำงานอย่างไร
|
||||
|
||||
เมื่อ OpenCode เขียนหรือแก้ไขไฟล์ มันจะ:
|
||||
|
||||
1. ตรวจสอบนามสกุลไฟล์กับฟอร์แมตเตอร์ที่เปิดใช้งานทั้งหมด
|
||||
2. รันคำสั่งฟอร์แมตเตอร์ที่เหมาะสมบนไฟล์
|
||||
3. ใช้การเปลี่ยนแปลงการจัดรูปแบบโดยอัตโนมัติ
|
||||
|
||||
กระบวนการนี้เกิดขึ้นในเบื้องหลัง ทำให้มั่นใจได้ว่าสไตล์โค้ดของคุณจะถูกรักษาไว้โดยไม่มีขั้นตอนที่ต้องทำเอง
|
||||
|
||||
---
|
||||
|
||||
## กำหนดค่า
|
||||
|
||||
คุณสามารถปรับแต่งฟอร์แมตเตอร์ได้ผ่านทางส่วน `formatter` ในการกำหนดค่า OpenCode ของคุณ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {}
|
||||
}
|
||||
```
|
||||
|
||||
การกำหนดค่าฟอร์แมตเตอร์แต่ละรายการรองรับสิ่งต่อไปนี้:
|
||||
|
||||
| คุณสมบัติ | พิมพ์ | คำอธิบาย |
|
||||
| ------------- | -------- | ------------------------------------------------------- |
|
||||
| `disabled` | บูลีน | ตั้งค่านี้เป็น `true` เพื่อปิดใช้งานฟอร์แมตเตอร์ |
|
||||
| `command` | สตริง[] | คำสั่งให้เรียกใช้การจัดรูปแบบ |
|
||||
| `environment` | วัตถุ | ตัวแปรสภาพแวดล้อมที่จะตั้งค่าเมื่อรันฟอร์แมตเตอร์ |
|
||||
| `extensions` | สตริง[] | นามสกุลไฟล์ที่ฟอร์แมตเตอร์นี้ควรรองรับ |
|
||||
|
||||
ลองดูตัวอย่างบางส่วน
|
||||
|
||||
---
|
||||
|
||||
### ปิดการใช้งานฟอร์แมตเตอร์
|
||||
|
||||
หากต้องการปิดการใช้งาน **ทั้งหมด** ฟอร์แมตเตอร์ทั่วโลก ให้ตั้งค่า `formatter` เป็น `false`:
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": false
|
||||
}
|
||||
```
|
||||
|
||||
หากต้องการปิดใช้งานฟอร์แมตเตอร์ **เฉพาะ** ให้ตั้งค่า `disabled` เป็น `true`:
|
||||
|
||||
```json title="opencode.json" {5}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ตัวจัดรูปแบบที่กำหนดเอง
|
||||
|
||||
คุณสามารถแทนที่ฟอร์แมตเตอร์ที่มีอยู่แล้วภายในหรือเพิ่มฟอร์แมตใหม่ได้โดยการระบุคำสั่ง ตัวแปรสภาพแวดล้อม และนามสกุลไฟล์:
|
||||
|
||||
```json title="opencode.json" {4-14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"formatter": {
|
||||
"prettier": {
|
||||
"command": ["npx", "prettier", "--write", "$FILE"],
|
||||
"environment": {
|
||||
"NODE_ENV": "development"
|
||||
},
|
||||
"extensions": [".js", ".ts", ".jsx", ".tsx"]
|
||||
},
|
||||
"custom-markdown-formatter": {
|
||||
"command": ["deno", "fmt", "$FILE"],
|
||||
"extensions": [".md"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ตัวยึดตำแหน่ง **`$FILE`** ในคำสั่งจะถูกแทนที่ด้วยเส้นทางไปยังไฟล์ที่กำลังจัดรูปแบบ
|
||||
321
packages/web/src/content/docs/th/github.mdx
Normal file
321
packages/web/src/content/docs/th/github.mdx
Normal file
@@ -0,0 +1,321 @@
|
||||
---
|
||||
title: GitHub
|
||||
description: ใช้ OpenCode ในปัญหา GitHub และคำขอแบบดึง
|
||||
---
|
||||
|
||||
OpenCode ผสานรวมกับเวิร์กโฟลว์ GitHub ของคุณ พูดถึง `/opencode` หรือ `/oc` ในความคิดเห็นของคุณ แล้ว OpenCode จะดำเนินการงานภายใน GitHub Actions runner ของคุณ
|
||||
|
||||
---
|
||||
|
||||
## คุณสมบัติ
|
||||
|
||||
- **ปัญหาการคัดแยก**: ขอให้ OpenCode ตรวจสอบปัญหาและอธิบายให้คุณทราบ
|
||||
- **แก้ไขและนำไปใช้**: ขอให้ OpenCode แก้ไขปัญหาหรือใช้ฟีเจอร์ และมันจะทำงานในสาขาใหม่และส่ง PR พร้อมการเปลี่ยนแปลงทั้งหมด
|
||||
- **ปลอดภัย**: OpenCode ทำงานภายในรันเนอร์ของ GitHub ของคุณ
|
||||
|
||||
---
|
||||
|
||||
## การติดตั้ง
|
||||
|
||||
รันคำสั่งต่อไปนี้ในโปรเจ็กต์ที่อยู่ใน repo GitHub:
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
```
|
||||
|
||||
ขั้นตอนนี้จะแนะนำคุณตลอดขั้นตอนการติดตั้งแอป GitHub การสร้างเวิร์กโฟลว์ และการตั้งค่าความลับ
|
||||
|
||||
---
|
||||
|
||||
### การตั้งค่าด้วยตนเอง
|
||||
|
||||
หรือคุณสามารถตั้งค่าได้ด้วยตนเอง
|
||||
|
||||
1. **ติดตั้งแอป GitHub**
|
||||
|
||||
ไปที่ [**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent) ตรวจสอบให้แน่ใจว่าได้ติดตั้งบนที่เก็บเป้าหมายแล้ว
|
||||
|
||||
2. **เพิ่มขั้นตอนการทำงาน**
|
||||
|
||||
เพิ่มไฟล์เวิร์กโฟลว์ต่อไปนี้ไปที่ `.github/workflows/opencode.yml` ใน repo ของคุณ ตรวจสอบให้แน่ใจว่าได้ตั้งค่า `model` ที่เหมาะสมและคีย์ API ที่จำเป็นใน `env`
|
||||
|
||||
```yml title=".github/workflows/opencode.yml" {24,26}
|
||||
name: opencode
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
pull_request_review_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
opencode:
|
||||
if: |
|
||||
contains(github.event.comment.body, '/oc') ||
|
||||
contains(github.event.comment.body, '/opencode')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 1
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run OpenCode
|
||||
uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
# share: true
|
||||
# github_token: xxxx
|
||||
```
|
||||
|
||||
3. **เก็บคีย์ API เป็นความลับ**
|
||||
|
||||
ในองค์กรหรือโครงการ **การตั้งค่า** ให้ขยาย **ความลับและตัวแปร** ทางด้านซ้าย แล้วเลือก **การดำเนินการ** และเพิ่มคีย์ API ที่จำเป็น
|
||||
|
||||
---
|
||||
|
||||
## การกำหนดค่า
|
||||
|
||||
- `model`: โมเดลที่จะใช้กับ OpenCode ใช้รูปแบบของ `provider/model` นี่คือ **จำเป็น**
|
||||
- `agent`: ตัวแทนที่จะใช้ จะต้องเป็นตัวแทนหลัก ย้อนกลับไปที่ `default_agent` จาก config หรือ `"build"` หากไม่พบ
|
||||
- `share`: ไม่ว่าจะแชร์เซสชัน OpenCode หรือไม่ ค่าเริ่มต้นเป็น **จริง** สำหรับที่เก็บข้อมูลสาธารณะ
|
||||
- `prompt`: ตัวเลือกที่กำหนดเองพร้อมท์เพื่อแทนที่การทำงานเริ่มต้น ใช้สิ่งนี้เพื่อปรับแต่งวิธีที่ OpenCode ประมวลผลคำขอ
|
||||
- `token`: โทเค็นการเข้าถึง GitHub เสริมสำหรับการดำเนินการ เช่น การสร้างความคิดเห็น การยอมรับการเปลี่ยนแปลง และการเปิดคำขอดึง ตามค่าเริ่มต้น OpenCode จะใช้โทเค็นการเข้าถึงการติดตั้งจากแอป OpenCode GitHub ดังนั้นคอมมิต แสดงความคิดเห็น และคำขอดึงข้อมูลจะปรากฏว่ามาจากแอป
|
||||
|
||||
หรือคุณสามารถใช้ [ในตัว `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) ของ GitHub Action runner ได้โดยไม่ต้องติดตั้งแอป OpenCode GitHub เพียงตรวจสอบให้แน่ใจว่าได้ให้สิทธิ์ที่จำเป็นในขั้นตอนการทำงานของคุณ:
|
||||
|
||||
```yaml
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
```
|
||||
|
||||
คุณยังสามารถใช้ [โทเค็นการเข้าถึงส่วนบุคคล](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) ได้หากต้องการ
|
||||
|
||||
---
|
||||
|
||||
## กิจกรรมที่รองรับ
|
||||
|
||||
OpenCode สามารถทริกเกอร์ได้โดยเหตุการณ์ GitHub ต่อไปนี้:
|
||||
|
||||
| ประเภทเหตุการณ์ | กระตุ้นโดย | รายละเอียด |
|
||||
| ----------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
||||
| `issue_comment` | แสดงความคิดเห็นในประเด็นหรือประชาสัมพันธ์ | พูดถึง `/opencode` หรือ `/oc` ในความคิดเห็นของคุณ OpenCode อ่านบริบทและสามารถสร้างสาขา เปิด PR หรือตอบกลับได้ |
|
||||
| `pull_request_review_comment` | แสดงความคิดเห็นเกี่ยวกับบรรทัดรหัสเฉพาะในการประชาสัมพันธ์ | พูดถึง `/opencode` หรือ `/oc` ในขณะที่ตรวจสอบโค้ด OpenCode รับเส้นทางไฟล์ หมายเลขบรรทัด และบริบทที่แตกต่าง |
|
||||
| `issues` | ปัญหาเปิดหรือแก้ไข | ทริกเกอร์ OpenCode โดยอัตโนมัติเมื่อมีการสร้างหรือแก้ไขปัญหา ต้องป้อนข้อมูล `prompt` |
|
||||
| `pull_request` | PR เปิดหรืออัปเดตแล้ว | ทริกเกอร์ OpenCode โดยอัตโนมัติเมื่อมีการเปิด ซิงโครไนซ์ หรือเปิด PR อีกครั้ง มีประโยชน์สำหรับการตรวจสอบอัตโนมัติ |
|
||||
| `schedule` | กำหนดการตาม Cron | เรียกใช้ OpenCode ตามกำหนดเวลา ต้องป้อนข้อมูล `prompt` เอาต์พุตไปที่บันทึกและ PR (ไม่มีปัญหาในการแสดงความคิดเห็น) |
|
||||
| `workflow_dispatch` | ทริกเกอร์ด้วยตนเองจาก GitHub UI | ทริกเกอร์ OpenCode ตามความต้องการผ่านแท็บการดำเนินการ ต้องป้อนข้อมูล `prompt` เอาต์พุตไปที่บันทึกและ PR |
|
||||
|
||||
### ตัวอย่างกำหนดการ
|
||||
|
||||
เรียกใช้ OpenCode ตามกำหนดเวลาเพื่อทำงานอัตโนมัติ:
|
||||
|
||||
```yaml title=".github/workflows/opencode-scheduled.yml"
|
||||
name: Scheduled OpenCode Task
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 9 * * 1" # Every Monday at 9am UTC
|
||||
|
||||
jobs:
|
||||
opencode:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Run OpenCode
|
||||
uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
prompt: |
|
||||
Review the codebase for any TODO comments and create a summary.
|
||||
If you find issues worth addressing, open an issue to track them.
|
||||
```
|
||||
|
||||
สำหรับกิจกรรมที่กำหนดเวลาไว้ อินพุต `prompt` เป็นสิ่งที่จำเป็น** เนื่องจากไม่มีความคิดเห็นที่จะดึงคำแนะนำออกมา เวิร์กโฟลว์ตามกำหนดการทำงานโดยไม่มีบริบทผู้ใช้ในการตรวจสอบสิทธิ์ ดังนั้นเวิร์กโฟลว์จะต้องให้สิทธิ์ `contents: write` และ `pull-requests: write` หากคุณคาดหวังให้ OpenCode สร้างสาขาหรือ PR
|
||||
|
||||
---
|
||||
|
||||
### ตัวอย่างคำขอดึง
|
||||
|
||||
ตรวจสอบ PR โดยอัตโนมัติเมื่อมีการเปิดหรืออัปเดต:
|
||||
|
||||
```yaml title=".github/workflows/opencode-review.yml"
|
||||
name: opencode-review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, reopened, ready_for_review]
|
||||
|
||||
jobs:
|
||||
review:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: read
|
||||
pull-requests: read
|
||||
issues: read
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
use_github_token: true
|
||||
prompt: |
|
||||
Review this pull request:
|
||||
- Check for code quality issues
|
||||
- Look for potential bugs
|
||||
- Suggest improvements
|
||||
```
|
||||
|
||||
สำหรับกิจกรรม `pull_request` หากไม่มีการระบุ `prompt` OpenCode จะใช้ค่าเริ่มต้นในการตรวจสอบคำขอดึง
|
||||
|
||||
---
|
||||
|
||||
### ตัวอย่าง Triage ปัญหา
|
||||
|
||||
คัดแยกปัญหาใหม่โดยอัตโนมัติ ตัวอย่างนี้กรองไปยังบัญชีที่มีอายุมากกว่า 30 วันเพื่อลดสแปม:
|
||||
|
||||
```yaml title=".github/workflows/opencode-triage.yml"
|
||||
name: Issue Triage
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
id-token: write
|
||||
contents: write
|
||||
pull-requests: write
|
||||
issues: write
|
||||
steps:
|
||||
- name: Check account age
|
||||
id: check
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const user = await github.rest.users.getByUsername({
|
||||
username: context.payload.issue.user.login
|
||||
});
|
||||
const created = new Date(user.data.created_at);
|
||||
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
|
||||
return days >= 30;
|
||||
result-encoding: string
|
||||
|
||||
- uses: actions/checkout@v6
|
||||
if: steps.check.outputs.result == 'true'
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
if: steps.check.outputs.result == 'true'
|
||||
env:
|
||||
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
prompt: |
|
||||
Review this issue. If there's a clear fix or relevant docs:
|
||||
- Provide documentation links
|
||||
- Add error handling guidance for code examples
|
||||
Otherwise, do not comment.
|
||||
```
|
||||
|
||||
สำหรับเหตุการณ์ `issues` อินพุต `prompt` นั้น **จำเป็น** เนื่องจากไม่มีความคิดเห็นที่จะดึงคำแนะนำออกมา
|
||||
|
||||
---
|
||||
|
||||
## ข้อความแจ้งที่กำหนดเอง
|
||||
|
||||
แทนที่ข้อความแจ้งเริ่มต้นเพื่อปรับแต่งการทำงานของ OpenCode สำหรับเวิร์กโฟลว์ของคุณ
|
||||
|
||||
```yaml title=".github/workflows/opencode.yml"
|
||||
- uses: anomalyco/opencode/github@latest
|
||||
with:
|
||||
model: anthropic/claude-sonnet-4-5
|
||||
prompt: |
|
||||
Review this pull request:
|
||||
- Check for code quality issues
|
||||
- Look for potential bugs
|
||||
- Suggest improvements
|
||||
```
|
||||
|
||||
สิ่งนี้มีประโยชน์สำหรับการบังคับใช้เกณฑ์การตรวจสอบเฉพาะ มาตรฐานการเขียนโค้ด หรือประเด็นมุ่งเน้นที่เกี่ยวข้องกับโครงการของคุณ
|
||||
|
||||
---
|
||||
|
||||
## ตัวอย่าง
|
||||
|
||||
นี่คือตัวอย่างบางส่วนของวิธีที่คุณสามารถใช้ OpenCode ใน GitHub
|
||||
|
||||
- **อธิบายปัญหา**
|
||||
|
||||
เพิ่มความคิดเห็นนี้ในปัญหา GitHub
|
||||
|
||||
```
|
||||
/opencode explain this issue
|
||||
```
|
||||
|
||||
OpenCode จะอ่านกระทู้ทั้งหมด รวมถึงความคิดเห็นทั้งหมด และตอบกลับพร้อมคำอธิบายที่ชัดเจน
|
||||
|
||||
- **แก้ไขปัญหา**
|
||||
|
||||
ในปัญหา GitHub ให้พูดว่า:
|
||||
|
||||
```
|
||||
/opencode fix this
|
||||
```
|
||||
|
||||
และ OpenCode จะสร้างสาขาใหม่ ดำเนินการเปลี่ยนแปลง และเปิด PR ที่มีการเปลี่ยนแปลง
|
||||
|
||||
- **ตรวจสอบ PR และทำการเปลี่ยนแปลง**
|
||||
|
||||
แสดงความคิดเห็นต่อไปนี้ใน GitHub PR
|
||||
|
||||
```
|
||||
Delete the attachment from S3 when the note is removed /oc
|
||||
```
|
||||
|
||||
OpenCode จะดำเนินการเปลี่ยนแปลงที่ร้องขอและส่งมอบให้กับ PR เดียวกัน
|
||||
|
||||
- **ตรวจสอบบรรทัดรหัสเฉพาะ**
|
||||
|
||||
แสดงความคิดเห็นโดยตรงบนบรรทัดโค้ดในแท็บ "ไฟล์" ของ PR OpenCode จะตรวจจับไฟล์ หมายเลขบรรทัด และบริบทต่างโดยอัตโนมัติเพื่อให้การตอบสนองที่แม่นยำ
|
||||
|
||||
```
|
||||
[Comment on specific lines in Files tab]
|
||||
/oc add error handling here
|
||||
```
|
||||
|
||||
เมื่อแสดงความคิดเห็นในบรรทัดใดบรรทัดหนึ่ง OpenCode จะได้รับ:
|
||||
- กำลังตรวจสอบไฟล์ที่แน่นอน
|
||||
- บรรทัดโค้ดเฉพาะ
|
||||
- บริบทที่แตกต่างโดยรอบ
|
||||
- ข้อมูลหมายเลขบรรทัด
|
||||
|
||||
ซึ่งช่วยให้สามารถร้องขอที่ตรงเป้าหมายมากขึ้นโดยไม่จำเป็นต้องระบุเส้นทางไฟล์หรือหมายเลขบรรทัดด้วยตนเอง
|
||||
195
packages/web/src/content/docs/th/gitlab.mdx
Normal file
195
packages/web/src/content/docs/th/gitlab.mdx
Normal file
@@ -0,0 +1,195 @@
|
||||
---
|
||||
title: GitLab
|
||||
description: ใช้ OpenCode ในปัญหา GitLab และรวมคำขอ
|
||||
---
|
||||
|
||||
OpenCode ทำงานร่วมกับเวิร์กโฟลว์ GitLab ของคุณผ่านไปป์ไลน์ GitLab CI/CD หรือกับ GitLab Duo
|
||||
|
||||
ในทั้งสองกรณี OpenCode จะทำงานบน GitLab runners ของคุณ
|
||||
|
||||
---
|
||||
|
||||
## GitLab CI
|
||||
|
||||
OpenCode ทำงานในไปป์ไลน์ GitLab ปกติ คุณสามารถสร้างมันลงในไปป์ไลน์เป็น [องค์ประกอบ CI](https://docs.gitlab.com/ee/ci/components/)
|
||||
|
||||
ที่นี่เรากำลังใช้คอมโพเนนต์ CI/CD ที่สร้างโดยชุมชนสำหรับ OpenCode — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode)
|
||||
|
||||
---
|
||||
|
||||
### คุณสมบัติ
|
||||
|
||||
- **ใช้การกำหนดค่าแบบกำหนดเองต่องาน**: กำหนดค่า OpenCode ด้วยไดเร็กทอรีการกำหนดค่าแบบกำหนดเอง เช่น `./config/#custom-directory` เพื่อเปิดหรือปิดฟังก์ชันการทำงานต่อการเรียกใช้ OpenCode
|
||||
- **การตั้งค่าขั้นต่ำ**: องค์ประกอบ CI จะตั้งค่า OpenCode ในเบื้องหลัง คุณเพียงแค่ต้องสร้างการกำหนดค่า OpenCode และข้อความแจ้งเริ่มต้นเท่านั้น
|
||||
- **ยืดหยุ่น**: ส่วนประกอบ CI รองรับอินพุตหลายอินพุตเพื่อปรับแต่งลักษณะการทำงาน
|
||||
|
||||
---
|
||||
|
||||
### ตั้งค่า
|
||||
|
||||
1. จัดเก็บการรับรองความถูกต้อง OpenCode ของคุณ JSON เป็นประเภทไฟล์ CI ตัวแปรสภาพแวดล้อมภายใต้ **การตั้งค่า** > **CI/CD** > **ตัวแปร** ตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายว่าเป็น "ปิดบังและซ่อนไว้"
|
||||
2. เพิ่มสิ่งต่อไปนี้ในไฟล์ `.gitlab-ci.yml` ของคุณ
|
||||
|
||||
```yaml title=".gitlab-ci.yml"
|
||||
include:
|
||||
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
|
||||
inputs:
|
||||
config_dir: ${CI_PROJECT_DIR}/opencode-config
|
||||
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
|
||||
command: optional-custom-command
|
||||
message: "Your prompt here"
|
||||
```
|
||||
|
||||
หากต้องการข้อมูลเพิ่มเติมและกรณีการใช้งาน [ตรวจสอบเอกสาร](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode) สำหรับส่วนประกอบนี้
|
||||
|
||||
---
|
||||
|
||||
## GitLab ดูโอ
|
||||
|
||||
OpenCode ทำงานร่วมกับเวิร์กโฟลว์ GitLab ของคุณ
|
||||
พูดถึง `@opencode` ในความคิดเห็น แล้ว OpenCode จะดำเนินการงานภายในไปป์ไลน์ GitLab CI ของคุณ
|
||||
|
||||
---
|
||||
|
||||
### คุณสมบัติ
|
||||
|
||||
- **ปัญหาการคัดแยก**: ขอให้ OpenCode ตรวจสอบปัญหาและอธิบายให้คุณทราบ
|
||||
- **แก้ไขและนำไปใช้**: ขอให้ OpenCode แก้ไขปัญหาหรือใช้ฟีเจอร์
|
||||
มันจะสร้างสาขาใหม่และขอรวมการเปลี่ยนแปลง
|
||||
- **ปลอดภัย**: OpenCode ทำงานบนนักวิ่ง GitLab ของคุณ
|
||||
|
||||
---
|
||||
|
||||
### ตั้งค่า
|
||||
|
||||
OpenCode ทำงานในไปป์ไลน์ GitLab CI/CD ของคุณ นี่คือสิ่งที่คุณจะต้องตั้งค่า:
|
||||
|
||||
:::tip
|
||||
ตรวจสอบ [**เอกสาร GitLab**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) เพื่อดูคำแนะนำล่าสุด
|
||||
:::
|
||||
|
||||
1. กำหนดค่าสภาพแวดล้อม GitLab ของคุณ
|
||||
2. ตั้งค่า CI/CD
|
||||
3. รับผู้ให้บริการโมเดล AI API คีย์
|
||||
4. สร้างบัญชีบริการ
|
||||
5. กำหนดค่าตัวแปร CI/CD
|
||||
6. สร้างไฟล์กำหนดค่าโฟลว์ ต่อไปนี้เป็นตัวอย่าง:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Flow configuration</summary>
|
||||
|
||||
```yaml
|
||||
image: node:22-slim
|
||||
commands:
|
||||
- echo "Installing opencode"
|
||||
- npm install --global opencode-ai
|
||||
- echo "Installing glab"
|
||||
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
|
||||
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
|
||||
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
|
||||
- apt-get install --yes glab
|
||||
- echo "Configuring glab"
|
||||
- echo $GITLAB_HOST
|
||||
- echo "Creating OpenCode auth configuration"
|
||||
- mkdir --parents ~/.local/share/opencode
|
||||
- |
|
||||
cat > ~/.local/share/opencode/auth.json << EOF
|
||||
{
|
||||
"anthropic": {
|
||||
"type": "api",
|
||||
"key": "$ANTHROPIC_API_KEY"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
- echo "Configuring git"
|
||||
- git config --global user.email "opencode@gitlab.com"
|
||||
- git config --global user.name "OpenCode"
|
||||
- echo "Testing glab"
|
||||
- glab issue list
|
||||
- echo "Running OpenCode"
|
||||
- |
|
||||
opencode run "
|
||||
You are an AI assistant helping with GitLab operations.
|
||||
|
||||
Context: $AI_FLOW_CONTEXT
|
||||
Task: $AI_FLOW_INPUT
|
||||
Event: $AI_FLOW_EVENT
|
||||
|
||||
Please execute the requested task using the available GitLab tools.
|
||||
Be thorough in your analysis and provide clear explanations.
|
||||
|
||||
<important>
|
||||
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
|
||||
|
||||
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
|
||||
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
|
||||
</important>
|
||||
"
|
||||
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
|
||||
- echo "Checking for git changes and pushing if any exist"
|
||||
- |
|
||||
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
|
||||
echo "Git changes detected, adding and pushing..."
|
||||
git add .
|
||||
if git diff --cached --quiet; then
|
||||
echo "No staged changes to commit"
|
||||
else
|
||||
echo "Committing changes to branch: $CI_WORKLOAD_REF"
|
||||
git commit --message "Codex changes"
|
||||
echo "Pushing changes up to $CI_WORKLOAD_REF"
|
||||
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
|
||||
echo "Changes successfully pushed"
|
||||
fi
|
||||
else
|
||||
echo "No git changes detected, skipping push"
|
||||
fi
|
||||
variables:
|
||||
- ANTHROPIC_API_KEY
|
||||
- GITLAB_TOKEN_OPENCODE
|
||||
- GITLAB_HOST
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
คุณสามารถดูคำแนะนำโดยละเอียดได้ที่ [GitLab CLI agent docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)
|
||||
|
||||
---
|
||||
|
||||
### ตัวอย่าง
|
||||
|
||||
นี่คือตัวอย่างบางส่วนของวิธีที่คุณสามารถใช้ OpenCode ใน GitLab
|
||||
|
||||
:::tip
|
||||
คุณสามารถกำหนดค่าให้ใช้วลีทริกเกอร์ที่แตกต่างจาก `@opencode`
|
||||
:::
|
||||
|
||||
- **อธิบายปัญหา**
|
||||
|
||||
เพิ่มความคิดเห็นนี้ในปัญหา GitLab
|
||||
|
||||
```
|
||||
@opencode explain this issue
|
||||
```
|
||||
|
||||
OpenCode จะอ่านปัญหาและตอบกลับพร้อมคำอธิบายที่ชัดเจน
|
||||
|
||||
- **แก้ไขปัญหา**
|
||||
|
||||
ในปัญหา GitLab ให้พูดว่า:
|
||||
|
||||
```
|
||||
@opencode fix this
|
||||
```
|
||||
|
||||
OpenCode จะสร้างสาขาใหม่ ดำเนินการเปลี่ยนแปลง และเปิดคำขอรวมที่มีการเปลี่ยนแปลง
|
||||
|
||||
- **ตรวจสอบคำขอรวม**
|
||||
|
||||
แสดงความคิดเห็นต่อไปนี้ในคำขอรวม GitLab
|
||||
|
||||
```
|
||||
@opencode review this merge request
|
||||
```
|
||||
|
||||
OpenCode จะตรวจสอบคำขอรวมและให้ข้อเสนอแนะ
|
||||
48
packages/web/src/content/docs/th/ide.mdx
Normal file
48
packages/web/src/content/docs/th/ide.mdx
Normal file
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: IDE
|
||||
description: ส่วนขยาย OpenCode สำหรับ VS Code, Cursor และ IDE อื่นๆ
|
||||
---
|
||||
|
||||
OpenCode ทำงานร่วมกับ VS Code, Cursor หรือ IDE ใดๆ ที่รองรับเทอร์มินัล เพียงเรียกใช้ `opencode` ในเทอร์มินัลเพื่อเริ่มต้น
|
||||
|
||||
---
|
||||
|
||||
## การใช้งาน
|
||||
|
||||
- **เปิดใช้ด่วน**: ใช้ `Cmd+Esc` (Mac) หรือ `Ctrl+Esc` (Windows/Linux) เพื่อเปิด OpenCode ในมุมมองเทอร์มินัลแบบแยก หรือเน้นเซสชันเทอร์มินัลที่มีอยู่หากมีการทำงานอยู่แล้ว
|
||||
- **เซสชันใหม่**: ใช้ `Cmd+Shift+Esc` (Mac) หรือ `Ctrl+Shift+Esc` (Windows/Linux) เพื่อเริ่มเซสชันเทอร์มินัล OpenCode ใหม่ แม้ว่าเซสชันหนึ่งจะเปิดอยู่แล้วก็ตาม คุณยังสามารถคลิกปุ่ม OpenCode ใน UI ได้ด้วย
|
||||
- **การรับรู้บริบท**: แชร์การเลือกหรือแท็บปัจจุบันของคุณโดยอัตโนมัติด้วย OpenCode
|
||||
- **ทางลัดการอ้างอิงไฟล์**: ใช้ `Cmd+Option+K` (Mac) หรือ `Alt+Ctrl+K` (Linux/Windows) เพื่อแทรกการอ้างอิงไฟล์ ตัวอย่างเช่น `@File#L37-42`
|
||||
|
||||
---
|
||||
|
||||
## การติดตั้ง
|
||||
|
||||
วิธีติดตั้ง OpenCode บน VS Code และทางแยกยอดนิยม เช่น Cursor, Windsurf, VSCodium:
|
||||
|
||||
1. เปิดรหัส VS
|
||||
2. เปิดเทอร์มินัลรวม
|
||||
3. เรียกใช้ `opencode` - ส่วนขยายจะติดตั้งโดยอัตโนมัติ
|
||||
|
||||
ในทางกลับกัน หากคุณต้องการใช้ IDE ของคุณเองเมื่อคุณเรียกใช้ `/editor` หรือ `/export` จาก TUI คุณจะต้องตั้งค่า `export EDITOR="code --wait"` [เรียนรู้เพิ่มเติม](/docs/tui/#editor-setup)
|
||||
|
||||
---
|
||||
|
||||
### ติดตั้งด้วยตนเอง
|
||||
|
||||
ค้นหา **OpenCode** ใน Extension Marketplace แล้วคลิก **ติดตั้ง**
|
||||
|
||||
---
|
||||
|
||||
### การแก้ไขปัญหา
|
||||
|
||||
หากส่วนขยายไม่สามารถติดตั้งได้โดยอัตโนมัติ:
|
||||
|
||||
- ตรวจสอบให้แน่ใจว่าคุณใช้งาน `opencode` ในเทอร์มินัลรวม
|
||||
- ยืนยันว่า CLI สำหรับ IDE ของคุณได้รับการติดตั้งแล้ว:
|
||||
- สำหรับรหัส VS: `code` คำสั่ง
|
||||
- สำหรับเคอร์เซอร์: `cursor` คำสั่ง
|
||||
- สำหรับวินด์เซิร์ฟ: `windsurf` คำสั่ง
|
||||
- สำหรับ VSCodium: `codium` คำสั่ง
|
||||
- ถ้าไม่เช่นนั้น ให้รัน `Cmd+Shift+P` (Mac) หรือ `Ctrl+Shift+P` (Windows/Linux) และค้นหา "Shell Command: Install 'code' command in PATH" (หรือเทียบเท่ากับ IDE ของคุณ)
|
||||
- ตรวจสอบให้แน่ใจว่ารหัส VS มีสิทธิ์ในการติดตั้งส่วนขยาย
|
||||
359
packages/web/src/content/docs/th/index.mdx
Normal file
359
packages/web/src/content/docs/th/index.mdx
Normal file
@@ -0,0 +1,359 @@
|
||||
---
|
||||
title: บทนำ
|
||||
description: เริ่มต้นใช้งาน OpenCode
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
|
||||
[**OpenCode**](/) คือเอเจนต์การเข้ารหัส AI แบบโอเพ่นซอร์ส มีให้บริการในรูปแบบอินเทอร์เฟซบนเทอร์มินัล แอปเดสก์ท็อป หรือส่วนขยาย IDE
|
||||
|
||||

|
||||
|
||||
มาเริ่มกันเลย
|
||||
|
||||
---
|
||||
|
||||
#### ข้อกำหนดเบื้องต้น
|
||||
|
||||
หากต้องการใช้ OpenCode ในเทอร์มินัล คุณจะต้องมี:
|
||||
|
||||
1. เทอร์มินัลอีมูเลเตอร์ที่ทันสมัยเช่น:
|
||||
- [WezTerm](https://wezterm.org) ข้ามแพลตฟอร์ม
|
||||
- [Alacritty](https://alacritty.org) ข้ามแพลตฟอร์ม
|
||||
- [โกสต์ตี้](https://ghostty.org), ลินุกซ์ และ macOS
|
||||
- [คิตตี้](https://sw.kovidgoyal.net/kitty/), Linux และ macOS
|
||||
|
||||
2. ปุ่ม API สำหรับผู้ให้บริการ LLM ที่คุณต้องการใช้
|
||||
|
||||
---
|
||||
|
||||
## ติดตั้ง
|
||||
|
||||
วิธีที่ง่ายที่สุดในการติดตั้ง OpenCode คือการใช้สคริปต์การติดตั้ง
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
```
|
||||
|
||||
คุณยังสามารถติดตั้งได้ด้วยคำสั่งต่อไปนี้:
|
||||
|
||||
- **การใช้ Node.js**
|
||||
|
||||
<Tabs>
|
||||
|
||||
<TabItem label="npm">
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Bun">
|
||||
```bash
|
||||
bun install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="pnpm">
|
||||
```bash
|
||||
pnpm install -g opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Yarn">
|
||||
```bash
|
||||
yarn global add opencode-ai
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
</Tabs>
|
||||
|
||||
- **การใช้ Homebrew บน macOS และ Linux**
|
||||
|
||||
```bash
|
||||
brew install anomalyco/tap/opencode
|
||||
```
|
||||
|
||||
> เราขอแนะนำให้ใช้การแตะ OpenCode เพื่อเผยแพร่ข้อมูลล่าสุด สูตร `brew install opencode` อย่างเป็นทางการได้รับการดูแลโดยทีมงาน Homebrew และมีการอัปเดตไม่บ่อยนัก
|
||||
|
||||
- **การใช้ Paru บน Arch Linux**
|
||||
|
||||
```bash
|
||||
paru -S opencode-bin
|
||||
```
|
||||
|
||||
#### หน้าต่าง
|
||||
|
||||
:::tip[แนะนำ: ใช้ WSL]
|
||||
เพื่อประสบการณ์ที่ดีที่สุดบน Windows เราขอแนะนำให้ใช้ [ระบบย่อย Windows สำหรับ Linux (WSL)](/docs/windows-wsl) ให้ประสิทธิภาพที่ดีขึ้นและความเข้ากันได้เต็มรูปแบบกับคุณสมบัติของ OpenCode
|
||||
:::
|
||||
|
||||
- **ใช้ช็อคโกแลต**
|
||||
|
||||
```bash
|
||||
choco install opencode
|
||||
```
|
||||
|
||||
- **การใช้สกู๊ป**
|
||||
|
||||
```bash
|
||||
scoop install opencode
|
||||
```
|
||||
|
||||
- **การใช้ NPM**
|
||||
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
- ** การใช้ Mise **
|
||||
|
||||
```bash
|
||||
mise use -g github:anomalyco/opencode
|
||||
```
|
||||
|
||||
- **การใช้นักเทียบท่า**
|
||||
|
||||
```bash
|
||||
docker run -it --rm ghcr.io/anomalyco/opencode
|
||||
```
|
||||
|
||||
ขณะนี้การสนับสนุนสำหรับการติดตั้ง OpenCode บน Windows โดยใช้ Bun อยู่ระหว่างดำเนินการ
|
||||
|
||||
คุณยังสามารถคว้าไบนารี่ได้จาก [เผยแพร่](https://github.com/anomalyco/opencode/releases)
|
||||
|
||||
---
|
||||
|
||||
## กำหนดค่า
|
||||
|
||||
ด้วย OpenCode คุณสามารถใช้ผู้ให้บริการ LLM ใดก็ได้โดยกำหนดค่าคีย์ API
|
||||
|
||||
หากคุณยังใหม่ต่อการใช้ผู้ให้บริการ LLM เราขอแนะนำให้ใช้ [OpenCode Zen](/docs/zen)
|
||||
เป็นรายการโมเดลที่ได้รับการดูแลจัดการซึ่งได้รับการทดสอบและตรวจสอบโดย OpenCode
|
||||
ทีม.
|
||||
|
||||
1. เรียกใช้คำสั่ง `/connect` ใน TUI เลือก opencode และไปที่ [opencode.ai/auth](https://opencode.ai/auth)
|
||||
|
||||
```txt
|
||||
/connect
|
||||
```
|
||||
|
||||
2. ลงชื่อเข้าใช้ เพิ่มรายละเอียดการเรียกเก็บเงินของคุณ และคัดลอกรหัส API ของคุณ
|
||||
|
||||
3. วางคีย์ API ของคุณ
|
||||
|
||||
```txt
|
||||
┌ API key
|
||||
│
|
||||
│
|
||||
└ enter
|
||||
```
|
||||
|
||||
หรือคุณสามารถเลือกหนึ่งในผู้ให้บริการรายอื่นได้ [เรียนรู้เพิ่มเติม](/docs/providers#ไดเรกทอรี)
|
||||
|
||||
---
|
||||
|
||||
## เริ่มต้น
|
||||
|
||||
เมื่อคุณได้กำหนดค่าผู้ให้บริการแล้ว คุณสามารถนำทางไปยังโปรเจ็กต์นั้นได้
|
||||
คุณอยากทำงานต่อ
|
||||
|
||||
```bash
|
||||
cd /path/to/project
|
||||
```
|
||||
|
||||
และเรียกใช้ OpenCode
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
จากนั้น เริ่มต้น OpenCode สำหรับโปรเจ็กต์โดยการรันคำสั่งต่อไปนี้
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
นี่จะได้รับ OpenCode เพื่อวิเคราะห์โครงการของคุณและสร้างไฟล์ `AGENTS.md`
|
||||
รากของโครงการ
|
||||
|
||||
:::tip
|
||||
คุณควรคอมมิตไฟล์ `AGENTS.md` ของโปรเจ็กต์ของคุณไปที่ Git
|
||||
:::
|
||||
|
||||
ซึ่งจะช่วยให้ OpenCode เข้าใจโครงสร้างโปรเจ็กต์และรูปแบบการเขียนโค้ด
|
||||
ใช้แล้ว.
|
||||
|
||||
---
|
||||
|
||||
## การใช้งาน
|
||||
|
||||
ตอนนี้คุณพร้อมที่จะใช้ OpenCode เพื่อทำงานในโครงการของคุณแล้ว อย่าลังเลที่จะถามมัน
|
||||
อะไรก็ตาม!
|
||||
|
||||
หากคุณยังใหม่ต่อการใช้เอเจนต์การเข้ารหัส AI ต่อไปนี้คือตัวอย่างบางส่วนที่อาจเป็นไปได้
|
||||
ช่วย.
|
||||
|
||||
---
|
||||
|
||||
### ถามคำถาม
|
||||
|
||||
คุณสามารถขอให้ OpenCode อธิบาย codebase ให้คุณได้
|
||||
|
||||
:::tip
|
||||
ใช้ปุ่ม `@` เพื่อค้นหาไฟล์ในโครงการอย่างคลุมเครือ
|
||||
:::
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
How is authentication handled in @packages/functions/src/api/index.ts
|
||||
```
|
||||
|
||||
สิ่งนี้มีประโยชน์หากมีส่วนหนึ่งของโค้ดเบสที่คุณไม่ได้ดำเนินการ
|
||||
|
||||
---
|
||||
|
||||
### เพิ่มคุณสมบัติ
|
||||
|
||||
คุณสามารถขอให้ OpenCode เพิ่มคุณสมบัติใหม่ให้กับโครงการของคุณได้ แม้ว่าเราจะแนะนำให้ขอให้สร้างแผนก่อนก็ตาม
|
||||
|
||||
1. **สร้างแผน**
|
||||
|
||||
OpenCode มีโหมด _Plan_ ที่ปิดการใช้งานความสามารถในการเปลี่ยนแปลงและ
|
||||
แนะนำ _how_ ว่าจะใช้งานฟีเจอร์นี้แทน
|
||||
|
||||
เปลี่ยนไปใช้ปุ่ม **Tab** คุณจะเห็นตัวบ่งชี้นี้ที่มุมขวาล่าง
|
||||
|
||||
```bash frame="none" title="Switch to Plan mode"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
ตอนนี้เรามาอธิบายสิ่งที่เราต้องการให้ทำ
|
||||
|
||||
```txt frame="none"
|
||||
When a user deletes a note, we'd like to flag it as deleted in the database.
|
||||
Then create a screen that shows all the recently deleted notes.
|
||||
From this screen, the user can undelete a note or permanently delete it.
|
||||
```
|
||||
|
||||
คุณต้องการให้รายละเอียด OpenCode เพียงพอเพื่อทำความเข้าใจสิ่งที่คุณต้องการ มันช่วยได้
|
||||
เพื่อพูดคุยเหมือนคุณกำลังพูดคุยกับนักพัฒนารุ่นน้องในทีมของคุณ
|
||||
|
||||
:::tip
|
||||
ให้บริบทและตัวอย่างมากมายแก่ OpenCode เพื่อช่วยให้เข้าใจสิ่งที่คุณ
|
||||
ต้องการ.
|
||||
:::
|
||||
|
||||
2. **ทบทวนแผน**
|
||||
|
||||
เมื่อมีแผนแล้ว คุณสามารถให้ข้อเสนอแนะหรือเพิ่มรายละเอียดเพิ่มเติมได้
|
||||
|
||||
```txt frame="none"
|
||||
We'd like to design this new screen using a design I've used before.
|
||||
[Image #1] Take a look at this image and use it as a reference.
|
||||
```
|
||||
|
||||
:::tip
|
||||
ลากและวางรูปภาพลงในเทอร์มินัลเพื่อเพิ่มลงในพรอมต์
|
||||
:::
|
||||
|
||||
OpenCode สามารถสแกนรูปภาพที่คุณให้มาและเพิ่มลงในข้อความแจ้งได้ คุณสามารถ
|
||||
ทำได้โดยลากและวางรูปภาพลงในเทอร์มินัล
|
||||
|
||||
3. **สร้างฟีเจอร์**
|
||||
|
||||
เมื่อคุณรู้สึกพอใจกับแผนแล้ว ให้เปลี่ยนกลับเป็น _Build mode_ ภายใน
|
||||
กดปุ่ม **Tab** อีกครั้ง
|
||||
|
||||
```bash frame="none"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
และขอให้ทำการเปลี่ยนแปลง
|
||||
|
||||
```bash frame="none"
|
||||
Sounds good! Go ahead and make the changes.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ทำการเปลี่ยนแปลง
|
||||
|
||||
หากต้องการการเปลี่ยนแปลงที่ตรงไปตรงมามากขึ้น คุณสามารถขอให้ OpenCode สร้างมันโดยตรงได้
|
||||
โดยไม่ต้องทบทวนแผนก่อน
|
||||
|
||||
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
|
||||
We need to add authentication to the /settings route. Take a look at how this is
|
||||
handled in the /notes route in @packages/functions/src/notes.ts and implement
|
||||
the same logic in @packages/functions/src/settings.ts
|
||||
```
|
||||
|
||||
คุณต้องการให้แน่ใจว่าคุณให้รายละเอียดในปริมาณที่เหมาะสมเพื่อให้ OpenCode ดำเนินการได้ถูกต้อง
|
||||
การเปลี่ยนแปลง
|
||||
|
||||
---
|
||||
|
||||
### เลิกทำการเปลี่ยนแปลง
|
||||
|
||||
สมมติว่าคุณขอให้ OpenCode ทำการเปลี่ยนแปลงบางอย่าง
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
แต่คุณก็รู้ว่ามันไม่ใช่สิ่งที่คุณต้องการ คุณ **สามารถยกเลิก** การเปลี่ยนแปลงได้
|
||||
โดยใช้คำสั่ง `/undo`
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
OpenCode จะคืนค่าการเปลี่ยนแปลงที่คุณทำและแสดงข้อความต้นฉบับของคุณ
|
||||
อีกครั้ง.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
จากที่นี่ คุณสามารถปรับแต่งข้อความแจ้งและขอให้ OpenCode ลองอีกครั้ง
|
||||
|
||||
:::tip
|
||||
คุณสามารถเรียกใช้ `/undo` ได้หลายครั้งเพื่อเลิกทำการเปลี่ยนแปลงหลายรายการ
|
||||
:::
|
||||
|
||||
หรือคุณสามารถ **สามารถทำซ้ำ** การเปลี่ยนแปลงโดยใช้คำสั่ง `/redo`
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## แบ่งปัน
|
||||
|
||||
การสนทนาที่คุณมีกับ OpenCode สามารถ [แชร์กับคุณได้
|
||||
ทีมงาน](/docs/share)
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
การดำเนินการนี้จะสร้างลิงก์ไปยังการสนทนาปัจจุบันและคัดลอกไปยังคลิปบอร์ดของคุณ
|
||||
|
||||
:::note
|
||||
การสนทนาจะไม่ถูกแชร์โดยค่าเริ่มต้น
|
||||
:::
|
||||
|
||||
นี่คือ [ตัวอย่างการสนทนา](https://opencode.ai/s/4XP1fce5) กับ OpenCode
|
||||
|
||||
---
|
||||
|
||||
## ปรับแต่ง
|
||||
|
||||
แค่นั้นแหละ! ตอนนี้คุณเป็นมืออาชีพในการใช้ OpenCode แล้ว
|
||||
|
||||
หากต้องการทำให้เป็นของคุณเอง เราขอแนะนำให้ [เลือกธีม](/docs/themes), [ปรับแต่งปุ่มลัด](/docs/keybinds), [กำหนดค่าตัวจัดรูปแบบโค้ด](/docs/formatters), [สร้างคำสั่งที่กำหนดเอง](/docs/commands) หรือลองใช้ [การกำหนดค่า OpenCode](/docs/config)
|
||||
192
packages/web/src/content/docs/th/keybinds.mdx
Normal file
192
packages/web/src/content/docs/th/keybinds.mdx
Normal file
@@ -0,0 +1,192 @@
|
||||
---
|
||||
title: ปุ่มลัด
|
||||
description: ปรับแต่งปุ่มลัดของคุณ
|
||||
---
|
||||
|
||||
OpenCode มีรายการปุ่มลัดที่คุณปรับแต่งได้ผ่านการกำหนดค่า OpenCode
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {
|
||||
"leader": "ctrl+x",
|
||||
"app_exit": "ctrl+c,ctrl+d,<leader>q",
|
||||
"editor_open": "<leader>e",
|
||||
"theme_list": "<leader>t",
|
||||
"sidebar_toggle": "<leader>b",
|
||||
"scrollbar_toggle": "none",
|
||||
"username_toggle": "none",
|
||||
"status_view": "<leader>s",
|
||||
"tool_details": "none",
|
||||
"session_export": "<leader>x",
|
||||
"session_new": "<leader>n",
|
||||
"session_list": "<leader>l",
|
||||
"session_timeline": "<leader>g",
|
||||
"session_fork": "none",
|
||||
"session_rename": "none",
|
||||
"session_share": "none",
|
||||
"session_unshare": "none",
|
||||
"session_interrupt": "escape",
|
||||
"session_compact": "<leader>c",
|
||||
"session_child_cycle": "<leader>right",
|
||||
"session_child_cycle_reverse": "<leader>left",
|
||||
"session_parent": "<leader>up",
|
||||
"messages_page_up": "pageup,ctrl+alt+b",
|
||||
"messages_page_down": "pagedown,ctrl+alt+f",
|
||||
"messages_line_up": "ctrl+alt+y",
|
||||
"messages_line_down": "ctrl+alt+e",
|
||||
"messages_half_page_up": "ctrl+alt+u",
|
||||
"messages_half_page_down": "ctrl+alt+d",
|
||||
"messages_first": "ctrl+g,home",
|
||||
"messages_last": "ctrl+alt+g,end",
|
||||
"messages_next": "none",
|
||||
"messages_previous": "none",
|
||||
"messages_copy": "<leader>y",
|
||||
"messages_undo": "<leader>u",
|
||||
"messages_redo": "<leader>r",
|
||||
"messages_last_user": "none",
|
||||
"messages_toggle_conceal": "<leader>h",
|
||||
"model_list": "<leader>m",
|
||||
"model_cycle_recent": "f2",
|
||||
"model_cycle_recent_reverse": "shift+f2",
|
||||
"model_cycle_favorite": "none",
|
||||
"model_cycle_favorite_reverse": "none",
|
||||
"variant_cycle": "ctrl+t",
|
||||
"command_list": "ctrl+p",
|
||||
"agent_list": "<leader>a",
|
||||
"agent_cycle": "tab",
|
||||
"agent_cycle_reverse": "shift+tab",
|
||||
"input_clear": "ctrl+c",
|
||||
"input_paste": "ctrl+v",
|
||||
"input_submit": "return",
|
||||
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
|
||||
"input_move_left": "left,ctrl+b",
|
||||
"input_move_right": "right,ctrl+f",
|
||||
"input_move_up": "up",
|
||||
"input_move_down": "down",
|
||||
"input_select_left": "shift+left",
|
||||
"input_select_right": "shift+right",
|
||||
"input_select_up": "shift+up",
|
||||
"input_select_down": "shift+down",
|
||||
"input_line_home": "ctrl+a",
|
||||
"input_line_end": "ctrl+e",
|
||||
"input_select_line_home": "ctrl+shift+a",
|
||||
"input_select_line_end": "ctrl+shift+e",
|
||||
"input_visual_line_home": "alt+a",
|
||||
"input_visual_line_end": "alt+e",
|
||||
"input_select_visual_line_home": "alt+shift+a",
|
||||
"input_select_visual_line_end": "alt+shift+e",
|
||||
"input_buffer_home": "home",
|
||||
"input_buffer_end": "end",
|
||||
"input_select_buffer_home": "shift+home",
|
||||
"input_select_buffer_end": "shift+end",
|
||||
"input_delete_line": "ctrl+shift+d",
|
||||
"input_delete_to_line_end": "ctrl+k",
|
||||
"input_delete_to_line_start": "ctrl+u",
|
||||
"input_backspace": "backspace,shift+backspace",
|
||||
"input_delete": "ctrl+d,delete,shift+delete",
|
||||
"input_undo": "ctrl+-,super+z",
|
||||
"input_redo": "ctrl+.,super+shift+z",
|
||||
"input_word_forward": "alt+f,alt+right,ctrl+right",
|
||||
"input_word_backward": "alt+b,alt+left,ctrl+left",
|
||||
"input_select_word_forward": "alt+shift+f,alt+shift+right",
|
||||
"input_select_word_backward": "alt+shift+b,alt+shift+left",
|
||||
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
|
||||
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
|
||||
"history_previous": "up",
|
||||
"history_next": "down",
|
||||
"terminal_suspend": "ctrl+z",
|
||||
"terminal_title_toggle": "none",
|
||||
"tips_toggle": "<leader>h",
|
||||
"display_thinking": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## กุญแจผู้นำ
|
||||
|
||||
OpenCode ใช้คีย์ `leader` สำหรับการเชื่อมโยงคีย์ส่วนใหญ่ วิธีนี้จะหลีกเลี่ยงความขัดแย้งในเทอร์มินัลของคุณ
|
||||
|
||||
ตามค่าเริ่มต้น `ctrl+x` จะเป็นปุ่มผู้นำ และการดำเนินการส่วนใหญ่ต้องการให้คุณกดปุ่มผู้นำก่อน จากนั้นจึงกดทางลัด ตัวอย่างเช่น หากต้องการเริ่มเซสชันใหม่ คุณต้องกด `ctrl+x` ก่อน จากนั้นจึงกด `n`
|
||||
|
||||
คุณไม่จำเป็นต้องใช้คีย์ผู้นำสำหรับการผูกคีย์ แต่เราขอแนะนำให้ทำเช่นนั้น
|
||||
|
||||
---
|
||||
|
||||
## ปิดการใช้งานการผูกปุ่ม
|
||||
|
||||
คุณสามารถปิดการใช้งานการผูกปุ่มได้โดยการเพิ่มคีย์ลงในการกำหนดค่าของคุณด้วยค่า "none"
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"keybinds": {
|
||||
"session_compact": "none"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ทางลัดพร้อมท์เดสก์ท็อป
|
||||
|
||||
การป้อนข้อมูลพร้อมท์ของแอป OpenCode บนเดสก์ท็อปรองรับทางลัด Readline/Emacs-style ทั่วไปสำหรับการแก้ไขข้อความ สิ่งเหล่านี้มีอยู่แล้วภายในและปัจจุบันไม่สามารถกำหนดค่าผ่าน `opencode.json` ได้
|
||||
|
||||
| ทางลัด | การกระทำ |
|
||||
| -------- | ---------------------------------------- |
|
||||
| `ctrl+a` | ย้ายไปที่จุดเริ่มต้นของบรรทัดปัจจุบัน |
|
||||
| `ctrl+e` | ย้ายไปที่จุดสิ้นสุดของบรรทัดปัจจุบัน |
|
||||
| `ctrl+b` | เลื่อนเคอร์เซอร์กลับไปหนึ่งอักขระ |
|
||||
| `ctrl+f` | เลื่อนเคอร์เซอร์ไปข้างหน้าหนึ่งอักขระ |
|
||||
| `alt+b` | เลื่อนเคอร์เซอร์กลับไปหนึ่งคำ |
|
||||
| `alt+f` | เลื่อนเคอร์เซอร์ไปข้างหน้าหนึ่งคำ |
|
||||
| `ctrl+d` | ลบอักขระใต้เคอร์เซอร์ |
|
||||
| `ctrl+k` | ฆ่าให้จบแถว |
|
||||
| `ctrl+u` | ฆ่าที่จุดเริ่มต้นของบรรทัด |
|
||||
| `ctrl+w` | ฆ่าคำก่อนหน้า |
|
||||
| `alt+d` | ฆ่าคำถัดไป |
|
||||
| `ctrl+t` | ย้ายอักขระ |
|
||||
| `ctrl+g` | ยกเลิกป๊อปโอเวอร์ / ยกเลิกการตอบกลับที่ทำงานอยู่ |
|
||||
|
||||
---
|
||||
|
||||
## Shift+Enter
|
||||
|
||||
เทอร์มินัลบางตัวไม่ส่งคีย์ตัวปรับแต่งพร้อม Enter เป็นค่าเริ่มต้น คุณอาจต้องกำหนดค่าเทอร์มินัลของคุณให้ส่ง `Shift+Enter` เป็นลำดับหลีก
|
||||
|
||||
### เทอร์มินัลวินโดวส์
|
||||
|
||||
เปิด `settings.json` ของคุณที่:
|
||||
|
||||
```
|
||||
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
|
||||
```
|
||||
|
||||
เพิ่มสิ่งนี้ลงในอาร์เรย์ `actions` ระดับรูท:
|
||||
|
||||
```json
|
||||
"actions": [
|
||||
{
|
||||
"command": {
|
||||
"action": "sendInput",
|
||||
"input": "\u001b[13;2u"
|
||||
},
|
||||
"id": "User.sendInput.ShiftEnterCustom"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
เพิ่มสิ่งนี้ลงในอาร์เรย์ `keybindings` ระดับรูท:
|
||||
|
||||
```json
|
||||
"keybindings": [
|
||||
{
|
||||
"keys": "shift+enter",
|
||||
"id": "User.sendInput.ShiftEnterCustom"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
บันทึกไฟล์และรีสตาร์ท Windows Terminal หรือเปิดแท็บใหม่
|
||||
188
packages/web/src/content/docs/th/lsp.mdx
Normal file
188
packages/web/src/content/docs/th/lsp.mdx
Normal file
@@ -0,0 +1,188 @@
|
||||
---
|
||||
title: LSP เซิร์ฟเวอร์
|
||||
description: OpenCode ทำงานร่วมกับเซิร์ฟเวอร์ LSP ของคุณ
|
||||
---
|
||||
|
||||
OpenCode ทำงานร่วมกับ Language Server Protocol (LSP) เพื่อช่วยให้ LLM โต้ตอบกับโค้ดเบสของคุณ ใช้การวินิจฉัยเพื่อให้ข้อเสนอแนะไปยัง LLM
|
||||
|
||||
---
|
||||
|
||||
## บิวท์อิน
|
||||
|
||||
OpenCode มาพร้อมกับเซิร์ฟเวอร์ LSP ในตัวหลายตัวสำหรับภาษายอดนิยม:
|
||||
|
||||
| LSP เซิร์ฟเวอร์ | ส่วนขยาย | ความต้องการ |
|
||||
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------ |
|
||||
| โหราศาสตร์ | .แอสโตร | ติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Astro |
|
||||
| ทุบตี | .sh, .ทุบตี, .zsh, .ksh | ติดตั้ง bash-Language-Server โดยอัตโนมัติ |
|
||||
| เสียงดังกราว | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | ติดตั้งอัตโนมัติสำหรับโครงการ C/C++ |
|
||||
| ซีชาร์ป | .ซีเอส | `.NET SDK` ติดตั้งแล้ว |
|
||||
| clojure-lsp | .clj, .cljs, .cljc, .edn | `clojure-lsp` คำสั่งใช้ได้ |
|
||||
| โผ | .โผ | `dart` คำสั่งใช้ได้ |
|
||||
| เดโน | .ts, .tsx, .js, .jsx, .mjs | มีคำสั่ง `deno` (ตรวจจับอัตโนมัติ deno.json/deno.jsonc) |
|
||||
| น้ำอมฤต-ls | .ex, .exs | `elixir` คำสั่งใช้ได้ |
|
||||
| เอสลินท์ | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` การพึ่งพาในโครงการ |
|
||||
| เอฟชาร์ป | .fs, .fsi, .fsx, .fsscript | `.NET SDK` ติดตั้งแล้ว |
|
||||
| เปล่งประกาย | .แวววาว | `gleam` คำสั่งใช้ได้ |
|
||||
| โกปลส์ | .ไป | `go` คำสั่งใช้ได้ |
|
||||
| สวัสดี | .hs, .lhs | `haskell-language-server-wrapper` คำสั่งใช้ได้ |
|
||||
| jdtls | .java | `Java SDK (version 21+)` ติดตั้งแล้ว |
|
||||
| kotlin-ls | .kt, .kts | ติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Kotlin |
|
||||
| lua-ls | .lua | ติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Lua |
|
||||
| ห้าม | .ห้าม | `nixd` คำสั่งใช้ได้ |
|
||||
| ocaml-lsp | .มล., .มลิ | `ocamllsp` คำสั่งใช้ได้ |
|
||||
| ออกซ์ลินท์ | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` การพึ่งพาในโครงการ |
|
||||
| php intelephense.php | .php | ติดตั้งอัตโนมัติสำหรับโครงการ PHP |
|
||||
| ปริซึม | .ปริซึม | `prisma` คำสั่งใช้ได้ |
|
||||
| ไพไรท์ | .py, .pyi | `pyright` ติดตั้งการพึ่งพาแล้ว |
|
||||
| ทับทิม-lsp (rubocop) | .rb, .rake, .gemspec, .ru | มีคำสั่ง `ruby` และ `gem` |
|
||||
| สนิม | .อาร์เอส | `rust-analyzer` คำสั่งใช้ได้ |
|
||||
| ซอร์สคิท-lsp | .สวิฟท์, .objc, .objcpp | ติดตั้ง `swift` (`xcode` บน macOS) |
|
||||
| เก๋ไก๋ | .svelte | ติดตั้งอัตโนมัติสำหรับโครงการ Svelte |
|
||||
| ภูมิประเทศ | .tf, .tfvars | ติดตั้งอัตโนมัติจากรุ่น GitHub |
|
||||
| คนตัวเล็ก | .พิมพ์, .พิมพ์ | ติดตั้งอัตโนมัติจากรุ่น GitHub |
|
||||
| ตัวพิมพ์ดีด | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` การพึ่งพาในโครงการ |
|
||||
| วิว | .vue | ติดตั้งอัตโนมัติสำหรับโปรเจ็กต์ Vue |
|
||||
| yaml-ls | .yaml, .yml | ติดตั้งเซิร์ฟเวอร์ภาษา Red Hat yaml โดยอัตโนมัติ |
|
||||
| zls | .ซิก, .ซอน | `zig` คำสั่งใช้ได้ |
|
||||
|
||||
เซิร์ฟเวอร์ LSP จะถูกเปิดใช้งานโดยอัตโนมัติเมื่อตรวจพบนามสกุลไฟล์ใดนามสกุลหนึ่งข้างต้นและเป็นไปตามข้อกำหนด
|
||||
|
||||
:::note
|
||||
คุณสามารถปิดใช้งานการดาวน์โหลดเซิร์ฟเวอร์ LSP อัตโนมัติได้โดยตั้งค่าตัวแปรสภาพแวดล้อม `OPENCODE_DISABLE_LSP_DOWNLOAD` เป็น `true`
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## มันทำงานอย่างไร
|
||||
|
||||
เมื่อ opencode เปิดไฟล์ มันจะ:
|
||||
|
||||
1. ตรวจสอบนามสกุลไฟล์กับเซิร์ฟเวอร์ LSP ที่เปิดใช้งานทั้งหมด
|
||||
2. เริ่มเซิร์ฟเวอร์ LSP ที่เหมาะสมหากยังไม่ได้ทำงาน
|
||||
|
||||
---
|
||||
|
||||
## กำหนดค่า
|
||||
|
||||
You can customize LSP servers through the `lsp` section in your opencode config.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {}
|
||||
}
|
||||
```
|
||||
|
||||
เซิร์ฟเวอร์ LSP แต่ละเซิร์ฟเวอร์รองรับสิ่งต่อไปนี้:
|
||||
|
||||
| คุณสมบัติ | พิมพ์ | คำอธิบาย |
|
||||
| ---------------- | -------- | ------------------------------------------------- |
|
||||
| `disabled` | บูลีน | ตั้งค่านี้เป็น `true` เพื่อปิดการใช้งานเซิร์ฟเวอร์ LSP |
|
||||
| `command` | สตริง[] | คำสั่งเพื่อเริ่มต้นเซิร์ฟเวอร์ LSP |
|
||||
| `extensions` | สตริง[] | นามสกุลไฟล์ที่เซิร์ฟเวอร์ LSP นี้ควรจัดการ |
|
||||
| `env` | วัตถุ | ตัวแปรสภาพแวดล้อมที่จะตั้งค่าเมื่อเริ่มต้นเซิร์ฟเวอร์ |
|
||||
| `initialization` | วัตถุ | ตัวเลือกการเริ่มต้นที่จะส่งไปยังเซิร์ฟเวอร์ LSP |
|
||||
|
||||
ลองดูตัวอย่างบางส่วน
|
||||
|
||||
---
|
||||
|
||||
### ตัวแปรสภาพแวดล้อม
|
||||
|
||||
ใช้คุณสมบัติ `env` เพื่อตั้งค่าตัวแปรสภาพแวดล้อมเมื่อเริ่มต้นเซิร์ฟเวอร์ LSP:
|
||||
|
||||
```json title="opencode.json" {5-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"rust": {
|
||||
"env": {
|
||||
"RUST_LOG": "debug"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ตัวเลือกการเริ่มต้น
|
||||
|
||||
ใช้คุณสมบัติ `initialization` เพื่อส่งตัวเลือกการเริ่มต้นไปยังเซิร์ฟเวอร์ LSP นี่คือการตั้งค่าเฉพาะเซิร์ฟเวอร์ที่ส่งระหว่างคำขอ LSP `initialize`:
|
||||
|
||||
```json title="opencode.json" {5-9}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"typescript": {
|
||||
"initialization": {
|
||||
"preferences": {
|
||||
"importModuleSpecifierPreference": "relative"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
:::note
|
||||
ตัวเลือกการเริ่มต้นจะแตกต่างกันไปตามเซิร์ฟเวอร์ LSP ตรวจสอบเอกสารประกอบของเซิร์ฟเวอร์ LSP ของคุณเพื่อดูตัวเลือกที่มี
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### ปิดการใช้งานเซิร์ฟเวอร์ LSP
|
||||
|
||||
หากต้องการปิดการใช้งานเซิร์ฟเวอร์ **ทั้งหมด** LSP ทั่วโลก ให้ตั้งค่า `lsp` เป็น `false`:
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": false
|
||||
}
|
||||
```
|
||||
|
||||
หากต้องการปิดการใช้งานเซิร์ฟเวอร์ **เฉพาะ** LSP ให้ตั้งค่า `disabled` เป็น `true`:
|
||||
|
||||
```json title="opencode.json" {5}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"typescript": {
|
||||
"disabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### เซิร์ฟเวอร์ LSP แบบกำหนดเอง
|
||||
|
||||
คุณสามารถเพิ่มเซิร์ฟเวอร์ LSP แบบกำหนดเองได้โดยระบุคำสั่งและนามสกุลไฟล์:
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"lsp": {
|
||||
"custom-lsp": {
|
||||
"command": ["custom-lsp-server", "--stdio"],
|
||||
"extensions": [".custom"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ข้อมูลเพิ่มเติม
|
||||
|
||||
### PHP อินเทเลฟินส์
|
||||
|
||||
PHP Intelephense นำเสนอคุณสมบัติระดับพรีเมียมผ่านรหัสลิขสิทธิ์ คุณสามารถระบุรหัสสัญญาอนุญาตได้โดยการวาง (เท่านั้น) รหัสในไฟล์ข้อความที่:
|
||||
|
||||
- บน macOS/Linux: `$HOME/intelephense/licence.txt`
|
||||
- บนวินโดวส์: `%USERPROFILE%/intelephense/licence.txt`
|
||||
|
||||
ไฟล์ควรมีเฉพาะรหัสลิขสิทธิ์โดยไม่มีเนื้อหาเพิ่มเติม
|
||||
511
packages/web/src/content/docs/th/mcp-servers.mdx
Normal file
511
packages/web/src/content/docs/th/mcp-servers.mdx
Normal file
@@ -0,0 +1,511 @@
|
||||
---
|
||||
title: MCP เซิร์ฟเวอร์
|
||||
description: เพิ่มเครื่องมือ MCP ในพื้นที่และระยะไกล
|
||||
---
|
||||
|
||||
คุณสามารถเพิ่มเครื่องมือภายนอกให้กับ OpenCode ได้โดยใช้ _Model Context Protocol_ หรือ MCP OpenCode รองรับทั้งเซิร์ฟเวอร์ภายในและเซิร์ฟเวอร์ระยะไกล
|
||||
|
||||
เมื่อเพิ่มแล้ว เครื่องมือ MCP จะพร้อมใช้งานโดยอัตโนมัติสำหรับ LLM ควบคู่ไปกับเครื่องมือในตัว
|
||||
|
||||
---
|
||||
|
||||
#### คำเตือน
|
||||
|
||||
เมื่อคุณใช้เซิร์ฟเวอร์ MCP เซิร์ฟเวอร์ดังกล่าวจะเพิ่มบริบท สิ่งนี้สามารถเพิ่มขึ้นได้อย่างรวดเร็วหากคุณมีเครื่องมือมากมาย ดังนั้นเราขอแนะนำให้ระมัดระวังเซิร์ฟเวอร์ MCP ที่คุณใช้
|
||||
|
||||
:::tip
|
||||
เซิร์ฟเวอร์ MCP เพิ่มในบริบทของคุณ ดังนั้นคุณจึงต้องระวังด้วยว่าเซิร์ฟเวอร์ใดที่คุณเปิดใช้งาน
|
||||
:::
|
||||
|
||||
เซิร์ฟเวอร์ MCP บางตัว เช่น เซิร์ฟเวอร์ GitHub MCP มีแนวโน้มที่จะเพิ่มโทเค็นจำนวนมากและอาจเกินขีดจำกัดบริบทได้อย่างง่ายดาย
|
||||
|
||||
---
|
||||
|
||||
## เปิดใช้งาน
|
||||
|
||||
คุณสามารถกำหนดเซิร์ฟเวอร์ MCP ได้ใน [OpenCode Config](https://opencode.ai/docs/config/) ภายใต้ `mcp` เพิ่ม MCP แต่ละรายการด้วยชื่อที่ไม่ซ้ำใคร คุณสามารถอ้างอิงถึง MCP ด้วยชื่อได้เมื่อแจ้ง LLM
|
||||
|
||||
```jsonc title="opencode.jsonc" {6}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"name-of-mcp-server": {
|
||||
// ...
|
||||
"enabled": true,
|
||||
},
|
||||
"name-of-other-mcp-server": {
|
||||
// ...
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
คุณยังสามารถปิดการใช้งานเซิร์ฟเวอร์ได้โดยการตั้งค่า `enabled` เป็น `false` สิ่งนี้มีประโยชน์หากคุณต้องการปิดการใช้งานเซิร์ฟเวอร์ชั่วคราวโดยไม่ต้องลบออกจากการกำหนดค่าของคุณ
|
||||
|
||||
---
|
||||
|
||||
### การเอาชนะค่าเริ่มต้นระยะไกล
|
||||
|
||||
องค์กรสามารถจัดเตรียมเซิร์ฟเวอร์ MCP เริ่มต้นผ่านทางจุดสิ้นสุด `.well-known/opencode` เซิร์ฟเวอร์เหล่านี้อาจถูกปิดใช้งานตามค่าเริ่มต้น ทำให้ผู้ใช้สามารถเลือกใช้เซิร์ฟเวอร์ที่ต้องการได้
|
||||
|
||||
หากต้องการเปิดใช้งานเซิร์ฟเวอร์เฉพาะจากการกำหนดค่าระยะไกลขององค์กรของคุณ ให้เพิ่มเซิร์ฟเวอร์ดังกล่าวลงในการกำหนดค่าภายในเครื่องของคุณด้วย `enabled: true`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"jira": {
|
||||
"type": "remote",
|
||||
"url": "https://jira.example.com/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ค่าการกำหนดค่าในเครื่องของคุณจะแทนที่ค่าเริ่มต้นระยะไกล ดู [config ลำดับความสำคัญ](/docs/config#precedence-order) สำหรับรายละเอียดเพิ่มเติม
|
||||
|
||||
---
|
||||
|
||||
## ท้องถิ่น
|
||||
|
||||
เพิ่มเซิร์ฟเวอร์ท้องถิ่น MCP โดยใช้ `type` ไปยัง `"local"` ภายในวัตถุ MCP
|
||||
|
||||
```jsonc title="opencode.jsonc" {15}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-local-mcp-server": {
|
||||
"type": "local",
|
||||
// Or ["bun", "x", "my-mcp-command"]
|
||||
"command": ["npx", "-y", "my-mcp-command"],
|
||||
"enabled": true,
|
||||
"environment": {
|
||||
"MY_ENV_VAR": "my_env_var_value",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
คำสั่งคือวิธีที่เซิร์ฟเวอร์ MCP ท้องถิ่นเริ่มทำงาน คุณยังสามารถส่งผ่านรายการตัวแปรสภาพแวดล้อมได้เช่นกัน
|
||||
|
||||
ตัวอย่างเช่น นี่คือวิธีที่คุณสามารถเพิ่มการทดสอบเซิร์ฟเวอร์ [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP เซิร์ฟเวอร์
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"mcp_everything": {
|
||||
"type": "local",
|
||||
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
และหากต้องการใช้งาน ฉันสามารถเพิ่ม `use the mcp_everything tool` ในข้อความแจ้งของฉันได้
|
||||
|
||||
```txt "mcp_everything"
|
||||
use the mcp_everything tool to add the number 3 and 4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### ตัวเลือก
|
||||
|
||||
นี่คือตัวเลือกทั้งหมดสำหรับการกำหนดค่าเซิร์ฟเวอร์ MCP ภายในเครื่อง
|
||||
|
||||
| ตัวเลือก | พิมพ์ | ที่จำเป็น | คำอธิบาย |
|
||||
| ------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `type` | สตริง | ย | ประเภทของการเชื่อมต่อเซิร์ฟเวอร์ MCP ต้องเป็น `"local"` |
|
||||
| `command` | อาร์เรย์ | ย | คำสั่งและอาร์กิวเมนต์เพื่อรันเซิร์ฟเวอร์ MCP |
|
||||
| `environment` | วัตถุ | | ตัวแปรสภาพแวดล้อมที่จะตั้งค่าเมื่อรันเซิร์ฟเวอร์ |
|
||||
| `enabled` | บูลีน | | เปิดหรือปิดใช้งานเซิร์ฟเวอร์ MCP เมื่อเริ่มต้นระบบ |
|
||||
| `timeout` | ตัวเลข | | หมดเวลาเป็น ms สำหรับการดึงเครื่องมือจากเซิร์ฟเวอร์ MCP ค่าเริ่มต้นคือ 5,000 (5 วินาที) |
|
||||
|
||||
---
|
||||
|
||||
## ระยะไกล
|
||||
|
||||
เพิ่มเซิร์ฟเวอร์ระยะไกล MCP โดยตั้งค่า `type` เป็น `"remote"`
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-remote-mcp": {
|
||||
"type": "remote",
|
||||
"url": "https://my-mcp-server.com",
|
||||
"enabled": true,
|
||||
"headers": {
|
||||
"Authorization": "Bearer MY_API_KEY"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`url` คือ URL ของเซิร์ฟเวอร์ MCP ระยะไกล และด้วยตัวเลือก `headers` คุณสามารถส่งผ่านรายการส่วนหัวได้
|
||||
|
||||
---
|
||||
|
||||
#### ตัวเลือก
|
||||
|
||||
| ตัวเลือก | พิมพ์ | ที่จำเป็น | คำอธิบาย |
|
||||
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `type` | สตริง | ย | ประเภทของการเชื่อมต่อเซิร์ฟเวอร์ MCP ต้องเป็น `"remote"` |
|
||||
| `url` | สตริง | ย | URL ของเซิร์ฟเวอร์ MCP ระยะไกล |
|
||||
| `enabled` | บูลีน | | เปิดหรือปิดใช้งานเซิร์ฟเวอร์ MCP เมื่อเริ่มต้นระบบ |
|
||||
| `headers` | วัตถุ | | ส่วนหัวที่จะส่งพร้อมกับคำขอ |
|
||||
| `oauth` | วัตถุ | | การกำหนดค่าการตรวจสอบสิทธิ์ OAuth ดูส่วน [OAuth](#oauth) ด้านล่าง |
|
||||
| `timeout` | ตัวเลข | | หมดเวลาเป็น ms สำหรับการดึงเครื่องมือจากเซิร์ฟเวอร์ MCP ค่าเริ่มต้นคือ 5,000 (5 วินาที) |
|
||||
|
||||
---
|
||||
|
||||
## OAuth
|
||||
|
||||
OpenCode จะจัดการการตรวจสอบสิทธิ์ OAuth สำหรับเซิร์ฟเวอร์ MCP ระยะไกลโดยอัตโนมัติ เมื่อเซิร์ฟเวอร์ต้องการการรับรองความถูกต้อง OpenCode จะ:
|
||||
|
||||
1. ตรวจหาการตอบสนอง 401 และเริ่มโฟลว์ OAuth
|
||||
2. ใช้ **การลงทะเบียนไคลเอ็นต์แบบไดนามิก (RFC 7591)** หากเซิร์ฟเวอร์รองรับ
|
||||
3. จัดเก็บโทเค็นอย่างปลอดภัยสำหรับคำขอในอนาคต
|
||||
|
||||
---
|
||||
|
||||
### อัตโนมัติ
|
||||
|
||||
สำหรับเซิร์ฟเวอร์ MCP ที่เปิดใช้งาน OAuth ส่วนใหญ่ ไม่จำเป็นต้องมีการกำหนดค่าพิเศษ เพียงกำหนดค่าเซิร์ฟเวอร์ระยะไกล:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-oauth-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
หากเซิร์ฟเวอร์ต้องมีการตรวจสอบสิทธิ์ OpenCode จะแจ้งให้คุณตรวจสอบความถูกต้องเมื่อคุณพยายามใช้งานครั้งแรก หากไม่เป็นเช่นนั้น คุณสามารถ[ทริกเกอร์โฟลว์ด้วยตนเอง](#การตรวจสอบสิทธิ์) ด้วย `opencode mcp auth <server-name>`
|
||||
|
||||
---
|
||||
|
||||
### ลงทะเบียนล่วงหน้า
|
||||
|
||||
หากคุณมีข้อมูลประจำตัวไคลเอ็นต์จากผู้ให้บริการเซิร์ฟเวอร์ MCP คุณสามารถกำหนดค่าได้:
|
||||
|
||||
```json title="opencode.json" {7-11}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-oauth-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp",
|
||||
"oauth": {
|
||||
"clientId": "{env:MY_MCP_CLIENT_ID}",
|
||||
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
|
||||
"scope": "tools:read tools:execute"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### กำลังตรวจสอบสิทธิ์
|
||||
|
||||
คุณสามารถทริกเกอร์การตรวจสอบสิทธิ์หรือจัดการข้อมูลประจำตัวได้ด้วยตนเอง
|
||||
|
||||
ตรวจสอบสิทธิ์กับเซิร์ฟเวอร์ MCP เฉพาะ:
|
||||
|
||||
```bash
|
||||
opencode mcp auth my-oauth-server
|
||||
```
|
||||
|
||||
แสดงรายการเซิร์ฟเวอร์ MCP ทั้งหมดและสถานะการตรวจสอบสิทธิ์:
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
```
|
||||
|
||||
ลบข้อมูลรับรองที่เก็บไว้:
|
||||
|
||||
```bash
|
||||
opencode mcp logout my-oauth-server
|
||||
```
|
||||
|
||||
คำสั่ง `mcp auth` จะเปิดเบราว์เซอร์ของคุณเพื่อขออนุญาต หลังจากที่คุณอนุญาตแล้ว OpenCode จะจัดเก็บโทเค็นอย่างปลอดภัยใน `~/.local/share/opencode/mcp-auth.json`
|
||||
|
||||
---
|
||||
|
||||
#### ปิดการใช้งาน OAuth
|
||||
|
||||
หากคุณต้องการปิดการใช้งาน OAuth อัตโนมัติสำหรับเซิร์ฟเวอร์ (เช่น สำหรับเซิร์ฟเวอร์ที่ใช้คีย์ API แทน) ให้ตั้งค่า `oauth` เป็น `false`:
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-api-key-server": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.example.com/mcp",
|
||||
"oauth": false,
|
||||
"headers": {
|
||||
"Authorization": "Bearer {env:MY_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### ตัวเลือก OAuth
|
||||
|
||||
| ตัวเลือก | พิมพ์ | คำอธิบาย |
|
||||
| -------------- | --------------- | -------------------------------------------------------------------------------- |
|
||||
| `oauth` | วัตถุ \ | เท็จ | ออบเจ็กต์การกำหนดค่า OAuth หรือ `false` เพื่อปิดใช้การตรวจจับอัตโนมัติของ OAuth |
|
||||
| `clientId` | สตริง | รหัสไคลเอ็นต์ OAuth หากไม่ได้ระบุไว้ จะพยายามลงทะเบียนไคลเอ็นต์แบบไดนามิก |
|
||||
| `clientSecret` | สตริง | ข้อมูลลับไคลเอ็นต์ OAuth หากเซิร์ฟเวอร์การให้สิทธิ์กำหนดไว้ |
|
||||
| `scope` | สตริง | ขอบเขต OAuth ที่จะขอระหว่างการให้สิทธิ์ |
|
||||
|
||||
#### การดีบัก
|
||||
|
||||
หากเซิร์ฟเวอร์ MCP ระยะไกลไม่สามารถตรวจสอบสิทธิ์ได้ คุณสามารถวินิจฉัยปัญหาด้วย:
|
||||
|
||||
```bash
|
||||
# View auth status for all OAuth-capable servers
|
||||
opencode mcp auth list
|
||||
|
||||
# Debug connection and OAuth flow for a specific server
|
||||
opencode mcp debug my-oauth-server
|
||||
```
|
||||
|
||||
คำสั่ง `mcp debug` แสดงสถานะการตรวจสอบสิทธิ์ปัจจุบัน ทดสอบการเชื่อมต่อ HTTP และพยายามใช้ขั้นตอนการค้นหา OAuth
|
||||
|
||||
---
|
||||
|
||||
## จัดการ
|
||||
|
||||
MCP ของคุณพร้อมใช้งานในฐานะเครื่องมือใน OpenCode ควบคู่ไปกับเครื่องมือในตัว คุณจึงสามารถจัดการผ่านการกำหนดค่า OpenCode ได้เหมือนกับเครื่องมืออื่นๆ
|
||||
|
||||
---
|
||||
|
||||
### ทั่วโลก
|
||||
|
||||
ซึ่งหมายความว่าคุณสามารถเปิดหรือปิดใช้งานได้ทั่วโลก
|
||||
|
||||
```json title="opencode.json" {14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp-foo": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-foo"]
|
||||
},
|
||||
"my-mcp-bar": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-bar"]
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp-foo": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
นอกจากนี้เรายังสามารถใช้รูปแบบ glob เพื่อปิดใช้งาน MCP ที่ตรงกันทั้งหมดได้
|
||||
|
||||
```json title="opencode.json" {14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp-foo": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-foo"]
|
||||
},
|
||||
"my-mcp-bar": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command-bar"]
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp*": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ที่นี่เราใช้รูปแบบ glob `my-mcp*` เพื่อปิดการใช้งาน MCP ทั้งหมด
|
||||
|
||||
---
|
||||
|
||||
### ต่อตัวแทน
|
||||
|
||||
หากคุณมีเซิร์ฟเวอร์ MCP จำนวนมาก คุณอาจต้องการเปิดใช้งานเซิร์ฟเวอร์เหล่านี้ต่อตัวแทนเท่านั้น และปิดใช้งานเซิร์ฟเวอร์เหล่านั้นทั่วโลก เมื่อต้องการทำสิ่งนี้:
|
||||
|
||||
1. ปิดการใช้งานเป็นเครื่องมือทั่วโลก
|
||||
2. ใน [agent config](/docs/agents#tools) ให้เปิดใช้งานเซิร์ฟเวอร์ MCP เป็นเครื่องมือ
|
||||
|
||||
```json title="opencode.json" {11, 14-18}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"my-mcp": {
|
||||
"type": "local",
|
||||
"command": ["bun", "x", "my-mcp-command"],
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"my-mcp*": false
|
||||
},
|
||||
"agent": {
|
||||
"my-agent": {
|
||||
"tools": {
|
||||
"my-mcp*": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### รูปแบบลูกโลก
|
||||
|
||||
รูปแบบ glob ใช้รูปแบบ globbing regex แบบง่าย:
|
||||
|
||||
- `*` ตรงกับอักขระใดๆ ตั้งแต่ศูนย์ขึ้นไป (เช่น `"my-mcp*"` ตรงกับ `my-mcp_search`, `my-mcp_list` ฯลฯ)
|
||||
- `?` ตรงกับอักขระหนึ่งตัวเท่านั้น
|
||||
- อักขระอื่นๆ ทั้งหมดตรงกันอย่างแท้จริง
|
||||
|
||||
:::note
|
||||
MCP เครื่องมือเซิร์ฟเวอร์ได้รับการลงทะเบียนด้วยชื่อเซิร์ฟเวอร์เป็นคำนำหน้า ดังนั้นหากต้องการปิดการใช้งานเครื่องมือทั้งหมดสำหรับเซิร์ฟเวอร์ เพียงใช้:
|
||||
|
||||
```
|
||||
"mymcpservername_*": false
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## ตัวอย่าง
|
||||
|
||||
ด้านล่างนี้เป็นตัวอย่างของเซิร์ฟเวอร์ MCP ทั่วไปบางส่วน คุณสามารถส่ง PR ได้ถ้าคุณต้องการจัดทำเอกสารเซิร์ฟเวอร์อื่น
|
||||
|
||||
---
|
||||
|
||||
### ยาม
|
||||
|
||||
เพิ่ม [เซิร์ฟเวอร์ Sentry MCP](https://mcp.sentry.dev) เพื่อโต้ตอบกับโครงการและปัญหา Sentry ของคุณ
|
||||
|
||||
```json title="opencode.json" {4-8}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"sentry": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.sentry.dev/mcp",
|
||||
"oauth": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
หลังจากเพิ่มการกำหนดค่าแล้ว ให้ตรวจสอบสิทธิ์กับ Sentry:
|
||||
|
||||
```bash
|
||||
opencode mcp auth sentry
|
||||
```
|
||||
|
||||
ซึ่งจะเป็นการเปิดหน้าต่างเบราว์เซอร์เพื่อดำเนินการโฟลว์ OAuth ให้เสร็จสมบูรณ์ และเชื่อมต่อ OpenCode กับบัญชี Sentry ของคุณ
|
||||
|
||||
เมื่อตรวจสอบสิทธิ์แล้ว คุณจะใช้เครื่องมือ Sentry ในข้อความแจ้งเพื่อค้นหาปัญหา โปรเจ็กต์ และข้อมูลข้อผิดพลาดได้
|
||||
|
||||
```txt "use sentry"
|
||||
Show me the latest unresolved issues in my project. use sentry
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### บริบท7
|
||||
|
||||
เพิ่ม [Context7 MCP server](https://github.com/upstash/context7) เพื่อค้นหาในเอกสาร
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"context7": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.context7.com/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
หากคุณได้ลงทะเบียนสำหรับบัญชีฟรี คุณสามารถใช้รหัส API ของคุณและรับขีดจำกัดอัตราที่สูงขึ้น
|
||||
|
||||
```json title="opencode.json" {7-9}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"context7": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.context7.com/mcp",
|
||||
"headers": {
|
||||
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ที่นี่เราสมมติว่าคุณมีชุดตัวแปรสภาพแวดล้อม `CONTEXT7_API_KEY`
|
||||
|
||||
เพิ่ม `use context7` ในข้อความแจ้งของคุณเพื่อใช้เซิร์ฟเวอร์ Context7 MCP
|
||||
|
||||
```txt "use context7"
|
||||
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
|
||||
```
|
||||
|
||||
หรือคุณสามารถเพิ่มสิ่งนี้ลงใน [AGENTS.md](/docs/rules/) ของคุณได้
|
||||
|
||||
```md title="AGENTS.md"
|
||||
When you need to search docs, use `context7` tools.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Grep โดย Vercel
|
||||
|
||||
เพิ่มเซิร์ฟเวอร์ [Grep by Vercel](https://grep.app) MCP เพื่อค้นหาผ่านข้อมูลโค้ดบน GitHub
|
||||
|
||||
```json title="opencode.json" {4-7}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"gh_grep": {
|
||||
"type": "remote",
|
||||
"url": "https://mcp.grep.app"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เนื่องจากเราตั้งชื่อเซิร์ฟเวอร์ MCP `gh_grep` คุณสามารถเพิ่ม `use the gh_grep tool` ในข้อความแจ้งของคุณเพื่อให้ตัวแทนใช้งานได้
|
||||
|
||||
```txt "use the gh_grep tool"
|
||||
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
|
||||
```
|
||||
|
||||
หรือคุณสามารถเพิ่มสิ่งนี้ลงใน [AGENTS.md](/docs/rules/) ของคุณได้
|
||||
|
||||
```md title="AGENTS.md"
|
||||
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
|
||||
```
|
||||
223
packages/web/src/content/docs/th/models.mdx
Normal file
223
packages/web/src/content/docs/th/models.mdx
Normal file
@@ -0,0 +1,223 @@
|
||||
---
|
||||
title: โมเดล
|
||||
description: การกำหนดค่าผู้ให้บริการและรุ่น LLM
|
||||
---
|
||||
|
||||
OpenCode ใช้ [AI SDK](https://ai-sdk.dev/) และ [Models.dev](https://models.dev) เพื่อรองรับผู้ให้บริการ **75+ LLM** และรองรับการใช้งานโมเดลท้องถิ่น
|
||||
|
||||
---
|
||||
|
||||
## ผู้ให้บริการ
|
||||
|
||||
ผู้ให้บริการที่ได้รับความนิยมส่วนใหญ่จะถูกโหลดไว้ล่วงหน้าตามค่าเริ่มต้น หากคุณได้เพิ่มข้อมูลรับรองสำหรับผู้ให้บริการผ่านคำสั่ง `/connect` ข้อมูลเหล่านั้นจะพร้อมใช้งานเมื่อคุณเริ่ม OpenCode
|
||||
|
||||
เรียนรู้เพิ่มเติมเกี่ยวกับ [ผู้ให้บริการ](/docs/providers)
|
||||
|
||||
---
|
||||
|
||||
## เลือกรุ่น
|
||||
|
||||
เมื่อคุณกำหนดค่าผู้ให้บริการแล้ว คุณสามารถเลือกรุ่นที่ต้องการได้โดยพิมพ์:
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## รุ่นที่แนะนำ
|
||||
|
||||
มีโมเดลออกมามากมาย โดยมีโมเดลใหม่ๆ ออกมาทุกสัปดาห์
|
||||
|
||||
:::tip
|
||||
พิจารณาใช้รุ่นใดรุ่นหนึ่งที่เราแนะนำ
|
||||
:::
|
||||
|
||||
อย่างไรก็ตาม มีเพียงไม่กี่ตัวเท่านั้นที่เก่งทั้งการสร้างโค้ดและการเรียกใช้เครื่องมือ
|
||||
|
||||
ต่อไปนี้เป็นโมเดลหลายรุ่นที่ทำงานได้ดีกับ OpenCode โดยไม่เรียงลำดับเป็นพิเศษ (นี่ไม่ใช่รายการที่ครอบคลุมและไม่จำเป็นต้องเป็นข้อมูลล่าสุด):
|
||||
|
||||
- GPT 5.2
|
||||
- GPT 5.1 โคเด็กซ์
|
||||
- คลอดด์บทประพันธ์ 4.5
|
||||
- คล็อด ซอนเน็ต 4.5
|
||||
- มินิแม็กซ์ M2.1
|
||||
- เจมินี่ 3 โปร
|
||||
|
||||
---
|
||||
|
||||
## ตั้งค่าเริ่มต้น
|
||||
|
||||
หากต้องการตั้งค่าสิ่งใดสิ่งหนึ่งเป็นโมเดลเริ่มต้น คุณสามารถตั้งค่าคีย์ `model` ในของคุณ
|
||||
การกำหนดค่า OpenCode
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "lmstudio/google/gemma-3n-e4b"
|
||||
}
|
||||
```
|
||||
|
||||
ID แบบเต็มคือ `provider_id/model_id` ตัวอย่างเช่น หากคุณใช้ [OpenCode Zen](/docs/zen) คุณจะใช้ `opencode/gpt-5.1-codex` สำหรับ GPT 5.1 Codex
|
||||
|
||||
หากคุณได้กำหนดค่า [ผู้ให้บริการที่กำหนดเอง](/docs/providers#กำหนดเอง) `provider_id` จะเป็นคีย์จากส่วน `provider` ของการกำหนดค่าของคุณ และ `model_id` จะเป็นคีย์จาก `provider.models`
|
||||
|
||||
---
|
||||
|
||||
## กำหนดค่าโมเดล
|
||||
|
||||
คุณสามารถกำหนดค่าตัวเลือกของโมเดลได้ทั่วโลกผ่านการกำหนดค่า
|
||||
|
||||
```jsonc title="opencode.jsonc" {7-12,19-24}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"openai": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"options": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
"include": ["reasoning.encrypted_content"],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
"anthropic": {
|
||||
"models": {
|
||||
"claude-sonnet-4-5-20250929": {
|
||||
"options": {
|
||||
"thinking": {
|
||||
"type": "enabled",
|
||||
"budgetTokens": 16000,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
ที่นี่เรากำลังกำหนดการตั้งค่าส่วนกลางสำหรับโมเดลในตัวสองรุ่น: `gpt-5` เมื่อเข้าถึงผ่านผู้ให้บริการ `openai` และ `claude-sonnet-4-20250514` เมื่อเข้าถึงผ่านผู้ให้บริการ `anthropic`
|
||||
สามารถดูผู้ให้บริการและชื่อรุ่นในตัวได้ที่ [Models.dev](https://models.dev)
|
||||
|
||||
คุณยังสามารถกำหนดค่าตัวเลือกเหล่านี้สำหรับตัวแทนใดๆ ที่คุณใช้อยู่ได้ การกำหนดค่าตัวแทนจะแทนที่ตัวเลือกส่วนกลางใดๆ ที่นี่ [เรียนรู้เพิ่มเติม](/docs/agents/#เพิ่มเติม)
|
||||
|
||||
คุณยังสามารถกำหนดตัวแปรแบบกำหนดเองที่ขยายตัวแปรในตัวได้ ตัวแปรช่วยให้คุณกำหนดการตั้งค่าที่แตกต่างกันสำหรับรุ่นเดียวกันโดยไม่ต้องสร้างรายการที่ซ้ำกัน:
|
||||
|
||||
```jsonc title="opencode.jsonc" {6-21}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"opencode": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"variants": {
|
||||
"high": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
},
|
||||
"low": {
|
||||
"reasoningEffort": "low",
|
||||
"textVerbosity": "low",
|
||||
"reasoningSummary": "auto",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## หลากหลาย
|
||||
|
||||
หลายรุ่นรองรับหลายรุ่นด้วยการกำหนดค่าที่แตกต่างกัน OpenCode มาพร้อมกับตัวแปรเริ่มต้นในตัวสำหรับผู้ให้บริการยอดนิยม
|
||||
|
||||
### ตัวแปรในตัว
|
||||
|
||||
OpenCode มาพร้อมกับตัวแปรเริ่มต้นสำหรับผู้ให้บริการหลายราย:
|
||||
|
||||
**มานุษยวิทยา**:
|
||||
|
||||
- `high` - งบประมาณการคิดสูง (ค่าเริ่มต้น)
|
||||
- `max` - งบประมาณการคิดสูงสุด
|
||||
|
||||
**โอเพนเอไอ**:
|
||||
|
||||
แตกต่างกันไปตามรุ่น แต่โดยประมาณ:
|
||||
|
||||
- `none` - ไม่มีเหตุผล
|
||||
- `minimal` - ความพยายามในการให้เหตุผลน้อยที่สุด
|
||||
- `low` - ความพยายามในการให้เหตุผลต่ำ
|
||||
- `medium` - ความพยายามในการให้เหตุผลปานกลาง
|
||||
- `high` - ความพยายามในการให้เหตุผลสูง
|
||||
- `xhigh` - ความพยายามในการให้เหตุผลสูงเป็นพิเศษ
|
||||
|
||||
**Google**:
|
||||
|
||||
- `low` - ลดความพยายาม/token งบประมาณ
|
||||
- `high` - ความพยายามที่สูงขึ้น/token งบประมาณ
|
||||
|
||||
:::tip
|
||||
รายการนี้ไม่ครอบคลุม ผู้ให้บริการรายอื่นหลายรายก็มีค่าเริ่มต้นในตัวเช่นกัน
|
||||
:::
|
||||
|
||||
### ตัวแปรที่กำหนดเอง
|
||||
|
||||
คุณสามารถแทนที่ตัวแปรที่มีอยู่หรือเพิ่มตัวแปรของคุณเองได้:
|
||||
|
||||
```jsonc title="opencode.jsonc" {7-18}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"provider": {
|
||||
"openai": {
|
||||
"models": {
|
||||
"gpt-5": {
|
||||
"variants": {
|
||||
"thinking": {
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low",
|
||||
},
|
||||
"fast": {
|
||||
"disabled": true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### ตัวแปรของวงจร
|
||||
|
||||
ใช้ปุ่มลัด `variant_cycle` เพื่อสลับระหว่างตัวแปรต่างๆ อย่างรวดเร็ว [เรียนรู้เพิ่มเติม](/docs/keybinds)
|
||||
|
||||
---
|
||||
|
||||
## กำลังโหลดโมเดล
|
||||
|
||||
เมื่อ OpenCode เริ่มทำงาน ระบบจะตรวจสอบรุ่นตามลำดับความสำคัญต่อไปนี้:
|
||||
|
||||
1. การตั้งค่าสถานะบรรทัดคำสั่ง `--model` หรือ `-m` รูปแบบจะเหมือนกับในไฟล์ปรับแต่ง: `provider_id/model_id`
|
||||
|
||||
2. รายการโมเดลในการกำหนดค่า OpenCode
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"model": "anthropic/claude-sonnet-4-20250514"
|
||||
}
|
||||
```
|
||||
|
||||
รูปแบบที่นี่คือ `provider/model`
|
||||
|
||||
3. รุ่นที่ใช้ล่าสุด.
|
||||
|
||||
4. รุ่นแรกที่ใช้ลำดับความสำคัญภายใน
|
||||
331
packages/web/src/content/docs/th/modes.mdx
Normal file
331
packages/web/src/content/docs/th/modes.mdx
Normal file
@@ -0,0 +1,331 @@
|
||||
---
|
||||
title: โหมด
|
||||
description: โหมดที่แตกต่างกันสำหรับกรณีการใช้งานที่แตกต่างกัน
|
||||
---
|
||||
|
||||
:::caution
|
||||
ขณะนี้โหมดได้รับการกำหนดค่าผ่านตัวเลือก `agent` ในการกำหนดค่า opencode ที่
|
||||
ตัวเลือก `mode` เลิกใช้แล้ว [เรียนรู้เพิ่มเติม](/docs/agents)
|
||||
:::
|
||||
|
||||
โหมดใน opencode ช่วยให้คุณปรับแต่งพฤติกรรม เครื่องมือ และพร้อมท์สำหรับกรณีการใช้งานที่แตกต่างกันได้
|
||||
|
||||
มาพร้อมกับโหมดในตัวสองโหมด: **สร้าง** และ **วางแผน** คุณสามารถปรับแต่งได้
|
||||
สิ่งเหล่านี้หรือกำหนดค่าของคุณเองผ่านการกำหนดค่า opencode
|
||||
|
||||
คุณสามารถสลับระหว่างโหมดระหว่างเซสชันหรือกำหนดค่าในไฟล์กำหนดค่าของคุณ
|
||||
|
||||
---
|
||||
|
||||
## บิวท์อิน
|
||||
|
||||
opencode มาพร้อมกับโหมดในตัวสองโหมด
|
||||
|
||||
---
|
||||
|
||||
### สร้าง
|
||||
|
||||
Build เป็นโหมด **ค่าเริ่มต้น** โดยที่เครื่องมือทั้งหมดเปิดใช้งานอยู่ นี่คือโหมดมาตรฐานสำหรับงานพัฒนาที่คุณต้องการสิทธิ์เข้าถึงการทำงานของไฟล์และคำสั่งระบบโดยสมบูรณ์
|
||||
|
||||
---
|
||||
|
||||
### วางแผน
|
||||
|
||||
โหมดจำกัดที่ออกแบบมาเพื่อการวางแผนและการวิเคราะห์ ในโหมดแผน เครื่องมือต่อไปนี้จะถูกปิดใช้งานตามค่าเริ่มต้น:
|
||||
|
||||
- `write` - ไม่สามารถสร้างไฟล์ใหม่ได้
|
||||
- `edit` - ไม่สามารถแก้ไขไฟล์ที่มีอยู่ได้ ยกเว้นไฟล์ที่อยู่ใน `.opencode/plans/*.md` เพื่อดูรายละเอียดแผนงาน
|
||||
- `patch` - ไม่สามารถใช้แพตช์ได้
|
||||
- `bash` - ไม่สามารถรันคำสั่งเชลล์ได้
|
||||
|
||||
โหมดนี้มีประโยชน์เมื่อคุณต้องการให้ AI วิเคราะห์โค้ด แนะนำการเปลี่ยนแปลง หรือสร้างแผนโดยไม่ต้องทำการแก้ไขโค้ดเบสของคุณจริง ๆ
|
||||
|
||||
---
|
||||
|
||||
## การสลับ
|
||||
|
||||
คุณสามารถสลับระหว่างโหมดระหว่างเซสชันได้โดยใช้ปุ่ม _Tab_ หรือการเชื่อมโยงคีย์ `switch_mode` ที่คุณกำหนดค่าไว้
|
||||
|
||||
ดูเพิ่มเติมที่: [Formatters](/docs/formatters) สำหรับข้อมูลเกี่ยวกับการกำหนดค่าการจัดรูปแบบโค้ด
|
||||
|
||||
---
|
||||
|
||||
## กำหนดค่า
|
||||
|
||||
คุณสามารถปรับแต่งโหมดในตัวหรือสร้างโหมดของคุณเองผ่านการกำหนดค่าได้ โหมดสามารถกำหนดค่าได้สองวิธี:
|
||||
|
||||
### JSON การกำหนดค่า
|
||||
|
||||
กำหนดค่าโหมดในไฟล์กำหนดค่า `opencode.json` ของคุณ:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mode": {
|
||||
"build": {
|
||||
"model": "anthropic/claude-sonnet-4-20250514",
|
||||
"prompt": "{file:./prompts/build.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": true
|
||||
}
|
||||
},
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514",
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### การกำหนดค่ามาร์กดาวน์
|
||||
|
||||
คุณยังสามารถกำหนดโหมดโดยใช้ไฟล์มาร์กดาวน์ได้ วางไว้ใน:
|
||||
|
||||
- ทั่วโลก: `~/.config/opencode/modes/`
|
||||
- โครงการ: `.opencode/modes/`
|
||||
|
||||
```markdown title="~/.config/opencode/modes/review.md"
|
||||
---
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.1
|
||||
tools:
|
||||
write: false
|
||||
edit: false
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are in code review mode. Focus on:
|
||||
|
||||
- Code quality and best practices
|
||||
- Potential bugs and edge cases
|
||||
- Performance implications
|
||||
- Security considerations
|
||||
|
||||
Provide constructive feedback without making direct changes.
|
||||
```
|
||||
|
||||
ชื่อไฟล์มาร์กดาวน์จะกลายเป็นชื่อโหมด (เช่น `review.md` สร้างโหมด `review`)
|
||||
|
||||
มาดูรายละเอียดตัวเลือกการกำหนดค่าเหล่านี้กัน
|
||||
|
||||
---
|
||||
|
||||
### แบบอย่าง
|
||||
|
||||
ใช้การกำหนดค่า `model` เพื่อแทนที่โมเดลเริ่มต้นสำหรับโหมดนี้ มีประโยชน์สำหรับการใช้โมเดลที่แตกต่างกันซึ่งปรับให้เหมาะกับงานที่แตกต่างกัน ตัวอย่างเช่น โมเดลสำหรับการวางแผนที่เร็วขึ้น โมเดลที่มีความสามารถมากขึ้นสำหรับการนำไปปฏิบัติ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"plan": {
|
||||
"model": "anthropic/claude-haiku-4-20250514"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### อุณหภูมิ
|
||||
|
||||
ควบคุมการสุ่มและความคิดสร้างสรรค์ของการตอบสนองของ AI ด้วยการกำหนดค่า `temperature` ค่าที่ต่ำกว่าจะทำให้คำตอบมีจุดมุ่งหมายและกำหนดได้มากขึ้น ในขณะที่ค่าที่สูงกว่าจะเพิ่มความคิดสร้างสรรค์และความแปรปรวน
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
โดยทั่วไปค่าอุณหภูมิจะอยู่ในช่วงตั้งแต่ 0.0 ถึง 1.0:
|
||||
|
||||
- **0.0-0.2**: การตอบสนองที่มุ่งเน้นและกำหนดไว้อย่างมาก เหมาะสำหรับการวิเคราะห์และวางแผนโค้ด
|
||||
- **0.3-0.5**: การตอบสนองที่สมดุลและความคิดสร้างสรรค์บางส่วน เหมาะสำหรับงานพัฒนาทั่วไป
|
||||
- **0.6-1.0**: คำตอบที่สร้างสรรค์และหลากหลายยิ่งขึ้น ซึ่งมีประโยชน์สำหรับการระดมความคิดและการสำรวจ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"analyze": {
|
||||
"temperature": 0.1,
|
||||
"prompt": "{file:./prompts/analysis.txt}"
|
||||
},
|
||||
"build": {
|
||||
"temperature": 0.3
|
||||
},
|
||||
"brainstorm": {
|
||||
"temperature": 0.7,
|
||||
"prompt": "{file:./prompts/creative.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
หากไม่มีการระบุอุณหภูมิ opencode จะใช้ค่าเริ่มต้นเฉพาะรุ่น (โดยทั่วไปจะเป็น 0 สำหรับรุ่นส่วนใหญ่ และ 0.55 สำหรับรุ่น Qwen)
|
||||
|
||||
---
|
||||
|
||||
### พรอมต์
|
||||
|
||||
ระบุไฟล์พรอมต์ระบบที่กำหนดเองสำหรับโหมดนี้ด้วยการกำหนดค่า `prompt` ไฟล์พร้อมท์ควรมีคำแนะนำเฉพาะสำหรับวัตถุประสงค์ของโหมด
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"mode": {
|
||||
"review": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เส้นทางนี้สัมพันธ์กับตำแหน่งของไฟล์กำหนดค่า ดังนั้นสิ่งนี้จึงใช้ได้กับ
|
||||
ทั้งการกำหนดค่า opencode ส่วนกลางและการกำหนดค่าเฉพาะโครงการ
|
||||
|
||||
---
|
||||
|
||||
### เครื่องมือ
|
||||
|
||||
ควบคุมว่าเครื่องมือใดบ้างที่พร้อมใช้งานในโหมดนี้ด้วยการกำหนดค่า `tools` คุณสามารถเปิดหรือปิดใช้งานเครื่องมือเฉพาะได้โดยตั้งค่าเป็น `true` หรือ `false`
|
||||
|
||||
```json
|
||||
{
|
||||
"mode": {
|
||||
"readonly": {
|
||||
"tools": {
|
||||
"write": false,
|
||||
"edit": false,
|
||||
"bash": false,
|
||||
"read": true,
|
||||
"grep": true,
|
||||
"glob": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
หากไม่มีการระบุเครื่องมือ เครื่องมือทั้งหมดจะถูกเปิดใช้งานตามค่าเริ่มต้น
|
||||
|
||||
---
|
||||
|
||||
#### เครื่องมือที่มีอยู่
|
||||
|
||||
นี่คือเครื่องมือทั้งหมดที่สามารถควบคุมได้ผ่านการกำหนดค่าโหมด
|
||||
|
||||
| เครื่องมือ | คำอธิบาย |
|
||||
| ----------- | ----------------------- |
|
||||
| `bash` | ดำเนินการคำสั่งเชลล์ |
|
||||
| `edit` | แก้ไขไฟล์ที่มีอยู่ |
|
||||
| `write` | สร้างไฟล์ใหม่ |
|
||||
| `read` | อ่านเนื้อหาไฟล์ |
|
||||
| `grep` | ค้นหาเนื้อหาไฟล์ |
|
||||
| `glob` | ค้นหาไฟล์ตามรูปแบบ |
|
||||
| `list` | แสดงรายการเนื้อหาไดเร็กทอรี |
|
||||
| `patch` | ใช้แพทช์กับไฟล์ |
|
||||
| `todowrite` | จัดการรายการสิ่งที่ต้องทำ |
|
||||
| `todoread` | อ่านรายการสิ่งที่ต้องทำ |
|
||||
| `webfetch` | ดึงเนื้อหาเว็บ |
|
||||
|
||||
---
|
||||
|
||||
## โหมดกำหนดเอง
|
||||
|
||||
คุณสามารถสร้างโหมดที่คุณกำหนดเองได้โดยเพิ่มเข้าไปในการกำหนดค่า นี่คือตัวอย่างที่ใช้ทั้งสองวิธี:
|
||||
|
||||
### ใช้การกำหนดค่า JSON
|
||||
|
||||
```json title="opencode.json" {4-14}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mode": {
|
||||
"docs": {
|
||||
"prompt": "{file:./prompts/documentation.txt}",
|
||||
"tools": {
|
||||
"write": true,
|
||||
"edit": true,
|
||||
"bash": false,
|
||||
"read": true,
|
||||
"grep": true,
|
||||
"glob": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### การใช้ไฟล์มาร์กดาวน์
|
||||
|
||||
สร้างไฟล์โหมดใน `.opencode/modes/` สำหรับโหมดเฉพาะโครงการหรือ `~/.config/opencode/modes/` สำหรับโหมดทั่วโลก:
|
||||
|
||||
```markdown title=".opencode/modes/debug.md"
|
||||
---
|
||||
temperature: 0.1
|
||||
tools:
|
||||
bash: true
|
||||
read: true
|
||||
grep: true
|
||||
write: false
|
||||
edit: false
|
||||
---
|
||||
|
||||
You are in debug mode. Your primary goal is to help investigate and diagnose issues.
|
||||
|
||||
Focus on:
|
||||
|
||||
- Understanding the problem through careful analysis
|
||||
- Using bash commands to inspect system state
|
||||
- Reading relevant files and logs
|
||||
- Searching for patterns and anomalies
|
||||
- Providing clear explanations of findings
|
||||
|
||||
Do not make any changes to files. Only investigate and report.
|
||||
```
|
||||
|
||||
```markdown title="~/.config/opencode/modes/refactor.md"
|
||||
---
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
temperature: 0.2
|
||||
tools:
|
||||
edit: true
|
||||
read: true
|
||||
grep: true
|
||||
glob: true
|
||||
---
|
||||
|
||||
You are in refactoring mode. Focus on improving code quality without changing functionality.
|
||||
|
||||
Priorities:
|
||||
|
||||
- Improve code readability and maintainability
|
||||
- Apply consistent naming conventions
|
||||
- Reduce code duplication
|
||||
- Optimize performance where appropriate
|
||||
- Ensure all tests continue to pass
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### กรณีการใช้งาน
|
||||
|
||||
ต่อไปนี้เป็นกรณีการใช้งานทั่วไปสำหรับโหมดต่างๆ
|
||||
|
||||
- **โหมดสร้าง**: งานพัฒนาเต็มรูปแบบโดยเปิดใช้งานเครื่องมือทั้งหมด
|
||||
- **โหมดแผน**: วิเคราะห์และวางแผนโดยไม่ทำการเปลี่ยนแปลง
|
||||
- **โหมดการตรวจสอบ**: การตรวจสอบโค้ดพร้อมการเข้าถึงแบบอ่านอย่างเดียวพร้อมเครื่องมือเอกสารประกอบ
|
||||
- **โหมดแก้ไขข้อบกพร่อง**: มุ่งเน้นไปที่การตรวจสอบโดยเปิดใช้งานเครื่องมือทุบตีและอ่าน
|
||||
- **โหมดเอกสาร**: การเขียนเอกสารด้วยการทำงานของไฟล์ แต่ไม่มีคำสั่งระบบ
|
||||
|
||||
คุณอาจพบว่ารุ่นต่างๆ นั้นดีสำหรับกรณีการใช้งานที่แตกต่างกัน
|
||||
57
packages/web/src/content/docs/th/network.mdx
Normal file
57
packages/web/src/content/docs/th/network.mdx
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: เครือข่าย
|
||||
description: กำหนดค่าพร็อกซีและใบรับรองที่กำหนดเอง
|
||||
---
|
||||
|
||||
OpenCode รองรับตัวแปรสภาพแวดล้อมพร็อกซีมาตรฐานและใบรับรองที่กำหนดเองสำหรับสภาพแวดล้อมเครือข่ายองค์กร
|
||||
|
||||
---
|
||||
|
||||
## หนังสือมอบฉันทะ
|
||||
|
||||
OpenCode เคารพตัวแปรสภาพแวดล้อมพร็อกซีมาตรฐาน
|
||||
|
||||
```bash
|
||||
# HTTPS proxy (recommended)
|
||||
export HTTPS_PROXY=https://proxy.example.com:8080
|
||||
|
||||
# HTTP proxy (if HTTPS not available)
|
||||
export HTTP_PROXY=http://proxy.example.com:8080
|
||||
|
||||
# Bypass proxy for local server (required)
|
||||
export NO_PROXY=localhost,127.0.0.1
|
||||
```
|
||||
|
||||
:::caution
|
||||
TUI สื่อสารกับเซิร์ฟเวอร์ HTTP ในพื้นที่ คุณต้องข้ามพร็อกซีสำหรับการเชื่อมต่อนี้เพื่อป้องกันการกำหนดเส้นทางวนซ้ำ
|
||||
:::
|
||||
|
||||
คุณสามารถกำหนดค่าพอร์ตของเซิร์ฟเวอร์และชื่อโฮสต์ได้โดยใช้ [CLI flags](/docs/cli#run)
|
||||
|
||||
---
|
||||
|
||||
### ตรวจสอบสิทธิ์
|
||||
|
||||
หากพร็อกซีของคุณต้องการการรับรองความถูกต้องขั้นพื้นฐาน ให้ใส่ข้อมูลรับรองใน URL
|
||||
|
||||
```bash
|
||||
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
|
||||
```
|
||||
|
||||
:::caution
|
||||
หลีกเลี่ยงรหัสผ่านฮาร์ดโค้ด ใช้ตัวแปรสภาพแวดล้อมหรือที่จัดเก็บข้อมูลรับรองที่ปลอดภัย
|
||||
:::
|
||||
|
||||
สำหรับพร็อกซีที่ต้องการการรับรองความถูกต้องขั้นสูง เช่น NTLM หรือ Kerberos ให้พิจารณาใช้เกตเวย์ LLM ที่รองรับวิธีการตรวจสอบความถูกต้องของคุณ
|
||||
|
||||
---
|
||||
|
||||
## ใบรับรองที่กำหนดเอง
|
||||
|
||||
หากองค์กรของคุณใช้ CA แบบกำหนดเองสำหรับการเชื่อมต่อ HTTPS ให้กำหนดค่า OpenCode ให้เชื่อถือ
|
||||
|
||||
```bash
|
||||
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
|
||||
```
|
||||
|
||||
ซึ่งใช้ได้กับทั้งการเชื่อมต่อพร็อกซีและการเข้าถึง API โดยตรง
|
||||
237
packages/web/src/content/docs/th/permissions.mdx
Normal file
237
packages/web/src/content/docs/th/permissions.mdx
Normal file
@@ -0,0 +1,237 @@
|
||||
---
|
||||
title: สิทธิ์
|
||||
description: ควบคุมการดำเนินการที่ต้องได้รับการอนุมัติจึงจะรันได้
|
||||
---
|
||||
|
||||
OpenCode ใช้การกำหนดค่า `permission` เพื่อตัดสินใจว่าการดำเนินการที่กำหนดควรทำงานโดยอัตโนมัติ แจ้งให้คุณทราบ หรือถูกบล็อก
|
||||
|
||||
ตั้งแต่ `v1.1.1` การกำหนดค่าบูลีนแบบเดิม `tools` เลิกใช้แล้วและได้รวมเข้ากับ `permission` แล้ว การกำหนดค่า `tools` แบบเก่ายังคงรองรับความเข้ากันได้แบบย้อนหลัง
|
||||
|
||||
---
|
||||
|
||||
## การดำเนินการ
|
||||
|
||||
กฎการอนุญาตแต่ละข้อจะแก้ไขเป็นข้อใดข้อหนึ่งต่อไปนี้
|
||||
|
||||
- `"allow"` — ทำงานโดยไม่ได้รับการอนุมัติ
|
||||
- `"ask"` — พร้อมท์สำหรับการอนุมัติ
|
||||
- `"deny"` — บล็อกการกระทำ
|
||||
|
||||
---
|
||||
|
||||
## การกำหนดค่า
|
||||
|
||||
คุณสามารถตั้งค่าการอนุญาตทั่วโลก (ด้วย `*`) และแทนที่เครื่องมือเฉพาะ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"*": "ask",
|
||||
"bash": "allow",
|
||||
"edit": "deny"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
คุณยังสามารถตั้งค่าการอนุญาตทั้งหมดพร้อมกันได้:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": "allow"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## กฎแบบละเอียด (ไวยากรณ์ของวัตถุ)
|
||||
|
||||
สำหรับการอนุญาตส่วนใหญ่ คุณสามารถใช้ออบเจ็กต์เพื่อปรับใช้การดำเนินการต่างๆ ตามอินพุตของเครื่องมือได้
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git *": "allow",
|
||||
"npm *": "allow",
|
||||
"rm *": "deny",
|
||||
"grep *": "allow"
|
||||
},
|
||||
"edit": {
|
||||
"*": "deny",
|
||||
"packages/web/src/content/docs/*.mdx": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
กฎจะได้รับการประเมินโดยการจับคู่รูปแบบ โดย **กฎการจับคู่สุดท้ายจะชนะ** รูปแบบทั่วไปคือการใส่กฎ catch-all `"*"` ก่อน และใส่กฎที่เฉพาะเจาะจงมากขึ้นหลังจากนั้น
|
||||
|
||||
### สัญลักษณ์แทน
|
||||
|
||||
รูปแบบการอนุญาตใช้การจับคู่ไวด์การ์ดแบบง่าย:
|
||||
|
||||
- `*` จับคู่อักขระใดๆ ตั้งแต่ศูนย์ขึ้นไป
|
||||
- `?` ตรงกับอักขระหนึ่งตัวเท่านั้น
|
||||
- อักขระอื่นๆ ทั้งหมดตรงกันอย่างแท้จริง
|
||||
|
||||
### การขยายโฮมไดเร็กทอรี
|
||||
|
||||
คุณสามารถใช้ `~` หรือ `$HOME` ที่จุดเริ่มต้นของรูปแบบเพื่ออ้างอิงโฮมไดเร็กตอรี่ของคุณ สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับกฎของ [`external_directory`](#external-directories)
|
||||
|
||||
- `~/projects/*` -> `/Users/username/projects/*`
|
||||
- `$HOME/projects/*` -> `/Users/username/projects/*`
|
||||
- `~` -> `/Users/username`
|
||||
|
||||
### ไดเรกทอรีภายนอก
|
||||
|
||||
ใช้ `external_directory` เพื่ออนุญาตการเรียกใช้เครื่องมือที่สัมผัสเส้นทางนอกไดเร็กทอรีการทำงานที่ OpenCode เริ่มทำงาน สิ่งนี้ใช้ได้กับเครื่องมือใดๆ ที่ใช้เส้นทางเป็นอินพุต (เช่น `read`, `edit`, `list`, `glob`, `grep` และคำสั่ง `bash` จำนวนมาก)
|
||||
|
||||
การขยายบ้าน (เช่น `~/...`) ส่งผลต่อวิธีการเขียนรูปแบบเท่านั้น ไม่ได้ทำให้เส้นทางภายนอกเป็นส่วนหนึ่งของพื้นที่ทำงานปัจจุบัน ดังนั้นเส้นทางภายนอกไดเรกทอรีการทำงานยังต้องได้รับอนุญาตผ่าน `external_directory`
|
||||
|
||||
ตัวอย่างเช่น อนุญาตให้เข้าถึงทุกสิ่งภายใต้ `~/projects/personal/`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/projects/personal/**": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ไดเร็กทอรีใดๆ ที่ได้รับอนุญาตที่นี่จะสืบทอดค่าเริ่มต้นเดียวกันกับพื้นที่ทำงานปัจจุบัน เนื่องจาก [`read` มีค่าเริ่มต้นเป็น `allow`](#defaults) การอ่านจึงได้รับอนุญาตสำหรับรายการภายใต้ `external_directory` เว้นแต่จะถูกแทนที่ เพิ่มกฎที่ชัดเจนเมื่อควรจำกัดเครื่องมือในเส้นทางเหล่านี้ เช่น การบล็อกการแก้ไขในขณะที่ยังคงอ่านอยู่:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"external_directory": {
|
||||
"~/projects/personal/**": "allow"
|
||||
},
|
||||
"edit": {
|
||||
"~/projects/personal/**": "deny"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ให้รายการมุ่งเน้นไปที่เส้นทางที่เชื่อถือได้ และเลเยอร์อนุญาตหรือปฏิเสธกฎเพิ่มเติมตามที่จำเป็นสำหรับเครื่องมืออื่นๆ (เช่น `bash`)
|
||||
|
||||
---
|
||||
|
||||
## สิทธิ์ที่มีอยู่
|
||||
|
||||
สิทธิ์ของ OpenCode จะกำหนดไว้ตามชื่อเครื่องมือ พร้อมด้วยเจ้าหน้าที่รักษาความปลอดภัยอีก 2-3 คน:
|
||||
|
||||
- `read` — อ่านไฟล์ (ตรงกับเส้นทางของไฟล์)
|
||||
- `edit` — การแก้ไขไฟล์ทั้งหมด (ครอบคลุมถึง `edit`, `write`, `patch`, `multiedit`)
|
||||
- `glob` — ไฟล์ globbing (ตรงกับรูปแบบ glob)
|
||||
- `grep` — การค้นหาเนื้อหา (ตรงกับรูปแบบ regex)
|
||||
- `list` — แสดงรายการไฟล์ในไดเร็กทอรี (ตรงกับเส้นทางไดเร็กทอรี)
|
||||
- `bash` — การรันคำสั่งเชลล์ (ตรงกับคำสั่งที่แยกวิเคราะห์เช่น `git status --porcelain`)
|
||||
- `task` — การเปิดตัวตัวแทนย่อย (ตรงกับประเภทตัวแทนย่อย)
|
||||
- `skill` — กำลังโหลดทักษะ (ตรงกับชื่อทักษะ)
|
||||
- `lsp` — กำลังเรียกใช้คำสั่ง LSP (ปัจจุบันยังไม่ละเอียด)
|
||||
- `todoread`, `todowrite` — กำลังอ่าน/updating รายการสิ่งที่ต้องทำ
|
||||
- `webfetch` — กำลังดึง URL (ตรงกับ URL)
|
||||
- `websearch`, `codesearch` — การค้นหาเว็บ/code (ตรงกับข้อความค้นหา)
|
||||
- `external_directory` — ทริกเกอร์เมื่อเครื่องมือแตะเส้นทางนอกไดเร็กทอรีการทำงานของโปรเจ็กต์
|
||||
- `doom_loop` — ทริกเกอร์เมื่อมีการเรียกใช้เครื่องมือเดียวกันซ้ำ 3 ครั้งโดยมีอินพุตเหมือนกัน
|
||||
|
||||
---
|
||||
|
||||
## ค่าเริ่มต้น
|
||||
|
||||
หากคุณไม่ได้ระบุสิ่งใด OpenCode จะเริ่มต้นจากค่าเริ่มต้นที่อนุญาต:
|
||||
|
||||
- การอนุญาตส่วนใหญ่มีค่าเริ่มต้นเป็น `"allow"`
|
||||
- `doom_loop` และ `external_directory` มีค่าเริ่มต้นเป็น `"ask"`
|
||||
- `read` คือ `"allow"` แต่ไฟล์ `.env` ถูกปฏิเสธโดยค่าเริ่มต้น:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"permission": {
|
||||
"read": {
|
||||
"*": "allow",
|
||||
"*.env": "deny",
|
||||
"*.env.*": "deny",
|
||||
"*.env.example": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## สิ่งที่ "ถาม" ทำ
|
||||
|
||||
เมื่อ OpenCode แจ้งให้อนุมัติ UI จะเสนอผลลัพธ์สามประการ:
|
||||
|
||||
- `once` — อนุมัติเพียงคำขอนี้
|
||||
- `always` — อนุมัติคำขอในอนาคตที่ตรงกับรูปแบบที่แนะนำ (สำหรับส่วนที่เหลือของเซสชัน OpenCode ปัจจุบัน)
|
||||
- `reject` — ปฏิเสธคำขอ
|
||||
|
||||
ชุดรูปแบบที่ `always` จะอนุมัตินั้นมาจากเครื่องมือ (เช่น โดยทั่วไปการอนุมัติทุบตีจะกำหนดไวท์ลิสต์คำนำหน้าคำสั่งที่ปลอดภัย เช่น `git status*`)
|
||||
|
||||
---
|
||||
|
||||
## ตัวแทน
|
||||
|
||||
คุณสามารถแทนที่สิทธิ์ต่อตัวแทนได้ สิทธิ์ของตัวแทนจะผสานเข้ากับการกำหนดค่าส่วนกลาง และกฎของตัวแทนจะมีความสำคัญกว่า [เรียนรู้เพิ่มเติม](/docs/agents#permissions) เกี่ยวกับการอนุญาตของตัวแทน
|
||||
|
||||
:::note
|
||||
โปรดดูส่วน [กฎแบบละเอียด (ไวยากรณ์ของวัตถุ)](#granular-rules-object-syntax) ด้านบนเพื่อดูตัวอย่างการจับคู่รูปแบบโดยละเอียดเพิ่มเติม
|
||||
:::
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git *": "allow",
|
||||
"git commit *": "deny",
|
||||
"git push *": "deny",
|
||||
"grep *": "allow"
|
||||
}
|
||||
},
|
||||
"agent": {
|
||||
"build": {
|
||||
"permission": {
|
||||
"bash": {
|
||||
"*": "ask",
|
||||
"git *": "allow",
|
||||
"git commit *": "ask",
|
||||
"git push *": "deny",
|
||||
"grep *": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
คุณยังสามารถกำหนดค่าการอนุญาตตัวแทนใน Markdown ได้:
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
description: Code review without edits
|
||||
mode: subagent
|
||||
permission:
|
||||
edit: deny
|
||||
bash: ask
|
||||
webfetch: deny
|
||||
---
|
||||
|
||||
Only analyze code and suggest changes.
|
||||
```
|
||||
|
||||
:::tip
|
||||
ใช้การจับคู่รูปแบบสำหรับคำสั่งที่มีอาร์กิวเมนต์ `"grep *"` อนุญาต `grep pattern file.txt` ในขณะที่ `"grep"` คนเดียวจะบล็อกได้ คำสั่งเช่น `git status` ใช้งานได้กับพฤติกรรมเริ่มต้น แต่ต้องได้รับอนุญาตอย่างชัดเจน (เช่น `"git status *"`) เมื่ออาร์กิวเมนต์ถูกส่งผ่าน
|
||||
:::
|
||||
385
packages/web/src/content/docs/th/plugins.mdx
Normal file
385
packages/web/src/content/docs/th/plugins.mdx
Normal file
@@ -0,0 +1,385 @@
|
||||
---
|
||||
title: ปลั๊กอิน
|
||||
description: เขียนปลั๊กอินของคุณเองเพื่อขยาย OpenCode
|
||||
---
|
||||
|
||||
ปลั๊กอินช่วยให้คุณสามารถขยาย OpenCode ได้โดยเชื่อมโยงกับเหตุการณ์ต่างๆ และปรับแต่งลักษณะการทำงาน คุณสามารถสร้างปลั๊กอินเพื่อเพิ่มคุณสมบัติใหม่ บูรณาการกับบริการภายนอก หรือแก้ไขการทำงานเริ่มต้นของ OpenCode
|
||||
|
||||
ตัวอย่างเช่น ลองดู [ปลั๊กอิน](/docs/ecosystem#ปลั๊กอิน) ที่สร้างโดยชุมชน
|
||||
|
||||
---
|
||||
|
||||
## ใช้ปลั๊กอิน
|
||||
|
||||
มีสองวิธีในการโหลดปลั๊กอิน
|
||||
|
||||
---
|
||||
|
||||
### จากไฟล์ในเครื่อง
|
||||
|
||||
วางไฟล์ JavaScript หรือ TypeScript ในไดเร็กทอรีปลั๊กอิน
|
||||
|
||||
- `.opencode/plugins/` - ปลั๊กอินระดับโครงการ
|
||||
- `~/.config/opencode/plugins/` - ปลั๊กอินทั่วโลก
|
||||
|
||||
ไฟล์ในไดเร็กทอรีเหล่านี้จะถูกโหลดโดยอัตโนมัติเมื่อเริ่มต้นระบบ
|
||||
|
||||
---
|
||||
|
||||
### ตั้งแต่เวลา 13.00 น
|
||||
|
||||
ระบุแพ็คเกจ npm ในไฟล์ปรับแต่งของคุณ
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
รองรับแพ็คเกจ npm ทั้งแบบปกติและแบบกำหนดขอบเขต
|
||||
|
||||
เรียกดูปลั๊กอินที่มีอยู่ใน [ระบบนิเวศ](/docs/ecosystem#plugins)
|
||||
|
||||
---
|
||||
|
||||
### วิธีการติดตั้งปลั๊กอิน
|
||||
|
||||
**ปลั๊กอิน npm** ได้รับการติดตั้งโดยอัตโนมัติโดยใช้ Bun เมื่อเริ่มต้น แพ็คเกจและการขึ้นต่อกันถูกแคชไว้ใน `~/.cache/opencode/node_modules/`
|
||||
|
||||
**ปลั๊กอินท้องถิ่น** โหลดโดยตรงจากไดเร็กทอรีปลั๊กอิน หากต้องการใช้แพ็คเกจภายนอก คุณต้องสร้าง `package.json` ภายในไดเร็กทอรีการกำหนดค่าของคุณ (ดู [การพึ่งพา](#dependencies)) หรือเผยแพร่ปลั๊กอินไปที่ npm และ [เพิ่มลงในการกำหนดค่าของคุณ](/docs/config#plugins)
|
||||
|
||||
---
|
||||
|
||||
### โหลดออเดอร์
|
||||
|
||||
ปลั๊กอินถูกโหลดจากทุกแหล่งและ hooks ทั้งหมดทำงานตามลำดับ ลำดับการโหลดคือ:
|
||||
|
||||
1. การกำหนดค่าส่วนกลาง (`~/.config/opencode/opencode.json`)
|
||||
2. การกำหนดค่าโครงการ (`opencode.json`)
|
||||
3. ไดเร็กทอรีปลั๊กอินสากล (`~/.config/opencode/plugins/`)
|
||||
4. ไดเรกทอรีปลั๊กอินโครงการ (`.opencode/plugins/`)
|
||||
|
||||
แพ็กเกจ npm ที่ซ้ำกันซึ่งมีชื่อและเวอร์ชันเดียวกันจะถูกโหลดหนึ่งครั้ง อย่างไรก็ตาม ทั้งปลั๊กอินในเครื่องและปลั๊กอิน npm ที่มีชื่อคล้ายกันจะโหลดแยกกัน
|
||||
|
||||
---
|
||||
|
||||
## สร้างปลั๊กอิน
|
||||
|
||||
ปลั๊กอินคือ **JavaScript/TypeScript module** ที่ส่งออกปลั๊กอินอย่างน้อยหนึ่งรายการ
|
||||
ฟังก์ชั่น แต่ละฟังก์ชันได้รับวัตถุบริบทและส่งกลับวัตถุ hooks
|
||||
|
||||
---
|
||||
|
||||
### การพึ่งพาอาศัยกัน
|
||||
|
||||
ปลั๊กอินท้องถิ่นและเครื่องมือแบบกำหนดเองสามารถใช้แพ็คเกจ npm ภายนอกได้ เพิ่ม `package.json` ลงในไดเร็กทอรี config ของคุณด้วยการอ้างอิงที่คุณต้องการ
|
||||
|
||||
```json title=".opencode/package.json"
|
||||
{
|
||||
"dependencies": {
|
||||
"shescape": "^2.1.0"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
OpenCode รัน `bun install` เมื่อเริ่มต้นเพื่อติดตั้งสิ่งเหล่านี้ ปลั๊กอินและเครื่องมือของคุณสามารถนำเข้าได้
|
||||
|
||||
```ts title=".opencode/plugins/my-plugin.ts"
|
||||
import { escape } from "shescape"
|
||||
|
||||
export const MyPlugin = async (ctx) => {
|
||||
return {
|
||||
"tool.execute.before": async (input, output) => {
|
||||
if (input.tool === "bash") {
|
||||
output.args.command = escape(output.args.command)
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### โครงสร้างพื้นฐาน
|
||||
|
||||
```js title=".opencode/plugins/example.js"
|
||||
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
console.log("Plugin initialized!")
|
||||
|
||||
return {
|
||||
// Hook implementations go here
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ฟังก์ชั่นปลั๊กอินได้รับ:
|
||||
|
||||
- `project`: ข้อมูลโครงการปัจจุบัน
|
||||
- `directory`: ไดเร็กทอรีการทำงานปัจจุบัน
|
||||
- `worktree`: เส้นทางเวิร์กทรีคอมไพล์
|
||||
- `client`: ไคลเอนต์ opencode SDK สำหรับการโต้ตอบกับ AI
|
||||
- `$`: [shell API](https://bun.com/docs/runtime/shell) ของ Bun สำหรับการดำเนินการคำสั่ง
|
||||
|
||||
---
|
||||
|
||||
### รองรับ TypeScript
|
||||
|
||||
สำหรับปลั๊กอิน TypeScript คุณสามารถนำเข้าประเภทจากแพ็คเกจปลั๊กอินได้:
|
||||
|
||||
```ts title="my-plugin.ts" {1}
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
// Type-safe hook implementations
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### กิจกรรม
|
||||
|
||||
ปลั๊กอินสามารถสมัครรับกิจกรรมได้ดังที่แสดงด้านล่างในส่วนตัวอย่าง นี่คือรายการกิจกรรมต่างๆ ที่มี
|
||||
|
||||
#### เหตุการณ์คำสั่ง
|
||||
|
||||
- `command.executed`
|
||||
|
||||
#### ไฟล์เหตุการณ์
|
||||
|
||||
- `file.edited`
|
||||
- `file.watcher.updated`
|
||||
|
||||
#### เหตุการณ์การติดตั้ง
|
||||
|
||||
- `installation.updated`
|
||||
|
||||
#### LSP กิจกรรม
|
||||
|
||||
- `lsp.client.diagnostics`
|
||||
- `lsp.updated`
|
||||
|
||||
#### เหตุการณ์ข้อความ
|
||||
|
||||
- `message.part.removed`
|
||||
- `message.part.updated`
|
||||
- `message.removed`
|
||||
- `message.updated`
|
||||
|
||||
#### เหตุการณ์การอนุญาต
|
||||
|
||||
- `permission.asked`
|
||||
- `permission.replied`
|
||||
|
||||
#### เหตุการณ์เซิร์ฟเวอร์
|
||||
|
||||
- `server.connected`
|
||||
|
||||
#### กิจกรรมเซสชั่น
|
||||
|
||||
- `session.created`
|
||||
- `session.compacted`
|
||||
- `session.deleted`
|
||||
- `session.diff`
|
||||
- `session.error`
|
||||
- `session.idle`
|
||||
- `session.status`
|
||||
- `session.updated`
|
||||
|
||||
#### เหตุการณ์ที่ต้องทำ
|
||||
|
||||
- `todo.updated`
|
||||
|
||||
#### กิจกรรมของเชลล์
|
||||
|
||||
- `shell.env`
|
||||
|
||||
#### เหตุการณ์เครื่องมือ
|
||||
|
||||
- `tool.execute.after`
|
||||
- `tool.execute.before`
|
||||
|
||||
#### TUI กิจกรรม
|
||||
|
||||
- `tui.prompt.append`
|
||||
- `tui.command.execute`
|
||||
- `tui.toast.show`
|
||||
|
||||
---
|
||||
|
||||
## ตัวอย่าง
|
||||
|
||||
นี่คือตัวอย่างบางส่วนของปลั๊กอินที่คุณสามารถใช้เพื่อขยาย opencode
|
||||
|
||||
---
|
||||
|
||||
### ส่งการแจ้งเตือน
|
||||
|
||||
ส่งการแจ้งเตือนเมื่อมีเหตุการณ์บางอย่างเกิดขึ้น:
|
||||
|
||||
```js title=".opencode/plugins/notification.js"
|
||||
export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
event: async ({ event }) => {
|
||||
// Send notification on session completion
|
||||
if (event.type === "session.idle") {
|
||||
await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เรากำลังใช้ `osascript` เพื่อเรียกใช้ AppleScript บน macOS ที่นี่เราใช้มันเพื่อส่งการแจ้งเตือน
|
||||
|
||||
:::note
|
||||
หากคุณใช้แอปเดสก์ท็อป OpenCode แอปสามารถส่งการแจ้งเตือนของระบบโดยอัตโนมัติเมื่อมีการตอบกลับพร้อมหรือเมื่อเซสชันเกิดข้อผิดพลาด
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### การป้องกัน .env
|
||||
|
||||
ป้องกันไม่ให้ opencode อ่านไฟล์ `.env`:
|
||||
|
||||
```javascript title=".opencode/plugins/env-protection.js"
|
||||
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
"tool.execute.before": async (input, output) => {
|
||||
if (input.tool === "read" && output.args.filePath.includes(".env")) {
|
||||
throw new Error("Do not read .env files")
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ฉีดตัวแปรสภาพแวดล้อม
|
||||
|
||||
แทรกตัวแปรสภาพแวดล้อมลงในการดำเนินการเชลล์ทั้งหมด (เครื่องมือ AI และเทอร์มินัลผู้ใช้):
|
||||
|
||||
```javascript title=".opencode/plugins/inject-env.js"
|
||||
export const InjectEnvPlugin = async () => {
|
||||
return {
|
||||
"shell.env": async (input, output) => {
|
||||
output.env.MY_API_KEY = "secret"
|
||||
output.env.PROJECT_ROOT = input.cwd
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### เครื่องมือที่กำหนดเอง
|
||||
|
||||
ปลั๊กอินยังสามารถเพิ่มเครื่องมือที่กำหนดเองให้กับ opencode:
|
||||
|
||||
```ts title=".opencode/plugins/custom-tools.ts"
|
||||
import { type Plugin, tool } from "@opencode-ai/plugin"
|
||||
|
||||
export const CustomToolsPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
tool: {
|
||||
mytool: tool({
|
||||
description: "This is a custom tool",
|
||||
args: {
|
||||
foo: tool.schema.string(),
|
||||
},
|
||||
async execute(args, context) {
|
||||
const { directory, worktree } = context
|
||||
return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
|
||||
},
|
||||
}),
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ตัวช่วย `tool` สร้างเครื่องมือแบบกำหนดเองที่สามารถเรียกใช้ opencode ได้ ใช้ฟังก์ชัน Zod schema และส่งกลับคำจำกัดความของเครื่องมือด้วย:
|
||||
|
||||
- `description`: เครื่องมือนี้ทำอะไร
|
||||
- `args`: Zod schema สำหรับข้อโต้แย้งของเครื่องมือ
|
||||
- `execute`: ฟังก์ชั่นที่ทำงานเมื่อมีการเรียกใช้เครื่องมือ
|
||||
|
||||
เครื่องมือที่คุณกำหนดเองจะพร้อมใช้งานสำหรับ opencode ควบคู่ไปกับเครื่องมือในตัว
|
||||
|
||||
---
|
||||
|
||||
### การบันทึก
|
||||
|
||||
ใช้ `client.app.log()` แทน `console.log` สำหรับการบันทึกแบบมีโครงสร้าง:
|
||||
|
||||
```ts title=".opencode/plugins/my-plugin.ts"
|
||||
export const MyPlugin = async ({ client }) => {
|
||||
await client.app.log({
|
||||
body: {
|
||||
service: "my-plugin",
|
||||
level: "info",
|
||||
message: "Plugin initialized",
|
||||
extra: { foo: "bar" },
|
||||
},
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
ระดับ: `debug`, `info`, `warn`, `error` ดู[SDKเอกสารประกอบ](https://opencode.ai/docs/sdk)สำหรับรายละเอียด
|
||||
|
||||
---
|
||||
|
||||
### ตะขอบดอัด
|
||||
|
||||
ปรับแต่งบริบทที่รวมไว้เมื่อมีการกระชับเซสชัน:
|
||||
|
||||
```ts title=".opencode/plugins/compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const CompactionPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
"experimental.session.compacting": async (input, output) => {
|
||||
// Inject additional context into the compaction prompt
|
||||
output.context.push(`
|
||||
## Custom Context
|
||||
|
||||
Include any state that should persist across compaction:
|
||||
- Current task status
|
||||
- Important decisions made
|
||||
- Files being actively worked on
|
||||
`)
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`experimental.session.compacting` hook เริ่มทำงานก่อนที่ LLM จะสร้างข้อมูลสรุปต่อเนื่อง ใช้เพื่อแทรกบริบทเฉพาะโดเมนที่พรอมต์การบีบอัดข้อมูลเริ่มต้นอาจพลาดไป
|
||||
|
||||
คุณยังสามารถแทนที่พรอมต์การกระชับข้อมูลทั้งหมดได้โดยตั้งค่า `output.prompt`:
|
||||
|
||||
```ts title=".opencode/plugins/custom-compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
|
||||
export const CustomCompactionPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
"experimental.session.compacting": async (input, output) => {
|
||||
// Replace the entire compaction prompt
|
||||
output.prompt = `
|
||||
You are generating a continuation prompt for a multi-agent swarm session.
|
||||
|
||||
Summarize:
|
||||
1. The current task and its status
|
||||
2. Which files are being modified and by whom
|
||||
3. Any blockers or dependencies between agents
|
||||
4. The next steps to complete the work
|
||||
|
||||
Format as a structured prompt that a new agent can use to resume work.
|
||||
`
|
||||
},
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เมื่อตั้งค่า `output.prompt` มันจะแทนที่พร้อมท์การกระชับค่าเริ่มต้นโดยสมบูรณ์ อาร์เรย์ `output.context` จะถูกละเว้นในกรณีนี้
|
||||
1889
packages/web/src/content/docs/th/providers.mdx
Normal file
1889
packages/web/src/content/docs/th/providers.mdx
Normal file
File diff suppressed because it is too large
Load Diff
180
packages/web/src/content/docs/th/rules.mdx
Normal file
180
packages/web/src/content/docs/th/rules.mdx
Normal file
@@ -0,0 +1,180 @@
|
||||
---
|
||||
title: กฎ
|
||||
description: ตั้งค่าคำแนะนำที่กำหนดเองสำหรับ opencode
|
||||
---
|
||||
|
||||
คุณสามารถให้คำแนะนำที่กำหนดเองแก่ opencode ได้โดยการสร้างไฟล์ `AGENTS.md` ซึ่งคล้ายกับกฎของเคอร์เซอร์ ประกอบด้วยคำแนะนำที่จะรวมอยู่ในบริบทของ LLM เพื่อปรับแต่งลักษณะการทำงานสำหรับโครงการเฉพาะของคุณ
|
||||
|
||||
---
|
||||
|
||||
## เริ่มต้น
|
||||
|
||||
หากต้องการสร้างไฟล์ `AGENTS.md` ใหม่ คุณสามารถเรียกใช้คำสั่ง `/init` ใน opencode
|
||||
|
||||
:::tip
|
||||
คุณควรคอมมิตไฟล์ `AGENTS.md` ของโปรเจ็กต์ของคุณไปที่ Git
|
||||
:::
|
||||
|
||||
การดำเนินการนี้จะสแกนโปรเจ็กต์ของคุณและเนื้อหาทั้งหมดเพื่อทำความเข้าใจว่าโปรเจ็กต์เกี่ยวกับอะไร และสร้างไฟล์ `AGENTS.md` ด้วย สิ่งนี้ช่วยให้ opencode นำทางโครงการได้ดีขึ้น
|
||||
|
||||
หากคุณมีไฟล์ `AGENTS.md` อยู่แล้ว ระบบจะพยายามเพิ่มไฟล์ดังกล่าว
|
||||
|
||||
---
|
||||
|
||||
## ตัวอย่าง
|
||||
|
||||
คุณสามารถสร้างไฟล์นี้ด้วยตนเองได้ นี่คือตัวอย่างบางสิ่งที่คุณสามารถใส่ลงในไฟล์ `AGENTS.md`
|
||||
|
||||
```markdown title="AGENTS.md"
|
||||
# SST v3 Monorepo Project
|
||||
|
||||
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
|
||||
|
||||
## Project Structure
|
||||
|
||||
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
|
||||
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
|
||||
- `sst.config.ts` - Main SST configuration with dynamic imports
|
||||
|
||||
## Code Standards
|
||||
|
||||
- Use TypeScript with strict mode enabled
|
||||
- Shared code goes in `packages/core/` with proper exports configuration
|
||||
- Functions go in `packages/functions/`
|
||||
- Infrastructure should be split into logical files in `infra/`
|
||||
|
||||
## Monorepo Conventions
|
||||
|
||||
- Import shared modules using workspace names: `@my-app/core/example`
|
||||
```
|
||||
|
||||
เรากำลังเพิ่มคำแนะนำเฉพาะโครงการที่นี่ และจะมีการแชร์กับทีมของคุณ
|
||||
|
||||
---
|
||||
|
||||
## ประเภท
|
||||
|
||||
opencode ยังรองรับการอ่านไฟล์ `AGENTS.md` จากหลาย ๆ ที่ และสิ่งนี้มีจุดประสงค์ที่แตกต่างกัน
|
||||
|
||||
### โครงการ
|
||||
|
||||
วาง `AGENTS.md` ในรูทโปรเจ็กต์ของคุณสำหรับกฎเฉพาะโปรเจ็กต์ สิ่งเหล่านี้ใช้เฉพาะเมื่อคุณทำงานในไดเร็กทอรีนี้หรือไดเร็กทอรีย่อยเท่านั้น
|
||||
|
||||
### ทั่วโลก
|
||||
|
||||
คุณยังสามารถมีกฎสากลในไฟล์ `~/.config/opencode/AGENTS.md` สิ่งนี้จะนำไปใช้กับเซสชัน opencode ทั้งหมด
|
||||
|
||||
เนื่องจากสิ่งนี้ไม่ได้ผูกมัดกับ Git หรือแชร์กับทีมของคุณ เราขอแนะนำให้ใช้สิ่งนี้เพื่อระบุกฎส่วนบุคคลที่ LLM ควรปฏิบัติตาม
|
||||
|
||||
### ความเข้ากันได้ของรหัส Claude
|
||||
|
||||
สำหรับผู้ใช้ที่ย้ายจาก Claude Code นั้น OpenCode รองรับรูปแบบไฟล์ของ Claude Code เป็นทางเลือก:
|
||||
|
||||
- **กฎของโครงการ**: `CLAUDE.md` ในไดเรกทอรีโครงการของคุณ (ใช้หากไม่มี `AGENTS.md`)
|
||||
- **กฎสากล**: `~/.claude/CLAUDE.md` (ใช้หากไม่มี `~/.config/opencode/AGENTS.md`)
|
||||
- **ทักษะ**: `~/.claude/skills/` — ดูรายละเอียด [ทักษะตัวแทน](/docs/skills/)
|
||||
|
||||
หากต้องการปิดใช้งานความเข้ากันได้ของ Claude Code ให้ตั้งค่าหนึ่งในตัวแปรสภาพแวดล้อมเหล่านี้:
|
||||
|
||||
```bash
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
|
||||
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ลำดับความสำคัญ
|
||||
|
||||
เมื่อ opencode เริ่มต้นขึ้น มันจะค้นหาไฟล์กฎตามลำดับนี้:
|
||||
|
||||
1. **ไฟล์ในเครื่อง** โดยการสำรวจจากไดเรกทอรีปัจจุบัน (`AGENTS.md`, `CLAUDE.md`)
|
||||
2. **ไฟล์ทั่วโลก** ที่ `~/.config/opencode/AGENTS.md`
|
||||
3. **ไฟล์ Claude Code** ที่ `~/.claude/CLAUDE.md` (ยกเว้นปิดการใช้งาน)
|
||||
|
||||
ไฟล์ที่ตรงกันไฟล์แรกจะชนะในแต่ละหมวดหมู่ ตัวอย่างเช่น หากคุณมีทั้ง `AGENTS.md` และ `CLAUDE.md` ระบบจะใช้เฉพาะ `AGENTS.md` ในทำนองเดียวกัน `~/.config/opencode/AGENTS.md` จะมีความสำคัญมากกว่า `~/.claude/CLAUDE.md`
|
||||
|
||||
---
|
||||
|
||||
## คำแนะนำที่กำหนดเอง
|
||||
|
||||
คุณสามารถระบุไฟล์คำแนะนำที่กำหนดเองได้ใน `opencode.json` หรือ `~/.config/opencode/opencode.json` ทั่วโลก สิ่งนี้ช่วยให้คุณและทีมของคุณสามารถนำกฎที่มีอยู่กลับมาใช้ใหม่ได้ แทนที่จะต้องทำซ้ำกฎเหล่านั้นกับ AGENTS.md
|
||||
|
||||
ตัวอย่าง:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
|
||||
}
|
||||
```
|
||||
|
||||
คุณยังสามารถใช้ URL ระยะไกลเพื่อโหลดคำแนะนำจากเว็บได้
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
|
||||
}
|
||||
```
|
||||
|
||||
คำแนะนำระยะไกลจะถูกดึงออกมาโดยหมดเวลา 5 วินาที
|
||||
|
||||
ไฟล์คำสั่งทั้งหมดจะรวมกับไฟล์ `AGENTS.md` ของคุณ
|
||||
|
||||
---
|
||||
|
||||
## การอ้างอิงไฟล์ภายนอก
|
||||
|
||||
แม้ว่า opencode จะไม่แยกวิเคราะห์การอ้างอิงไฟล์ใน `AGENTS.md` โดยอัตโนมัติ แต่คุณสามารถใช้ฟังก์ชันที่คล้ายกันได้สองวิธี:
|
||||
|
||||
### ใช้ opencode.json
|
||||
|
||||
แนวทางที่แนะนำคือการใช้ฟิลด์ `instructions` ใน `opencode.json`:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
|
||||
}
|
||||
```
|
||||
|
||||
### คำแนะนำแบบแมนนวลใน AGENTS.md
|
||||
|
||||
คุณสามารถสอนให้ opencode อ่านไฟล์ภายนอกได้โดยการให้คำแนะนำที่ชัดเจนใน `AGENTS.md` ของคุณ นี่เป็นตัวอย่างที่เป็นประโยชน์:
|
||||
|
||||
```markdown title="AGENTS.md"
|
||||
# TypeScript Project Rules
|
||||
|
||||
## External File Loading
|
||||
|
||||
CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
|
||||
|
||||
Instructions:
|
||||
|
||||
- Do NOT preemptively load all references - use lazy loading based on actual need
|
||||
- When loaded, treat content as mandatory instructions that override defaults
|
||||
- Follow references recursively when needed
|
||||
|
||||
## Development Guidelines
|
||||
|
||||
For TypeScript code style and best practices: @docs/typescript-guidelines.md
|
||||
For React component architecture and hooks patterns: @docs/react-patterns.md
|
||||
For REST API design and error handling: @docs/api-standards.md
|
||||
For testing strategies and coverage requirements: @test/testing-guidelines.md
|
||||
|
||||
## General Guidelines
|
||||
|
||||
Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
|
||||
```
|
||||
|
||||
แนวทางนี้ช่วยให้คุณ:
|
||||
|
||||
- สร้างไฟล์กฎแบบโมดูลาร์ที่สามารถนำมาใช้ซ้ำได้
|
||||
- แชร์กฎระหว่างโปรเจ็กต์ผ่าน symlink หรือโมดูลย่อย git
|
||||
- เขียน AGENTS.md ให้กระชับโดยอ้างอิงหลักเกณฑ์โดยละเอียด
|
||||
- ตรวจสอบให้แน่ใจว่า opencode จะโหลดไฟล์เมื่อจำเป็นสำหรับงานเฉพาะเท่านั้น
|
||||
|
||||
:::tip
|
||||
สำหรับ monorepos หรือโปรเจ็กต์ที่มีมาตรฐานร่วมกัน การใช้ `opencode.json` ที่มีรูปแบบ glob (เช่น `packages/*/AGENTS.md`) จะสามารถบำรุงรักษาได้ดีกว่าคำสั่งแบบแมนนวล
|
||||
:::
|
||||
391
packages/web/src/content/docs/th/sdk.mdx
Normal file
391
packages/web/src/content/docs/th/sdk.mdx
Normal file
@@ -0,0 +1,391 @@
|
||||
---
|
||||
title: SDK
|
||||
description: ไคลเอนต์ JS ประเภทที่ปลอดภัยสำหรับเซิร์ฟเวอร์ opencode
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
opencode JS/TS SDK จัดเตรียมไคลเอ็นต์ประเภทที่ปลอดภัยสำหรับการโต้ตอบกับเซิร์ฟเวอร์
|
||||
ใช้เพื่อสร้างการบูรณาการและควบคุม opencode โดยทางโปรแกรม
|
||||
|
||||
[เรียนรู้เพิ่มเติม](/docs/server) เกี่ยวกับวิธีการทำงานของเซิร์ฟเวอร์ ตัวอย่างเช่น ลองดู [โครงการ](/docs/ecosystem#โครงการ) ที่สร้างโดยชุมชน
|
||||
|
||||
---
|
||||
|
||||
## ติดตั้ง
|
||||
|
||||
ติดตั้ง SDK จาก npm:
|
||||
|
||||
```bash
|
||||
npm install @opencode-ai/sdk
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## สร้างไคลเอนต์
|
||||
|
||||
สร้างอินสแตนซ์ของ opencode:
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
|
||||
const { client } = await createOpencode()
|
||||
```
|
||||
|
||||
สิ่งนี้จะเริ่มต้นทั้งเซิร์ฟเวอร์และไคลเอนต์
|
||||
|
||||
#### ตัวเลือก
|
||||
|
||||
| ตัวเลือก | พิมพ์ | คำอธิบาย | ค่าเริ่มต้น |
|
||||
| ---------- | ------------- | ------------------------------------------- | ----------- |
|
||||
| `hostname` | `string` | ชื่อโฮสต์ของเซิร์ฟเวอร์ | `127.0.0.1` |
|
||||
| `port` | `number` | พอร์ตเซิร์ฟเวอร์ | `4096` |
|
||||
| `signal` | `AbortSignal` | ยกเลิกสัญญาณสำหรับการยกเลิก | `undefined` |
|
||||
| `timeout` | `number` | หมดเวลาเป็น ms สำหรับการเริ่มต้นเซิร์ฟเวอร์ | `5000` |
|
||||
| `config` | `Config` | วัตถุการกำหนดค่า | `{}` |
|
||||
|
||||
---
|
||||
|
||||
## การกำหนดค่า
|
||||
|
||||
คุณสามารถส่งผ่านออบเจ็กต์การกำหนดค่าเพื่อปรับแต่งลักษณะการทำงานได้ อินสแตนซ์ยังคงรับ `opencode.json` ของคุณ แต่คุณสามารถแทนที่หรือเพิ่มการกำหนดค่าแบบอินไลน์ได้:
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
|
||||
const opencode = await createOpencode({
|
||||
hostname: "127.0.0.1",
|
||||
port: 4096,
|
||||
config: {
|
||||
model: "anthropic/claude-3-5-sonnet-20241022",
|
||||
},
|
||||
})
|
||||
|
||||
console.log(`Server running at ${opencode.server.url}`)
|
||||
|
||||
opencode.server.close()
|
||||
```
|
||||
|
||||
## ลูกค้าเท่านั้น
|
||||
|
||||
หากคุณมีอินสแตนซ์ opencode ที่ทำงานอยู่แล้ว คุณสามารถสร้างอินสแตนซ์ไคลเอ็นต์เพื่อเชื่อมต่อได้:
|
||||
|
||||
```javascript
|
||||
import { createOpencodeClient } from "@opencode-ai/sdk"
|
||||
|
||||
const client = createOpencodeClient({
|
||||
baseUrl: "http://localhost:4096",
|
||||
})
|
||||
```
|
||||
|
||||
#### ตัวเลือก
|
||||
|
||||
| ตัวเลือก | พิมพ์ | คำอธิบาย | ค่าเริ่มต้น |
|
||||
| --------------- | ---------- | ---------------------------------------- | ----------------------- |
|
||||
| `baseUrl` | `string` | URL ของเซิร์ฟเวอร์ | `http://localhost:4096` |
|
||||
| `fetch` | `function` | การใช้งานการดึงข้อมูลแบบกำหนดเอง | `globalThis.fetch` |
|
||||
| `parseAs` | `string` | วิธีการแยกวิเคราะห์การตอบสนอง | `auto` |
|
||||
| `responseStyle` | `string` | รูปแบบการคืนสินค้า: `data` หรือ `fields` | `fields` |
|
||||
| `throwOnError` | `boolean` | โยนข้อผิดพลาดแทนการส่งคืน | `false` |
|
||||
|
||||
---
|
||||
|
||||
## ประเภท
|
||||
|
||||
SDK มีคำจำกัดความ TypeScript สำหรับ API ประเภททั้งหมด นำเข้าโดยตรง:
|
||||
|
||||
```typescript
|
||||
import type { Session, Message, Part } from "@opencode-ai/sdk"
|
||||
```
|
||||
|
||||
ทุกประเภทสร้างขึ้นจากข้อกำหนด OpenAPI ของเซิร์ฟเวอร์และมีอยู่ใน <a href={typesUrl}>ไฟล์ประเภท</a>
|
||||
|
||||
---
|
||||
|
||||
## ข้อผิดพลาด
|
||||
|
||||
SDK อาจทำให้เกิดข้อผิดพลาดที่คุณสามารถจับและจัดการได้:
|
||||
|
||||
```typescript
|
||||
try {
|
||||
await client.session.get({ path: { id: "invalid-id" } })
|
||||
} catch (error) {
|
||||
console.error("Failed to get session:", (error as Error).message)
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## API
|
||||
|
||||
SDK เปิดเผย API ของเซิร์ฟเวอร์ทั้งหมดผ่านไคลเอ็นต์ประเภทที่ปลอดภัย
|
||||
|
||||
---
|
||||
|
||||
### ทั่วโลก
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| ----------------- | ------------------------------------ | ------------------------------------ |
|
||||
| `global.health()` | ตรวจสอบสภาพและเวอร์ชันของเซิร์ฟเวอร์ | `{ healthy: true, version: string }` |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
const health = await client.global.health()
|
||||
console.log(health.data.version)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### แอป
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| -------------- | ----------------------------- | -------------------------------------------- |
|
||||
| `app.log()` | เขียนรายการบันทึก | `boolean` |
|
||||
| `app.agents()` | รายชื่อตัวแทนที่มีอยู่ทั้งหมด | <a href={typesUrl}><code>ตัวแทน[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
// Write a log entry
|
||||
await client.app.log({
|
||||
body: {
|
||||
service: "my-app",
|
||||
level: "info",
|
||||
message: "Operation completed",
|
||||
},
|
||||
})
|
||||
|
||||
// List available agents
|
||||
const agents = await client.app.agents()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### โครงการ
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| ------------------- | ------------------------ | --------------------------------------------- |
|
||||
| `project.list()` | แสดงรายการโครงการทั้งหมด | <a href={typesUrl}><code>Project[]</code></a> |
|
||||
| `project.current()` | รับโครงการปัจจุบัน | <a href={typesUrl}><code>Project</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
// List all projects
|
||||
const projects = await client.project.list()
|
||||
|
||||
// Get current project
|
||||
const currentProject = await client.project.current()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### เส้นทาง
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| ------------ | ------------------ | ---------------------------------------- |
|
||||
| `path.get()` | รับเส้นทางปัจจุบัน | <a href={typesUrl}><code>Path</code></a> |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
// Get current path information
|
||||
const pathInfo = await client.path.get()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### การกำหนดค่า
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| -------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||
| `config.get()` | รับข้อมูลการกำหนดค่า | <a href={typesUrl}><code>กำหนดค่า</code></a> |
|
||||
| `config.providers()` | ผู้ให้บริการรายชื่อและโมเดลเริ่มต้น | `{ providers: `<a href={typesUrl}><code>ผู้ให้บริการ[]</code></a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
const config = await client.config.get()
|
||||
|
||||
const { providers, default: defaults } = await client.config.providers()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### เซสชัน
|
||||
|
||||
| วิธี | คำอธิบาย | หมายเหตุ |
|
||||
| ---------------------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `session.list()` | แสดงรายการเซสชัน | ส่งคืน <a href={typesUrl}><code>เซสชัน[]</code></a> |
|
||||
| `session.get({ path })` | รับเซสชัน | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `session.children({ path })` | แสดงรายการเซสชันย่อย | ส่งคืน <a href={typesUrl}><code>เซสชัน[]</code></a> |
|
||||
| `session.create({ body })` | สร้างเซสชัน | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `session.delete({ path })` | ลบเซสชัน | ส่งคืน `boolean` |
|
||||
| `session.update({ path, body })` | อัปเดตคุณสมบัติเซสชัน | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `session.init({ path, body })` | วิเคราะห์แอปและสร้าง `AGENTS.md` | ส่งคืน `boolean` |
|
||||
| `session.abort({ path })` | ยกเลิกเซสชันที่ทำงานอยู่ | ส่งคืน `boolean` |
|
||||
| `session.share({ path })` | แบ่งปันเซสชั่น | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `session.unshare({ path })` | เลิกแชร์เซสชัน | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `session.summarize({ path, body })` | สรุปเซสชัน | ส่งคืน `boolean` |
|
||||
| `session.messages({ path })` | แสดงรายการข้อความในเซสชัน | ส่งคืน `{ info: `<a href={typesUrl}><code>ข้อความ</code></a>`, parts: `<a href={typesUrl}><code>ส่วน[]</code></a>`}[]` |
|
||||
| `session.message({ path })` | รับรายละเอียดข้อความ | ส่งคืน `{ info: `<a href={typesUrl}><code>ข้อความ</code></a>`, parts: `<a href={typesUrl}><code>ส่วน[]</code></a>`}` |
|
||||
| `session.prompt({ path, body })` | ส่งข้อความแจ้ง | `body.noReply: true` ส่งคืน UserMessage (บริบทเท่านั้น) ค่าเริ่มต้นส่งคืน <a href={typesUrl}><code>AssistantMessage</code></a> พร้อมการตอบสนองของ AI |
|
||||
| `session.command({ path, body })` | ส่งคำสั่งไปยังเซสชั่น | ส่งคืน `{ info: `<a href={typesUrl}><code>AssistantMessage</code></a>`, parts: `<a href={typesUrl}><code>ส่วน[]</code></a>`}` |
|
||||
| `session.shell({ path, body })` | รันคำสั่งเชลล์ | ส่งคืน <a href={typesUrl}><code>AssistantMessage</code></a> |
|
||||
| `session.revert({ path, body })` | คืนค่าข้อความ | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `session.unrevert({ path })` | คืนค่าข้อความที่เปลี่ยนกลับ | ส่งคืน <a href={typesUrl}><code>เซสชัน</code></a> |
|
||||
| `postSessionByIdPermissionsByPermissionId({ path, body })` | ตอบสนองต่อการร้องขอการอนุญาต | ส่งคืน `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
// Create and manage sessions
|
||||
const session = await client.session.create({
|
||||
body: { title: "My session" },
|
||||
})
|
||||
|
||||
const sessions = await client.session.list()
|
||||
|
||||
// Send a prompt message
|
||||
const result = await client.session.prompt({
|
||||
path: { id: session.id },
|
||||
body: {
|
||||
model: { providerID: "anthropic", modelID: "claude-3-5-sonnet-20241022" },
|
||||
parts: [{ type: "text", text: "Hello!" }],
|
||||
},
|
||||
})
|
||||
|
||||
// Inject context without triggering AI response (useful for plugins)
|
||||
await client.session.prompt({
|
||||
path: { id: session.id },
|
||||
body: {
|
||||
noReply: true,
|
||||
parts: [{ type: "text", text: "You are a helpful assistant." }],
|
||||
},
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ไฟล์
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| ------------------------- | ------------------------------ | ----------------------------------------------------------------------------------------- |
|
||||
| `find.text({ query })` | ค้นหาข้อความในไฟล์ | อาร์เรย์ของวัตถุที่ตรงกับ `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `find.files({ query })` | ค้นหาไฟล์และไดเร็กทอรีตามชื่อ | `string[]` (paths) |
|
||||
| `find.symbols({ query })` | ค้นหาสัญลักษณ์พื้นที่ทำงาน | <a href={typesUrl}><code>Symbol[]</code></a> |
|
||||
| `file.read({ query })` | อ่านไฟล์ | `{ type: "raw" \| "patch", content: string }` |
|
||||
| `file.status({ query? })` | รับสถานะสำหรับไฟล์ที่ถูกติดตาม | <a href={typesUrl}><code>File[]</code></a> |
|
||||
|
||||
`find.files` รองรับช่องค้นหาเพิ่มเติมบางช่อง:
|
||||
|
||||
- `type`: `"file"` หรือ `"directory"`
|
||||
- `directory`: แทนที่รูทโปรเจ็กต์สำหรับการค้นหา
|
||||
- `limit`: ผลลัพธ์สูงสุด (1–200)
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
// Search and read files
|
||||
const textResults = await client.find.text({
|
||||
query: { pattern: "function.*opencode" },
|
||||
})
|
||||
|
||||
const files = await client.find.files({
|
||||
query: { query: "*.ts", type: "file" },
|
||||
})
|
||||
|
||||
const directories = await client.find.files({
|
||||
query: { query: "packages", type: "directory", limit: 20 },
|
||||
})
|
||||
|
||||
const content = await client.file.read({
|
||||
query: { path: "src/index.ts" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| ------------------------------ | ------------------------------ | ---------- |
|
||||
| `tui.appendPrompt({ body })` | เพิ่มข้อความต่อท้ายข้อความแจ้ง | `boolean` |
|
||||
| `tui.openHelp()` | เปิดกล่องโต้ตอบความช่วยเหลือ | `boolean` |
|
||||
| `tui.openSessions()` | เปิดตัวเลือกเซสชัน | `boolean` |
|
||||
| `tui.openThemes()` | เปิดตัวเลือกธีม | `boolean` |
|
||||
| `tui.openModels()` | เปิดตัวเลือกรุ่น | `boolean` |
|
||||
| `tui.submitPrompt()` | ส่งข้อความแจ้งปัจจุบัน | `boolean` |
|
||||
| `tui.clearPrompt()` | ล้างข้อความแจ้ง | `boolean` |
|
||||
| `tui.executeCommand({ body })` | ดำเนินการคำสั่ง | `boolean` |
|
||||
| `tui.showToast({ body })` | แสดงการแจ้งเตือนขนมปังปิ้ง | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
// Control TUI interface
|
||||
await client.tui.appendPrompt({
|
||||
body: { text: "Add this to prompt" },
|
||||
})
|
||||
|
||||
await client.tui.showToast({
|
||||
body: { message: "Task completed", variant: "success" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### การรับรองความถูกต้อง
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| ------------------- | ----------------------------------------- | ---------- |
|
||||
| `auth.set({ ... })` | ตั้งค่าข้อมูลประจำตัวการรับรองความถูกต้อง | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
await client.auth.set({
|
||||
path: { id: "anthropic" },
|
||||
body: { type: "api", key: "your-api-key" },
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### กิจกรรม
|
||||
|
||||
| วิธี | คำอธิบาย | การตอบสนอง |
|
||||
| ------------------- | ------------------------------- | ------------------------------- |
|
||||
| `event.subscribe()` | สตรีมเหตุการณ์ที่เซิร์ฟเวอร์ส่ง | สตรีมเหตุการณ์ที่เซิร์ฟเวอร์ส่ง |
|
||||
|
||||
---
|
||||
|
||||
#### ตัวอย่าง
|
||||
|
||||
```javascript
|
||||
// Listen to real-time events
|
||||
const events = await client.event.subscribe()
|
||||
for await (const event of events.stream) {
|
||||
console.log("Event:", event.type, event.properties)
|
||||
}
|
||||
```
|
||||
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 |
|
||||
128
packages/web/src/content/docs/th/share.mdx
Normal file
128
packages/web/src/content/docs/th/share.mdx
Normal file
@@ -0,0 +1,128 @@
|
||||
---
|
||||
title: แบ่งปัน
|
||||
description: แบ่งปันการสนทนา OpenCode ของคุณ
|
||||
---
|
||||
|
||||
คุณลักษณะการแชร์ของ OpenCode ช่วยให้คุณสร้างลิงก์สาธารณะไปยังการสนทนา OpenCode ของคุณ เพื่อให้คุณสามารถทำงานร่วมกับเพื่อนร่วมทีมหรือรับความช่วยเหลือจากผู้อื่นได้
|
||||
|
||||
:::note
|
||||
ทุกคนที่มีลิงก์สามารถเข้าถึงการสนทนาที่แชร์ได้แบบสาธารณะ
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## มันทำงานอย่างไร
|
||||
|
||||
เมื่อคุณแบ่งปันการสนทนา OpenCode:
|
||||
|
||||
1. สร้าง URL สาธารณะที่ไม่ซ้ำสำหรับเซสชันของคุณ
|
||||
2. ซิงค์ประวัติการสนทนาของคุณกับเซิร์ฟเวอร์ของเรา
|
||||
3. ทำให้สามารถเข้าถึงการสนทนาผ่านลิงก์ที่แชร์ได้ — `opncd.ai/s/<share-id>`
|
||||
|
||||
---
|
||||
|
||||
## การแบ่งปัน
|
||||
|
||||
OpenCode รองรับโหมดการแชร์สามโหมดที่ควบคุมวิธีการแชร์การสนทนา:
|
||||
|
||||
---
|
||||
|
||||
### คู่มือ (ค่าเริ่มต้น)
|
||||
|
||||
ตามค่าเริ่มต้น OpenCode จะใช้โหมดการแชร์ด้วยตนเอง เซสชันจะไม่ถูกแชร์โดยอัตโนมัติ แต่คุณสามารถแชร์ได้ด้วยตนเองโดยใช้คำสั่ง `/share`:
|
||||
|
||||
```
|
||||
/share
|
||||
```
|
||||
|
||||
สิ่งนี้จะสร้าง URL ที่ไม่ซ้ำกันซึ่งจะถูกคัดลอกไปยังคลิปบอร์ดของคุณ
|
||||
|
||||
หากต้องการตั้งค่าโหมดแมนนวลอย่างชัดเจนใน [ไฟล์ปรับแต่ง](/docs/config):
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "manual"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### แชร์อัตโนมัติ
|
||||
|
||||
คุณสามารถเปิดใช้งานการแบ่งปันอัตโนมัติสำหรับการสนทนาใหม่ทั้งหมดโดยตั้งค่าตัวเลือก `share` เป็น `"auto"` ใน [ไฟล์กำหนดค่า](/docs/config):
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "auto"
|
||||
}
|
||||
```
|
||||
|
||||
เมื่อเปิดใช้งานการแชร์อัตโนมัติ ทุกการสนทนาใหม่จะถูกแชร์โดยอัตโนมัติและลิงก์จะถูกสร้างขึ้น
|
||||
|
||||
---
|
||||
|
||||
### พิการ
|
||||
|
||||
คุณสามารถปิดการแชร์ทั้งหมดได้โดยตั้งค่าตัวเลือก `share` เป็น `"disabled"` ใน [ไฟล์กำหนดค่า](/docs/config):
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opncd.ai/config.json",
|
||||
"share": "disabled"
|
||||
}
|
||||
```
|
||||
|
||||
หากต้องการบังคับใช้สิ่งนี้กับทีมของคุณสำหรับโปรเจ็กต์ที่กำหนด ให้เพิ่มลงใน `opencode.json` ในโปรเจ็กต์ของคุณและตรวจสอบใน Git
|
||||
|
||||
---
|
||||
|
||||
## ยกเลิกการแชร์
|
||||
|
||||
หากต้องการหยุดแชร์การสนทนาและลบออกจากการเข้าถึงแบบสาธารณะ:
|
||||
|
||||
```
|
||||
/unshare
|
||||
```
|
||||
|
||||
การดำเนินการนี้จะลบลิงก์แชร์และลบข้อมูลที่เกี่ยวข้องกับการสนทนา
|
||||
|
||||
---
|
||||
|
||||
## ความเป็นส่วนตัว
|
||||
|
||||
มีบางสิ่งที่ต้องคำนึงถึงเมื่อแบ่งปันการสนทนา
|
||||
|
||||
---
|
||||
|
||||
### การเก็บรักษาข้อมูล
|
||||
|
||||
การสนทนาที่แชร์จะยังสามารถเข้าถึงได้จนกว่าคุณจะยกเลิกการแชร์อย่างชัดเจน นี้
|
||||
รวมถึง:
|
||||
|
||||
- ประวัติการสนทนาแบบเต็ม
|
||||
- ทุกข้อความและการตอบกลับ
|
||||
- ข้อมูลเมตาของเซสชัน
|
||||
|
||||
---
|
||||
|
||||
### ข้อแนะนำ
|
||||
|
||||
- แชร์การสนทนาที่ไม่มีข้อมูลที่ละเอียดอ่อนเท่านั้น
|
||||
- ตรวจสอบเนื้อหาการสนทนาก่อนที่จะแบ่งปัน
|
||||
- ยกเลิกการแชร์การสนทนาเมื่อการทำงานร่วมกันเสร็จสมบูรณ์
|
||||
- หลีกเลี่ยงการแบ่งปันการสนทนาด้วยรหัสที่เป็นกรรมสิทธิ์หรือข้อมูลที่เป็นความลับ
|
||||
- สำหรับโปรเจ็กต์ที่มีความละเอียดอ่อน ให้ปิดการแชร์ทั้งหมด
|
||||
|
||||
---
|
||||
|
||||
## สำหรับสถานประกอบการ
|
||||
|
||||
สำหรับการปรับใช้ระดับองค์กร คุณสมบัติการแชร์อาจเป็น:
|
||||
|
||||
- **ปิดการใช้งาน** ทั้งหมดเพื่อความปลอดภัย
|
||||
- **จำกัด** สำหรับผู้ใช้ที่ผ่านการรับรองความถูกต้องผ่าน SSO เท่านั้น
|
||||
- **โฮสต์เอง** บนโครงสร้างพื้นฐานของคุณเอง
|
||||
|
||||
[เรียนรู้เพิ่มเติม](/docs/enterprise) เกี่ยวกับการใช้ opencode ในองค์กรของคุณ
|
||||
222
packages/web/src/content/docs/th/skills.mdx
Normal file
222
packages/web/src/content/docs/th/skills.mdx
Normal file
@@ -0,0 +1,222 @@
|
||||
---
|
||||
title: “ทักษะตัวแทน”
|
||||
description: "กำหนดพฤติกรรมที่นำมาใช้ซ้ำได้ผ่านคำจำกัดความ SKILL.md"
|
||||
---
|
||||
|
||||
ทักษะของเจ้าหน้าที่ช่วยให้ OpenCode ค้นพบคำแนะนำที่ใช้ซ้ำได้จาก repo หรือโฮมไดเร็กทอรีของคุณ
|
||||
ทักษะจะถูกโหลดตามความต้องการผ่านเครื่องมือ `skill` ดั้งเดิม ตัวแทนจะเห็นทักษะที่มีอยู่และสามารถโหลดเนื้อหาทั้งหมดได้เมื่อจำเป็น
|
||||
|
||||
---
|
||||
|
||||
## วางไฟล์
|
||||
|
||||
สร้างหนึ่งโฟลเดอร์ต่อชื่อทักษะ และใส่ `SKILL.md` ไว้ข้างใน
|
||||
OpenCode ค้นหาตำแหน่งเหล่านี้:
|
||||
|
||||
- การกำหนดค่าโครงการ: `.opencode/skills/<name>/SKILL.md`
|
||||
- การกำหนดค่าส่วนกลาง: `~/.config/opencode/skills/<name>/SKILL.md`
|
||||
- เข้ากันได้กับโครงการ Claude: `.claude/skills/<name>/SKILL.md`
|
||||
- เข้ากันได้กับ Global Claude: `~/.claude/skills/<name>/SKILL.md`
|
||||
- เข้ากันได้กับตัวแทนโครงการ: `.agents/skills/<name>/SKILL.md`
|
||||
- รองรับตัวแทนทั่วโลก: `~/.agents/skills/<name>/SKILL.md`
|
||||
|
||||
---
|
||||
|
||||
## ทำความเข้าใจกับการค้นพบ
|
||||
|
||||
สำหรับเส้นทางภายในโปรเจ็กต์ OpenCode จะเดินขึ้นมาจากไดเร็กทอรีการทำงานปัจจุบันของคุณจนกว่าจะถึงแผนผังงาน git
|
||||
โดยจะโหลด `skills/*/SKILL.md` ที่ตรงกันใน `.opencode/` และ `.claude/skills/*/SKILL.md` หรือ `.agents/skills/*/SKILL.md` ที่ตรงกันตลอดทาง
|
||||
|
||||
คำจำกัดความสากลยังโหลดจาก `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` และ `~/.agents/skills/*/SKILL.md`
|
||||
|
||||
---
|
||||
|
||||
## เขียน frontmatter
|
||||
|
||||
`SKILL.md` แต่ละอันต้องขึ้นต้นด้วย YAML frontmatter
|
||||
เฉพาะฟิลด์เหล่านี้เท่านั้นที่ได้รับการยอมรับ:
|
||||
|
||||
- `name` (จำเป็น)
|
||||
- `description` (จำเป็น)
|
||||
- `license` (ไม่บังคับ)
|
||||
- `compatibility` (ไม่บังคับ)
|
||||
- `metadata` (ตัวเลือก แมปแบบสตริงต่อสตริง)
|
||||
|
||||
ช่อง frontmatter ที่ไม่รู้จักจะถูกละเว้น
|
||||
|
||||
---
|
||||
|
||||
## ตรวจสอบชื่อ
|
||||
|
||||
`name` ต้อง:
|
||||
|
||||
- มีความยาว 1–64 อักขระ
|
||||
- เป็นตัวพิมพ์เล็กและตัวเลขคละกันที่มีเครื่องหมายยัติภังค์ตัวคั่นเดียว
|
||||
- ไม่ขึ้นต้นหรือลงท้ายด้วย `-`
|
||||
- ไม่มี `--` ติดต่อกัน
|
||||
- จับคู่ชื่อไดเร็กทอรีที่มี `SKILL.md`
|
||||
|
||||
regex ที่เทียบเท่า:
|
||||
|
||||
```text
|
||||
^[a-z0-9]+(-[a-z0-9]+)*$
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ปฏิบัติตามกฎความยาว
|
||||
|
||||
`description` ต้องมีความยาว 1-1,024 ตัวอักษร
|
||||
เจาะจงให้ตัวแทนเลือกได้ถูกต้อง
|
||||
|
||||
---
|
||||
|
||||
## ใช้ตัวอย่าง
|
||||
|
||||
สร้าง `.opencode/skills/git-release/SKILL.md` แบบนี้:
|
||||
|
||||
```markdown
|
||||
---
|
||||
name: git-release
|
||||
description: Create consistent releases and changelogs
|
||||
license: MIT
|
||||
compatibility: opencode
|
||||
metadata:
|
||||
audience: maintainers
|
||||
workflow: github
|
||||
---
|
||||
|
||||
## What I do
|
||||
|
||||
- Draft release notes from merged PRs
|
||||
- Propose a version bump
|
||||
- Provide a copy-pasteable `gh release create` command
|
||||
|
||||
## When to use me
|
||||
|
||||
Use this when you are preparing a tagged release.
|
||||
Ask clarifying questions if the target versioning scheme is unclear.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## รู้จักคำอธิบายเครื่องมือ
|
||||
|
||||
OpenCode แสดงรายการทักษะที่มีอยู่ในคำอธิบายเครื่องมือ `skill`
|
||||
แต่ละรายการจะมีชื่อทักษะและคำอธิบาย:
|
||||
|
||||
```xml
|
||||
<available_skills>
|
||||
<skill>
|
||||
<name>git-release</name>
|
||||
<description>Create consistent releases and changelogs</description>
|
||||
</skill>
|
||||
</available_skills>
|
||||
```
|
||||
|
||||
ตัวแทนโหลดทักษะโดยการเรียกเครื่องมือ:
|
||||
|
||||
```
|
||||
skill({ name: "git-release" })
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## กำหนดค่าสิทธิ์
|
||||
|
||||
ควบคุมว่าตัวแทนทักษะใดสามารถเข้าถึงโดยใช้สิทธิ์ตามรูปแบบใน `opencode.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"permission": {
|
||||
"skill": {
|
||||
"*": "allow",
|
||||
"pr-review": "allow",
|
||||
"internal-*": "deny",
|
||||
"experimental-*": "ask"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| การอนุญาต | พฤติกรรม |
|
||||
| ---------- | ----------------------------------------- |
|
||||
| `allow` | โหลดทักษะทันที |
|
||||
| `deny` | ทักษะถูกซ่อนไม่ให้ตัวแทน การเข้าถึงถูกปฏิเสธ |
|
||||
| `ask` | ผู้ใช้ได้รับแจ้งให้อนุมัติก่อนที่จะโหลด |
|
||||
|
||||
รูปแบบที่รองรับไวด์การ์ด: `internal-*` ตรงกับ `internal-docs`, `internal-tools` ฯลฯ
|
||||
|
||||
---
|
||||
|
||||
## แทนที่ต่อตัวแทน
|
||||
|
||||
ให้สิทธิ์แก่ตัวแทนเฉพาะเจาะจงที่แตกต่างจากค่าเริ่มต้นทั่วไป
|
||||
|
||||
**สำหรับตัวแทนแบบกำหนดเอง** (ในตัวแทนส่วนหน้า):
|
||||
|
||||
```yaml
|
||||
---
|
||||
permission:
|
||||
skill:
|
||||
"documents-*": "allow"
|
||||
---
|
||||
```
|
||||
|
||||
**สำหรับตัวแทนในตัว** (ใน `opencode.json`):
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"permission": {
|
||||
"skill": {
|
||||
"internal-*": "allow"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ปิดการใช้งานเครื่องมือทักษะ
|
||||
|
||||
ปิดการใช้งานทักษะโดยสิ้นเชิงสำหรับตัวแทนที่ไม่ควรใช้:
|
||||
|
||||
**สำหรับตัวแทนแบบกำหนดเอง**:
|
||||
|
||||
```yaml
|
||||
---
|
||||
tools:
|
||||
skill: false
|
||||
---
|
||||
```
|
||||
|
||||
**สำหรับตัวแทนในตัว**:
|
||||
|
||||
```json
|
||||
{
|
||||
"agent": {
|
||||
"plan": {
|
||||
"tools": {
|
||||
"skill": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เมื่อปิดใช้งาน ส่วน `<available_skills>` จะถูกละเว้นทั้งหมด
|
||||
|
||||
---
|
||||
|
||||
## แก้ไขปัญหาการโหลด
|
||||
|
||||
หากทักษะไม่แสดง:
|
||||
|
||||
1. ตรวจสอบว่า `SKILL.md` สะกดด้วยตัวพิมพ์ใหญ่ทั้งหมด
|
||||
2. ตรวจสอบว่าส่วนหน้าประกอบด้วย `name` และ `description`
|
||||
3. ตรวจสอบให้แน่ใจว่าชื่อทักษะไม่ซ้ำกันในทุกสถานที่
|
||||
4. ตรวจสอบการอนุญาต ทักษะที่มี `deny` ถูกซ่อนไม่ให้ตัวแทนเห็น
|
||||
369
packages/web/src/content/docs/th/themes.mdx
Normal file
369
packages/web/src/content/docs/th/themes.mdx
Normal file
@@ -0,0 +1,369 @@
|
||||
---
|
||||
title: ธีมส์
|
||||
description: เลือกธีมในตัวหรือกำหนดธีมของคุณเอง
|
||||
---
|
||||
|
||||
ด้วย OpenCode คุณสามารถเลือกจากหนึ่งในธีมที่มีอยู่แล้วภายใน ใช้ธีมที่ปรับให้เข้ากับธีมเทอร์มินัลของคุณ หรือกำหนดธีมที่คุณกำหนดเองได้
|
||||
|
||||
ตามค่าเริ่มต้น OpenCode จะใช้ธีม `opencode` ของเราเอง
|
||||
|
||||
---
|
||||
|
||||
## ข้อกำหนดของเทอร์มินัล
|
||||
|
||||
เพื่อให้ธีมแสดงได้อย่างถูกต้องด้วยชุดสีทั้งหมด เทอร์มินัลของคุณต้องรองรับ **truecolor** (สี 24 บิต) เทอร์มินัลสมัยใหม่ส่วนใหญ่จะรองรับสิ่งนี้ตามค่าเริ่มต้น แต่คุณอาจต้องเปิดใช้งาน:
|
||||
|
||||
- **ตรวจสอบการสนับสนุน**: เรียกใช้ `echo $COLORTERM` - ควรส่งออก `truecolor` หรือ `24bit`
|
||||
- **เปิดใช้งานสีจริง**: ตั้งค่าตัวแปรสภาพแวดล้อม `COLORTERM=truecolor` ในโปรไฟล์เชลล์ของคุณ
|
||||
- **ความเข้ากันได้ของเทอร์มินัล**: ตรวจสอบให้แน่ใจว่าโปรแกรมจำลองเทอร์มินัลของคุณรองรับสี 24 บิต (เทอร์มินัลที่ทันสมัยที่สุด เช่น iTerm2, Alacritty, Kitty, Windows Terminal และ GNOME Terminal do เวอร์ชันล่าสุด)
|
||||
|
||||
หากไม่รองรับสีจริง ธีมอาจปรากฏขึ้นโดยมีความแม่นยำของสีลดลงหรือกลับไปใช้การประมาณสี 256 สีที่ใกล้ที่สุด
|
||||
|
||||
---
|
||||
|
||||
## ธีมในตัว
|
||||
|
||||
OpenCode มาพร้อมกับธีมในตัวหลายธีม
|
||||
|
||||
| ชื่อ | คำอธิบาย |
|
||||
| ---------------------- | ---------------------------------------------------------------------------- |
|
||||
| `system` | ปรับให้เข้ากับสีพื้นหลังของเทอร์มินัลของคุณ |
|
||||
| `tokyonight` | อิงตามธีมของ [Tokyonight](https://github.com/folke/tokyonight.nvim) |
|
||||
| `everforest` | อิงตามธีม [Everforest](https://github.com/sainnhe/everforest) |
|
||||
| `ayu` | อิงตามธีมสีเข้มของ [Ayu](https://github.com/ayu-theme) |
|
||||
| `catppuccin` | อิงตามธีม [Catppuccin](https://github.com/catppuccin) |
|
||||
| `catppuccin-macchiato` | อิงตามธีม [Catppuccin](https://github.com/catppuccin) |
|
||||
| `gruvbox` | อิงตามธีม [Gruvbox](https://github.com/morhetz/gruvbox) |
|
||||
| `kanagawa` | อิงตามธีมของ [คานากาว่า](https://github.com/rebelot/kanagawa.nvim) |
|
||||
| `nord` | อิงตามธีม [Nord](https://github.com/nordtheme/nord) |
|
||||
| `matrix` | ธีมสีเขียวสไตล์แฮ็กเกอร์บนสีดำ |
|
||||
| `one-dark` | อิงตามธีม [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark |
|
||||
|
||||
และยิ่งไปกว่านั้น เรายังเพิ่มธีมใหม่ๆ อย่างต่อเนื่อง
|
||||
|
||||
---
|
||||
|
||||
## ธีมของระบบ
|
||||
|
||||
ธีม `system` ได้รับการออกแบบให้ปรับให้เข้ากับโทนสีของเครื่องเทอร์มินัลของคุณโดยอัตโนมัติ ไม่เหมือนกับธีมดั้งเดิมที่ใช้สีคงที่ ธีม _system_:
|
||||
|
||||
- **สร้างระดับสีเทา**: สร้างระดับสีเทาแบบกำหนดเองตามสีพื้นหลังของเทอร์มินัลของคุณ เพื่อให้มั่นใจว่ามีคอนทราสต์ที่เหมาะสมที่สุด
|
||||
- **ใช้สี ANSI**: ใช้ประโยชน์จากสี ANSI มาตรฐาน (0-15) สำหรับการเน้นไวยากรณ์และองค์ประกอบ UI ซึ่งเคารพชุดสีของเทอร์มินัลของคุณ
|
||||
- **รักษาค่าเริ่มต้นของเทอร์มินัล**: ใช้ `none` สำหรับสีข้อความและพื้นหลัง เพื่อรักษารูปลักษณ์ดั้งเดิมของเทอร์มินัลของคุณ
|
||||
|
||||
ธีมของระบบมีไว้สำหรับผู้ใช้ที่:
|
||||
|
||||
- ต้องการให้ OpenCode ตรงกับรูปลักษณ์ของเทอร์มินัล
|
||||
- ใช้โครงร่างสีเทอร์มินัลแบบกำหนดเอง
|
||||
- ต้องการรูปลักษณ์ที่สอดคล้องกันในแอปพลิเคชันเทอร์มินัลทั้งหมด
|
||||
|
||||
---
|
||||
|
||||
## การใช้ธีม
|
||||
|
||||
คุณสามารถเลือกธีมได้โดยเปิดการเลือกธีมขึ้นมาด้วยคำสั่ง `/theme` หรือคุณสามารถระบุได้ใน [config](/docs/config)
|
||||
|
||||
```json title="opencode.json" {3}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"theme": "tokyonight"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ธีมที่กำหนดเอง
|
||||
|
||||
OpenCode รองรับระบบธีมที่ใช้ JSON ที่ยืดหยุ่น ซึ่งช่วยให้ผู้ใช้สามารถสร้างและปรับแต่งธีมได้อย่างง่ายดาย
|
||||
|
||||
---
|
||||
|
||||
### ลำดับชั้น
|
||||
|
||||
ธีมจะถูกโหลดจากหลายไดเร็กทอรีตามลำดับต่อไปนี้ โดยไดเร็กทอรีรุ่นหลังจะแทนที่ไดเร็กทอรีก่อนหน้า:
|
||||
|
||||
1. **ธีมในตัว** - ธีมเหล่านี้ฝังอยู่ในไบนารี
|
||||
2. **ไดเรกทอรีกำหนดค่าผู้ใช้** - กำหนดใน `~/.config/opencode/themes/*.json` หรือ `$XDG_CONFIG_HOME/opencode/themes/*.json`
|
||||
3. **ไดเรกทอรีรากของโครงการ** - กำหนดไว้ใน `<project-root>/.opencode/themes/*.json`
|
||||
4. **ไดเร็กทอรีการทำงานปัจจุบัน** - กำหนดใน `./.opencode/themes/*.json`
|
||||
|
||||
หากหลายไดเร็กทอรีมีธีมที่มีชื่อเดียวกัน ธีมจากไดเร็กทอรีที่มีลำดับความสำคัญสูงกว่าจะถูกนำมาใช้
|
||||
|
||||
---
|
||||
|
||||
### การสร้างธีม
|
||||
|
||||
หากต้องการสร้างธีมที่กำหนดเอง ให้สร้างไฟล์ JSON ในไดเร็กทอรีธีมรายการใดรายการหนึ่ง
|
||||
|
||||
สำหรับธีมทั้งผู้ใช้:
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p ~/.config/opencode/themes
|
||||
vim ~/.config/opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
และสำหรับธีมเฉพาะโครงการ
|
||||
|
||||
```bash no-frame
|
||||
mkdir -p .opencode/themes
|
||||
vim .opencode/themes/my-theme.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### JSON รูปแบบ
|
||||
|
||||
ธีมใช้รูปแบบ JSON ที่ยืดหยุ่นพร้อมรองรับ:
|
||||
|
||||
- **สีฐานสิบหก**: `"#ffffff"`
|
||||
- **ANSI สี**: `3` (0-255)
|
||||
- **การอ้างอิงสี**: `"primary"` หรือคำจำกัดความที่กำหนดเอง
|
||||
- **Dark/light ตัวแปร**: `{"dark": "#000", "light": "#fff"}`
|
||||
- **ไม่มีสี**: `"none"` - ใช้สีเริ่มต้นของเทอร์มินัลหรือโปร่งใส
|
||||
|
||||
---
|
||||
|
||||
### คำจำกัดความของสี
|
||||
|
||||
ส่วน `defs` เป็นทางเลือก และอนุญาตให้คุณกำหนดสีที่ใช้ซ้ำได้ซึ่งสามารถอ้างอิงในธีมได้
|
||||
|
||||
---
|
||||
|
||||
### ค่าเริ่มต้นของเทอร์มินัล
|
||||
|
||||
ค่าพิเศษ `"none"` สามารถใช้กับสีใดก็ได้เพื่อสืบทอดสีเริ่มต้นของเทอร์มินัล สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการสร้างธีมที่ผสมผสานอย่างลงตัวกับโทนสีของเทอร์มินัลของคุณ:
|
||||
|
||||
- `"text": "none"` - ใช้สีพื้นหน้าเริ่มต้นของเทอร์มินัล
|
||||
- `"background": "none"` - ใช้สีพื้นหลังเริ่มต้นของเทอร์มินัล
|
||||
|
||||
---
|
||||
|
||||
### ตัวอย่าง
|
||||
|
||||
นี่คือตัวอย่างของธีมที่กำหนดเอง:
|
||||
|
||||
```json title="my-theme.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/theme.json",
|
||||
"defs": {
|
||||
"nord0": "#2E3440",
|
||||
"nord1": "#3B4252",
|
||||
"nord2": "#434C5E",
|
||||
"nord3": "#4C566A",
|
||||
"nord4": "#D8DEE9",
|
||||
"nord5": "#E5E9F0",
|
||||
"nord6": "#ECEFF4",
|
||||
"nord7": "#8FBCBB",
|
||||
"nord8": "#88C0D0",
|
||||
"nord9": "#81A1C1",
|
||||
"nord10": "#5E81AC",
|
||||
"nord11": "#BF616A",
|
||||
"nord12": "#D08770",
|
||||
"nord13": "#EBCB8B",
|
||||
"nord14": "#A3BE8C",
|
||||
"nord15": "#B48EAD"
|
||||
},
|
||||
"theme": {
|
||||
"primary": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"secondary": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"accent": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"error": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"warning": {
|
||||
"dark": "nord12",
|
||||
"light": "nord12"
|
||||
},
|
||||
"success": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"info": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"text": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"textMuted": {
|
||||
"dark": "nord3",
|
||||
"light": "nord1"
|
||||
},
|
||||
"background": {
|
||||
"dark": "nord0",
|
||||
"light": "nord6"
|
||||
},
|
||||
"backgroundPanel": {
|
||||
"dark": "nord1",
|
||||
"light": "nord5"
|
||||
},
|
||||
"backgroundElement": {
|
||||
"dark": "nord1",
|
||||
"light": "nord4"
|
||||
},
|
||||
"border": {
|
||||
"dark": "nord2",
|
||||
"light": "nord3"
|
||||
},
|
||||
"borderActive": {
|
||||
"dark": "nord3",
|
||||
"light": "nord2"
|
||||
},
|
||||
"borderSubtle": {
|
||||
"dark": "nord2",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffAdded": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"diffRemoved": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"diffContext": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffHunkHeader": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"diffHighlightAdded": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"diffHighlightRemoved": {
|
||||
"dark": "nord11",
|
||||
"light": "nord11"
|
||||
},
|
||||
"diffAddedBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffRemovedBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffContextBg": {
|
||||
"dark": "nord1",
|
||||
"light": "nord5"
|
||||
},
|
||||
"diffLineNumber": {
|
||||
"dark": "nord2",
|
||||
"light": "nord4"
|
||||
},
|
||||
"diffAddedLineNumberBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"diffRemovedLineNumberBg": {
|
||||
"dark": "#3B4252",
|
||||
"light": "#E5E9F0"
|
||||
},
|
||||
"markdownText": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"markdownHeading": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"markdownLink": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"markdownLinkText": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownCode": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"markdownBlockQuote": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"markdownEmph": {
|
||||
"dark": "nord12",
|
||||
"light": "nord12"
|
||||
},
|
||||
"markdownStrong": {
|
||||
"dark": "nord13",
|
||||
"light": "nord13"
|
||||
},
|
||||
"markdownHorizontalRule": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"markdownListItem": {
|
||||
"dark": "nord8",
|
||||
"light": "nord10"
|
||||
},
|
||||
"markdownListEnumeration": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownImage": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"markdownImageText": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"markdownCodeBlock": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
},
|
||||
"syntaxComment": {
|
||||
"dark": "nord3",
|
||||
"light": "nord3"
|
||||
},
|
||||
"syntaxKeyword": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"syntaxFunction": {
|
||||
"dark": "nord8",
|
||||
"light": "nord8"
|
||||
},
|
||||
"syntaxVariable": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"syntaxString": {
|
||||
"dark": "nord14",
|
||||
"light": "nord14"
|
||||
},
|
||||
"syntaxNumber": {
|
||||
"dark": "nord15",
|
||||
"light": "nord15"
|
||||
},
|
||||
"syntaxType": {
|
||||
"dark": "nord7",
|
||||
"light": "nord7"
|
||||
},
|
||||
"syntaxOperator": {
|
||||
"dark": "nord9",
|
||||
"light": "nord9"
|
||||
},
|
||||
"syntaxPunctuation": {
|
||||
"dark": "nord4",
|
||||
"light": "nord0"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
379
packages/web/src/content/docs/th/tools.mdx
Normal file
379
packages/web/src/content/docs/th/tools.mdx
Normal file
@@ -0,0 +1,379 @@
|
||||
---
|
||||
title: เครื่องมือ
|
||||
description: จัดการเครื่องมือที่ LLM สามารถใช้ได้
|
||||
---
|
||||
|
||||
เครื่องมืออนุญาตให้ LLM ดำเนินการในโค้ดเบสของคุณ OpenCode มาพร้อมกับชุดเครื่องมือในตัว แต่คุณสามารถขยายได้ด้วย [เครื่องมือที่กำหนดเอง](/docs/custom-tools) หรือ [MCP เซิร์ฟเวอร์](/docs/mcp-servers)
|
||||
|
||||
ตามค่าเริ่มต้น เครื่องมือทั้งหมด **เปิดใช้งาน** และไม่จำเป็นต้องมีสิทธิ์ในการทำงาน คุณสามารถควบคุมการทำงานของเครื่องมือผ่าน [สิทธิ์](/docs/permissions)
|
||||
|
||||
---
|
||||
|
||||
## กำหนดค่า
|
||||
|
||||
ใช้ฟิลด์ `permission` เพื่อควบคุมการทำงานของเครื่องมือ คุณสามารถอนุญาต ปฏิเสธ หรือต้องการการอนุมัติสำหรับเครื่องมือแต่ละรายการได้
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "deny",
|
||||
"bash": "ask",
|
||||
"webfetch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
คุณยังสามารถใช้ไวด์การ์ดเพื่อควบคุมเครื่องมือหลายรายการพร้อมกันได้ ตัวอย่างเช่น หากต้องการขออนุมัติเครื่องมือทั้งหมดจากเซิร์ฟเวอร์ MCP:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"mymcp_*": "ask"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
[เรียนรู้เพิ่มเติม](/docs/permissions) เกี่ยวกับการกำหนดค่าสิทธิ์
|
||||
|
||||
---
|
||||
|
||||
## บิวท์อิน
|
||||
|
||||
นี่คือเครื่องมือในตัวทั้งหมดที่มีอยู่ใน OpenCode
|
||||
|
||||
---
|
||||
|
||||
### bash
|
||||
|
||||
ดำเนินการคำสั่งเชลล์ในสภาพแวดล้อมโปรเจ็กต์ของคุณ
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"bash": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เครื่องมือนี้อนุญาตให้ LLM รันคำสั่งเทอร์มินัล เช่น `npm install`, `git status` หรือคำสั่งเชลล์อื่น ๆ
|
||||
|
||||
---
|
||||
|
||||
### edit
|
||||
|
||||
แก้ไขไฟล์ที่มีอยู่โดยใช้การแทนที่สตริงที่แน่นอน
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เครื่องมือนี้ทำการแก้ไขไฟล์อย่างแม่นยำโดยแทนที่ข้อความที่ตรงกันทุกประการ มันเป็นวิธีหลักที่ LLM แก้ไขโค้ด
|
||||
|
||||
---
|
||||
|
||||
### write
|
||||
|
||||
สร้างไฟล์ใหม่หรือเขียนทับไฟล์ที่มีอยู่
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ใช้สิ่งนี้เพื่ออนุญาตให้ LLM สร้างไฟล์ใหม่ มันจะเขียนทับไฟล์ที่มีอยู่หากมีอยู่แล้ว
|
||||
|
||||
:::note
|
||||
เครื่องมือ `write` ถูกควบคุมโดยสิทธิ์ `edit` ซึ่งครอบคลุมการแก้ไขไฟล์ทั้งหมด (`edit`, `write`, `patch`, `multiedit`)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### read
|
||||
|
||||
อ่านเนื้อหาไฟล์จากโค้ดเบสของคุณ
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"read": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เครื่องมือนี้จะอ่านไฟล์และส่งกลับเนื้อหา รองรับการอ่านช่วงบรรทัดเฉพาะสำหรับไฟล์ขนาดใหญ่
|
||||
|
||||
---
|
||||
|
||||
### grep
|
||||
|
||||
ค้นหาเนื้อหาไฟล์โดยใช้นิพจน์ทั่วไป
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"grep": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ค้นหาเนื้อหาอย่างรวดเร็วทั่วทั้งโค้ดเบสของคุณ รองรับไวยากรณ์ regex เต็มรูปแบบและการกรองรูปแบบไฟล์
|
||||
|
||||
---
|
||||
|
||||
### glob
|
||||
|
||||
ค้นหาไฟล์ตามรูปแบบการจับคู่
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"glob": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ค้นหาไฟล์โดยใช้รูปแบบ glob เช่น `**/*.js` หรือ `src/**/*.ts` ส่งคืนเส้นทางไฟล์ที่ตรงกันโดยจัดเรียงตามเวลาแก้ไข
|
||||
|
||||
---
|
||||
|
||||
### list
|
||||
|
||||
แสดงรายการไฟล์และไดเร็กทอรีในพาธที่กำหนด
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"list": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เครื่องมือนี้แสดงรายการเนื้อหาไดเร็กทอรี ยอมรับรูปแบบ glob เพื่อกรองผลลัพธ์
|
||||
|
||||
---
|
||||
|
||||
### lsp (ทดลอง)
|
||||
|
||||
โต้ตอบกับเซิร์ฟเวอร์ LSP ที่กำหนดค่าของคุณเพื่อรับฟีเจอร์อัจฉริยะด้านโค้ด เช่น คำจำกัดความ การอ้างอิง ข้อมูลโฮเวอร์ และลำดับชั้นการโทร
|
||||
|
||||
:::note
|
||||
เครื่องมือนี้ใช้ได้เฉพาะเมื่อ `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (หรือ `OPENCODE_EXPERIMENTAL=true`)
|
||||
:::
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"lsp": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
การดำเนินการที่รองรับ ได้แก่ `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls` และ `outgoingCalls`
|
||||
|
||||
หากต้องการกำหนดค่าเซิร์ฟเวอร์ LSP ที่พร้อมใช้งานสำหรับโครงการของคุณ โปรดดู [LSP เซิร์ฟเวอร์](/docs/lsp)
|
||||
|
||||
---
|
||||
|
||||
### patch
|
||||
|
||||
ใช้แพทช์กับไฟล์
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"edit": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เครื่องมือนี้ใช้ไฟล์แพทช์กับโค้ดเบสของคุณ มีประโยชน์สำหรับการใช้ความแตกต่างและแพตช์จากแหล่งต่างๆ
|
||||
|
||||
:::note
|
||||
เครื่องมือ `patch` ถูกควบคุมโดยสิทธิ์ `edit` ซึ่งครอบคลุมการแก้ไขไฟล์ทั้งหมด (`edit`, `write`, `patch`, `multiedit`)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### skill
|
||||
|
||||
โหลด [ทักษะ](/docs/skills) (ไฟล์ `SKILL.md`) และส่งคืนเนื้อหาในการสนทนา
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"skill": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### todowrite
|
||||
|
||||
จัดการรายการสิ่งที่ต้องทำระหว่างเซสชันการเขียนโค้ด
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"todowrite": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
สร้างและอัปเดตรายการงานเพื่อติดตามความคืบหน้าระหว่างการดำเนินการที่ซับซ้อน LLM ใช้สิ่งนี้เพื่อจัดระเบียบงานที่มีหลายขั้นตอน
|
||||
|
||||
:::note
|
||||
เครื่องมือนี้ปิดใช้งานสำหรับตัวแทนย่อยตามค่าเริ่มต้น แต่คุณสามารถเปิดใช้งานได้ด้วยตนเอง [เรียนรู้เพิ่มเติม](/docs/agents/#สิทธิ์)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### todoread
|
||||
|
||||
อ่านรายการสิ่งที่ต้องทำที่มีอยู่
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"todoread": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
อ่านสถานะรายการสิ่งที่ต้องทำปัจจุบัน ใช้โดย LLM เพื่อติดตามงานที่กำลังรอดำเนินการหรือเสร็จสิ้น
|
||||
|
||||
:::note
|
||||
เครื่องมือนี้ปิดใช้งานสำหรับตัวแทนย่อยตามค่าเริ่มต้น แต่คุณสามารถเปิดใช้งานได้ด้วยตนเอง [เรียนรู้เพิ่มเติม](/docs/agents/#สิทธิ์)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### webfetch
|
||||
|
||||
ดึงเนื้อหาเว็บ
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"webfetch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
อนุญาตให้ LLM ดึงข้อมูลและอ่านหน้าเว็บ มีประโยชน์สำหรับการค้นหาเอกสารหรือค้นคว้าแหล่งข้อมูลออนไลน์
|
||||
|
||||
---
|
||||
|
||||
### websearch
|
||||
|
||||
ค้นหาข้อมูลในเว็บ
|
||||
|
||||
:::note
|
||||
เครื่องมือนี้ใช้ได้เฉพาะเมื่อใช้ผู้ให้บริการ OpenCode หรือเมื่อตัวแปรสภาพแวดล้อม `OPENCODE_ENABLE_EXA` ถูกตั้งค่าเป็นค่าความจริง (เช่น `true` หรือ `1`)
|
||||
|
||||
หากต้องการเปิดใช้งานเมื่อเปิดตัว OpenCode:
|
||||
|
||||
```bash
|
||||
OPENCODE_ENABLE_EXA=1 opencode
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"websearch": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ทำการค้นหาเว็บโดยใช้ Exa AI เพื่อค้นหาข้อมูลที่เกี่ยวข้องทางออนไลน์ มีประโยชน์สำหรับการค้นคว้าหัวข้อ ค้นหาเหตุการณ์ปัจจุบัน หรือการรวบรวมข้อมูลนอกเหนือจากการตัดข้อมูลการฝึกอบรม
|
||||
|
||||
ไม่จำเป็นต้องใช้คีย์ API เครื่องมือนี้เชื่อมต่อโดยตรงกับบริการ MCP ที่โฮสต์ของ Exa AI โดยไม่มีการตรวจสอบสิทธิ์
|
||||
|
||||
:::tip
|
||||
ใช้ `websearch` เมื่อคุณต้องการค้นหาข้อมูล (การค้นพบ) และใช้ `webfetch` เมื่อคุณต้องการดึงเนื้อหาจาก URL เฉพาะ (การดึงข้อมูล)
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### question
|
||||
|
||||
ถามคำถามผู้ใช้ระหว่างการดำเนินการ
|
||||
|
||||
```json title="opencode.json" {4}
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"permission": {
|
||||
"question": "allow"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
เครื่องมือนี้อนุญาตให้ LLM ถามคำถามผู้ใช้ระหว่างทำงาน มันมีประโยชน์สำหรับ:
|
||||
|
||||
- การรวบรวมความชอบหรือความต้องการของผู้ใช้
|
||||
- ชี้แจงคำแนะนำที่ไม่ชัดเจน
|
||||
- การตัดสินใจเกี่ยวกับทางเลือกในการดำเนินการ
|
||||
- เสนอทางเลือกว่าจะไปในทิศทางใด
|
||||
|
||||
คำถามแต่ละข้อประกอบด้วยส่วนหัว ข้อความคำถาม และรายการตัวเลือก ผู้ใช้สามารถเลือกจากตัวเลือกที่มีให้หรือพิมพ์คำตอบที่กำหนดเองได้ เมื่อมีคำถามหลายข้อ ผู้ใช้สามารถสลับไปมาระหว่างคำถามเหล่านั้นก่อนที่จะส่งคำตอบทั้งหมด
|
||||
|
||||
---
|
||||
|
||||
## เครื่องมือที่กำหนดเอง
|
||||
|
||||
เครื่องมือแบบกำหนดเองช่วยให้คุณสามารถกำหนดฟังก์ชันของคุณเองที่ LLM สามารถเรียกได้ สิ่งเหล่านี้ถูกกำหนดไว้ในไฟล์ปรับแต่งของคุณและสามารถรันโค้ดได้ตามใจชอบ
|
||||
|
||||
[เรียนรู้เพิ่มเติม](/docs/custom-tools) เกี่ยวกับการสร้างเครื่องมือที่กำหนดเอง
|
||||
|
||||
---
|
||||
|
||||
## MCP เซิร์ฟเวอร์
|
||||
|
||||
เซิร์ฟเวอร์ MCP (Model Context Protocol) ช่วยให้คุณสามารถรวมเครื่องมือและบริการภายนอกได้ ซึ่งรวมถึงการเข้าถึงฐานข้อมูล การบูรณาการ API และบริการของบุคคลที่สาม
|
||||
|
||||
[เรียนรู้เพิ่มเติม](/docs/mcp-servers) เกี่ยวกับการกำหนดค่าเซิร์ฟเวอร์ MCP
|
||||
|
||||
---
|
||||
|
||||
## ภายใน
|
||||
|
||||
ภายใน เครื่องมือต่างๆ เช่น `grep`, `glob` และ `list` ใช้ [ripgrep](https://github.com/BurntSushi/ripgrep) ภายใต้ประทุน ตามค่าเริ่มต้น ripgrep เคารพรูปแบบ `.gitignore` ซึ่งหมายความว่าไฟล์และไดเร็กทอรีที่อยู่ใน `.gitignore` ของคุณจะถูกแยกออกจากการค้นหาและรายการ
|
||||
|
||||
---
|
||||
|
||||
### ละเว้นรูปแบบ
|
||||
|
||||
หากต้องการรวมไฟล์ที่ปกติจะถูกละเว้น ให้สร้างไฟล์ `.ignore` ในรูทโปรเจ็กต์ของคุณ ไฟล์นี้สามารถอนุญาตเส้นทางบางอย่างได้อย่างชัดเจน
|
||||
|
||||
```text title=".ignore"
|
||||
!node_modules/
|
||||
!dist/
|
||||
!build/
|
||||
```
|
||||
|
||||
ตัวอย่างเช่น ไฟล์ `.ignore` นี้อนุญาตให้ ripgrep ค้นหาภายในไดเร็กทอรี `node_modules/`, `dist/` และ `build/` แม้ว่าไดเร็กทอรีเหล่านั้นจะแสดงอยู่ใน `.gitignore` ก็ตาม
|
||||
300
packages/web/src/content/docs/th/troubleshooting.mdx
Normal file
300
packages/web/src/content/docs/th/troubleshooting.mdx
Normal file
@@ -0,0 +1,300 @@
|
||||
---
|
||||
title: การแก้ไขปัญหา
|
||||
description: ปัญหาทั่วไปและวิธีแก้ปัญหา
|
||||
---
|
||||
|
||||
หากต้องการแก้ไขข้อบกพร่องเกี่ยวกับ OpenCode ให้เริ่มต้นด้วยการตรวจสอบบันทึกและข้อมูลในเครื่องที่จัดเก็บไว้ในดิสก์
|
||||
|
||||
---
|
||||
|
||||
## บันทึก
|
||||
|
||||
ไฟล์บันทึกถูกเขียนไปที่:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/log/`
|
||||
- **Windows**: กด `WIN+R` แล้ววาง `%USERPROFILE%\.local\share\opencode\log`
|
||||
|
||||
ไฟล์บันทึกจะถูกตั้งชื่อด้วยการประทับเวลา (เช่น `2025-01-09T123456.log`) และไฟล์บันทึกล่าสุด 10 ไฟล์จะถูกเก็บไว้
|
||||
|
||||
คุณสามารถตั้งค่าระดับการบันทึกด้วยตัวเลือกบรรทัดคำสั่ง `--log-level` เพื่อรับข้อมูลการแก้ไขข้อบกพร่องโดยละเอียดเพิ่มเติม ตัวอย่างเช่น `opencode --log-level DEBUG`
|
||||
|
||||
---
|
||||
|
||||
## พื้นที่จัดเก็บ
|
||||
|
||||
opencode เก็บข้อมูลเซสชันและข้อมูลแอปพลิเคชันอื่น ๆ ไว้บนดิสก์ที่:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/`
|
||||
- **Windows**: กด `WIN+R` แล้ววาง `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
ไดเรกทอรีนี้ประกอบด้วย:
|
||||
|
||||
- `auth.json` - ข้อมูลการตรวจสอบสิทธิ์ เช่น คีย์ API, โทเค็น OAuth
|
||||
- `log/` - บันทึกแอปพลิเคชัน
|
||||
- `project/` - ข้อมูลเฉพาะโครงการ เช่น ข้อมูลเซสชันและข้อความ
|
||||
- หากโปรเจ็กต์อยู่ภายใน repo Git มันจะถูกจัดเก็บไว้ใน `./<project-slug>/storage/`
|
||||
- หากไม่ใช่ repo Git มันจะถูกเก็บไว้ใน `./global/storage/`
|
||||
|
||||
---
|
||||
|
||||
## แอปเดสก์ท็อป
|
||||
|
||||
OpenCode Desktop รันเซิร์ฟเวอร์ OpenCode ในเครื่อง (ไฟล์ `opencode-cli` sidecar) ในเบื้องหลัง ปัญหาส่วนใหญ่มีสาเหตุมาจากปลั๊กอินที่ทำงานผิดปกติ แคชเสียหาย หรือการตั้งค่าเซิร์ฟเวอร์ไม่ถูกต้อง
|
||||
|
||||
### การตรวจสอบอย่างรวดเร็ว
|
||||
|
||||
- ออกจากระบบโดยสมบูรณ์แล้วเปิดแอปใหม่อีกครั้ง
|
||||
- หากแอปแสดงหน้าจอข้อผิดพลาด ให้คลิก **รีสตาร์ท** และคัดลอกรายละเอียดข้อผิดพลาด
|
||||
- macOS เท่านั้น: เมนู `OpenCode` -> **โหลด Webview ใหม่** (ช่วยได้หาก UI ว่างเปล่า/frozen)
|
||||
|
||||
---
|
||||
|
||||
### ปิดการใช้งานปลั๊กอิน
|
||||
|
||||
หากแอปเดสก์ท็อปขัดข้องเมื่อเปิดใช้งาน หยุดทำงาน หรือทำงานผิดปกติ ให้เริ่มต้นด้วยการปิดใช้งานปลั๊กอิน
|
||||
|
||||
#### ตรวจสอบการกำหนดค่าส่วนกลาง
|
||||
|
||||
เปิดไฟล์กำหนดค่าส่วนกลางของคุณแล้วมองหาคีย์ `plugin`
|
||||
|
||||
- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (หรือ `~/.config/opencode/opencode.json`)
|
||||
- **macOS/Linux** (การติดตั้งเก่ากว่า): `~/.local/share/opencode/opencode.jsonc`
|
||||
- **Windows**: กด `WIN+R` แล้ววาง `%USERPROFILE%\.config\opencode\opencode.jsonc`
|
||||
|
||||
หากคุณได้กำหนดค่าปลั๊กอินไว้ ให้ปิดการใช้งานชั่วคราวโดยลบคีย์ออกหรือตั้งค่าเป็นอาร์เรย์ว่าง:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"plugin": [],
|
||||
}
|
||||
```
|
||||
|
||||
#### ตรวจสอบไดเร็กทอรีปลั๊กอิน
|
||||
|
||||
OpenCode ยังสามารถโหลดปลั๊กอินในเครื่องจากดิสก์ได้ ย้ายสิ่งเหล่านี้ออกไปชั่วคราว (หรือเปลี่ยนชื่อโฟลเดอร์) และรีสตาร์ทแอปเดสก์ท็อป:
|
||||
|
||||
- **ปลั๊กอินสากล**
|
||||
- **macOS/Linux**: `~/.config/opencode/plugins/`
|
||||
- **Windows**: กด `WIN+R` แล้ววาง `%USERPROFILE%\.config\opencode\plugins`
|
||||
- **ปลั๊กอินโครงการ** (เฉพาะในกรณีที่คุณใช้การกำหนดค่าต่อโครงการ)
|
||||
- `<your-project>/.opencode/plugins/`
|
||||
|
||||
หากแอปเริ่มทำงานอีกครั้ง ให้เปิดใช้งานปลั๊กอินอีกครั้งทีละรายการเพื่อดูว่าปลั๊กอินใดเป็นสาเหตุของปัญหา
|
||||
|
||||
---
|
||||
|
||||
### ล้างแคช
|
||||
|
||||
หากการปิดใช้งานปลั๊กอินไม่ได้ผล (หรือการติดตั้งปลั๊กอินค้าง) ให้ล้างแคชเพื่อให้ OpenCode สามารถสร้างใหม่ได้
|
||||
|
||||
1. ออกจาก OpenCode Desktop โดยสมบูรณ์
|
||||
2. ลบไดเรกทอรีแคช:
|
||||
|
||||
- **macOS**: ตัวค้นหา -> `Cmd+Shift+G` -> วาง `~/.cache/opencode`
|
||||
- **Linux**: ลบ `~/.cache/opencode` (หรือรัน `rm -rf ~/.cache/opencode`)
|
||||
- **Windows**: กด `WIN+R` แล้ววาง `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
3. รีสตาร์ทเดสก์ท็อป OpenCode
|
||||
|
||||
---
|
||||
|
||||
### Fix server connection issues
|
||||
|
||||
OpenCode Desktop สามารถเริ่มต้นเซิร์ฟเวอร์ภายในเครื่องของตนเองได้ (ค่าเริ่มต้น) หรือเชื่อมต่อกับเซิร์ฟเวอร์ URL ที่คุณกำหนดค่าไว้
|
||||
|
||||
หากคุณเห็นกล่องโต้ตอบ **"การเชื่อมต่อล้มเหลว"** (หรือแอปไม่เคยผ่านหน้าจอเริ่มต้น) ให้ตรวจสอบเซิร์ฟเวอร์ที่กำหนดเอง URL
|
||||
|
||||
#### ล้างเซิร์ฟเวอร์เริ่มต้นของเดสก์ท็อป URL
|
||||
|
||||
จากหน้าจอหลัก คลิกชื่อเซิร์ฟเวอร์ (ที่มีจุดสถานะ) เพื่อเปิดตัวเลือกเซิร์ฟเวอร์ ในส่วน **เซิร์ฟเวอร์เริ่มต้น** คลิก **ล้าง**
|
||||
|
||||
#### ลบ `server.port` / `server.hostname` ออกจากการกำหนดค่าของคุณ
|
||||
|
||||
หาก `opencode.json(c)` ของคุณมีส่วน `server` ให้ลบออกชั่วคราวแล้วรีสตาร์ทแอปเดสก์ท็อป
|
||||
|
||||
#### ตรวจสอบตัวแปรสภาพแวดล้อม
|
||||
|
||||
หากคุณตั้งค่า `OPENCODE_PORT` ในสภาพแวดล้อมของคุณ แอปเดสก์ท็อปจะพยายามใช้พอร์ตนั้นสำหรับเซิร์ฟเวอร์ภายในเครื่อง
|
||||
|
||||
- ยกเลิกการตั้งค่า `OPENCODE_PORT` (หรือเลือกพอร์ตว่าง) แล้วรีสตาร์ท
|
||||
|
||||
---
|
||||
|
||||
### Linux: ปัญหา Wayland / X11
|
||||
|
||||
บน Linux การตั้งค่า Wayland บางอย่างอาจทำให้เกิดหน้าต่างว่างหรือข้อผิดพลาดของตัวประกอบ
|
||||
|
||||
- หากคุณอยู่บน Wayland และแอปว่างเปล่า/crashing ให้ลองเปิดใช้งานด้วย `OC_ALLOW_WAYLAND=1`
|
||||
- หากสิ่งนั้นทำให้สิ่งต่าง ๆ แย่ลง ให้ลบออกแล้วลองเปิดใช้งานภายใต้เซสชัน X11 แทน
|
||||
|
||||
---
|
||||
|
||||
### Windows: รันไทม์ WebView2
|
||||
|
||||
บน Windows OpenCode Desktop ต้องใช้ Microsoft Edge **WebView2 Runtime** หากแอปเปิดเป็นหน้าต่างว่างหรือไม่เริ่มทำงาน ให้ติดตั้ง/update WebView2 แล้วลองอีกครั้ง
|
||||
|
||||
---
|
||||
|
||||
### Windows: ปัญหาด้านประสิทธิภาพทั่วไป
|
||||
|
||||
หากคุณประสบปัญหาประสิทธิภาพการทำงานช้า ปัญหาการเข้าถึงไฟล์ หรือปัญหาเทอร์มินัลบน Windows ให้ลองใช้ [WSL (ระบบย่อย Windows สำหรับ Linux)](/docs/windows-wsl) WSL มอบสภาพแวดล้อม Linux ที่ทำงานร่วมกับคุณสมบัติของ OpenCode ได้อย่างราบรื่นยิ่งขึ้น
|
||||
|
||||
---
|
||||
|
||||
### การแจ้งเตือนไม่แสดง
|
||||
|
||||
OpenCode Desktop จะแสดงการแจ้งเตือนของระบบเฉพาะเมื่อ:
|
||||
|
||||
- การแจ้งเตือนเปิดใช้งานสำหรับ OpenCode ในการตั้งค่าระบบปฏิบัติการของคุณและ
|
||||
- หน้าต่างแอพไม่ได้โฟกัส
|
||||
|
||||
---
|
||||
|
||||
### รีเซ็ตที่เก็บข้อมูลแอปเดสก์ท็อป (วิธีสุดท้าย)
|
||||
|
||||
หากแอปไม่เริ่มทำงานและคุณไม่สามารถล้างการตั้งค่าจากภายใน UI ได้ ให้รีเซ็ตสถานะที่บันทึกไว้ของแอปเดสก์ท็อป
|
||||
|
||||
1. ออกจากเดสก์ท็อป OpenCode
|
||||
2. ค้นหาและลบไฟล์เหล่านี้ (อยู่ในไดเร็กทอรีข้อมูลแอป OpenCode Desktop):
|
||||
|
||||
- `opencode.settings.dat` (เซิร์ฟเวอร์เริ่มต้นของเดสก์ท็อป URL)
|
||||
- `opencode.global.dat` และ `opencode.workspace.*.dat` (สถานะ UI เช่น เซิร์ฟเวอร์ล่าสุด/projects)
|
||||
|
||||
หากต้องการค้นหาไดเร็กทอรีอย่างรวดเร็ว:
|
||||
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (จากนั้นค้นหาชื่อไฟล์ด้านบน)
|
||||
- **Linux**: ค้นหาภายใต้ `~/.local/share` สำหรับชื่อไฟล์ด้านบน
|
||||
- **Windows**: กด `WIN+R` -> `%APPDATA%` (จากนั้นค้นหาชื่อไฟล์ด้านบน)
|
||||
|
||||
---
|
||||
|
||||
## การขอความช่วยเหลือ
|
||||
|
||||
หากคุณประสบปัญหากับ OpenCode:
|
||||
|
||||
1. **รายงานปัญหาเกี่ยวกับ GitHub**
|
||||
|
||||
วิธีที่ดีที่สุดในการรายงานจุดบกพร่องหรือขอคุณสมบัติคือผ่านพื้นที่เก็บข้อมูล GitHub ของเรา:
|
||||
|
||||
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
|
||||
|
||||
ก่อนที่จะสร้างปัญหาใหม่ ให้ค้นหาปัญหาที่มีอยู่เพื่อดูว่าปัญหาของคุณได้รับการรายงานแล้วหรือไม่
|
||||
|
||||
2. **เข้าร่วม Discord ของเรา**
|
||||
|
||||
สำหรับความช่วยเหลือแบบเรียลไทม์และการสนทนาในชุมชน เข้าร่วมเซิร์ฟเวอร์ Discord ของเรา:
|
||||
|
||||
[**opencode.ai/discord**](https://opencode.ai/discord)
|
||||
|
||||
---
|
||||
|
||||
## ปัญหาทั่วไป
|
||||
|
||||
ต่อไปนี้เป็นปัญหาทั่วไปบางประการและวิธีแก้ปัญหา
|
||||
|
||||
---
|
||||
|
||||
### OpenCode จะไม่เริ่มทำงาน
|
||||
|
||||
1. ตรวจสอบบันทึกเพื่อดูข้อความแสดงข้อผิดพลาด
|
||||
2. ลองรันด้วย `--print-logs` เพื่อดูเอาต์พุตในเทอร์มินัล
|
||||
3. ตรวจสอบให้แน่ใจว่าคุณมีเวอร์ชันล่าสุดด้วย `opencode upgrade`
|
||||
|
||||
---
|
||||
|
||||
### ปัญหาการรับรองความถูกต้อง
|
||||
|
||||
1. ลองตรวจสอบความถูกต้องอีกครั้งด้วยคำสั่ง `/connect` ใน TUI
|
||||
2. ตรวจสอบว่าคีย์ API ของคุณถูกต้อง
|
||||
3. ตรวจสอบให้แน่ใจว่าเครือข่ายของคุณอนุญาตการเชื่อมต่อกับ API ของผู้ให้บริการ
|
||||
|
||||
---
|
||||
|
||||
### ไม่มีรุ่น
|
||||
|
||||
1. ตรวจสอบว่าคุณได้รับการรับรองความถูกต้องกับผู้ให้บริการแล้ว
|
||||
2. ตรวจสอบชื่อรุ่นในการกำหนดค่าของคุณถูกต้อง
|
||||
3. บางรุ่นอาจต้องมีการเข้าถึงหรือสมัครสมาชิกโดยเฉพาะ
|
||||
|
||||
หากคุณพบ `ProviderModelNotFoundError` เป็นไปได้มากว่าคุณจะคิดผิด
|
||||
อ้างอิงแบบจำลองที่ไหนสักแห่ง
|
||||
ควรอ้างอิงโมเดลดังนี้: `<providerId>/<modelId>`
|
||||
|
||||
ตัวอย่าง:
|
||||
|
||||
- `openai/gpt-4.1`
|
||||
- `openrouter/google/gemini-2.5-flash`
|
||||
- `opencode/kimi-k2`
|
||||
|
||||
หากต้องการทราบว่าคุณมีสิทธิ์เข้าถึงรุ่นใด ให้เรียกใช้ `opencode models`
|
||||
|
||||
---
|
||||
|
||||
### ผู้ให้บริการInitError
|
||||
|
||||
หากคุณพบ ProviderInitError คุณอาจมีการกำหนดค่าที่ไม่ถูกต้องหรือเสียหาย
|
||||
|
||||
เพื่อแก้ไขปัญหานี้:
|
||||
|
||||
1. ขั้นแรก ตรวจสอบให้แน่ใจว่าผู้ให้บริการของคุณตั้งค่าอย่างถูกต้องโดยทำตาม [คู่มือผู้ให้บริการ](/docs/providers)
|
||||
2. หากปัญหายังคงอยู่ ให้ลองล้างการกำหนดค่าที่เก็บไว้:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.local/share/opencode
|
||||
```
|
||||
|
||||
บน Windows กด `WIN+R` และลบ: `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
3. ตรวจสอบความถูกต้องอีกครั้งกับผู้ให้บริการของคุณโดยใช้คำสั่ง `/connect` ใน TUI
|
||||
|
||||
---
|
||||
|
||||
### ปัญหา AI_APICallError และแพ็คเกจผู้ให้บริการ
|
||||
|
||||
หากคุณพบข้อผิดพลาดในการโทร API อาจเนื่องมาจากแพ็คเกจผู้ให้บริการที่ล้าสมัย opencode จะติดตั้งแพ็คเกจของผู้ให้บริการแบบไดนามิก (OpenAI, Anthropic, Google ฯลฯ) ตามความจำเป็น และแคชไว้ในเครื่อง
|
||||
|
||||
ในการแก้ไขปัญหาแพ็คเกจผู้ให้บริการ:
|
||||
|
||||
1. ล้างแคชแพ็คเกจผู้ให้บริการ:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.cache/opencode
|
||||
```
|
||||
|
||||
บน Windows กด `WIN+R` และลบ: `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
2. รีสตาร์ท opencode เพื่อติดตั้งแพ็คเกจผู้ให้บริการล่าสุดอีกครั้ง
|
||||
|
||||
การดำเนินการนี้จะบังคับให้ opencode ดาวน์โหลดแพ็คเกจผู้ให้บริการเวอร์ชันล่าสุด ซึ่งมักจะแก้ไขปัญหาความเข้ากันได้กับพารามิเตอร์โมเดลและการเปลี่ยนแปลง API
|
||||
|
||||
---
|
||||
|
||||
### Copy/paste ไม่ทำงานบน Linux
|
||||
|
||||
ผู้ใช้ Linux จำเป็นต้องติดตั้งยูทิลิตี้คลิปบอร์ดตัวใดตัวหนึ่งต่อไปนี้เพื่อให้ฟังก์ชัน copy/paste ทำงาน:
|
||||
|
||||
**สำหรับระบบ X11:**
|
||||
|
||||
```bash
|
||||
apt install -y xclip
|
||||
# or
|
||||
apt install -y xsel
|
||||
```
|
||||
|
||||
**สำหรับระบบ Wayland:**
|
||||
|
||||
```bash
|
||||
apt install -y wl-clipboard
|
||||
```
|
||||
|
||||
**สำหรับสภาพแวดล้อมที่ไม่มีหัว:**
|
||||
|
||||
```bash
|
||||
apt install -y xvfb
|
||||
# and run:
|
||||
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
|
||||
export DISPLAY=:99.0
|
||||
```
|
||||
|
||||
opencode จะตรวจพบว่าคุณใช้ Wayland และชอบ `wl-clipboard` หรือไม่เช่นนั้นจะพยายามค้นหาเครื่องมือคลิปบอร์ดตามลำดับ: `xclip` และ `xsel`
|
||||
390
packages/web/src/content/docs/th/tui.mdx
Normal file
390
packages/web/src/content/docs/th/tui.mdx
Normal file
@@ -0,0 +1,390 @@
|
||||
---
|
||||
title: TUI
|
||||
description: การใช้อินเทอร์เฟซผู้ใช้เทอร์มินัล OpenCode
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode มีอินเทอร์เฟซเทอร์มินัลแบบโต้ตอบหรือ TUI สำหรับการทำงานในโครงการของคุณด้วย LLM
|
||||
|
||||
การรัน OpenCode จะเริ่มต้น TUI สำหรับไดเร็กทอรีปัจจุบัน
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
หรือคุณสามารถเริ่มต้นสำหรับไดเร็กทอรีการทำงานเฉพาะได้
|
||||
|
||||
```bash
|
||||
opencode /path/to/project
|
||||
```
|
||||
|
||||
เมื่อคุณอยู่ใน TUI แล้ว คุณสามารถแจ้งด้วยข้อความได้
|
||||
|
||||
```text
|
||||
Give me a quick summary of the codebase.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## การอ้างอิงไฟล์
|
||||
|
||||
คุณสามารถอ้างอิงไฟล์ในข้อความของคุณโดยใช้ `@` นี่เป็นการค้นหาไฟล์ที่ไม่ชัดเจนในไดเร็กทอรีการทำงานปัจจุบัน
|
||||
|
||||
:::tip
|
||||
คุณยังสามารถใช้ `@` เพื่ออ้างอิงไฟล์ในข้อความของคุณได้
|
||||
:::
|
||||
|
||||
```text "@packages/functions/src/api/index.ts"
|
||||
How is auth handled in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
เนื้อหาของไฟล์จะถูกเพิ่มในการสนทนาโดยอัตโนมัติ
|
||||
|
||||
---
|
||||
|
||||
## คำสั่งทุบตี
|
||||
|
||||
เริ่มข้อความด้วย `!` เพื่อรันคำสั่งเชลล์
|
||||
|
||||
```bash frame="none"
|
||||
!ls -la
|
||||
```
|
||||
|
||||
ผลลัพธ์ของคำสั่งจะถูกเพิ่มเข้าไปในการสนทนาซึ่งเป็นผลลัพธ์ของเครื่องมือ
|
||||
|
||||
---
|
||||
|
||||
## คำสั่ง
|
||||
|
||||
เมื่อใช้ OpenCode TUI คุณสามารถพิมพ์ `/` ตามด้วยชื่อคำสั่งเพื่อดำเนินการอย่างรวดเร็ว ตัวอย่างเช่น:
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
คำสั่งส่วนใหญ่ยังมีการผูกคีย์โดยใช้ `ctrl+x` เป็นคีย์ผู้นำ โดยที่ `ctrl+x` เป็นคีย์ผู้นำเริ่มต้น [เรียนรู้เพิ่มเติม](/docs/keybinds)
|
||||
|
||||
นี่คือคำสั่งสแลชที่ใช้ได้ทั้งหมด:
|
||||
|
||||
---
|
||||
|
||||
### connect
|
||||
|
||||
เพิ่มผู้ให้บริการให้กับ OpenCode ให้คุณเลือกจากผู้ให้บริการที่มีอยู่และเพิ่มคีย์ API
|
||||
|
||||
```bash frame="none"
|
||||
/connect
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### compact
|
||||
|
||||
กระชับเซสชันปัจจุบัน _นามแฝง_: `/summarize`
|
||||
|
||||
```bash frame="none"
|
||||
/compact
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x c`
|
||||
|
||||
---
|
||||
|
||||
### details
|
||||
|
||||
สลับรายละเอียดการดำเนินการของเครื่องมือ
|
||||
|
||||
```bash frame="none"
|
||||
/details
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x d`
|
||||
|
||||
---
|
||||
|
||||
### editor
|
||||
|
||||
เปิดตัวแก้ไขภายนอกเพื่อเขียนข้อความ ใช้ตัวแก้ไขที่ตั้งค่าไว้ในตัวแปรสภาพแวดล้อม `EDITOR` ของคุณ [เรียนรู้เพิ่มเติม](#editor-setup)
|
||||
|
||||
```bash frame="none"
|
||||
/editor
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x e`
|
||||
|
||||
---
|
||||
|
||||
### exit
|
||||
|
||||
ออกจาก OpenCode _นามแฝง_: `/quit`, `/q`
|
||||
|
||||
```bash frame="none"
|
||||
/exit
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x q`
|
||||
|
||||
---
|
||||
|
||||
### export
|
||||
|
||||
ส่งออกการสนทนาปัจจุบันไปยัง Markdown และเปิดในตัวแก้ไขเริ่มต้นของคุณ ใช้ตัวแก้ไขที่ตั้งค่าไว้ในตัวแปรสภาพแวดล้อม `EDITOR` ของคุณ [เรียนรู้เพิ่มเติม](#editor-setup)
|
||||
|
||||
```bash frame="none"
|
||||
/export
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x x`
|
||||
|
||||
---
|
||||
|
||||
### help
|
||||
|
||||
แสดงกล่องโต้ตอบความช่วยเหลือ
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x h`
|
||||
|
||||
---
|
||||
|
||||
### init
|
||||
|
||||
สร้างหรืออัปเดตไฟล์ `AGENTS.md` [เรียนรู้เพิ่มเติม](/docs/rules)
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x i`
|
||||
|
||||
---
|
||||
|
||||
### models
|
||||
|
||||
รายการรุ่นที่มีจำหน่าย
|
||||
|
||||
```bash frame="none"
|
||||
/models
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x m`
|
||||
|
||||
---
|
||||
|
||||
### new
|
||||
|
||||
เริ่มเซสชันใหม่ _นามแฝง_: `/clear`
|
||||
|
||||
```bash frame="none"
|
||||
/new
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x n`
|
||||
|
||||
---
|
||||
|
||||
### redo
|
||||
|
||||
ทำซ้ำข้อความที่เลิกทำก่อนหน้านี้ ใช้ได้หลังจากใช้ `/undo` เท่านั้น
|
||||
|
||||
:::tip
|
||||
การเปลี่ยนแปลงไฟล์ใดๆ จะถูกกู้คืนด้วย
|
||||
:::
|
||||
|
||||
ภายในจะใช้ Git เพื่อจัดการการเปลี่ยนแปลงไฟล์ ดังนั้นโครงการของคุณ **จำเป็นต้อง
|
||||
เป็นที่เก็บ Git**
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x r`
|
||||
|
||||
---
|
||||
|
||||
### sessions
|
||||
|
||||
รายการและสลับระหว่างเซสชัน _นามแฝง_: `/resume`, `/continue`
|
||||
|
||||
```bash frame="none"
|
||||
/sessions
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x l`
|
||||
|
||||
---
|
||||
|
||||
### share
|
||||
|
||||
แบ่งปันเซสชั่นปัจจุบัน [เรียนรู้เพิ่มเติม](/docs/share)
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x s`
|
||||
|
||||
---
|
||||
|
||||
### themes
|
||||
|
||||
แสดงรายการธีมที่มีอยู่
|
||||
|
||||
```bash frame="none"
|
||||
/theme
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x t`
|
||||
|
||||
---
|
||||
|
||||
### thinking
|
||||
|
||||
สลับการเปิดเผยการบล็อก thinking/reasoning ในการสนทนา เมื่อเปิดใช้งาน คุณสามารถดูกระบวนการให้เหตุผลของแบบจำลองสำหรับแบบจำลองที่รองรับการคิดแบบขยาย
|
||||
|
||||
:::note
|
||||
คำสั่งนี้ควบคุมเฉพาะว่าบล็อกการคิด **แสดง** หรือไม่ โดยไม่ได้เปิดใช้งานหรือปิดใช้งานความสามารถในการให้เหตุผลของโมเดล หากต้องการสลับความสามารถในการให้เหตุผลตามจริง ให้ใช้ `ctrl+t` เพื่อหมุนเวียนไปตามตัวแปรโมเดล
|
||||
:::
|
||||
|
||||
```bash frame="none"
|
||||
/thinking
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### undo
|
||||
|
||||
เลิกทำข้อความสุดท้ายในการสนทนา ลบข้อความผู้ใช้ล่าสุด การตอบกลับที่ตามมาทั้งหมด และการเปลี่ยนแปลงไฟล์ใดๆ
|
||||
|
||||
:::tip
|
||||
การเปลี่ยนแปลงไฟล์ใดๆ ที่ทำจะถูกคืนค่าด้วย
|
||||
:::
|
||||
|
||||
ภายในจะใช้ Git เพื่อจัดการการเปลี่ยนแปลงไฟล์ ดังนั้นโครงการของคุณ **จำเป็นต้อง
|
||||
เป็นที่เก็บ Git**
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
**ผูกปุ่ม:** `ctrl+x u`
|
||||
|
||||
---
|
||||
|
||||
### unshare
|
||||
|
||||
ยกเลิกการแชร์เซสชันปัจจุบัน [เรียนรู้เพิ่มเติม](/docs/share#un-sharing)
|
||||
|
||||
```bash frame="none"
|
||||
/unshare
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## การตั้งค่าตัวแก้ไข
|
||||
|
||||
ทั้งคำสั่ง `/editor` และ `/export` ใช้ตัวแก้ไขที่ระบุในตัวแปรสภาพแวดล้อม `EDITOR` ของคุณ
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Linux/macOS">
|
||||
```bash
|
||||
# Example for nano or vim
|
||||
export EDITOR=nano
|
||||
export EDITOR=vim
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
export EDITOR="code --wait"
|
||||
```
|
||||
|
||||
หากต้องการทำให้เป็นแบบถาวร ให้เพิ่มสิ่งนี้ลงในโปรไฟล์เชลล์ของคุณ
|
||||
`~/.bashrc`, `~/.zshrc` ฯลฯ
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Windows (CMD)">
|
||||
```bash
|
||||
set EDITOR=notepad
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
set EDITOR=code --wait
|
||||
```
|
||||
|
||||
หากต้องการทำให้เป็นแบบถาวร ให้ใช้ **คุณสมบัติของระบบ** > **สภาพแวดล้อม
|
||||
ตัวแปร**.
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Windows (PowerShell)">
|
||||
```powershell
|
||||
$env:EDITOR = "notepad"
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
$env:EDITOR = "code --wait"
|
||||
```
|
||||
|
||||
หากต้องการทำให้เป็นแบบถาวร ให้เพิ่มสิ่งนี้ลงในโปรไฟล์ PowerShell ของคุณ
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
ตัวเลือกตัวแก้ไขยอดนิยม ได้แก่ :
|
||||
|
||||
- `code` - รหัส Visual Studio
|
||||
- `cursor` - เคอร์เซอร์
|
||||
- `windsurf` - วินด์เซิร์ฟ
|
||||
- `nvim` - บรรณาธิการ Neovim
|
||||
- `vim` - โปรแกรมแก้ไขเป็นกลุ่ม
|
||||
- `nano` - โปรแกรมแก้ไขนาโน
|
||||
- `notepad` - สมุดบันทึกของ Windows
|
||||
- `subl` - ข้อความประเสริฐ
|
||||
|
||||
:::note
|
||||
บรรณาธิการบางคนเช่น VS Code จำเป็นต้องเริ่มต้นด้วยแฟล็ก `--wait`
|
||||
:::
|
||||
|
||||
ผู้แก้ไขบางรายจำเป็นต้องมีอาร์กิวเมนต์บรรทัดคำสั่งเพื่อทำงานในโหมดการบล็อก แฟล็ก `--wait` ทำให้กระบวนการแก้ไขบล็อกจนกว่าจะปิด
|
||||
|
||||
---
|
||||
|
||||
## กำหนดค่า
|
||||
|
||||
คุณสามารถปรับแต่งพฤติกรรม TUI ผ่านไฟล์กำหนดค่า OpenCode ของคุณได้
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"tui": {
|
||||
"scroll_speed": 3,
|
||||
"scroll_acceleration": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### ตัวเลือก
|
||||
|
||||
- `scroll_acceleration` - เปิดใช้งานการเร่งความเร็วการเลื่อนแบบ macOS เพื่อการเลื่อนที่ราบรื่นและเป็นธรรมชาติ เมื่อเปิดใช้งาน ความเร็วในการเลื่อนจะเพิ่มขึ้นตามท่าทางการเลื่อนอย่างรวดเร็ว และคงความแม่นยำไว้สำหรับการเคลื่อนไหวที่ช้าลง **การตั้งค่านี้มีความสำคัญมากกว่า `scroll_speed` และแทนที่เมื่อเปิดใช้งาน**
|
||||
- `scroll_speed` - ควบคุมความเร็วของการเลื่อน TUI เมื่อใช้คำสั่งการเลื่อน (ขั้นต่ำ: `1`) ค่าเริ่มต้นเป็น `3` **หมายเหตุ: สิ่งนี้จะถูกละเว้นหากตั้งค่า `scroll_acceleration.enabled` เป็น `true`.**
|
||||
|
||||
---
|
||||
|
||||
## การปรับแต่ง
|
||||
|
||||
คุณสามารถปรับแต่งแง่มุมต่างๆ ของมุมมอง TUI ได้โดยใช้ชุดคำสั่ง (`ctrl+x h` หรือ `/help`) การตั้งค่าเหล่านี้ยังคงมีอยู่ตลอดการรีสตาร์ท
|
||||
|
||||
---
|
||||
|
||||
#### การแสดงชื่อผู้ใช้
|
||||
|
||||
สลับว่าจะให้ชื่อผู้ใช้ของคุณปรากฏในข้อความแชทหรือไม่ เข้าถึงสิ่งนี้ผ่าน:
|
||||
|
||||
- จานคำสั่ง: ค้นหา "ชื่อผู้ใช้" หรือ "ซ่อนชื่อผู้ใช้"
|
||||
- การตั้งค่าจะคงอยู่โดยอัตโนมัติและจะถูกจดจำตลอดเซสชัน TUI
|
||||
142
packages/web/src/content/docs/th/web.mdx
Normal file
142
packages/web/src/content/docs/th/web.mdx
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
title: เว็บ
|
||||
description: การใช้ OpenCode ในเบราว์เซอร์ของคุณ
|
||||
---
|
||||
|
||||
OpenCode สามารถทำงานเป็นเว็บแอปพลิเคชันในเบราว์เซอร์ของคุณได้ โดยมอบประสบการณ์การเขียนโค้ด AI อันทรงพลังแบบเดียวกันโดยไม่ต้องใช้เทอร์มินัล
|
||||
|
||||

|
||||
|
||||
## เริ่มต้นใช้งาน
|
||||
|
||||
เริ่มเว็บอินเตอร์เฟสด้วยการรัน:
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
สิ่งนี้จะเริ่มต้นเซิร์ฟเวอร์ท้องถิ่นบน `127.0.0.1` ด้วยพอร์ตที่มีอยู่แบบสุ่มและเปิด OpenCode โดยอัตโนมัติในเบราว์เซอร์เริ่มต้นของคุณ
|
||||
|
||||
:::caution
|
||||
หากไม่ได้ตั้งค่า `OPENCODE_SERVER_PASSWORD` เซิร์ฟเวอร์จะไม่ปลอดภัย นี่เป็นเรื่องปกติสำหรับการใช้งานภายในเครื่อง แต่ควรตั้งค่าสำหรับการเข้าถึงเครือข่าย
|
||||
:::
|
||||
|
||||
:::tip[ผู้ใช้วินโดวส์]
|
||||
เพื่อประสบการณ์ที่ดีที่สุด ให้เรียกใช้ `opencode web` จาก [WSL](/docs/windows-wsl) แทนที่จะเป็น PowerShell สิ่งนี้ทำให้มั่นใจได้ถึงการเข้าถึงระบบไฟล์ที่เหมาะสมและการรวมเทอร์มินัล
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## การกำหนดค่า
|
||||
|
||||
คุณสามารถกำหนดค่าเว็บเซิร์ฟเวอร์ได้โดยใช้แฟล็กบรรทัดคำสั่งหรือใน [ไฟล์กำหนดค่า](/docs/config)
|
||||
|
||||
### ท่าเรือ
|
||||
|
||||
ตามค่าเริ่มต้น OpenCode จะเลือกพอร์ตที่พร้อมใช้งาน คุณสามารถระบุพอร์ต:
|
||||
|
||||
```bash
|
||||
opencode web --port 4096
|
||||
```
|
||||
|
||||
### ชื่อโฮสต์
|
||||
|
||||
ตามค่าเริ่มต้น เซิร์ฟเวอร์จะเชื่อมโยงกับ `127.0.0.1` (เฉพาะโลคัลโฮสต์เท่านั้น) หากต้องการให้ OpenCode เข้าถึงได้บนเครือข่ายของคุณ:
|
||||
|
||||
```bash
|
||||
opencode web --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
เมื่อใช้ `0.0.0.0` OpenCode จะแสดงทั้งที่อยู่ในท้องถิ่นและเครือข่าย:
|
||||
|
||||
```
|
||||
Local access: http://localhost:4096
|
||||
Network access: http://192.168.1.100:4096
|
||||
```
|
||||
|
||||
### การค้นพบ mDNS
|
||||
|
||||
เปิดใช้งาน mDNS เพื่อให้เซิร์ฟเวอร์ของคุณค้นพบได้บนเครือข่ายท้องถิ่น:
|
||||
|
||||
```bash
|
||||
opencode web --mdns
|
||||
```
|
||||
|
||||
สิ่งนี้จะตั้งชื่อโฮสต์เป็น `0.0.0.0` โดยอัตโนมัติและโฆษณาเซิร์ฟเวอร์เป็น `opencode.local`
|
||||
|
||||
คุณสามารถปรับแต่งชื่อโดเมน mDNS เพื่อเรียกใช้หลายอินสแตนซ์บนเครือข่ายเดียวกันได้:
|
||||
|
||||
```bash
|
||||
opencode web --mdns --mdns-domain myproject.local
|
||||
```
|
||||
|
||||
### CORS
|
||||
|
||||
หากต้องการอนุญาตโดเมนเพิ่มเติมสำหรับ CORS (มีประโยชน์สำหรับส่วนหน้าที่กำหนดเอง):
|
||||
|
||||
```bash
|
||||
opencode web --cors https://example.com
|
||||
```
|
||||
|
||||
### การรับรองความถูกต้อง
|
||||
|
||||
เพื่อป้องกันการเข้าถึง ให้ตั้งรหัสผ่านโดยใช้ตัวแปรสภาพแวดล้อม `OPENCODE_SERVER_PASSWORD`:
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=secret opencode web
|
||||
```
|
||||
|
||||
ชื่อผู้ใช้มีค่าเริ่มต้นเป็น `opencode` แต่สามารถเปลี่ยนได้ด้วย `OPENCODE_SERVER_USERNAME`
|
||||
|
||||
---
|
||||
|
||||
## การใช้เว็บอินเตอร์เฟส
|
||||
|
||||
เมื่อเริ่มต้นแล้ว เว็บอินเตอร์เฟสจะให้สิทธิ์การเข้าถึงเซสชัน OpenCode ของคุณ
|
||||
|
||||
### เซสชัน
|
||||
|
||||
ดูและจัดการเซสชันของคุณจากหน้าแรก คุณสามารถดูเซสชันที่ใช้งานอยู่และเริ่มต้นเซสชันใหม่ได้
|
||||
|
||||

|
||||
|
||||
### สถานะเซิร์ฟเวอร์
|
||||
|
||||
คลิก "ดูเซิร์ฟเวอร์" เพื่อดูเซิร์ฟเวอร์ที่เชื่อมต่อและสถานะ
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## การต่อเทอร์มินัล
|
||||
|
||||
คุณสามารถแนบเทอร์มินัล TUI กับเว็บเซิร์ฟเวอร์ที่ทำงานอยู่:
|
||||
|
||||
```bash
|
||||
# Start the web server
|
||||
opencode web --port 4096
|
||||
|
||||
# In another terminal, attach the TUI
|
||||
opencode attach http://localhost:4096
|
||||
```
|
||||
|
||||
ซึ่งจะทำให้คุณสามารถใช้ทั้งเว็บอินเทอร์เฟซและเทอร์มินัลพร้อมกัน โดยแชร์เซสชันและสถานะเดียวกัน
|
||||
|
||||
---
|
||||
|
||||
## ไฟล์กำหนดค่า
|
||||
|
||||
คุณยังสามารถกำหนดการตั้งค่าเซิร์ฟเวอร์ในไฟล์กำหนดค่า `opencode.json` ของคุณได้:
|
||||
|
||||
```json
|
||||
{
|
||||
"server": {
|
||||
"port": 4096,
|
||||
"hostname": "0.0.0.0",
|
||||
"mdns": true,
|
||||
"cors": ["https://example.com"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
ธงบรรทัดคำสั่งมีความสำคัญเหนือกว่าการตั้งค่าไฟล์กำหนดค่า
|
||||
113
packages/web/src/content/docs/th/windows-wsl.mdx
Normal file
113
packages/web/src/content/docs/th/windows-wsl.mdx
Normal file
@@ -0,0 +1,113 @@
|
||||
---
|
||||
title: Windows (WSL)
|
||||
description: ใช้ OpenCode บน Windows ผ่าน WSL ให้ลื่นที่สุด
|
||||
---
|
||||
|
||||
import { Steps } from "@astrojs/starlight/components"
|
||||
|
||||
แม้ว่า OpenCode จะรันบน Windows ได้โดยตรง แต่เราแนะนำให้ใช้ [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) เพื่อประสบการณ์ที่ดีที่สุด WSL ให้สภาพแวดล้อม Linux ที่ทำงานร่วมกับฟีเจอร์ของ OpenCode ได้อย่างราบรื่น
|
||||
|
||||
:::tip[ทำไมต้องใช้ WSL?]
|
||||
WSL ให้ประสิทธิภาพระบบไฟล์ที่ดีกว่า รองรับเทอร์มินัลได้เต็มรูปแบบ และเข้ากันได้กับเครื่องมือพัฒนาที่ OpenCode ใช้งาน
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## การตั้งค่า
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **ติดตั้ง WSL**
|
||||
|
||||
ถ้ายังไม่ได้ติดตั้ง ให้ทำตามคู่มือทางการของ Microsoft เพื่อ [ติดตั้ง WSL](https://learn.microsoft.com/en-us/windows/wsl/install)
|
||||
|
||||
2. **ติดตั้ง OpenCode ใน WSL**
|
||||
|
||||
เมื่อตั้งค่า WSL เสร็จแล้ว ให้เปิดเทอร์มินัล WSL และติดตั้ง OpenCode ด้วย [วิธีติดตั้ง](/docs/) แบบใดแบบหนึ่ง
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
```
|
||||
|
||||
3. **ใช้งาน OpenCode จาก WSL**
|
||||
|
||||
ไปที่ไดเรกทอรีโปรเจกต์ของคุณ (เข้าถึงไฟล์ Windows ผ่าน `/mnt/c/`, `/mnt/d/` เป็นต้น) แล้วรัน OpenCode
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/YourName/project
|
||||
opencode
|
||||
```
|
||||
|
||||
</Steps>
|
||||
|
||||
---
|
||||
|
||||
## เดสก์ท็อปแอป + เซิร์ฟเวอร์บน WSL
|
||||
|
||||
ถ้าคุณต้องการใช้ OpenCode Desktop แต่ให้เซิร์ฟเวอร์ทำงานบน WSL:
|
||||
|
||||
1. **เริ่มเซิร์ฟเวอร์ใน WSL** โดยใช้ `--hostname 0.0.0.0` เพื่อให้เชื่อมต่อจากภายนอกได้:
|
||||
|
||||
```bash
|
||||
opencode serve --hostname 0.0.0.0 --port 4096
|
||||
```
|
||||
|
||||
2. **เชื่อมต่อเดสก์ท็อปแอป** ไปที่ `http://localhost:4096`
|
||||
|
||||
:::note
|
||||
ถ้า `localhost` ใช้งานไม่ได้ในสภาพแวดล้อมของคุณ ให้ใช้ IP ของ WSL แทน (จาก WSL: `hostname -I`) แล้วเชื่อมต่อที่ `http://<wsl-ip>:4096`
|
||||
:::
|
||||
|
||||
:::caution
|
||||
เมื่อใช้ `--hostname 0.0.0.0` ให้ตั้งค่า `OPENCODE_SERVER_PASSWORD` เพื่อป้องกันเซิร์ฟเวอร์
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## เว็บไคลเอนต์ + WSL
|
||||
|
||||
เพื่อประสบการณ์เว็บที่ดีที่สุดบน Windows:
|
||||
|
||||
1. **รัน `opencode web` ในเทอร์มินัล WSL** แทน PowerShell:
|
||||
|
||||
```bash
|
||||
opencode web --hostname 0.0.0.0
|
||||
```
|
||||
|
||||
2. **เข้าจากเบราว์เซอร์บน Windows** ที่ `http://localhost:<port>` (OpenCode จะแสดง URL ให้)
|
||||
|
||||
การรัน `opencode web` จาก WSL ช่วยให้เข้าถึงระบบไฟล์และใช้งานเทอร์มินัลได้ถูกต้อง พร้อมเปิดใช้งานผ่านเบราว์เซอร์ Windows ได้เหมือนเดิม
|
||||
|
||||
---
|
||||
|
||||
## การเข้าถึงไฟล์ Windows
|
||||
|
||||
WSL สามารถเข้าถึงไฟล์ Windows ทั้งหมดของคุณได้ผ่านไดเรกทอรี `/mnt/`:
|
||||
|
||||
- `C:` drive → `/mnt/c/`
|
||||
- `D:` drive → `/mnt/d/`
|
||||
- ไดรฟ์อื่นก็ใช้รูปแบบเดียวกัน
|
||||
|
||||
ตัวอย่าง:
|
||||
|
||||
```bash
|
||||
cd /mnt/c/Users/YourName/Documents/project
|
||||
opencode
|
||||
```
|
||||
|
||||
:::tip
|
||||
เพื่อให้ใช้งานได้ลื่นที่สุด แนะนำให้โคลนหรือคัดลอกรีโปไปไว้ในไฟล์ซิสเต็มของ WSL (เช่น `~/code/`) แล้วรัน OpenCode จากที่นั่น
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## เคล็ดลับ
|
||||
|
||||
- แม้โปรเจกต์จะอยู่บนไดรฟ์ Windows ก็ควรรัน OpenCode ใน WSL เพื่อการเข้าถึงไฟล์ที่ลื่นกว่า
|
||||
- ใช้ OpenCode ควบคู่กับ [WSL extension ของ VS Code](https://code.visualstudio.com/docs/remote/wsl) เพื่อเวิร์กโฟลว์ที่ต่อเนื่อง
|
||||
- การตั้งค่าและเซสชันของ OpenCode จะถูกเก็บในสภาพแวดล้อม WSL ที่ `~/.local/share/opencode/`
|
||||
254
packages/web/src/content/docs/th/zen.mdx
Normal file
254
packages/web/src/content/docs/th/zen.mdx
Normal file
@@ -0,0 +1,254 @@
|
||||
---
|
||||
title: เซน
|
||||
description: รายการโมเดลที่คัดสรรโดย OpenCode
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Zen คือรายการโมเดลที่ได้รับการทดสอบและตรวจสอบแล้วโดยทีมงาน OpenCode
|
||||
|
||||
:::note
|
||||
OpenCode Zen ปัจจุบันอยู่ในช่วงเบต้า
|
||||
:::
|
||||
|
||||
Zen ทำงานเหมือนกับผู้ให้บริการรายอื่นๆ ใน OpenCode คุณเข้าสู่ระบบ OpenCode Zen และรับ
|
||||
รหัส API ของคุณ มันเป็น **ทางเลือกโดยสมบูรณ์** และคุณไม่จำเป็นต้องใช้มันเพื่อใช้งาน
|
||||
โอเพ่นโค้ด
|
||||
|
||||
---
|
||||
|
||||
## พื้นหลัง
|
||||
|
||||
มีหลายรุ่นครับ แต่มีเพียงไม่กี่รุ่นเท่านั้น
|
||||
โมเดลเหล่านี้ทำงานได้ดีในฐานะตัวแทนการเข้ารหัส นอกจากนี้ผู้ให้บริการส่วนใหญ่ก็มี
|
||||
กำหนดค่าแตกต่างกันมาก ดังนั้นคุณจึงได้รับประสิทธิภาพและคุณภาพที่แตกต่างกันมาก
|
||||
|
||||
:::tip
|
||||
เราได้ทดสอบกลุ่มโมเดลและผู้ให้บริการที่เลือกซึ่งทำงานได้ดีกับ OpenCode
|
||||
:::
|
||||
|
||||
ดังนั้นหากคุณใช้โมเดลผ่าน OpenRouter คุณจะไม่มีวันเป็นเช่นนั้น
|
||||
แน่ใจว่าคุณได้รับรุ่นที่ดีที่สุดของรุ่นที่คุณต้องการหรือไม่
|
||||
|
||||
เพื่อแก้ไขปัญหานี้ เราได้ทำสองสิ่ง:
|
||||
|
||||
1. เราได้ทดสอบกลุ่มโมเดลที่ได้รับการคัดเลือกและพูดคุยกับทีมของพวกเขาเกี่ยวกับวิธีการ
|
||||
ดีที่สุดเรียกใช้พวกเขา
|
||||
2. จากนั้นเราทำงานร่วมกับผู้ให้บริการบางรายเพื่อให้แน่ใจว่าผู้ให้บริการเหล่านี้ได้รับบริการแล้ว
|
||||
อย่างถูกต้อง
|
||||
3. ในที่สุด เราก็เปรียบเทียบการรวมกันของ model/provider และได้ผลลัพธ์ออกมา
|
||||
กับรายการที่เรารู้สึกดีมาแนะนำ
|
||||
|
||||
OpenCode Zen เป็นเกตเวย์ AI ที่ให้คุณเข้าถึงโมเดลเหล่านี้
|
||||
|
||||
---
|
||||
|
||||
## มันทำงานอย่างไร
|
||||
|
||||
OpenCode Zen ทำงานเหมือนกับผู้ให้บริการรายอื่นๆ ใน OpenCode
|
||||
|
||||
1. คุณลงชื่อเข้าใช้ **<a href={console}>OpenCode Zen</a>** เพิ่มการเรียกเก็บเงินของคุณ
|
||||
รายละเอียดและคัดลอกรหัส API ของคุณ
|
||||
2. คุณรันคำสั่ง `/connect` ใน TUI เลือก OpenCode Zen และวางคีย์ API ของคุณ
|
||||
3. เรียกใช้ `/models` ใน TUI เพื่อดูรายการรุ่นที่เราแนะนำ
|
||||
|
||||
คุณจะถูกเรียกเก็บเงินตามคำขอและคุณสามารถเพิ่มเครดิตให้กับบัญชีของคุณได้
|
||||
|
||||
---
|
||||
|
||||
## จุดสิ้นสุด
|
||||
|
||||
คุณยังสามารถเข้าถึงโมเดลของเราผ่านทางจุดสิ้นสุด API ต่อไปนี้
|
||||
|
||||
| แบบอย่าง | รหัสรุ่น | จุดสิ้นสุด | แพ็คเกจ AI SDK |
|
||||
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
|
||||
| GPT 5.2 | GPT-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.2 โคเด็กซ์ | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 | GPT-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 โคเด็กซ์ | gpt-5.1-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 โคเด็กซ์สูงสุด | gpt-5.1-codex-สูงสุด | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 โคเด็กซ์มินิ | gpt-5.1-codex-mini.php | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 | GPT-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 โคเด็กซ์ | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5นาโน | gpt-5-นาโน | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| คล็อด ซอนเน็ต 4.5 | คลอด-โคลง-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| คลอดด์ ซอนเน็ต 4 | คลอด-โคลง-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| คล็อด ไฮกุ 4.5 | คลอดด์-ไฮกุ-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| คล็อด ไฮกุ 3.5 | คลอด-3-5-ไฮกุ | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| คลอดด์บทประพันธ์ 4.6 | คลอด-บทประพันธ์-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| คลอดด์บทประพันธ์ 4.5 | คลอด-บทประพันธ์-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| คลอดด์บทประพันธ์ 4.1 | คลอด-บทประพันธ์-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| เจมินี่ 3 โปร | ราศีเมถุน-3-โปร | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
|
||||
| ราศีเมถุน 3 แฟลช | ราศีเมถุน-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
|
||||
| มินิแม็กซ์ M2.1 | มินิแม็กซ์-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| MiniMax M2.1 ฟรี | minimax-m2.1-ฟรี | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.7 ฟรี | ปราศจาก glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| คิมิ K2.5 | คิมิ-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 ฟรี | คิมิ-k2.5-ฟรี | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| คิมิ K2 กำลังคิด | kimi-k2-คิด | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| คิมิ K2 | คิมิ-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| คิวเวน3 โคเดอร์ 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| บิ๊กดอง | ดองใหญ่ | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
|
||||
[model id](/docs/config/#models) ในการกำหนดค่า OpenCode ของคุณ
|
||||
ใช้รูปแบบ `opencode/<model-id>` ตัวอย่างเช่น สำหรับ GPT 5.2 Codex คุณจะต้อง
|
||||
ใช้ `opencode/gpt-5.2-codex` ในการกำหนดค่าของคุณ
|
||||
|
||||
---
|
||||
|
||||
### โมเดล
|
||||
|
||||
คุณสามารถดึงรายชื่อรุ่นที่มีจำหน่ายและข้อมูลเมตาทั้งหมดได้จาก:
|
||||
|
||||
```
|
||||
https://opencode.ai/zen/v1/models
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ราคา
|
||||
|
||||
เราสนับสนุนรูปแบบการจ่ายเงินตามการใช้งาน ด้านล่างนี้คือราคา **ต่อโทเค็น 1M**
|
||||
|
||||
| แบบอย่าง | ป้อนข้อมูล | เอาท์พุต | แคชอ่าน | เขียนในแคช |
|
||||
| --------------------------------- | ------ | ------ | ----------- | ------------ |
|
||||
| บิ๊กดอง | ฟรี | ฟรี | ฟรี | - |
|
||||
| MiniMax M2.1 ฟรี | ฟรี | ฟรี | ฟรี | - |
|
||||
| มินิแม็กซ์ M2.1 | $0.30 | $1.20 | $0.10 | - |
|
||||
| GLM 4.7 ฟรี | ฟรี | ฟรี | ฟรี | - |
|
||||
| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
|
||||
| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
|
||||
| Kimi K2.5 ฟรี | ฟรี | ฟรี | ฟรี | - |
|
||||
| คิมิ K2.5 | $0.60 | $3.00 | $0.08 | - |
|
||||
| คิมิ K2 กำลังคิด | $0.40 | $2.50 | - | - |
|
||||
| คิมิ K2 | $0.40 | $2.50 | - | - |
|
||||
| คิวเวน3 โคเดอร์ 480B | $0.45 | $1.50 | - | - |
|
||||
| Claude Sonnet 4.5 (โทเค็น ≤ 200K) | $3.00 | $15.00 | $0.30 | $3.75 |
|
||||
| Claude Sonnet 4.5 (> โทเค็น 200,000) | $6.00 | $22.50 | $0.60 | $7.50 |
|
||||
| Claude Sonnet 4 (โทเค็น 200,000 โทเค็น) | $3.00 | $15.00 | $0.30 | $3.75 |
|
||||
| Claude Sonnet 4 (> โทเค็น 200,000) | $6.00 | $22.50 | $0.60 | $7.50 |
|
||||
| คล็อด ไฮกุ 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
|
||||
| คล็อด ไฮกุ 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
|
||||
| Claude Opus 4.6 (โทเค็น ≤ 200K) | $5.00 | $25.00 | $0.50 | $6.25 |
|
||||
| Claude Opus 4.6 (> โทเค็น 200,000) | $10.00 | $37.50 | $1.00 | $12.50 |
|
||||
| คลอดด์บทประพันธ์ 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
|
||||
| คลอดด์บทประพันธ์ 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
|
||||
| Gemini 3 Pro (โทเค็น ≤ 200,000) | 2.00 ดอลลาร์ | $12.00 | $0.20 | - |
|
||||
| Gemini 3 Pro (โทเค็น> 200,000) | $4.00 | $18.00 | $0.40 | - |
|
||||
| ราศีเมถุน 3 แฟลช | $0.50 | $3.00 | $0.05 | - |
|
||||
| GPT 5.2 | $1.75 | $14.00 | 0.175 ดอลลาร์ | - |
|
||||
| GPT 5.2 โคเด็กซ์ | $1.75 | $14.00 | 0.175 ดอลลาร์ | - |
|
||||
| GPT 5.1 | $1.07 | 8.50 ดอลลาร์ | $0.107 | - |
|
||||
| GPT 5.1 โคเด็กซ์ | $1.07 | 8.50 ดอลลาร์ | $0.107 | - |
|
||||
| GPT 5.1 โคเด็กซ์สูงสุด | $1.25 | $10.00 | $0.125 | - |
|
||||
| GPT 5.1 โคเด็กซ์มินิ | $0.25 | 2.00 ดอลลาร์ | 0.025 ดอลลาร์ | - |
|
||||
| GPT 5 | $1.07 | 8.50 ดอลลาร์ | $0.107 | - |
|
||||
| GPT 5 โคเด็กซ์ | $1.07 | 8.50 ดอลลาร์ | $0.107 | - |
|
||||
| GPT 5นาโน | ฟรี | ฟรี | ฟรี | - |
|
||||
|
||||
คุณอาจสังเกตเห็น _Claude Haiku 3.5_ ในประวัติการใช้งานของคุณ นี่คือ [โมเดลราคาประหยัด](/docs/config/#models) ที่ใช้ในการสร้างชื่อเซสชันของคุณ
|
||||
|
||||
:::note
|
||||
ค่าธรรมเนียมบัตรเครดิตจะถูกส่งต่อในราคาต้นทุน (4.4% + 0.30 ดอลลาร์สหรัฐฯ ต่อธุรกรรม) เราไม่คิดค่าใช้จ่ายใดๆ นอกเหนือจากนั้น
|
||||
:::
|
||||
|
||||
รุ่นฟรี:
|
||||
|
||||
- GLM 4.7 ใช้งานได้ฟรีบน OpenCode ในระยะเวลาจำกัด ทีมงานใช้เวลานี้เพื่อรวบรวมคำติชมและปรับปรุงโมเดล
|
||||
- Kimi K2.5 Free พร้อมใช้งานบน OpenCode ในระยะเวลาจำกัด ทีมงานใช้เวลานี้เพื่อรวบรวมคำติชมและปรับปรุงโมเดล
|
||||
- MiniMax M2.1 Free พร้อมใช้งานบน OpenCode ในระยะเวลาจำกัด ทีมงานใช้เวลานี้เพื่อรวบรวมคำติชมและปรับปรุงโมเดล
|
||||
- Big Pickle เป็นโมเดลล่องหนที่ให้บริการฟรีบน OpenCode ในระยะเวลาจำกัด ทีมงานใช้เวลานี้เพื่อรวบรวมคำติชมและปรับปรุงโมเดล
|
||||
|
||||
<a href={email}>Contact us</a> if you have any questions.
|
||||
|
||||
---
|
||||
|
||||
### โหลดซ้ำอัตโนมัติ
|
||||
|
||||
หากยอดคงเหลือของคุณต่ำกว่า $5 Zen จะโหลด $20 อีกครั้งโดยอัตโนมัติ
|
||||
|
||||
คุณสามารถเปลี่ยนจำนวนการโหลดอัตโนมัติได้ คุณยังสามารถปิดการโหลดอัตโนมัติทั้งหมดได้อีกด้วย
|
||||
|
||||
---
|
||||
|
||||
### ขีดจำกัดรายเดือน
|
||||
|
||||
คุณยังสามารถกำหนดขีดจำกัดการใช้งานรายเดือนสำหรับพื้นที่ทำงานทั้งหมดและสำหรับแต่ละรายการได้
|
||||
สมาชิกในทีมของคุณ
|
||||
|
||||
ตัวอย่างเช่น สมมติว่าคุณกำหนดขีดจำกัดการใช้งานรายเดือนไว้ที่ 20 ดอลลาร์ Zen จะไม่ใช้
|
||||
มากกว่า $20 ในหนึ่งเดือน แต่ถ้าคุณเปิดใช้งานการโหลดซ้ำอัตโนมัติ Zen อาจจะจบลง
|
||||
เรียกเก็บเงินคุณมากกว่า $20 หากยอดคงเหลือของคุณต่ำกว่า $5
|
||||
|
||||
---
|
||||
|
||||
## ความเป็นส่วนตัว
|
||||
|
||||
โมเดลทั้งหมดของเราโฮสต์ในสหรัฐอเมริกา ผู้ให้บริการของเราปฏิบัติตามนโยบายการเก็บรักษาเป็นศูนย์ และไม่ใช้ข้อมูลของคุณสำหรับการฝึกโมเดล โดยมีข้อยกเว้นต่อไปนี้:
|
||||
|
||||
- Big Pickle: ในช่วงระยะเวลาว่าง ข้อมูลที่รวบรวมอาจนำไปใช้ในการปรับปรุงโมเดลได้
|
||||
- GLM 4.7 ฟรี: ในช่วงระยะเวลาฟรี ข้อมูลที่รวบรวมอาจนำไปใช้ในการปรับปรุงโมเดล
|
||||
- Kimi K2.5 ฟรี: ในช่วงระยะเวลาฟรี ข้อมูลที่รวบรวมอาจนำไปใช้ในการปรับปรุงโมเดล
|
||||
- MiniMax M2.1 ฟรี: ในช่วงระยะเวลาฟรี ข้อมูลที่รวบรวมอาจนำไปใช้ในการปรับปรุงโมเดล
|
||||
- OpenAI API: คำขอจะถูกเก็บไว้เป็นเวลา 30 วันตาม [นโยบายข้อมูลของ OpenAI](https://platform.openai.com/docs/guides/your-data)
|
||||
- Anthropic API: คำขอจะถูกเก็บไว้เป็นเวลา 30 วันตาม [นโยบายข้อมูลของ Anthropic](https://docs.anthropic.com/en/docs/claude-code/data-usage)
|
||||
|
||||
---
|
||||
|
||||
## สำหรับทีม
|
||||
|
||||
Zen ยังใช้งานได้ดีกับทีมอีกด้วย คุณสามารถเชิญเพื่อนร่วมทีม กำหนดบทบาท ดูแลจัดการได้
|
||||
โมเดลที่ทีมของคุณใช้ และอื่นๆ
|
||||
|
||||
:::note
|
||||
ขณะนี้พื้นที่ทำงานให้บริการฟรีสำหรับทีมโดยเป็นส่วนหนึ่งของเวอร์ชันเบต้า
|
||||
:::
|
||||
|
||||
ขณะนี้การจัดการพื้นที่ทำงานของคุณให้บริการฟรีสำหรับทีมโดยเป็นส่วนหนึ่งของเวอร์ชันเบต้า เราจะเป็น
|
||||
แบ่งปันรายละเอียดเพิ่มเติมเกี่ยวกับราคาเร็ว ๆ นี้
|
||||
|
||||
---
|
||||
|
||||
### บทบาท
|
||||
|
||||
คุณสามารถเชิญเพื่อนร่วมทีมเข้ามาในพื้นที่ทำงานของคุณและมอบหมายบทบาทได้:
|
||||
|
||||
- **ผู้ดูแลระบบ**: จัดการโมเดล สมาชิก คีย์ API และการเรียกเก็บเงิน
|
||||
- **สมาชิก**: จัดการเฉพาะคีย์ API ของตนเองเท่านั้น
|
||||
|
||||
ผู้ดูแลระบบยังสามารถกำหนดวงเงินการใช้จ่ายรายเดือนสำหรับสมาชิกแต่ละคนเพื่อควบคุมค่าใช้จ่ายได้
|
||||
|
||||
---
|
||||
|
||||
### การเข้าถึงโมเดล
|
||||
|
||||
ผู้ดูแลระบบสามารถเปิดหรือปิดใช้งานโมเดลเฉพาะสำหรับพื้นที่ทำงานได้ คำขอที่ทำกับโมเดลที่ถูกปิดใช้งานจะส่งคืนข้อผิดพลาด
|
||||
|
||||
สิ่งนี้มีประโยชน์สำหรับกรณีที่คุณต้องการปิดการใช้งานโมเดลนั้น
|
||||
รวบรวมข้อมูล
|
||||
|
||||
---
|
||||
|
||||
### นำกุญแจมาเอง
|
||||
|
||||
คุณสามารถใช้ปุ่ม OpenAI หรือ Anthropic API ของคุณเองในขณะที่ยังเข้าถึงรุ่นอื่นๆ ใน Zen ได้
|
||||
|
||||
เมื่อคุณใช้คีย์ของคุณเอง โทเค็นจะถูกเรียกเก็บเงินโดยตรงจากผู้ให้บริการ ไม่ใช่โดย Zen
|
||||
|
||||
ตัวอย่างเช่น องค์กรของคุณอาจมีคีย์สำหรับ OpenAI หรือ Anthropic อยู่แล้ว
|
||||
และคุณต้องการใช้สิ่งนั้นแทนอันที่ Zen มอบให้
|
||||
|
||||
---
|
||||
|
||||
## เป้าหมาย
|
||||
|
||||
เราสร้าง OpenCode Zen เพื่อ:
|
||||
|
||||
1. **เกณฑ์มาตรฐาน** โมเดลที่ดีที่สุด/providers สำหรับตัวแทนการเข้ารหัส
|
||||
2. เข้าถึงตัวเลือก **คุณภาพสูงสุด** และไม่ดาวน์เกรดประสิทธิภาพหรือเปลี่ยนเส้นทางไปยังผู้ให้บริการที่ราคาถูกกว่า
|
||||
3. ส่งต่อ **ราคาที่ลดลง** โดยการขายในราคาต้นทุน ดังนั้นมาร์กอัปเพียงอย่างเดียวคือครอบคลุมค่าธรรมเนียมการดำเนินการของเรา
|
||||
4. **ไม่มีการล็อคอิน** โดยอนุญาตให้คุณใช้กับเอเจนต์การเขียนโค้ดอื่นๆ และให้คุณใช้ผู้ให้บริการรายอื่นกับ OpenCode ได้เช่นกัน
|
||||
Reference in New Issue
Block a user