---
title: "CLI 与 TUI"
description: "用终端操作 Carina — CLI 黄金路径与交互 TUI 表面。"
source: https://carina.nebutra.com/zh-cn/use/cli-tui/
---

# CLI 与 TUI

> 用终端操作 Carina — CLI 黄金路径与交互 TUI 表面。

CLI 与 TUI 共享同一 daemon、策略内核与审计链路（与 JSON-RPC 一致）。

## 黄金路径

    ```bash frame="none"
    carina doctor
    ```

    ```bash frame="none"
    cd /path/to/repo
    carina run "your task"
    # 或交互：
    carina
    ```
    `carina run` 在 `cwd` 创建 **safe-edit** 会话并等待任务完成（除非 `--background`）。
    裸 `carina` 打开交互 TUI，并在需要时 **自动启动** daemon。

    ```bash frame="none"
    carina sessions
    carina audit SESSION
    carina audit verify SESSION
    carina patch list SESSION
    ```

## 交互 TUI

在 TTY 下运行 `carina`。这是 **0.8** 线的主操作面。

### 可发现性

| 输入 | 行为 |
| --- | --- |
| `?` | 切换帮助面（与 `/help` 相同） |
| `/` | 打开 slash 命令面板（可输入过滤） |
| `Esc` | 关闭浮层 / 取消 |
| `Ctrl-C` | 中断当前 run（默认可重映射） |
| `Ctrl-O` | 展开被截断的工具输出（默认可重映射） |

页脚常显示帮助/命令提示，以及 **上下文压力**（`ctx%` / 估算）、**HITL** 审批状态、**队列深度**（有跟随时）。以页脚为准，勿死记键位。

### Slash 命令

注册于 TUI（`crates/carina-tui/src/command.rs`）。`/exit` 是 `/quit` 的别名。daemon 注册的 skill 会以动态 slash 出现（如 `/review`）。

| 命令 | 用途 |
| --- | --- |
| `/settings` | 打开设置 |
| `/status` | 运行时与会话状态 |
| `/context` | 上下文压力与压缩回执详情 |
| `/changes` | 审阅 patch 事务、文件、hunk 与回滚 |
| `/density` | 切换 Compact / Comfortable transcript 密度 |
| `/symbols` | 预览并选择终端符号 |
| `/provider` | 选择或配置 provider |
| `/model` | 选择模型 |
| `/plan` | 切换 plan 模式（退出可能需要受控审批） |
| `/build` | 切换到 build 模式 |
| `/sessions` | 浏览会话 |
| `/import` | 导入本地 Claude Code 或 Codex 会话 |
| `/resume` | 恢复会话 |
| `/cancel` | 取消当前 run（仅有活动 run 时可用） |
| `/queue` | 查看 / 丢弃 follow-up 执行队列 |
| `/minimal` | 屏幕模式：精简 chrome |
| `/fullscreen` | 屏幕模式：全屏审阅 |
| `/inline` | 屏幕模式：inline / 能力回退 |
| `/keymap` | 键位参考 |
| `/doctor` | 健康检查与恢复 UI |
| `/help` | 完整帮助面 |
| `/quit` | 退出（`/exit` 别名） |

也可从 CLI 列出（含 skill，若 daemon 已注册）：

```bash frame="none"
carina commands list
```

### Transcript 密度

<Badge variant="accent">Compact</Badge> 是默认模式：例行成功读取会折叠，已验证编辑仍保留可审阅证据，但不会塞满 transcript。<Badge variant="info">Comfortable</Badge> 增加间距，并默认展开例行工具详情。使用 `/density` 或 Settings 中的 Density 行；两处都会持久化同一个 `tui_density` 偏好。用户显式执行的展开或折叠始终优先于密度默认值。

密度只改变呈现，不改变屏幕模式、策略、审批状态、patch 身份或 daemon 数据。

### 终端符号

使用 `/symbols` 或 Settings 中的 **符号** 行，可在原位比较四种偏好：

| 偏好 | 行为 |
| --- | --- |
| 自动 | 默认使用 Unicode；遇到明确的旧式终端兼容信号时使用 ASCII |
| Unicode | 适用于包含常用 Unicode 符号的字体 |
| Nerd Font | 需要显式选择，并要求 Nerd Font Mono |
| ASCII | 字体兼容性最高 |

选择会按正常的全局/项目配置级联保存为 `tui_glyphs: "auto" | "unicode" | "nerd" | "ascii"`。候选行会立即预览但不会保存；应用后才会提交选择，按 Esc 则保留之前的设置。这只改变呈现，不改变草稿、transcript 状态、选择、展开状态、策略或屏幕模式。

自动模式无法可靠探测终端安装了哪些字体，也绝不会自动选择 Nerd Font。它的保守 ASCII 信号包括 `TERM=dumb` 和旧式 Windows 原生控制台；Windows Terminal、macOS 与 Linux 上的字体覆盖仍可能不同。请选择保持对齐的预览行。方框或错位符号表示字体覆盖不完整，此时可选择 ASCII 恢复。

