终端
Bub 应用提供两种终端交互方式:bub run 和 bub chat,两者都使用相同的模型、工具和 Tape 能力:
bub run处理单条消息,适用于一次性任务;bub chat则保持会话打开,可以连续对话。
开始交互式会话
Section titled “开始交互式会话”在终端输入如下命令会进入到交互式会话界面中,此时你可以输入内容并按回车发送。
bub chat
此外,输入 ,help 指令列出当前可用的内部命令;如需退出,可按下 Ctrl+D 键或使用 ,quit 或 ,exit 指令。
底部工具栏显示最近一次模型调用的输出速度:从收到第一个流式分片开始计时,到响应结束为止。分子是全部输出 token(含思考 token),分母不含首分片之前的等待时间,也不含工具执行时间;紧跟其后的 ttft 就是被排除的首字等待时间。提供商未返回用量时显示 speed:- tok/s。
当然,你也可以在启动时直接提交第一条消息:
bub chat "Inspect this repository and suggest a first task."
在运行中引导 Agent
Section titled “在运行中引导 Agent”在等待模型回复期间,如果发现模型的输出偏离了你的预期,或者你想补充一些约束条件,可以在界面中直接输入新指令以引导 Agent 的行为。
引导(Steering)用于在当前 Turn 尚未结束时补充指令,让 Agent 调整正在执行的任务。生成过程中不必等待回复结束,直接输入并回车即可:
先不要修改文件,只列出问题和建议。
Bub 应用会把消息放到引导收件箱中。Agent 在后续构建模型请求时读取它,正在执行的模型或工具调用不会被强制中断。
Bub 的准入动作称为 steer 和 follow_up,区别在于消息何时生效:
| 方式 | 处理方式 | 适合什么 |
|---|---|---|
| 引导(Steering) | 注入当前对话的后续模型请求;来不及消费时转为待处理消息 | 纠正方向、补充约束、提供与当前任务有关的新信息 |
| 后续处理(Follow up) | 等当前 Turn 结束后,再作为后续任务处理 | 追加另一项任务、按顺序执行多个需求 |
默认情况下,Bub 应用对运行期间的普通输入使用引导,没有单独的后续处理快捷键。未被当前消费的引导消息会自动进入待处理队列,不会直接丢失。
需要停止当前会话的任务时,使用 ,quit;它会清理待处理消息并取消运行中的任务。
查看推理过程
Section titled “查看推理过程”输入 ,thinking 以展开和折叠模型思考过程:
,thinking
它只控制终端是否显示模型返回的 reasoning 增量,不会改变模型或推理力度。如需调整推理力度请使用:
,reasoning_effort high
具体可选值由模型提供商决定。该设置从下一轮对话起生效,并保存在当前会话的 Tape 中。
bub run 默认使用 cli:local 作为会话 ID,bub chat 则默认使用 cli_session。显式指定相同的会话 ID,可以在两个入口之间延续历史:
bub chat --session-id cli:echo
bub run --session-id cli:echo "Summarize what we discussed."
命令前缀默认为 ,,用于跳过模型调用、直接执行工具:
bub run ",help"
bub run ",fs.read path=README.md"
交互式会话中也可以直接输入命令。按 Ctrl-X 在 Agent 与 Shell 输入模式之间切换;Shell 模式会自动为输入添加命令前缀。常用命令如下:
| 命令 | 用途 |
|---|---|
,model openai:gpt-5-mini |
切换当前会话的模型 |
,reasoning_effort high |
设置当前会话的推理力度 |
,code_mode enable=true |
开启代码模式 |
,tape.info |
查看条目、anchor 和 token 用量 |
,tape.search query=error |
搜索当前会话记录 |
,tape.anchors |
列出上下文分界点 |
,tape.handoff name=reviewed summary='...' |
移动默认上下文起点,并保存摘要 |
,tape.reset archive=true |
归档当前 Tape 后重新开始 |
,thinking |
展开或折叠推理输出 |
注意:
,tape.reset archive=true会把主 Tape 和 sidecar 备份到<BUB_HOME>/tapes/,文件名带有 UTC 时间戳和.bak后缀。使用archive=false或直接,tape.reset则不备份。重置后会产生新的session/startanchor,旧文件不会被自动恢复。- 交接(handoff)不会自动生成或注入摘要。
summary保存在 anchor 的state中;后续是否读取它,取决于提示词或上下文策略。详见 Tape。
运行后台进程
Section titled “运行后台进程”在 bub chat 中,用 background=true 使用单独的后台进程来运行相关命令:
,bash command='npm run dev' background=true
执行返回结果中包含 shell_id。我们使用它增量读取输出或终止进程:
,bash.output shell_id=bsh-12345678
,bash.output shell_id=bsh-12345678 offset=1200 limit=4000
,bash.kill shell_id=bsh-12345678
注意:
offset是已缓冲输出的字符位置,不是行号;返回值中的next_offset可用于下一次读取。limit限制本次返回的字符数。- 前台
bash默认等待 30 秒。超时后进程不会被直接判定失败,而是转为后台并返回shell_id;可通过timeout_seconds调整。后台任务应在同一个bub chat或网关进程中管理,退出应用时会执行清理。