DEV Community

Cover image for agentHints: CLIsとエージェントの対話を実現する
Akira
Akira

Posted on • Originally published at apidog.com

agentHints: CLIsとエージェントの対話を実現する

これは、APIテストおよびAPIライフサイクル管理のためのコマンドラインツールであるApidog CLIがどのように開発されたかを共有する10部構成のシリーズです。順番に読むか、興味のある記事に直接進んでください。

今すぐApidogを試す

従来のCLI出力は人間向けです。Agentには、構造化された結果、失敗理由、次ステップの提案が必要です。agentHintsは、製品経験を機械可読なガイダンスとしてCLI出力に埋め込みます。


CLI出力のギャップ

従来のCLI出力は、基本的に人間が読むことを前提に設計されています。

成功時 失敗時
「成功」または「完了」と表示する エラーメッセージを表示する
作成されたリソースを表示する場合がある スタックトレースを表示する場合がある
人間が読んで次の操作を判断する 人間が読んでデバッグする

人間であれば、次のような判断ができます。

  • 曖昧なメッセージを文脈から解釈する
  • 次に実行すべきコマンドを選ぶ
  • 直前の操作や目的を記憶している
  • ドメイン知識を使って回復手順を考える

しかし、Agentは同じようには動きません。Agentに必要なのは「読める文章」ではなく、次のアクションに接続できる構造化された事実です。


AgentがCLI出力に求めるもの

Agentはコマンド結果を受け取ったあと、その結果を次のタスクに接続する必要があります。

Agentが必要とする情報 理由
構造化された結果 出力をプログラム的にパースするため
失敗の理由 一般的なエラーではなく、修正対象を特定するため
次ステップの提案 次に実行すべき操作を判断するため

たとえば、人間は「リソースが正常に作成されました」と表示されれば、次のように考えられます。

  1. 作成されたリソースを確認する
  2. 必要ならフィールドを修正する
  3. テストケースやシナリオに追加する
  4. 実行して結果を見る

一方、Agentが同じメッセージだけを受け取ると、「作成が成功した」という事実は分かっても、次に何をすべきかは明示されていません。


agentHints:CLI出力に次ステップを含める

Apidog CLIでは、出力にagentHintsを追加します。

典型的なレスポンスは次のような構造です。

