メインコンテンツへスキップ
Droid ExecはFactory自動化ワークフロー向けに設計されたヘッドレス実行モードです。インタラクティブなCLIとは異なり、droid execはタスクを完了して終了するワンショットコマンドとして動作するため、CI/CDパイプライン、シェルスクリプト、バッチ処理に最適です。
Droid Execクックブックをご覧ください。

概要と目的

Droid Execは以下を目的として設計されたワンショットタスクランナーです:
  • 読みやすいログと、要求時に構造化された成果物を生成
  • 変更/コマンド実行に対してオプトインを強制(デフォルトで安全)
  • 権限違反時に明確なエラーでファストフェイル
  • バッチおよび並列処理のためのシンプルな構成をサポート

非インタラクティブ

CI/CD統合のためにstdout/stderrに書き込むシングル実行

デフォルトで安全

デフォルトで読み取り専用、自律レベルによる変更への明示的オプトイン

構成可能

シェルスクリプト、並列実行、パイプライン統合用に設計

クリーンな出力

自動処理のための構造化出力フォーマットと成果物

実行モデル

  • stdout/stderrに書き込む非インタラクティブなシングル実行。
  • デフォルトはspecモード:エージェントは読み取り専用操作の実行のみ許可。
  • --autoを追加して編集とコマンドを有効化;リスクティアが実行可能な内容を制御。
CLIヘルプ(抜粋):
--modelまたは--spec-modelには、任意の利用可能なモデルIDを使用できます。カスタムモデルについては、Bring Your Own Key (BYOK)を参照してください。

インストール

1

Droid CLIをインストール

2

Factory APIキーの取得

Factory設定ページからAPIキーを生成します
3

環境変数の設定

APIキーを環境変数としてエクスポートします:

クイックスタート

  • 直接プロンプト:
    • droid exec "analyze code quality"
    • droid exec "fix the bug in src/main.js" --auto low
  • ファイルから:
    • droid exec -f prompt.md
  • パイプ:
    • echo "summarize repo structure" | droid exec
  • セッション継続:
    • droid exec --session-id <session-id> "continue with next steps"

自律性レベル

Droid execは階層化された自律性システムを使用して、エージェントが実行できる操作を制御します。デフォルトでは、読み取り専用モードで実行され、変更を有効にするには明示的なフラグが必要です。

DEFAULT(フラグなし)- 読み取り専用モード

実行せずに計画された変更をレビューするための最も安全なモード:
  • ✅ ファイルやログの読み取り: cat, less, head, tail, systemctl status
  • ✅ 表示コマンド: echo, pwd
  • ✅ 情報収集: whoami, date, uname, ps, top
  • ✅ Git読み取り操作: git status, git log, git diff
  • ✅ ディレクトリリスト: ls, find(-deleteや-execなし)
  • ❌ ファイルやシステムの変更は不可
  • 使用例: どのような変更が行われるかを安全にレビューする場合

--auto low - 低リスクな操作

基本的なファイル操作を有効にし、システム変更をブロックします:
  • ✅ プロジェクトディレクトリ内でのファイル作成/編集
  • ❌ システム変更やパッケージインストールは不可
  • 使用例: ドキュメント更新、コード整形、コメント追加

--auto medium - 開発オペレーション

重大な副作用を持つ可能性があるオペレーションですが、これらの副作用は通常無害で、簡単に復旧できます。 低リスクオペレーションに一般的な開発タスクを追加します:
  • 信頼できるソースからのパッケージインストール:npm install、pip install(sudoなし)
  • 信頼できるエンドポイントへのネットワークリクエスト:既知のAPIへのcurl、wget
  • ローカルリポジトリを変更するGitオペレーション:git commit、git checkout、git pull(git pushは除く)
  • make、npm run build、mvn compileなどのツールによるコードビルド
  • ❌ git push、sudoコマンド、本番環境の変更は不可
  • 使用例: ローカル開発、テスト、依存関係管理

--auto high - 本番運用

