啟動非互動式工作階段

非互動式工作階段提供一種直接從命令列使用 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 runbob 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>}
欄位類型說明
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

輸出格式

--format 選項控制 bob run 寫入輸出的方式。在腳本或 CI pipeline 中擷取輸出時請使用此選項。

pretty(預設)

適合終端機顯示的人類可讀文字輸出。

json

工作階段完成後輸出單一 JSON 物件。使用此格式可擷取完整結果以進行程式化處理。

結構:

欄位類型說明
typestring固定為 "result"
timestampstringISO 8601(日期時間標準)完成時間戳記
statusstring"success""error"
statsobject工作階段統計資料——請參閱以下欄位
stats.task_idstring已完成任務的唯一識別碼
stats.total_tokensnumber使用的 token 總數
stats.input_tokensnumber使用的輸入 token 數
stats.output_tokensnumber產生的輸出 token 數
stats.cache_read_tokensnumber從快取讀取的 token 數
stats.cache_write_tokensnumber寫入快取的 token 數
stats.cache_rationumber快取命中率
stats.duration_msnumber工作階段持續時間(毫秒)
stats.session_costsnumber工作階段的總費用
stats.tool_callsnumber工具呼叫次數
last_messagestring最後一則助理訊息

範例:

bob run --format json "What is the entry point?" > result.json

stream-json

以換行符分隔的 JSON(NDJSON)格式輸出——工作階段進行時每行輸出一個事件物件。使用此格式可將輸出串流傳入 pipeline 或即時處理事件。

事件類型:

事件類型主要欄位說明
messagerolecontentisReasoning?使用者或助理的訊息
tool_usetool_nametool_idparametersBob 發起的工具呼叫
tool_resulttool_idstatusoutput?error?工具回傳的結果
errorseveritymessage達到費用/輪數限制
resultstatusstatslast_message工作階段結束時輸出的最終摘要

Pipeline 範例:

bob run --format stream-json "Audit @src/" \
  | grep '"type":"result"' \
  | jq '.last_message'
注意:

使用 bob run 以非互動方式執行時,所有工具均已預先批准。執行期間不會提示您批准工具呼叫。

選項

選項說明
--format <format>輸出格式:pretty(預設)、jsonstream-json
--mode <mode>起始模式(例如 agentplanask
--max-cost <bobcoins>工作階段停止前的最高消費金額(Bobcoins)
--max-turns <n>工作階段停止前的最大代理輪數
--disable-mcp停用此工作階段的所有 MCP 伺服器
--disable-subagents停用此工作階段的子代理生成
--disable-tool-groups <groups>停用特定的工具群組(以逗號分隔,例如 execute,mcp
--workspace <path>覆寫工作區根目錄
--log-level <level>日誌詳細程度:errorwarninfodebugtrace
--resume <task-id>透過任務 ID 恢復先前的任務
--resume latest恢復最近的任務
--team-id <id>在特定團隊上下文中執行(使用 general 類型的 API key 時為必填)
--trust將目前資料夾標記為受信任
--accept-license接受 IBM 授權合約並繼續,不顯示提示
這個主題如何?