398 lines
8.2 KiB
Markdown
398 lines
8.2 KiB
Markdown
---
|
|
title: TUI
|
|
description: Usando a interface de usuário de terminal opencode.
|
|
---
|
|
|
|
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
|
|
|
O opencode fornece uma interface de terminal interativa ou TUI para trabalhar em seus projetos com um LLM.
|
|
|
|
Executar opencode inicia o TUI para o diretório atual.
|
|
|
|
```bash
|
|
opencode
|
|
```
|
|
|
|
Ou você pode iniciá-lo para um diretório de trabalho específico.
|
|
|
|
```bash
|
|
opencode /path/to/project
|
|
```
|
|
|
|
Uma vez que você esteja no TUI, você pode solicitar com uma mensagem.
|
|
|
|
```text
|
|
Faça um resumo rápido da base de código.
|
|
```
|
|
|
|
---
|
|
|
|
## Referências de arquivos
|
|
|
|
Você pode referenciar arquivos em suas mensagens usando `@`. Isso faz uma busca difusa de arquivos no diretório de trabalho atual.
|
|
|
|
:::tip
|
|
Você também pode usar `@` para referenciar arquivos em suas mensagens.
|
|
:::
|
|
|
|
```text "@packages/functions/src/api/index.ts"
|
|
Como a autenticação é tratada em @packages/functions/src/api/index.ts?
|
|
```
|
|
|
|
O conteúdo do arquivo é adicionado à conversa automaticamente.
|
|
|
|
---
|
|
|
|
## Comandos Bash
|
|
|
|
Comece uma mensagem com `!` para executar um comando de shell.
|
|
|
|
```bash frame="none"
|
|
!ls -la
|
|
```
|
|
|
|
A saída do comando é adicionada à conversa como um resultado de ferramenta.
|
|
|
|
---
|
|
|
|
## Comandos
|
|
|
|
Ao usar o TUI do opencode, você pode digitar `/` seguido pelo nome de um comando para executar ações rapidamente. Por exemplo:
|
|
|
|
```bash frame="none"
|
|
/help
|
|
```
|
|
|
|
A maioria dos comandos também possui atalhos usando `ctrl+x` como a tecla líder, onde `ctrl+x` é a tecla líder padrão. [Saiba mais](/docs/keybinds).
|
|
|
|
Aqui estão todos os comandos de barra disponíveis:
|
|
|
|
---
|
|
|
|
### connect
|
|
|
|
Adicione um provedor ao opencode. Permite que você selecione entre os provedores disponíveis e adicione suas chaves de API.
|
|
|
|
```bash frame="none"
|
|
/connect
|
|
```
|
|
|
|
---
|
|
|
|
### compact
|
|
|
|
Compacte a sessão atual. _Alias_: `/summarize`
|
|
|
|
```bash frame="none"
|
|
/compact
|
|
```
|
|
|
|
**Atalho:** `ctrl+x c`
|
|
|
|
---
|
|
|
|
### details
|
|
|
|
Alternar detalhes da execução da ferramenta.
|
|
|
|
```bash frame="none"
|
|
/details
|
|
```
|
|
|
|
**Atalho:** `ctrl+x d`
|
|
|
|
---
|
|
|
|
### editor
|
|
|
|
Abra um editor externo para compor mensagens. Usa o editor definido na sua variável de ambiente `EDITOR`. [Saiba mais](#editor-setup).
|
|
|
|
```bash frame="none"
|
|
/editor
|
|
```
|
|
|
|
**Atalho:** `ctrl+x e`
|
|
|
|
---
|
|
|
|
### exit
|
|
|
|
Saia do opencode. _Aliases_: `/quit`, `/q`
|
|
|
|
```bash frame="none"
|
|
/exit
|
|
```
|
|
|
|
**Atalho:** `ctrl+x q`
|
|
|
|
---
|
|
|
|
### export
|
|
|
|
Exporte a conversa atual para Markdown e abra no seu editor padrão. Usa o editor definido na sua variável de ambiente `EDITOR`. [Saiba mais](#editor-setup).
|
|
|
|
```bash frame="none"
|
|
/export
|
|
```
|
|
|
|
**Atalho:** `ctrl+x x`
|
|
|
|
---
|
|
|
|
### help
|
|
|
|
Mostre o diálogo de ajuda.
|
|
|
|
```bash frame="none"
|
|
/help
|
|
```
|
|
|
|
**Atalho:** `ctrl+x h`
|
|
|
|
---
|
|
|
|
### init
|
|
|
|
Crie ou atualize o arquivo `AGENTS.md`. [Saiba mais](/docs/rules).
|
|
|
|
```bash frame="none"
|
|
/init
|
|
```
|
|
|
|
**Atalho:** `ctrl+x i`
|
|
|
|
---
|
|
|
|
### models
|
|
|
|
Liste os modelos disponíveis.
|
|
|
|
```bash frame="none"
|
|
/models
|
|
```
|
|
|
|
**Atalho:** `ctrl+x m`
|
|
|
|
---
|
|
|
|
### new
|
|
|
|
Inicie uma nova sessão. _Alias_: `/clear`
|
|
|
|
```bash frame="none"
|
|
/new
|
|
```
|
|
|
|
**Atalho:** `ctrl+x n`
|
|
|
|
---
|
|
|
|
### redo
|
|
|
|
Refaça uma mensagem anteriormente desfeita. Disponível apenas após usar `/undo`.
|
|
|
|
:::tip
|
|
Quaisquer alterações de arquivo também serão restauradas.
|
|
:::
|
|
|
|
Internamente, isso usa Git para gerenciar as alterações de arquivo. Portanto, seu projeto **precisa ser um repositório Git**.
|
|
|
|
```bash frame="none"
|
|
/redo
|
|
```
|
|
|
|
**Atalho:** `ctrl+x r`
|
|
|
|
---
|
|
|
|
### sessions
|
|
|
|
Liste e alterne entre sessões. _Aliases_: `/resume`, `/continue`
|
|
|
|
```bash frame="none"
|
|
/sessions
|
|
```
|
|
|
|
**Atalho:** `ctrl+x l`
|
|
|
|
---
|
|
|
|
### share
|
|
|
|
Compartilhe a sessão atual. [Saiba mais](/docs/share).
|
|
|
|
```bash frame="none"
|
|
/share
|
|
```
|
|
|
|
**Atalho:** `ctrl+x s`
|
|
|
|
---
|
|
|
|
### themes
|
|
|
|
Liste os temas disponíveis.
|
|
|
|
```bash frame="none"
|
|
/themes
|
|
```
|
|
|
|
**Atalho:** `ctrl+x t`
|
|
|
|
---
|
|
|
|
### thinking
|
|
|
|
Alternar a visibilidade dos blocos de pensamento/razão na conversa. Quando ativado, você pode ver o processo de raciocínio do modelo para modelos que suportam pensamento estendido.
|
|
|
|
:::note
|
|
Este comando apenas controla se os blocos de pensamento são **exibidos** - não ativa ou desativa as capacidades de raciocínio do modelo. Para alternar as capacidades reais de raciocínio, use `ctrl+t` para alternar entre variantes do modelo.
|
|
:::
|
|
|
|
```bash frame="none"
|
|
/thinking
|
|
```
|
|
|
|
---
|
|
|
|
### undo
|
|
|
|
Desfaça a última mensagem na conversa. Remove a mensagem mais recente do usuário, todas as respostas subsequentes e quaisquer alterações de arquivo.
|
|
|
|
:::tip
|
|
Quaisquer alterações de arquivo feitas também serão revertidas.
|
|
:::
|
|
|
|
Internamente, isso usa Git para gerenciar as alterações de arquivo. Portanto, seu projeto **precisa ser um repositório Git**.
|
|
|
|
```bash frame="none"
|
|
/undo
|
|
```
|
|
|
|
**Atalho:** `ctrl+x u`
|
|
|
|
---
|
|
|
|
### unshare
|
|
|
|
Descompartilhe a sessão atual. [Saiba mais](/docs/share#un-sharing).
|
|
|
|
```bash frame="none"
|
|
/unshare
|
|
```
|
|
|
|
---
|
|
|
|
## Configuração do Editor
|
|
|
|
Tanto os comandos `/editor` quanto `/export` usam o editor especificado na sua variável de ambiente `EDITOR`.
|
|
|
|
<Tabs>
|
|
<TabItem label="Linux/macOS">
|
|
```bash
|
|
# Exemplo para nano ou vim
|
|
export EDITOR=nano
|
|
export EDITOR=vim
|
|
|
|
# Para editores GUI, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
|
# inclua --wait
|
|
export EDITOR="code --wait"
|
|
```
|
|
|
|
Para torná-lo permanente, adicione isso ao seu perfil de shell;
|
|
`~/.bashrc`, `~/.zshrc`, etc.
|
|
|
|
</TabItem>
|
|
|
|
<TabItem label="Windows (CMD)">
|
|
```bash
|
|
set EDITOR=notepad
|
|
|
|
# Para editores GUI, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
|
# inclua --wait
|
|
set EDITOR=code --wait
|
|
```
|
|
|
|
Para torná-lo permanente, use **Propriedades do Sistema** > **Variáveis de Ambiente**.
|
|
|
|
</TabItem>
|
|
|
|
<TabItem label="Windows (PowerShell)">
|
|
```powershell
|
|
$env:EDITOR = "notepad"
|
|
|
|
# Para editores GUI, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
|
# inclua --wait
|
|
$env:EDITOR = "code --wait"
|
|
```
|
|
|
|
Para torná-lo permanente, adicione isso ao seu perfil do PowerShell.
|
|
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
As opções de editor populares incluem:
|
|
|
|
- `code` - VS Code
|
|
- `cursor` - Cursor
|
|
- `windsurf` - Windsurf
|
|
- `nvim` - Editor Neovim
|
|
- `vim` - Editor Vim
|
|
- `nano` - Editor Nano
|
|
- `notepad` - Bloco de Notas do Windows
|
|
- `subl` - Sublime Text
|
|
|
|
:::note
|
|
Alguns editores como o VS Code precisam ser iniciados com a flag `--wait`.
|
|
:::
|
|
|
|
Alguns editores precisam de argumentos de linha de comando para rodar em modo bloqueante. A flag `--wait` faz com que o processo do editor bloqueie até ser fechado.
|
|
|
|
---
|
|
|
|
## Configuração
|
|
|
|
Você pode personalizar o comportamento do TUI através de `tui.json` (ou `tui.jsonc`).
|
|
|
|
```json title="tui.json"
|
|
{
|
|
"$schema": "https://opencode.ai/tui.json",
|
|
"theme": "opencode",
|
|
"keybinds": {
|
|
"leader": "ctrl+x"
|
|
},
|
|
"scroll_speed": 3,
|
|
"scroll_acceleration": {
|
|
"enabled": true
|
|
},
|
|
"diff_style": "auto"
|
|
}
|
|
```
|
|
|
|
Isso é separado do `opencode.json`, que configura o comportamento do servidor/runtime.
|
|
|
|
### Opções
|
|
|
|
- `theme` - Define o tema da sua interface. [Saiba mais](/docs/themes).
|
|
- `keybinds` - Personaliza atalhos de teclado. [Saiba mais](/docs/keybinds).
|
|
- `scroll_acceleration.enabled` - Ative a aceleração de rolagem no estilo macOS para uma rolagem suave e natural. Quando ativado, a velocidade de rolagem aumenta com gestos de rolagem rápidos e permanece precisa para movimentos mais lentos. **Esta configuração tem precedência sobre `scroll_speed` e a substitui quando ativada.**
|
|
- `scroll_speed` - Controla quão rápido o TUI rola ao usar comandos de rolagem (mínimo: `0.001`, suporta valores decimais). O padrão é `3`. **Nota: Isso é ignorado se `scroll_acceleration.enabled` estiver definido como `true`.**
|
|
- `diff_style` - Controla a renderização de diffs. `"auto"` se adapta à largura do terminal, `"stacked"` sempre mostra um layout de coluna única.
|
|
|
|
Use `OPENCODE_TUI_CONFIG` para carregar um caminho de configuração TUI personalizado.
|
|
|
|
---
|
|
|
|
## Personalização
|
|
|
|
Você pode personalizar vários aspectos da visualização do TUI usando a paleta de comandos (`ctrl+x h` ou `/help`). Essas configurações persistem entre reinicializações.
|
|
|
|
---
|
|
|
|
#### Exibição do nome de usuário
|
|
|
|
Alternar se seu nome de usuário aparece nas mensagens de chat. Acesse isso através de:
|
|
|
|
- Paleta de comandos: Pesquise por "username" ou "hide username"
|
|
- A configuração persiste automaticamente e será lembrada entre as sessões do TUI
|