启动非交互式会话
非交互式会话提供了一种直接从命令行使用 Bob Shell 而无需进入交互式会话的方式,适用于自动化、脚本编写和批处理任务。
何时使用非交互式会话
非交互式会话最适合:
- 将 Bob Shell 集成到自动化脚本中。
- 用单个命令处理多个文件。
- 无需启动交互式会话即可快速获取洞察。
- 从代码生成文档。
- 需要结构化 JSON 输出的 CI/CD pipeline。
启动非交互式会话
使用 bob run 子命令从命令行以非交互方式运行 Bob Shell。
语法
bob run [options] [prompt...]您也可以通过 stdin 管道传入提示词:
echo "Explain this project" | bob run高效使用技巧
- 处理大型文件或项目时,请明确指定需要分析的文件。
- 在脚本中使用
--format json或--format stream-json进行可靠解析。 - 在自动化工作流中使用
--max-cost和--max-turns限制资源使用。 - 对于多行提示词,将其保存到文件后管道传给
bob run:
cat prompt.txt | bob run基本用法
直接运行提示词
bob run "Explain this project"管道输入内容
您可以将文本内容通过管道传给 Bob Shell:
cat buildError.txt | bob run "Explain this build error"将结果保存到文件
重定向输出以保存结果:
bob run "Review @bigFile.java" > review.md引用项目文件
使用 @ 符号引用项目中的文件:
bob run "Summarize the functionality in @src/main.js"设置费用和轮数限制
bob run --max-cost 0.50 --max-turns 10 "Refactor @app.js"会话管理
恢复之前的会话
bob run --resume <task-id> "Continue from where we left off"
bob run --resume latest "Keep going"通用实用标志
某些标志直接通过 bob 调用,而非 bob run 或 bob chat。要列出已保存的任务,请运行以下命令:
bob --list-tasks可用标志如下:
| 标志 | 描述 |
|---|---|
--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>}| 字段 | 类型 | 描述 |
|---|---|---|
id | string (UUID) | 唯一任务标识符,可与 --resume 一起使用 |
title | string | 任务标题,回退到第一条消息,然后是 id |
status | string | 任务状态(active、completed、paused) |
workspace | string (file URI) | 工作区的绝对路径,格式为 file: URI |
updatedAt | number | 最后更新时间戳(Unix 毫秒) |
示例
# 通过管道传递给 jq
bob --list-tasks all | jq '.id'
# 保存到文件后处理
bob --list-tasks 100 > tasks.ndjson
# 显示许可协议
bob --show-license输出格式
--format 选项控制 bob run 的输出方式。在脚本或 CI pipeline 中捕获输出时请使用此选项。
pretty(默认)
适合在终端显示的人类可读文本输出。
json
会话完成后输出单个 JSON 对象。使用此格式可捕获完整结果以供程序化处理。
Schema:
| 字段 | 类型 | 描述 |
|---|---|---|
type | string | 始终为 "result" |
timestamp | string | ISO 8601(日期时间标准)完成时间戳 |
status | string | "success" 或 "error" |
stats | object | 会话统计信息——详见以下字段 |
stats.task_id | string | 已完成任务的唯一标识符 |
stats.total_tokens | number | 总 token 使用量 |
stats.input_tokens | number | 输入 token 使用量 |
stats.output_tokens | number | 输出 token 数量 |
stats.cache_read_tokens | number | 从缓存读取的 token 数 |
stats.cache_write_tokens | number | 写入缓存的 token 数 |
stats.cache_ratio | number | 缓存命中率 |
stats.duration_ms | number | 会话持续时间(毫秒) |
stats.session_costs | number | 会话总费用 |
stats.tool_calls | number | 工具调用次数 |
last_message | string | 最后一条助手消息 |
示例:
bob run --format json "What is the entry point?" > result.jsonstream-json
以换行分隔 JSON(NDJSON)的形式输出——每行一个事件对象——随会话进行实时输出。使用此格式可将输出流式传入 pipeline 或实时处理事件。
事件类型:
| 事件类型 | 关键字段 | 描述 |
|---|---|---|
message | role, content, isReasoning? | 用户或助手消息 |
tool_use | tool_name, tool_id, parameters | Bob 发起的工具调用 |
tool_result | tool_id, status, output?, error? | 工具返回的结果 |
error | severity, message | 达到费用/轮数限制 |
result | status, stats, last_message | 会话结束时输出的最终摘要 |
Pipeline 示例:
bob run --format stream-json "Audit @src/" \
| grep '"type":"result"' \
| jq '.last_message'注意:
使用 bob run 非交互运行时,所有工具均已预先批准。执行过程中不会提示您批准工具调用。
选项
| 选项 | 描述 |
|---|---|
--format <format> | 输出格式:pretty(默认)、json 或 stream-json |
--mode <mode> | 启动模式(例如 agent、plan、ask) |
--max-cost <bobcoins> | 会话停止前的最大 Bobcoins 消费上限 |
--max-turns <n> | 会话停止前的最大代理轮数 |
--disable-mcp | 禁用本次会话的所有 MCP 服务器 |
--disable-subagents | 禁用本次会话的子代理生成 |
--disable-tool-groups <groups> | 禁用特定工具组(逗号分隔,例如 execute,mcp) |
--workspace <path> | 覆盖工作区根目录 |
--log-level <level> | 日志详细程度:error、warn、info、debug 或 trace |
--resume <task-id> | 通过任务 ID 恢复之前的任务 |
--resume latest | 恢复最近的任务 |
--team-id <id> | 在特定团队上下文下运行(使用 general 类型 API key 时必须提供) |
--trust | 将当前文件夹标记为受信任 |
--accept-license | 接受 IBM 许可协议并跳过提示 |
这个主题怎么样?