SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
0dbc9de verified
Raw
History Blame Contribute Delete
11.1 kB
---
title: TUI
description: OpenCode ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode๋Š” LLM๊ณผ ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€ํ™”ํ˜• ํ„ฐ๋ฏธ๋„ ์ธํ„ฐํŽ˜์ด์Šค(TUI)๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
OpenCode๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ TUI๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
```bash
opencode
```
๋˜๋Š” ํŠน์ • ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•ด ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
```bash
opencode /path/to/project
```
TUI์— ๋“ค์–ด๊ฐ€๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํ”„๋กฌํ”„ํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
```text
Give me a quick summary of the codebase.
```
---
## ํŒŒ์ผ ์ฐธ์กฐ
`@`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€์—์„œ ํŒŒ์ผ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํผ์ง€(fuzzy) ํŒŒ์ผ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
:::tip
`@`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€์—์„œ ํŒŒ์ผ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
:::
```text "@packages/functions/src/api/index.ts"
How is auth handled in @packages/functions/src/api/index.ts?
```
ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ์ž๋™์œผ๋กœ ๋Œ€ํ™”์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
---
## Bash ๋ช…๋ น
`!`๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ์…ธ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
```bash frame="none"
!ls -la
```
๋ช…๋ น์˜ ์ถœ๋ ฅ์€ ๋„๊ตฌ ๊ฒฐ๊ณผ๋กœ ๋Œ€ํ™”์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
---
## ๋ช…๋ น
OpenCode TUI๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ `/` ๋’ค์— ๋ช…๋ น ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์—ฌ ์ž‘์—…์„ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
```bash frame="none"
/help
```
๋Œ€๋ถ€๋ถ„์˜ ๋ช…๋ น์—๋Š” ๊ธฐ๋ณธ ๋ฆฌ๋” ํ‚ค์ธ `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
๋Œ€ํ™”์—์„œ ์ƒ๊ฐ/์ถ”๋ก  ๋ธ”๋ก์˜ ๊ฐ€์‹œ์„ฑ์„ ํ† ๊ธ€ํ•ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ™•์žฅ๋œ ์‚ฌ๊ณ ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋ธ์˜ ์ถ”๋ก  ๊ณผ์ •์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
:::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 setup
`/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 Code
- `cursor` - Cursor
- `windsurf` - Windsurf
- `nvim` - Neovim editor
- `vim` - Vim editor
- `nano` - Nano editor
- `notepad` - Windows Notepad
- `subl` - Sublime Text
:::note
VS Code์™€ ๊ฐ™์€ ์ผ๋ถ€ ํŽธ์ง‘๊ธฐ๋Š” `--wait` ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
:::
์ผ๋ถ€ ํŽธ์ง‘๊ธฐ๋Š” ์ฐจ๋‹จ ๋ชจ๋“œ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋ช…๋ น์ค„ ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. `--wait` ํ”Œ๋ž˜๊ทธ๋Š” ํŽธ์ง‘๊ธฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ซํž ๋•Œ๊นŒ์ง€ ์ฐจ๋‹จ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
---
## ๊ตฌ์„ฑ
`tui.json` (๋˜๋Š” `tui.jsonc`) ํŒŒ์ผ์„ ํ†ตํ•ด TUI ๋™์ž‘์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
```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`๋Š” ๋‚ด์žฅ ๊ธฐ๋ณธ๊ฐ’๊ณผ ๋ณ‘ํ•ฉ๋˜๋ฏ€๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๋‹จ์ถ•ํ‚ค๋งŒ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
### ์˜ต์…˜
- `theme` - UI ํ…Œ๋งˆ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. [๋” ์•Œ์•„๋ณด๊ธฐ](/docs/themes).
- `keybinds` - ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. [๋” ์•Œ์•„๋ณด๊ธฐ](/docs/keybinds).
- `leader_timeout` - leader key๋ฅผ ๋ˆ„๋ฅธ ๋’ค OpenCode๊ฐ€ ๋‹ค์Œ ํ‚ค ์ž…๋ ฅ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ `2000`์ž…๋‹ˆ๋‹ค.
- `scroll_acceleration.enabled` - ๋ถ€๋“œ๋Ÿฝ๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ์Šคํฌ๋กค์„ ์œ„ํ•ด macOS ์Šคํƒ€์ผ์˜ ์Šคํฌ๋กค ๊ฐ€์†์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋น ๋ฅธ ์Šคํฌ๋กค ์ œ์Šค์ฒ˜๋กœ ์Šคํฌ๋กค ์†๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ๋А๋ฆฐ ์›€์ง์ž„์—์„œ๋Š” ์ •๋ฐ€ํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. **์ด ์„ค์ •์€ `scroll_speed`๋ณด๋‹ค ์šฐ์„ ํ•˜๋ฉฐ ํ™œ์„ฑํ™” ์‹œ ์ด๋ฅผ ๋ฎ์–ด์”๋‹ˆ๋‹ค.**
- `scroll_speed` - ์Šคํฌ๋กค ๋ช…๋ น์„ ์‚ฌ์šฉํ•  ๋•Œ TUI ์Šคํฌ๋กค ์†๋„๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค (์ตœ์†Œ: `0.001`, ์†Œ์ˆ˜์  ๊ฐ’ ์ง€์›). ๊ธฐ๋ณธ๊ฐ’์€ `3`์ž…๋‹ˆ๋‹ค. **์ฐธ๊ณ : `scroll_acceleration.enabled`๊ฐ€ `true`๋กœ ์„ค์ •๋˜๋ฉด ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.**
- `diff_style` - diff ๋ Œ๋”๋ง ๋ฐฉ์‹์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. `"auto"`๋Š” ํ„ฐ๋ฏธ๋„ ๋„ˆ๋น„์— ์ ์‘ํ•˜๊ณ , `"stacked"`๋Š” ํ•ญ์ƒ ๋‹จ์ผ ์—ด ๋ ˆ์ด์•„์›ƒ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
- `mouse` - TUI์—์„œ ๋งˆ์šฐ์Šค ์บก์ฒ˜๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’: `true`). ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ„ฐ๋ฏธ๋„์˜ ๊ธฐ๋ณธ ๋งˆ์šฐ์Šค ์„ ํƒ/์Šคํฌ๋กค ๋™์ž‘์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
- `attention` - TUI ๋ฐ์Šคํฌํ†ฑ ์•Œ๋ฆผ๊ณผ ์‚ฌ์šด๋“œ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
`OPENCODE_TUI_CONFIG`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ TUI ์„ค์ • ๊ฒฝ๋กœ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
### Attention
Attention์„ ์‚ฌ์šฉํ•˜๋ฉด OpenCode๊ฐ€ ๋‹ต๋ณ€์„ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜, ๊ถŒํ•œ ์Šน์ธ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜, ์„ธ์…˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ฑฐ๋‚˜, ์„ธ์…˜์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ TUI๊ฐ€ ์‚ฌ์šด๋“œ์™€ ๋ฐ์Šคํฌํ†ฑ ์•Œ๋ฆผ์œผ๋กœ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. `attention.enabled`๋กœ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ œ๊ณต ์ด๋ฒคํŠธ๋Š” ๋ฐœ์ƒํ•  ๋•Œ ์‚ฌ์šด๋“œ๋ฅผ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์Šคํฌํ†ฑ ์•Œ๋ฆผ์€ ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ํฌ์ปค์Šค๊ฐ€ ์—†์„ ๋•Œ๋งŒ ์ „์†ก๋˜๋ฉฐ subagent ์ด๋ฒคํŠธ์—๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
- `enabled` - Attention์˜ ๋ชจ๋“  ์•Œ๋ฆผ๊ณผ ์‚ฌ์šด๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ `false`์ž…๋‹ˆ๋‹ค.
- `notifications` - Attention์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ TUI๊ฐ€ ํ„ฐ๋ฏธ๋„์„ ํ†ตํ•ด ๋ฐ์Šคํฌํ†ฑ ์•Œ๋ฆผ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ `true`์ž…๋‹ˆ๋‹ค.
- `sound` - Attention์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์•Œ๋ฆผ์Œ์„ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ `true`์ž…๋‹ˆ๋‹ค.
- `volume` - ์•Œ๋ฆผ์Œ์˜ ๊ธฐ๋ณธ ๋ณผ๋ฅจ์ด๋ฉฐ `0`๋ถ€ํ„ฐ `1`๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ `0.4`์ž…๋‹ˆ๋‹ค.
- `sound_pack` - ์‚ฌ์šฉํ•  sound pack ID์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ `opencode.default`์ž…๋‹ˆ๋‹ค.
- `sounds` - `default`, `question`, `permission`, `error`, `done` ๋˜๋Š” `subagent_done`์— ์‚ฌ์šฉํ•  ์‚ฌ์šฉ์ž ์ง€์ • ์‚ฌ์šด๋“œ ํŒŒ์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ, `file://` URL ๋˜๋Š” `tui.json` ๊ธฐ์ค€ ์ƒ๋Œ€ ๊ฒฝ๋กœ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
---
## ์‚ฌ์šฉ์ž ์ •์˜
๋ช…๋ น ํŒ”๋ ˆํŠธ(`ctrl+x h` ๋˜๋Š” `/help`)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TUI ๋ณด๊ธฐ์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •์€ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
---
#### ์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ‘œ์‹œ
์ฑ„ํŒ… ๋ฉ”์‹œ์ง€์— ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ† ๊ธ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ํ†ตํ•ด ์•ก์„ธ์Šค:
- ๋ช…๋ น ํŒ”๋ ˆํŠธ: "username" ๋˜๋Š” "hide username" ๊ฒ€์ƒ‰
- ์„ค์ •์€ ์ž๋™์œผ๋กœ ์œ ์ง€๋˜๋ฉฐ TUI ์„ธ์…˜ ๊ฐ„์— ๊ธฐ์–ต๋ฉ๋‹ˆ๋‹ค.