信頼できないソースからのデータ転送や未知のコードの実行などセキュリティに影響を与える可能性のあるコマンド、または不可逆的なデータ損失や本番システム・デプロイメントの変更などの重大な副作用を伴うコマンド。
  • 任意/信頼できないコードの実行: curl | bash、eval、ダウンロードしたスクリプトの実行
  • 外部アクセスを許可する可能性のあるポートの公開やファイアウォールルールの変更
  • リモートリポジトリを変更するGitプッシュ操作: git push、git push —force
  • 本番デプロイメント、データベースマイグレーション、その他の機密操作への不可逆的な操作
  • パスワードや鍵などの機密情報にアクセスまたは変更するコマンド
  • ❌ 引き続きブロック: sudo rm -rf /、システム全体の変更
  • 使用例: CI/CDパイプライン、自動デプロイメント

--skip-permissions-unsafe - すべてのチェックをバイパス

危険: このモードは確認なしですべての操作を許可します。Dockerコンテナや使い捨てVMなどの完全に隔離された環境でのみ使用してください。
  • ⚠️ 確認なしですべての操作を許可
  • ⚠️ 不可逆的な操作を実行可能
  • —autoフラグと組み合わせることはできません
  • 使用例: 隔離された環境

フェイルファースト動作

リクエストされたアクションが現在の自律レベルを超える場合、droid execは以下を実行します:
  1. 明確なエラーメッセージと共に即座に停止
  2. 非ゼロの終了コードを返す
  3. 部分的な変更を一切実行しない
これにより、自動化スクリプトやCI/CDパイプラインでの予測可能な動作が保証されます。

出力形式とアーティファクト

Droid execは異なる用途に対応する3つの出力形式をサポートします:

text(デフォルト)

直接使用やログ用の人間が読みやすい出力:

json

スクリプトや自動化での解析用の構造化JSON出力:
JSON形式を使用する場面:
  • スクリプトで結果を解析する必要がある場合
  • プログラム的に成功/失敗をチェックする場合
  • 継続のためにセッションIDを抽出する場合
  • パイプラインで結果を処理する場合

生の JSON-RPC でカスタムフローを構築

カスタム統合では、Droid を長時間動作するサブプロセスとして起動し、stdin/stdout 経由で完全な JSON-RPC 制御インターフェースを操作できます:
これは、Droid のまわりに独自の対話モデルを構築するための最も低レベルな統合方法です。プロセス側からターン送信、アシスタント出力のストリーミング、権限処理、設定更新、MCP/ツール管理、作業の割り込み、セッションの再開や fork を行えます。 stdin の各行は 1 つの JSON-RPC リクエストです。stdout の各行は JSON-RPC レスポンス、サーバーリクエスト、または通知です。一般的なカスタムクライアントでは、次のような処理を行います:
  • プロジェクトの cwd と必要なフラグを指定して droid exec を起動
  • 一意な ID を持つ改行区切りの JSON-RPC リクエストを書き込む
  • droid.initialize_session または droid.load_session から開始
  • droid.add_user_message でターンを送信
  • stdout を 1 行ずつ読み取り、id でレスポンスを対応付ける
  • アシスタントテキストの差分、ツールイベント、トークン使用量、エラー、ターン完了に関する droid.session_notification イベントを処理
  • droid.request_permissiondroid.ask_user などの server-to-client リクエストに応答
  • 作業の割り込み、設定更新、MCP サーバー/ツール管理、コンテキスト確認、セッションの fork、履歴圧縮のためにほかのセッションメソッドを呼び出す
  • タイムアウト、プロセスのクリーンアップ、セッション永続化を実装
生の stdin/stdout を土台にして、たとえば次のようなカスタム対話フローを構築できます:
  • 独自の UX と操作系を持つ Web、デスクトップ、IDE のエージェント体験
  • ユーザー操作を Droid のターンにルーティングするチャットや copiloting UI
  • Droid タスクを実行し、進捗をビルドログに出力する CI や workflow runner
  • 作業をキューイングし、セッションを再開し、会話を fork し、結果を永続化するオーケストレーター
  • ツール権限リクエストを承認、拒否、変換、監査するポリシーレイヤー
  • Droid イベントを独自のプロトコル、メッセージバス、telemetry、ストレージ層へ橋渡しするブリッジ
プロトコルのリファレンスと実装パターンについては、TypeScript SDK の low-level client と process transport を参照してください。 可能であれば SDK を優先してください:
  • TypeScript: Node.js アプリ向けの @factory/droid-sdk。ストリーミング、マルチターンセッション、構造化出力、権限、ツール制御、SDK ベースの MCP ツールに対応
  • Python: asyncio アプリ向けの droid-sdk。ストリーミング、クライアントの直接制御、通知、権限、型付きイベント処理に対応
