跳至正文
浏览章节

终端界面

bingo 画画所用的语法、驱动它的按键,以及子代理和房间如何成为你能走进去的一行。

屏幕上有什么

终端界面在运行期间占住整个屏幕。对话记录上方什么都不放;唯一一件家具在输入框下面。

  > what is in this workspace?

  ⏺ I'll read the manifest first.

  ⏺ Read(Cargo.toml)
    ⎿  Read 42 lines

  ⏺ reviewer(review the manifest)
    ⎿  Done (4 tools · 8.1k tokens · 40s)

  ⏺ One workspace, 27 crates: a kernel and its plugins.

  ✻ Tinkering… (esc to interrupt · 4s · ↓ 0.4k tokens)
  ╭──────────────────────────────────────────────────────────────╮
  │ > ▌                                                          │
  ╰──────────────────────────────────────────────────────────────╯
  ⏵⏵ accept edits on (shift+tab to cycle)   context 84%   gpt-5.4

这套语法

符号含义
>你说的话,落在一条抬起的条上
⏺模型说的或做的——每个块一个圆点
⎿回来的东西:一个结果、一张回执、一个子会话的进展
✻在场:回合运行期间的活动行,以及欢迎标记

一行工具的圆点带着它的状态:调用进行中时温暖并脉动,完成时变绿,失败时变红,待定或 被打断时变暗。颜色从不独自承载一个事实——每种状态都有一个符号或一个词,所以 NO_COLOR 和单色终端什么也不会丢。

结果会折起来只剩尾巴,写作 … +12 lines (ctrl+o to expand)。活动行的动词是 bingo 自己的那一批,每个回合抽一次:Simmering、Noodling、Tinkering、Rummaging、Mulling、 Weaving、Sketching、Percolating。

状态行

输入框下面,三个位置:

  • 左 —— 权限模式:⏵⏵ accept edits on (shift+tab to cycle)。default 不显示 模式,只显示提示。
  • 中 —— 只显示此刻为真的东西:1 needs you (ctrl+g)、2 running、 context 84%,或者最新的通知,显示四秒;当输入框为空且没有别的事为真时,显示 ? for shortcuts。
  • 右 —— 你在哪里、你在什么上面:in reviewer · gpt-5.4。

按键

这就是 ? 面板所读的那张绑定表,所以一个按键在它被绑定的地方就有文档。

按键做什么
enter发送消息 · 打开聚焦的块
shift+enter换行(ctrl+j · alt+enter · \ 再回车)
esc浮层 → 卡片 → 下拉框 → 打断
esc esc倒回到更早的一个回合
ctrl+c打断 · 清空输入 · 按两次退出
ctrl+d在空输入上退出
up/down在第一行和最后一行时翻输入历史
left/right会话条 · down 打开它
ctrl+a/ctrl+e行首 / 行尾(home · end)
alt+b/alt+f移动一个词
ctrl+w/ctrl+u/ctrl+k删词 · 删到行首 · 删到行尾
pgup/pgdn滚动对话记录
ctrl+g切到某个子代理的视图
ctrl+t插件状态(任务、房间)
tab补全光标处的命令
shift+tab轮换权限模式
1-9 · y/a/n回答打开着的对话框
ctrl+e展开对话框的预览
ctrl+o展开最新的结果 · 再按一次展开全部
ctrl+b把运行中的命令放到后台
/ · !运行一条命令 · 运行一行 shell
?开关快捷键面板

ctrl+f 搜索对话记录;搜索行占住键盘,直到 esc 关掉它。鼠标可以滚动、点一行卡片 或一行子会话、拖出一段选区——但它从来不是必需的。

esc 是一个有序的栈,先关最里面那一层:先是浮层,然后是正在提问的卡片(离开一张卡 片本身就是取消或拒绝),再是下拉框;什么都没开着时,它打断当前回合。

ctrl+o 只会往开的方向走——折起、展开、分页器——而 esc 把它折回去。

会话就是一行

子代理是有父会话的会话,房间是没有模型的会话(ADR-0002)。两者都由和别的东西完全 相同的代码画出来,也都出现在它们开始的地方,作为对话记录里的一行:

⏺ reviewer(review the manifest)
  ⎿  Starting…
  ⎿  Running… 3 tools · 1.2k tokens
  ⎿  Done (4 tools · 8.1k tokens · 40s)
  ⎿  Needs you

在那一行上按 enter 就走进子会话的对话记录,状态行的右侧位置随即显示 in reviewer。房间的那一行只有它的名字;在房间里,发言读作 > reviewer: …,提示符 是 #design > 。

在它们之间移动有两种方式:

  • ctrl+g 打开切换器,一个浮在输入框上方的下拉框,一行一个会话—— ❯ reviewer ⏺ running · needs you。enter 过去,esc 关掉。
  • 在空输入框上按 down 把状态行变成一条标签条—— ❯ ⏺ project ⏺ reviewer #design,先代理后房间——left/right 随光标移动实时 切换视图,到两端会绕回。up、esc 或者开始打字就把状态行还回去。

需要人的子会话会一直脉动,直到你过去;状态行也会数着它:1 needs you (ctrl+g)。

面板与边栏

一个插件可以往屏幕上放一个实时的、进日志的或一次性的视图,而完全不必知道终端是什么 (ADR-0013)。超过 120 列时,这些会变成右侧边栏里的卡片——待办、一条进度条、一个房间 里未回应的提及;不足 120 列时,同样的卡片画在运行中的那些行下面,内联显示。ctrl+t 打开面板浮层,在那里按 enter 把一个面板钉进这次会话的边栏。tab 在边栏卡片之间走, 输入框为空时按一个数字就触发某张卡片写明的按钮。

插件所写的那套词汇是 UI 即数据。

恢复

/resume 打开一个选择器:bingo 为这次会话推出的标题、它有多少条消息、上次动它是多久 以前。

Resume
❯ 1. fix the parser · 12 msgs · 2h ago
  2. 请帮我把这个解析器修好 · 1 msg · 1d ago
  3. untitled · 5d ago

/clear 在同一个目录里开一个全新会话。从 shell 里,bingo --continue 重新打开这里 最近的那个会话,bingo --resume <id> 按 id 重新打开一个。

离开

退出时,界面会把对话最后一屏打印到 shell 的正常屏幕上,所以之后对话记录仍留在你的终端 里。--no-print-on-exit 让终端保持原样。

环境

外观在内核启动之前就定下来了,所以这些是环境变量而不是设置:

变量效果
NO_COLOR不用颜色;由字重和符号承载每一个事实
BINGO_MOTION=off每一个动效都停在它的静止帧
BINGO_ASCII=1用 ASCII 代替那些符号
BINGO_THEME=light | dark强制一套配色,而不是读终端的