mcpField
C
Convex Agents Workflows

Convex Agents Workflows

github.com/sstoboエージェントワークフロー24198 回インストール40 週間前に更新
リポジトリ

Convex Agents Workflows について

Convex Agents Workflows は、Convex で複数ステップのエージェント処理を永続的に実行するスキルです。エージェントの連携や、再試行とサーバー再起動に耐えるワークフローの構築に役立ちます。

主な機能

  1. 01複数ステップの永続実行
  2. 02冪等性による安全な再試行
  3. 03各ステップの原子性
  4. 04ステップ、アクション、ワークフローの合成
  5. 05複数エージェントの連携

活用シーン

  1. 01調査、分析、レポートの一連処理
  2. 02複数エージェント間の作業調整
  3. 03再起動後の長時間処理の再開

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sstobo/convex-skills --skill convex-agents-workflows

インストール後、Claude Code で/convex-agents-workflowsを入力して読み込まれたか確認します。

詳細

目的

複雑なエージェントのワークフローを、堅牢かつ確実に実行できるようにします。ワークフローにより、複数ステップの操作を確実に完了し、サーバー障害から復旧し、冪等性を維持できます。

このスキルを使用する場面

  • 複数ステップのエージェント操作を構築する(調査 → 分析 → レポート)
  • 複数のエージェントの連携を調整する
  • サーバーの再起動後も継続する必要がある長時間実行の操作
  • 冪等性を確保する(再試行しても作業が重複しない)
  • 確実な実行保証が求められる複雑なアプリケーション

セットアップ

convex.config.ts で Workflow コンポーネントを設定します。

import { defineApp } from "convex/server";
import agent from "@convex-dev/agent/convex.config";
import workflow from "@convex-dev/workflow/convex.config";

const app = defineApp();
app.use(agent);
app.use(workflow);

export default app;

ワークフローを定義する

import { WorkflowManager } from "@convex-dev/workflow";

const workflow = new WorkflowManager(components.workflow);

export const simpleAgentFlow = workflow.define({
  id: "simple-flow",
  args: { userId: v.string(), prompt: v.string() },
  handler: async (step, { userId, prompt }) => {
    // Step 1: Create thread
    const { threadId } = await step.runMutation(
      internal.agents.createThreadMutation,
      { userId }
    );

    // Step 2: Generate response
    const response = await step.runAction(
      internal.agents.generateTextAction,
      { threadId, prompt }
    );

    return response;
  },
});

マルチエージェントワークフロー

複数のエージェントをオーケストレーションします。

export const researchFlow = workflow.define({
  id: "research",
  args: { topic: v.string(), userId: v.string() },
  handler: async (step, { topic, userId }) => {
    const { threadId: researchId } = await step.runMutation(
      internal.agents.createThreadMutation,
      { userId, title: `Research: ${topic}` }
    );

    const research = await step.runAction(
      internal.agents.generateTextAction,
      { threadId: researchId, prompt: `Research: ${topic}` }
    );

    const { threadId: analysisId } = await step.runMutation(
      internal.agents.createThreadMutation,
      { userId, title: `Analysis: ${topic}` }
    );

    const analysis = await step.runAction(
      internal.agents.generateTextAction,
      { threadId: analysisId, prompt: `Analyze: ${research}` }
    );

    return { research, analysis };
  },
});

主な原則

  • 耐久性:ワークフローはサーバーの再起動後も継続します
  • 冪等性:同じワークフローを安全に再試行できます
  • アトミック性:各ステップは完全に完了するか、再試行されます
  • 合成可能性:ステップから別のワークフローやアクションを呼び出せます

次のステップ

  • エージェントのセットアップについては fundamentals を参照してください
  • 関数を呼び出すエージェントについては tools を参照してください
  • ワークフロー対応コンテキストについては context を参照してください

コメント