Skip to content

提案: Prompts/Metadataによる動的ワークフロー誘導とdocstringの最小限化 #550

Description

@code-sandbox-mcp

背景・課題

エージェント型開発プラットフォーム(Cursor, Claude Code, agy等)において、AIエージェントの迷走を防ぐためには「正しい手順(コンテキスト)」をどのように与えるかが極めて重要です。

現在、sunabaの各ツールは個別に詳細なdocstringを持っており、エージェントはそれを参照して呼び出しています。しかし、これには以下の課題があります:

  1. トークンの浪費: 28個の全ツールのdocstringが長いと、毎ターンのシステムプロンプトの固定コストが肥大化し、API利用料金や応答速度に悪影響を及ぼします。
  2. 競合と迷走: 各ツールに「〇〇のフェーズで使ってください」といった制御フローの指示が静的に分散して書かれていると、フェーズ移行時にエージェントが判断の矛盾を起こしやすくなります。
  3. エージェント非依存の制御が困難: エージェントごとに指示ファイル(CLAUDE.mdAGENTS.md)の標準名や仕様が異なり、プロジェクトごとに指示書を準備するオーバーヘッドがあります。

提案

本MCP(sunaba)の設計を、**「静的なAPI仕様(docstring)」と「動的なワークフロー制御(Prompts/Metadata)」**に明確に分離することを提案します。

1. 各ツールの docstring を最小限に抑制(API仕様に特化)

各ツールの docstring は「機能説明と引数仕様(文法)」のみを極小で記述し、ワークフローに関するルールやコンテキストの記述をすべて削除します。これにより、コンテキストトークン消費量を劇的に節約します。

2. MCPの「Prompts」規格(prompts/list, prompts/get)の導入

MCPのプロトコル標準である Prompts を利用し、エージェントへ動的な指示を返します。

  • 例えば get_workflow_guide プロンプトを定義。
  • サーバー側で、コンテナ内の現在の状態(Gitの変更差分、直近のテスト成否等)を動的にチェック。
  • 現在のフェーズ(設計・実装 / 検証 / パブリッシュ)を特定し、最適な行動指示をMarkdownで組み立ててエージェント(システムプロンプト)に返します。

3. ツールの戻り値(Metadata)への「次の一手」のインジェクション

エージェントがファイル書き込みや型チェックなどのツールを実行した際、その実行結果(JSON)の末尾に、動的に recommended_next_action などのフィールドを追加して返します。

  • 例: ファイル書き込み成功時 ➔ recommended_next_tool: "verify_in_container"
  • エージェントは実行結果を読み込んで次の推論を行うため、この明示的な「次の一手」への推薦に誘導され、迷わずに正しいツールを呼び出せるようになります。

期待される効果

  • エージェントの完全自律化の推進: 人間の「手動での軌道修正(verifyを使え 等)」なしで、テスト実行からPRパブリッシュまでエージェントが一本道で動作できるようになります。
  • コンテキスト効率の向上: 毎ターンの固定トークン消費が削減され、高速かつ安価にエージェントを実行できます。
  • エージェント非依存: instructions.mdPrompts はMCPサーバー側の標準機能であるため、接続するエージェント(Gemini, Claude, GPT等)を問わず一貫したルールを強制できます。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions