430 lines
18 KiB
Plaintext
430 lines
18 KiB
Plaintext
---
|
||
title: TUI
|
||
description: การใช้อินเทอร์เฟซผู้ใช้ terminal OpenCode
|
||
---
|
||
|
||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||
|
||
OpenCode มีอินเทอร์เฟซ terminal แบบโต้ตอบหรือ 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
|
||
|
||
เริ่มข้อความด้วย `!` เพื่อรันคำสั่ง shell
|
||
|
||
```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"
|
||
/themes
|
||
```
|
||
|
||
**ผูกปุ่ม:** `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"
|
||
```
|
||
|
||
หากต้องการทำให้เป็นแบบถาวร ให้เพิ่มสิ่งนี้ลงในโปรไฟล์ shell ของคุณ
|
||
`~/.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 ได้ผ่าน `tui.json` (หรือ `tui.jsonc`)
|
||
|
||
```json title="tui.json"
|
||
{
|
||
"$schema": "https://opencode.ai/tui.json",
|
||
"theme": "opencode",
|
||
"leader_timeout": 2000,
|
||
"keybinds": {
|
||
"leader": "ctrl+x",
|
||
"command_list": "ctrl+p"
|
||
},
|
||
"scroll_speed": 3,
|
||
"scroll_acceleration": {
|
||
"enabled": false
|
||
},
|
||
"diff_style": "auto",
|
||
"mouse": true,
|
||
"attention": {
|
||
"enabled": true,
|
||
"notifications": true,
|
||
"sound": true,
|
||
"volume": 0.4,
|
||
"sound_pack": "opencode.default",
|
||
"sounds": {
|
||
"error": "./sounds/error.mp3"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
สิ่งนี้แยกจาก `opencode.json` ซึ่งกำหนดค่าพฤติกรรมเซิร์ฟเวอร์/รันไทม์
|
||
|
||
`keybinds` จะถูกรวมกับค่าเริ่มต้นในตัว ดังนั้นคุณต้องกำหนดค่าเฉพาะ shortcut ที่ต้องการเปลี่ยนเท่านั้น
|
||
|
||
### ตัวเลือก
|
||
|
||
- `theme` - ตั้งค่าธีม UI ของคุณ [เรียนรู้เพิ่มเติม](/docs/themes)
|
||
- `keybinds` - ปรับแต่งแป้นพิมพ์ลัด [เรียนรู้เพิ่มเติม](/docs/keybinds)
|
||
- `leader_timeout` - ควบคุมระยะเวลาที่ OpenCode จะรอหลังจากกด leader key ค่าเริ่มต้นคือ `2000`
|
||
- `scroll_acceleration.enabled` - เปิดใช้งานการเร่งความเร็วการเลื่อนแบบ macOS เพื่อการเลื่อนที่ราบรื่นและเป็นธรรมชาติ เมื่อเปิดใช้งาน ความเร็วในการเลื่อนจะเพิ่มขึ้นตามท่าทางการเลื่อนอย่างรวดเร็ว และคงความแม่นยำไว้สำหรับการเคลื่อนไหวที่ช้าลง **การตั้งค่านี้มีความสำคัญมากกว่า `scroll_speed` และแทนที่เมื่อเปิดใช้งาน**
|
||
- `scroll_speed` - ควบคุมความเร็วของการเลื่อน TUI เมื่อใช้คำสั่งการเลื่อน (ขั้นต่ำ: `0.001` รองรับค่าทศนิยม) ค่าเริ่มต้นเป็น `3` **หมายเหตุ: สิ่งนี้จะถูกละเว้นหากตั้งค่า `scroll_acceleration.enabled` เป็น `true`.**
|
||
- `diff_style` - ควบคุมการเรนเดอร์ diff `"auto"` ปรับให้เข้ากับความกว้างของ terminal `"stacked"` จะแสดงคอลัมน์เดียวเสมอ
|
||
- `mouse` - เปิดหรือปิดการจับเมาส์ใน TUI (ค่าเริ่มต้น: `true`) เมื่อปิดใช้งาน terminal จะยังคงใช้พฤติกรรมการเลือกข้อความและเลื่อนด้วยเมาส์แบบเดิม
|
||
- `attention` - กำหนดค่า desktop notifications และ sounds ของ TUI ปิดใช้งานตามค่าเริ่มต้น
|
||
|
||
ใช้ `OPENCODE_TUI_CONFIG` เพื่อโหลดเส้นทางการกำหนดค่า TUI แบบกำหนดเอง
|
||
|
||
### Attention
|
||
|
||
Attention ช่วยให้ TUI แจ้งเตือนคุณเมื่อ OpenCode กำลังรอคำตอบ ต้องการการอนุมัติ permission พบ session error หรือ session เสร็จสิ้นแล้ว เปิดใช้งานด้วย `attention.enabled`; เหตุการณ์ในตัวจะเล่นเสียงเมื่อเกิดขึ้น Desktop notifications จะส่งเฉพาะเมื่อหน้าต่าง terminal ไม่ได้อยู่ในโฟกัส และจะไม่ใช้กับ subagent events
|
||
|
||
- `enabled` - เปิดใช้งาน notifications และ sounds ทั้งหมดของ Attention ค่าเริ่มต้นคือ `false`
|
||
- `notifications` - เมื่อเปิด Attention แล้ว อนุญาตให้ TUI ส่ง desktop notifications ผ่าน terminal ค่าเริ่มต้นคือ `true`
|
||
- `sound` - เมื่อเปิด Attention แล้ว อนุญาตให้เล่นเสียงแจ้งเตือน ค่าเริ่มต้นคือ `true`
|
||
- `volume` - ระดับเสียงแจ้งเตือนเริ่มต้นตั้งแต่ `0` ถึง `1` ค่าเริ่มต้นคือ `0.4`
|
||
- `sound_pack` - sound pack ID ที่จะใช้ ค่าเริ่มต้นคือ `opencode.default`
|
||
- `sounds` - กำหนด sound files แบบกำหนดเองสำหรับ `default`, `question`, `permission`, `error`, `done` หรือ `subagent_done` Paths สามารถเป็น absolute, `file://` URLs หรือ relative กับ `tui.json`
|
||
|
||
---
|
||
|
||
## การปรับแต่ง
|
||
|
||
คุณสามารถปรับแต่งแง่มุมต่างๆ ของมุมมอง TUI ได้โดยใช้ชุดคำสั่ง (`ctrl+x h` หรือ `/help`) การตั้งค่าเหล่านี้ยังคงมีอยู่ตลอดการรีสตาร์ท
|
||
|
||
---
|
||
|
||
#### การแสดงชื่อผู้ใช้
|
||
|
||
สลับว่าจะให้ชื่อผู้ใช้ของคุณปรากฏในข้อความแชทหรือไม่ เข้าถึงสิ่งนี้ผ่าน:
|
||
|
||
- Command Palette: ค้นหา "ชื่อผู้ใช้" หรือ "ซ่อนชื่อผู้ใช้"
|
||
- การตั้งค่าจะคงอยู่โดยอัตโนมัติและจะถูกจดจำตลอดเซสชัน TUI
|