启动交互式会话

交互式会话在您的终端中直接提供与 Bob 的对话界面,让您能够实时获得开发任务的协助。

Bob Shell 交互式会话

何时使用交互式会话

交互式会话最适合:

  • 探索性编码。
  • 调试和排查问题。
  • 学习新概念或技术。
  • 需要多次来回交流的任务。
  • 需要在应用变更前进行审查的项目。

启动交互式会话

使用 bob chat 子命令在终端中启动交互式会话。

语法

bob chat [options]

启动会话

打开新的终端窗口。

注意

首次启动 Bob Shell 时,您必须使用 IBMid 登录并接受许可协议。

导航到项目的主目录。

运行以下命令启动交互式会话:

bob chat

高效使用技巧

  • 请求内容越具体,回复越有针对性。
  • 需要提供代码上下文时,使用 @ 引用。
  • 对于复杂任务,将其拆解为较小的步骤。
  • 使用 slash 命令快速访问常用功能。
  • 处理大型代码库时,引导 Bob Shell 关注最相关的文件。

基本用法

与 Bob Shell 交互

  • 直接在终端中输入您的指令或问题。
  • 按 Enter 将消息发送给 Bob。
  • Bob Shell 将回复其分析结果和建议。
  • 对于工具使用(例如读取或写入文件),系统会提示您批准或拒绝每项操作。

工具批准

当 Bob Shell 请求使用工具时,会显示批准对话框。该对话框提供以下选项:

选项描述
Approve Once允许此次特定工具调用继续执行。未来的调用仍会提示。
Approve <group> tools for task在任务剩余时间内允许同一工具组中的所有工具。MCP 工具不显示此选项。
Always Allow Command for task在任务剩余时间内允许特定的 shell 命令。
Reject拒绝工具调用。Bob Shell 不会执行该操作。

批准或拒绝调用时,您还可以添加可选备注。备注会作为额外上下文转发给模型。

要在不打开审批对话框的情况下切换自动批准,请在 macOS 上按 Ctrl+F,在 Windows、Linux 和 WSL 上按 Alt+F

响应流式传输过程中,按 Escape 可中断 Bob。

多轮对话

Bob Shell 在整个对话过程中保持上下文,允许您:

  • 提出后续问题。
  • 完善之前的请求。
  • 在早前回复的基础上继续构建。

引用文件和资源

使用 @ 符号引用项目中的文件:

Explain the functionality in @src/main.js

这会告知 Bob Shell 在回复前读取并分析指定的文件。

  • 每个文件最多内联 100 KB
  • 所有 @ 引用的总内联内容上限为 500 KB
  • 目录最多显示 50 个条目。

您也可以使用 server:resource-name 格式引用已连接服务器公开的 Model Context Protocol (MCP) 资源:

@my-server:schema.json

引用技能

输入 $ 后跟技能名称,可打开技能选择器并将技能引用插入到提示词中。

查看文件变更

当 Bob Shell 需要修改文件时,它会以 CLI diff 视图的形式在终端中显示建议的变更内容。

使用 slash 命令

输入 / 可访问可用命令菜单:

  • 内置命令,例如 /help 获取帮助
  • 模式切换命令,例如 /mode ask
  • 您自己创建的自定义命令

完整的可用命令列表,请参阅 Bob Shell 中的 Slash 命令

消息队列

当 Bob 正在流式传输响应时,您可以将其他消息加入队列,而无需等待。按 Tab 将当前输入加入队列。队列中的消息在每轮完成后会按顺序自动发送。

按键操作
Tab将当前输入加入队列(空闲时立即提交)
将焦点移至队列列表
Enter编辑选中的队列项
Tab(在队列中)立即发送选中的项目
Delete / Backspace从队列中删除选中的项目
Shift+K / Shift+J将选中的项目上移 / 下移

状态栏

输入框下方的状态栏显示实时会话信息:

字段描述
Mode当前模式名称(例如 Agent Mode)——启用自动批准时会显示红色的 (auto-approve) 后缀
Context已使用的 token 数与上下文窗口大小的比例(含百分比)
Cost当前任务的累计费用(以 Bobcoin 计:🅞)

会话管理

恢复之前的会话

启动 bob chat 时可以恢复之前的会话:

bob chat --resume <task-id>
bob chat --resume latest

要查找之前会话的任务 ID,请使用 bob --list-tasks

bob --list-tasks

附加到命名实例

使用 --instance-id 附加到特定命名实例,而非启动新实例:

bob chat --instance-id my-project

通用实用标志

某些标志直接通过 bob 调用,而非 bob chatbob run。可用标志如下:

标志描述
--list-tasks [n|all]列出当前工作区的已保存任务并退出。默认为 20。传递数字或 all 以控制显示数量。
--limit <n>使用 --list-tasks 显示的最大任务数。
--show-license显示 IBM 许可协议并退出。

机器可读输出

当 stdout 不是 TTY 时——例如,当您通过管道或重定向输出时——--list-tasks 会从人类可读的表格切换为 NDJSON,每行一个 JSON 对象。

每行的格式如下:

{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}
字段类型描述
idstring (UUID)唯一任务标识符,可与 --resume 一起使用
titlestring任务标题,回退到第一条消息,然后是 id
statusstring任务状态(activecompletedpaused
workspacestring (file URI)工作区的绝对路径,格式为 file: URI
updatedAtnumber最后更新时间戳(Unix 毫秒)

示例

# 通过管道传递给 jq
bob --list-tasks all | jq '.id'

# 保存到文件后处理
bob --list-tasks 100 > tasks.ndjson

# 显示许可协议
bob --show-license

选项

选项描述
--instance-id <id>附加到特定命名实例,而非启动新实例
--resume <task-id>通过任务 ID 恢复之前的任务
--resume latest恢复最近的任务
--mode <mode>启动模式(例如 agentplanask
--log-level <level>日志详细程度:errorwarninfodebugtrace
--auto-approve抑制会话的工具批准提示。在不受信任的文件夹中无效。
--trust将当前文件夹持久化为受信任,跳过首次访问的信任对话框。等同于手动选择"信任文件夹"。请参阅受信任的文件夹
--team-id <id>在特定团队 ID 下运行(使用 general 类型的 API 密钥时必需)
这个主题怎么样?