有效的 `CARINA_TUI_GLYPHS=auto|unicode|nerd|ascii` 具有最高优先级。未设置该变量时，为真的旧版兼容变量 `CARINA_ASCII` 会先于已保存偏好强制使用 ASCII。环境变量控制当前层级时，Settings 会明确说明。`NO_COLOR` 与符号层级互相独立：它只关闭产品颜色，不会切换符号。

### Composer 状态

Composer 下方保持固定的两行状态面。第一行只承载当前动作或恢复提示；第二行统一承载 **Run**、**Queue**、**HITL**、**Isolation**、**Context** 与 **ScreenMode**。开始执行、收到输出或等待审批时，composer 都不会位移，也不会换成另一套布局。

窄屏会先压缩低优先级上下文，再处理治理状态。Run、HITL、Isolation 和非零 Queue 始终可见；进入警告或临界区的上下文压力也会保留。

### 失败恢复

失败卡片会记录实际处理失败 run 的模型。顶部模型代表下一次运行的偏好，因此切换顶部模型不会改写旧失败记录里的历史事实。

| 操作 | 行为 |
| --- | --- |
| **用当前模型重试** | 沿用失败请求，但使用会话当前的模型与推理强度偏好 |
| **重放原配置** | 使用失败 run 原本受治理的模型与推理配置 |
| **详情** | 显示重试根任务、最近 run 与失败事件身份 |
| **复制 ID** | 复制失败身份，用于审计或排障 |

每次重试都会创建一个链接到原 run 的新不可变 run，不会覆盖原来的失败结果。相关尝试会收敛在同一张失败卡片中，并显示尝试次数。恢复一旦排队，重试入口会立即禁用，直到出现新的终态。

操作始终可见且可点击。在 composer 为空且没有活动 run 时，按 `Tab` 聚焦最近一条可重试失败；使用 `Tab` 或方向键移动，按 `Enter` 执行，按 `Esc` 返回 composer。已有草稿和活动 run 的 follow-up 行为仍保有 `Tab` 的控制权。

### 审阅工作台

<Badge variant="accent">next</Badge>

在 Fullscreen 模式中，`/changes` 按 transaction → file → 带行号 hunk 投影每个 patch。所选文件保留 A/M/D 状态、增删统计、hunk 归因与有界 diff 窗口。大型 diff 会显示明确的续行提示，而不会阻塞 frame loop；校验与回滚仍作用于 daemon 中的完整事务。

回滚确认绑定到预览时精确的 `patch_id` 与 `transaction_id`，且只在 workspace 仍与预览一致时打开。确认或取消前会冻结导航，因此移动列表项不能重定向破坏性动作。Minimal 与 Inline 模式继续使用紧凑 changes 表面和原生 scrollback 行为。

### 动效与无障碍

动效只表达活动执行或后台校验；静态的审批 / 输入等待不会动画。设置 `CARINA_REDUCED_MOTION=1` 可移除装饰性动画 deadline，同时保留状态、布局、键盘动作与进度文本。

### TUI 中的审批

高风险副作用会弹出 **审批浮层**（双轴 HITL：隔离 + 审批队列）。也可在另一终端处理：

```bash frame="none"
carina approve SESSION DECISION_ID
carina deny SESSION DECISION_ID "reason"
```

见 [策略](/zh-cn/concepts/policy/)。

### 键位

默认在 TUI 内；项目/全局配置可通过 `tui_keybindings` 覆盖。优先看页脚、`?` 与 `/keymap`。

## CLI 命令分组

| 区域 | 命令 |
| --- | --- |
| 生命周期 | `init`, `status`, `doctor`, `update`, `daemon *`, `runtime *`, `runtimes` |
| 工作 | `run`, `ask`, `resume`, `fork`, `steer`, `answer`, `import *` |
| 检查 | `sessions`, `items`, `watch`, `cost`, `session review`, `checkpoint *` |
| 治理 | `approve`, `deny`, `profile`, `audit*`, `patch*`, `report`, `export` |
| 编排 | `workflow *`, `worker *`, `schedule *` |
| 记忆 / 上下文 | `memory *`, `context *` |
| 提供商 | `auth *`, `providers list` |

完整表见 [CLI 参考](/zh-cn/reference/cli/)。

会话迁移见 [导入会话](/zh-cn/use/import-conversations/)。

## 权威来源

- 本机二进制：`carina --help`  
- TUI slash 注册表：`crates/carina-tui/src/command.rs` · 能力账本：`crates/carina-tui/CAPABILITIES.md`  
- 配方：[常用工作流](/zh-cn/getting-started/common-workflows/)  

  排查「没反应」前先跑 `carina doctor`——多数是 PATH、socket 或 daemon 未起。

---
Source: https://carina.nebutra.com/zh-cn/use/cli-tui/
Markdown: https://carina.nebutra.com/zh-cn/use/cli-tui/index.md
