Console 面板底部有一个**命令输入框**。每次你回车,Cockpit 按一套固定顺序决定开**哪种气泡**:别名展开 → 插件 match → PTY 命令清单 → 一次性命令。这一页是"什么触发什么"的速查表。

## 调度顺序

```
1. 别名展开 ── firstWord 在 aliases 里就替换成完整命令
2. 插件 match ─ 任一插件 match(input) 返回 true → 开对应气泡
3. PTY 命令清单 ── firstWord 在硬编码集合里 → 交互式终端
4. 兜底 ────── 一次性命令气泡(跑一次、显示输出)
```

顺序意味着别名永远先生效:如果 `db = postgresql://user@localhost/mydb`,打 `db` 会先展开成连接串、再被 PostgreSQL 插件接住。

## 插件触发(按协议前缀)

| 触发前缀 | 开什么 |
|---|---|
| `http://…` / `https://…` | **浏览器气泡** —— 驱动真实 Chrome 标签页 |
| `postgresql://…` / `postgres://…` | **PostgreSQL 气泡** |
| `mysql://…` | **MySQL 气泡** |
| `redis://…` / `rediss://…`(TLS) | **Redis 气泡** |
| `neo4j://…` / `neo4j+s://…` / `bolt://…` / `bolt+s://…` | **Neo4j 气泡** |
| 任意以 `.ipynb` 结尾的路径 | **Jupyter 气泡** |

> **大小写**:浏览器和数据库插件匹配前都会 `toLowerCase()`,所以 `POSTGRESQL://` 跟 `postgresql://` 一样能识别。**Jupyter 不转小写** —— `.ipynb` 后缀大小写敏感,`foo.IPYNB` 不会被识别成 notebook。

## PTY 命令清单(开交互式终端)

`firstWord` 命中下面**任一**就开交互式 PTY(完整 PTY,跟你平时用的 shell 一样,支持光标控制和全屏程序):

```
zsh  bash  sh  fish  nu
python  python3  node  irb  lua
vim  nvim  vi  nano  emacs
top  htop  less  man
```

只看 firstWord,所以 `vim foo.txt`、`python -i script.py` 也算 PTY。

清单是**硬编码**的 —— 你自己常用的 REPL 不在里面就识别不出。要扩展的话,设个 alias 把它指向清单里的命令。

## 兜底:一次性命令气泡

上面都不命中的就当一次性命令跑(`ls`、`make build`、`pytest …`)—— 跑一次、显示输出、退出。

## 快捷命令(输入框左侧 ⚡ 按钮)

输入框左边那颗 ⚡ 图标按钮打开**快捷命令面板**,把你常用的长命令保存下来一键启动。点开后是两栏:

| 范围 | 存哪 |
|---|---|
| **全局** | 所有项目共享,跟你这台机器走 |
| **项目** | 只在当前 cwd 项目下出现 |

### 添加

每栏右上角 `+` 按钮新增一行,填两个字段:

- **名字** —— 短标签,比如 `dev`、`db-stg`、`watch-test`。
- **命令** —— 实际要跑的命令行(可以是协议 URI、PTY 命令、一次性命令,任何形式)。

回车保存。

### 启动

每行左边 ▶ 图标点一下就跑。**启动时跟在输入框按 Enter 走同一套调度顺序** —— 命令是 `postgresql://...` 就开 PostgreSQL 气泡,是 `vim foo` 就开 PTY,是 `make build` 就一次性。

### 删除

每行右边 ✕ 图标,直接删,无确认。

### 和输入框里的 `/` 菜单的关系

是**同一份数据**。点 ⚡ 按钮 ≈ 在输入框打 `/` 弹出过滤式选单。区别只在交互形态:

- ⚡ 按钮:打开一个浮层,看到完整两栏,带添加 / 删除 UI。
- `/` 菜单:就地过滤,只用来挑一个跑,不能在里面编辑。

要加新的就开 ⚡;按平常用就 `/`。

## 多个气泡并排

每次回车开一个新气泡 —— 它们在面板里堆叠,可以拖任意一个重排。同时连两个不同库的 PostgreSQL、两个不同站点的浏览器气泡、一个终端 + 一个 Jupyter notebook:都没问题。

`Cmd+M` 把当前聚焦的气泡最大化;再按或 `Esc` 还原。

## 输入框快捷键

- **`↑` / `↓`** —— 走输入历史。Cockpit 在 shell 命令**跑完时**、以及**插件气泡创建时**都会记一条 —— 不是只记"跑完"。
- **`Tab`** —— 补全。Cockpit POST 到 `/api/terminal/autocomplete`,带上 cwd、当前 input、光标位置。只有一个匹配直接填;多个就在输入框上方弹候选菜单,继续按 `Tab` 循环。
- **`Enter`** —— 执行(按上面的调度顺序)。
- **行首 `/`** —— 打开**快速命令**菜单(跟 Agent 面板的 Skills 是两套独立菜单)。打字过滤,候选用 `↑/↓` 选,`Enter` 或 `Tab` 应用。快速命令是你自己设的、对应较长命令行的别名;见 [别名与环境变量](/zh/docs/console/aliases-env/)。

## 自动识别识错了怎么办

上面的规则有意保守 —— 不在 PTY 清单、不被插件 match,就当一次性命令处理。如果你真的想跑一个叫 `redis://` 的文件(不太可能),没法绕过 parser,得改文件名。实际不是问题;协议前缀都很明确。