{
  "success": true,
  "data": {
    "id": "12345",
    "name": "Health Check Test Case"
  },
  "agentHints": {
    "summary": "Test case created successfully.",
    "nextSteps": [
      "Read the created test case back to confirm structure.",
      "Add assertions if the test case needs response validation.",
      "Add the test case to a test scenario for integration testing.",
      "Run related tests after adding to scenario."
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

実装上のポイントは3つです。

フィールド 役割
success + data 実際の実行結果
agentHints.summary 人間にも読みやすい要約
agentHints.nextSteps Agentが次に選べるアクション候補

Agent側では、たとえば次のように処理できます。

const result = await runCliCommand();

if (result.success) {
  const nextStep = result.agentHints?.nextSteps?.[0];

  if (nextStep) {
    console.log("Recommended next step:", nextStep);
  }
} else {
  console.error(result.error);
  console.log(result.agentHints?.summary);
}
Enter fullscreen mode Exit fullscreen mode

重要なのは、CLIが単に成功・失敗を返すだけでなく、ワークフロー上の次の安全な操作も返すことです。


実行慣性の問題

Agentワークフローでよく起きる問題が、実行慣性です。

リソースの作成に成功すると、モデルはそのまま次の書き込み操作を続けがちです。

Agent: テストケースを作成
CLI: 成功を返す
Agent: 読み戻しなしでテストシナリオを作成
Agent: すぐにテストを実行
結果: シナリオ構造が実データと合わず、テストが失敗
Enter fullscreen mode Exit fullscreen mode

複雑なAPIテストや業務フローでは、機械的に次の書き込みへ進むのは安全ではありません。

より安全な流れは次のとおりです。

  1. リソースを作成する
  2. 作成されたリソースを読み戻す
  3. 実際の構造を確認する
  4. その構造に基づいて次の操作を行う

agentHintsは、この「読み戻し」をAgentに明示的に促すために使えます。


読み戻しが重要な理由

読み戻しをスキップすると、Agentは実データではなく推測に基づいて次の操作を行います。

問題 原因
誤ったデフォルト値 サーバーがAgentの指定していない値を補完する
関連IDの欠落 インポートや作成処理で新しい内部IDが生成される
構造の差異 フロントエンドやAPIが特定のパース結果に依存する
誤った仮定 Agentが「おそらくこうなっている」という想像で続行する

そのため、作成・更新のあとには次のようなループが必要です。

write → read back → inspect → continue
Enter fullscreen mode Exit fullscreen mode

agentHintsは、このループをCLI出力の中で明示します。


ナビゲーターとしてのagentHints

agentHintsは、製品や運用で得られた経験を、Agentが読める次ステップとして表現します。

テストケース作成後の例です。

{
  "agentHints": {
    "nextSteps": [
      "Read back the created test case with --with-case-detail flag.",
      "Validate any updates with cli-schema before writing.",
      "Run tests after completing test scenario."
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

Agentはこの出力を使って、次のように進められます。

  1. CLI出力を受け取る
  2. agentHints.nextStepsをパースする
  3. nextSteps[0]に従ってテストケースを読み戻す
  4. 実際の構造を確認する
  5. 確認済みの情報を使って次の操作を行う

つまり、CLIは単なる実行結果ではなく、その時点で安全に進むためのナビゲーション情報を返します。


CLIの役割は「実行者」から「ナビゲーター」へ変わる

Agentワークフローでは、CLIの役割も変わります。

古いCLIの役割 Agent時代のCLIの役割
コマンドを実行する ワークフローを案内する
結果を表示する 次の操作を提案する
人間が読む出力を返す Agentがパースできる構造を返す
単発の応答を返す 継続的なガイダンスを返す

この設計により、CLIは軽量なステータスナビゲーターになります。

AgentはCLI出力を読み、次の操作を推測するのではなく、構造化されたヒントに従って進められます。


組み込みのワークフローツリー

Apidog CLIには、組み込みのツリー構造ワークフローがあります。

これは単なる固定メッセージではありません。操作の種類や状態に応じて、適切なヒントを返すための仕組みです。

特性 説明
コンテキストを意識 提案が現在の操作に対応する
リソース固有 エンドポイント、テストケース、シナリオごとに異なるヒントを返す
ワークフローを意識 典型的な実行順序を反映する
エラーを通知 成功時と失敗時で異なる提案を返す

たとえば、テストシナリオの更新が成功した場合は次のような出力になります。

{
  "agentHints": {
    "summary": "Test scenario updated successfully.",
    "nextSteps": [
      "Run the test scenario to verify changes.",
      "Check the test report for any failures.",
      "If failures occur, read back scenario steps for debugging."
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

バリデーションに失敗した場合は、修正の方向性を含めます。

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Field 'comparator' has invalid value",
    "details": []
  },
  "agentHints": {
    "summary": "Validation failed. Fix the errors and re-validate.",
    "nextSteps": [
      "Review the error details in the output.",
      "Adjust the JSON file based on error suggestions.",
      "Re-run cli-schema validate before writing."
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

このように、失敗も「止まる場所」ではなく、次に修正できる状態として扱えます。


agentHintsを使った安全なループ

agentHintsを使うと、Agentの操作は次のようなループになります。

ステップ1: Agentがテストケースを作成
        ↓
CLI出力: success + agentHints
        ↓
agentHints.nextSteps[0]: 作成されたテストケースを読み戻す
        ↓
ステップ2: Agentが実際の構造を読み戻す
        ↓
CLI出力: テストケース構造 + agentHints
        ↓
agentHints.nextSteps[0]: 必要に応じてアサーションを追加
        ↓
ステップ3: Agentが実構造に基づいてアサーションを追加
        ↓
CLI出力: success + agentHints
        ↓
agentHints.nextSteps[0]: テストを実行
        ↓
ステップ4: Agentがテストを実行
        ↓
CLI出力: テストレポート
Enter fullscreen mode Exit fullscreen mode

この流れでは、各ステップで次の操作がガイドされます。

  • 書き込み後に読み戻す
  • 実データを確認してから更新する
  • バリデーション失敗時は修正して再検証する
  • テスト失敗時はレポートやシナリオ構造を確認する

盲目的なジャンプや、推測に基づく書き込みを減らせます。


比較:agentHintsありとなし

シナリオ agentHintsなし agentHintsあり
作成後 Agentは次の書き込みへ進みがち Agentはまず読み戻す
更新後 Agentは成功したと仮定する Agentは構造を確認する
バリデーション通過後 Agentはすぐに書き込む Agentは書き込み後に読み戻す
バリデーション失敗後 Agentはエラー処理に迷う Agentは具体的な修正候補を得る
テスト実行後 Agentは合否だけを見る Agentはデバッグ手順を得る

実装の観点では、CLI出力に以下を含めるだけでAgentの振る舞いを改善できます。

{
  "success": true,
  "data": {},
  "agentHints": {
    "summary": "Operation completed.",
    "nextSteps": [
      "Read back the resource before making further changes.",
      "Validate the updated structure before writing.",
      "Run related tests after changes are complete."
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

ポイントは、nextStepsを単なる説明文ではなく、Agentが実行順序を判断するための構造化された配列として返すことです。


次は何ですか

CLIがAgentに次のステップを案内できるようになると、次の疑問が出てきます。

Agentは、そもそもどのワークフローに従うべきかをどうやって知るのでしょうか?

第5部、SKILL:運用経験をコードとして出荷するでは、SKILLがワークフロー知識をどのようにパッケージ化するかを扱います。

具体的には、次のような知識です。

  • どのタイミングでどのコマンドを使うか
  • どの順序で操作を進めるか
  • どのフィールドを推測してはいけないか
  • どこで読み戻しや検証を挟むべきか

主要なポイント

  • 従来のCLI出力は人間向けであり、Agentには構造化されたガイダンスが必要
  • agentHintsはJSON出力に要約と次ステップの提案を追加する
  • Agentは成功後に次の書き込みへ進みがちなので、読み戻しを明示する必要がある
  • CLIは単なる実行者ではなく、Agentワークフローのナビゲーターになれる
  • 成功時だけでなく、失敗時にも修正手順を提示できる
  • agentHintsにより、作成・読み戻し・検証・実行のループを安全に進められる

Apidogをダウンロードして、1つのワークスペースでAPIの設計モックテストドキュメント作成を行いましょう。コマンドラインAPIテスト、CI自動化、AI Agentワークフローに関するApidog CLIの詳細については、こちらをご覧ください。

Top comments (0)