| --- |
| 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? |
| ``` |
|
|
| เนื้อหาของไฟล์จะถูกเพิ่มในการสนทนาโดยอัตโนมัติ |
|
|
| --- |
| |
| |
|
|
| เริ่มข้อความด้วย `!` เพื่อรันคำสั่ง shell |
|
|
| ```bash frame="none" |
| !ls -la |
| ``` |
|
|
| ผลลัพธ์ของคำสั่งจะถูกเพิ่มเข้าไปในการสนทนาซึ่งเป็นผลลัพธ์ของเครื่องมือ |
|
|
| --- |
| |
| |
|
|
| เมื่อใช้ OpenCode TUI คุณสามารถพิมพ์ `/` ตามด้วยชื่อคำสั่งเพื่อดำเนินการอย่างรวดเร็ว ตัวอย่างเช่น: |
|
|
| ```bash frame="none" |
| /help |
| ``` |
|
|
| คำสั่งส่วนใหญ่ยังมีการผูกคีย์โดยใช้ `ctrl+x` เป็นคีย์ผู้นำ โดยที่ `ctrl+x` เป็นคีย์ผู้นำเริ่มต้น [เรียนรู้เพิ่มเติม](/docs/keybinds) |
|
|
| นี่คือคำสั่งสแลชที่ใช้ได้ทั้งหมด: |
|
|
| --- |
| |
| |
|
|
| เพิ่มผู้ให้บริการให้กับ OpenCode ให้คุณเลือกจากผู้ให้บริการที่มีอยู่และเพิ่มคีย์ API |
|
|
| ```bash frame="none" |
| /connect |
| ``` |
|
|
| --- |
| |
| |
|
|
| กระชับเซสชันปัจจุบัน _นามแฝง_: `/summarize` |
|
|
| ```bash frame="none" |
| /compact |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x c` |
|
|
| --- |
| |
| |
|
|
| สลับรายละเอียดการดำเนินการของเครื่องมือ |
|
|
| ```bash frame="none" |
| /details |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x d` |
|
|
| --- |
| |
| |
|
|
| เปิดตัวแก้ไขภายนอกเพื่อเขียนข้อความ ใช้ตัวแก้ไขที่ตั้งค่าไว้ในตัวแปรสภาพแวดล้อม `EDITOR` ของคุณ [เรียนรู้เพิ่มเติม](#editor-setup) |
|
|
| ```bash frame="none" |
| /editor |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x e` |
|
|
| --- |
| |
| |
|
|
| ออกจาก OpenCode _นามแฝง_: `/quit`, `/q` |
|
|
| ```bash frame="none" |
| /exit |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x q` |
|
|
| --- |
| |
| |
|
|
| ส่งออกการสนทนาปัจจุบันไปยัง Markdown และเปิดในตัวแก้ไขเริ่มต้นของคุณ ใช้ตัวแก้ไขที่ตั้งค่าไว้ในตัวแปรสภาพแวดล้อม `EDITOR` ของคุณ [เรียนรู้เพิ่มเติม](#editor-setup) |
|
|
| ```bash frame="none" |
| /export |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x x` |
|
|
| --- |
| |
| |
|
|
| แสดงกล่องโต้ตอบความช่วยเหลือ |
|
|
| ```bash frame="none" |
| /help |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x h` |
|
|
| --- |
| |
| |
|
|
| สร้างหรืออัปเดตไฟล์ `AGENTS.md` [เรียนรู้เพิ่มเติม](/docs/rules) |
|
|
| ```bash frame="none" |
| /init |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x i` |
|
|
| --- |
| |
| |
|
|
| รายการรุ่นที่มีจำหน่าย |
|
|
| ```bash frame="none" |
| /models |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x m` |
|
|
| --- |
| |
| |
|
|
| เริ่มเซสชันใหม่ _นามแฝง_: `/clear` |
|
|
| ```bash frame="none" |
| /new |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x n` |
|
|
| --- |
| |
| |
|
|
| ทำซ้ำข้อความที่เลิกทำก่อนหน้านี้ ใช้ได้หลังจากใช้ `/undo` เท่านั้น |
|
|
| :::tip |
| การเปลี่ยนแปลงไฟล์ใดๆ จะถูกกู้คืนด้วย |
| ::: |
|
|
| ภายในจะใช้ Git เพื่อจัดการการเปลี่ยนแปลงไฟล์ ดังนั้นโครงการของคุณ **จำเป็นต้อง |
| เป็นที่เก็บ Git** |
|
|
| ```bash frame="none" |
| /redo |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x r` |
|
|
| --- |
| |
| |
|
|
| รายการและสลับระหว่างเซสชัน _นามแฝง_: `/resume`, `/continue` |
|
|
| ```bash frame="none" |
| /sessions |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x l` |
|
|
| --- |
| |
| |
|
|
| แบ่งปันเซสชั่นปัจจุบัน [เรียนรู้เพิ่มเติม](/docs/share) |
|
|
| ```bash frame="none" |
| /share |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x s` |
|
|
| --- |
| |
| |
|
|
| แสดงรายการธีมที่มีอยู่ |
|
|
| ```bash frame="none" |
| /themes |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x t` |
|
|
| --- |
| |
| |
|
|
| สลับการเปิดเผยการบล็อก thinking/reasoning ในการสนทนา เมื่อเปิดใช้งาน คุณสามารถดูกระบวนการให้เหตุผลของแบบจำลองสำหรับแบบจำลองที่รองรับการคิดแบบขยาย |
|
|
| :::note |
| คำสั่งนี้ควบคุมเฉพาะว่าบล็อกการคิด **แสดง** หรือไม่ โดยไม่ได้เปิดใช้งานหรือปิดใช้งานความสามารถในการให้เหตุผลของโมเดล หากต้องการสลับความสามารถในการให้เหตุผลตามจริง ให้ใช้ `ctrl+t` เพื่อหมุนเวียนไปตามตัวแปรโมเดล |
| ::: |
|
|
| ```bash frame="none" |
| /thinking |
| ``` |
|
|
| --- |
| |
| |
|
|
| เลิกทำข้อความสุดท้ายในการสนทนา ลบข้อความผู้ใช้ล่าสุด การตอบกลับที่ตามมาทั้งหมด และการเปลี่ยนแปลงไฟล์ใดๆ |
|
|
| :::tip |
| การเปลี่ยนแปลงไฟล์ใดๆ ที่ทำจะถูกคืนค่าด้วย |
| ::: |
|
|
| ภายในจะใช้ Git เพื่อจัดการการเปลี่ยนแปลงไฟล์ ดังนั้นโครงการของคุณ **จำเป็นต้อง |
| เป็นที่เก็บ Git** |
|
|
| ```bash frame="none" |
| /undo |
| ``` |
|
|
| **ผูกปุ่ม:** `ctrl+x u` |
|
|
| --- |
| |
| |
|
|
| ยกเลิกการแชร์เซสชันปัจจุบัน [เรียนรู้เพิ่มเติม](/docs/share#un-sharing) |
|
|
| ```bash frame="none" |
| /unshare |
| ``` |
|
|
| --- |
| |
| |
|
|
| ทั้งคำสั่ง `/editor` และ `/export` ใช้ตัวแก้ไขที่ระบุในตัวแปรสภาพแวดล้อม `EDITOR` ของคุณ |
|
|
| <Tabs> |
| <TabItem label="Linux/macOS"> |
| ```bash |
| |
| export EDITOR=nano |
| export EDITOR=vim |
|
|
| |
| |
| export EDITOR="code --wait" |
| ``` |
|
|
| หากต้องการทำให้เป็นแบบถาวร ให้เพิ่มสิ่งนี้ลงในโปรไฟล์ shell ของคุณ |
| `~/.bashrc`, `~/.zshrc` ฯลฯ |
|
|
| </TabItem> |
|
|
| <TabItem label="Windows (CMD)"> |
| ```bash |
| set EDITOR=notepad |
|
|
| |
| |
| set EDITOR=code --wait |
| ``` |
|
|
| หากต้องการทำให้เป็นแบบถาวร ให้ใช้ **คุณสมบัติของระบบ** > **สภาพแวดล้อม |
| ตัวแปร**. |
|
|
| </TabItem> |
|
|
| <TabItem label="Windows (PowerShell)"> |
| ```powershell |
| $env:EDITOR = "notepad" |
|
|
| |
| |
| $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 ช่วยให้ 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 |
|
|