自動化されたパイプラインの場合、エージェントに特定のアーティファクトを書くよう指示することもできます:

作業ディレクトリ

  • --cwd を使用して実行範囲を指定する:
  • -w, --worktree [name] を使うと、専用ブランチを持つ隔離された Gitワークツリー の中でタスクを実行できます。同じリポジトリに対して、ファイル競合なしで droid exec ジョブを並列展開するのに便利です:
クリーンなワークツリーは終了時に自動削除され、未コミット変更があるワークツリーは作業を確認して push できるよう保持されます。

モデルと推論力

モデルを -m で選択し、推論力を -r で調整してください。利用可能なモデルについては利用可能なモデルをご覧ください。
--use-spec を使用して仕様モードで開始します。このモードでは、エージェントが実行前に計画を立てます:
仕様フェーズで異なるモデルを使用することもできます:

ツール制御

モデルで利用可能なツールを一覧表示する:
特定のツールを有効または無効にする:

カスタムモデル

~/.factory/settings.jsonファイルにカスタムモデルを追加することで、droid execで使用するカスタムモデルを設定できます:
カスタムモデルを使用するには、custom: プレフィックスの後に表示名(スペースをダッシュで置き換えたもの)とインデックスを続けます:
複数のカスタムモデルを設定している場合:
次のように参照します:
  • --model "custom:Kimi-K2-[Groq]-0"
  • --model "custom:GPT-OSS-20B-[OpenRouter]-1"
インデックスはcustomModels配列の位置に対応します(0ベース)。
推論努力(-r / --reasoning-effort)はカスタムモデルではまだサポートされていませんが、近日対応予定です。

セッション、タグ付け、ログ

Forkを使うと、元のセッションを乱すことなく既存セッションから分岐できます。新しい実行は分岐元セッションの履歴から開始され、新しいセッションIDが割り当てられます。
--tag を使うと、実行に検索可能なラベルを付与できます。このフラグは繰り返し指定でき、プレーンな名前または構造化メタデータ用のJSONオブジェクトを受け付けます。--log-group-id と組み合わせて関連する実行のログを同じグループにまとめると、後段のフィルタリングや集計が容易になります。

システムプロンプトのカスタマイズ

--append-system-prompt を使うと、単一実行のシステムプロンプトの末尾に追加テキストを付加できます。--append-system-prompt-file はファイルの内容を末尾に追加します。両方のフラグは組み合わせて使用でき、グローバル設定を変更することなくプロジェクト固有のガイダンス、スタイルガイド、不変条件を注入するのに便利です。

ミッションモード

ミッションモードは、droid exec を作業を計画し、ワーカーエージェントに委任し、結果を検証するマルチエージェントオーケストレーターとして実行します。--mission で有効化し、ワーカーおよびバリデーターロール用の専用モデルと推論努力レベルをオプションで選択できます。

ミッションモードのフラグ

フラグ説明
--missionミッションモード(マルチエージェントオーケストレーション)で実行します。
--worker-model <id>ミッションワーカーエージェントが使用するモデルID。
--worker-reasoning-effort <level>ミッションワーカーの推論努力。
--validator-model <id>ミッションバリデーターエージェントが使用するモデルID。
--validator-reasoning-effort <level>ミッションバリデーターの推論努力。
最上位の -m, --model-r, --reasoning-effort フラグは引き続きオーケストレーター自体に適用されます。ワーカーおよびバリデーターのオーバーライドは、オーケストレーターが生成するエージェントにのみ影響します。

バッチと並列パターン

シェルループ(制限された並行性):
バックグラウンドジョブの並列化:
チャンク化された入力:
ワークフロー自動化 (CI/CD):

ユニークな使用例

ライセンスヘッダー執行機能:
APIコントラクト差分チェック(読み取り専用):
セキュリティスイープ:

終了動作

  • 0: 成功
  • 0以外: 失敗(権限違反、ツールエラー、目標未達成)。CIでは0以外を失敗として扱う。

ベストプラクティス

  • --auto lowを優先し、変更を最小限に抑えてスクリプト化されたステップでcommit/pushする。
  • 完全にサンドボックス化されていない限り、--skip-permissions-unsafeの使用は避ける。
  • パイプラインで検証可能なアーティファクトを出力するようエージェントに指示する。
  • モノレポでスコープを制限するために--cwdを使用する。