啟動非互動式工作階段
非互動式工作階段提供一種直接從命令列使用 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 物件。使用此格式可擷取完整結果以進行程式化處理。
結構:
| 欄位 | 類型 | 說明 |
|---|---|---|
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 授權合約並繼續,不顯示提示 |
這個主題如何?