命令输入
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应用。快速命令是你自己设的、对应较长命令行的别名;见 别名与环境变量。
自动识别识错了怎么办
上面的规则有意保守 —— 不在 PTY 清单、不被插件 match,就当一次性命令处理。如果你真的想跑一个叫 redis:// 的文件(不太可能),没法绕过 parser,得改文件名。实际不是问题;协议前缀都很明确。