非インタラクティブセッションの開始

非インタラクティブセッションは、インタラクティブセッションを開始せずにコマンドラインから直接 Bob Shell を使用する方法です。自動化、スクリプティング、バッチ処理タスクに使用します。

非インタラクティブセッションを使うべき場面

非インタラクティブセッションが最も適しているのは、次のような場合です:

  • Bob Shell を自動化スクリプトに統合する。
  • 1 つのコマンドで複数のファイルを処理する。
  • インタラクティブセッションを開始せずに素早くインサイトを得る。
  • コードからドキュメントを生成する。
  • 構造化された 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 runbob chat ではなく、bob で直接呼び出します。保存済みタスクを一覧表示するには、次のコマンドを実行します:

bob --list-tasks

次のフラグが利用可能です:

フラグ説明
--list-tasks [n|all]現在のワークスペースの保存済みタスクを一覧表示して終了します。デフォルトは 20 です。数値または all を渡して表示数を制御します。
--limit <n>--list-tasks で表示するタスクの最大数。
--show-licenseIBM ライセンス契約を表示して終了します。

機械可読出力

stdout が TTY でない場合(出力をパイプまたはリダイレクトする場合など)、--list-tasks は人間が読める表形式から NDJSON に切り替わり、1 行に 1 つの 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 としてのワークスペースの絶対パス
updatedAtnumberUnix ミリ秒単位の最終更新タイムスタンプ

# 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使用されたトークンの合計数
stats.input_tokensnumber使用された入力トークン数
stats.output_tokensnumber生成された出力トークン数
stats.cache_read_tokensnumberキャッシュから読み込まれたトークン数
stats.cache_write_tokensnumberキャッシュに書き込まれたトークン数
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)を 1 イベントオブジェクト / 行の形式で出力します。pipeline に出力をストリーミングしたり、リアルタイムでイベントを処理したりする場合にこの形式を使用します。

イベントタイプ:

イベントタイプ主要フィールド説明
messagerolecontentisReasoning?ユーザーまたはアシスタントのメッセージ
tool_usetool_nametool_idparametersBob が開始したツール呼び出し
tool_resulttool_idstatusoutput?error?ツールが返した結果
errorseveritymessageコスト/ターン数制限への到達
resultstatusstatslast_messageセッション終了時に出力される最終サマリー

パイプラインの例:

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

bob run で非インタラクティブに実行する場合、すべてのツールは事前承認されます。実行中にツール呼び出しの承認を求められることはありません。

オプション

オプション説明
--format <format>出力形式:pretty(デフォルト)、json、または stream-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>ログの詳細度を指定します:errorwarninfodebug、または trace
--resume <task-id>タスク ID を指定して以前のタスクを再開します
--resume latest最新のタスクを再開します
--team-id <id>特定のチームコンテキストで実行します(general タイプの API key 使用時に必要)
--trust現在のフォルダを信頼済みとしてマークします
--accept-licenseIBM ライセンス条件に同意し、確認なしで続行します
このトピックはいかがですか?