カスタム CLI Docker サンドボックス

任意のエージェントCLIをDaguのDockerサンドボックスから実行する。

カスタムharness providerは、CLIバイナリ、固定引数、プロンプトの渡し方をDaguのharness.runステップに対応させます。社内エージェント、ラッパースクリプト、Dagu組み込みではないプロバイダに使います。

Docker内のカスタムプロバイダ
type: graph

harnesses:
  review_agent:
    binary: review-agent
    prefix_args:
      - run
    prompt_mode: arg

steps:
  - id: review
    action: harness.run
    container:
      image: dagu-review-agent:local
      pull_policy: never
      working_dir: /workspace
      volumes:
        - .:/workspace:ro
      env:
        - REVIEW_AGENT_TOKEN=${REVIEW_AGENT_TOKEN}
    with:
      provider: review_agent
      prompt: |
        Review this repository.

トップレベルharnessesでproviderバイナリを定義します。

プロンプトを引数で受け取るCLIにはprompt_mode: argを使います。

プロンプトフラグが必要なCLIにはprompt_mode: flagを使います。

コンテナ内のharness.runではstdinのprompt modeは使いません。

01

プロバイダ定義

with.providerの名前はトップレベルharnessesのエントリと一致する必要があります。イメージ内のPATHに設定したbinaryが存在している必要があります。

02

プロンプトを引数で渡す

CLIが最後のコマンドライン引数としてプロンプトを受け取る場合はprompt_mode: argを使います。Daguは review-agent run "Review this repository." の形のコマンドを作ります。

03

プロンプトをフラグで渡す

CLIが名前付きのプロンプトフラグを要求する場合はprompt_mode: flagを使います。

flag prompt mode
harnesses:
  review_agent:
    binary: review-agent
    prefix_args:
      - run
    prompt_mode: flag
    prompt_flag: --prompt
04

コンテナ要件

ランナーイメージにはproviderバイナリ、そのランタイム、必要な補助ツール、書き込み可能なhomeやcacheディレクトリが必要です。認証情報はcontainer.envまたはproviderが読むファイルのマウントで渡します。