Communityコーディング&開発github.com

pertamaxxx/agents

Cloudflare Durable Objectsを使用して、ステートフルで永続的なエージェントワークロードを管理し、効率的でスケーラブルなリアルタイム通信とスケジューリングを実現します。

agents とは?

このスキルは、Cloudflare Durable Objectsを活用して、ステートフルで永続的なAIエージェントワークロードを管理するための方法を提供します。Durable Objectsは、単一のワーカーインスタンス内で状態を保持し、一貫性のあるリアルタイム通信とスケジューリングを可能にします。これにより、エージェントは複数のクライアント間で状態を共有し、長期的なタスクや分散システムでの調整を効率的に実行できます。Claude CodeやCursorなどのAIエージェントプラットフォームと統合可能で、サーバーレス環境でのスケーラブルなリアルタイム処理に最適です。ワークロードの永続性と低レイテンシな通信が必要なユースケース、例えばチャットボット、IoTデバイス管理、ゲーム状態同期などに特に有用です。

対応~Claude Code~Codex CLI~Cursor
npx skills add pertamaxxx/agents

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

agents は何をしますか?

Cloudflare Durable Objectsを使用して、ステートフルで永続的なエージェントワークロードを管理し、効率的でスケーラブルなリアルタイム通信とスケジューリングを実現します。

概要

このプロジェクトは、CloudflareのDurable Objects上に構築されたエージェントシステムです。各エージェントは独自の永続的な状態を持ち、リアルタイムで通信し、タスクをスケジュールできます。

はじめ方

前提条件

  • Node.js 18以上
  • Cloudflareアカウント
  • Wrangler CLI(npm install -g wrangler)

インストール

npx wrangler generate my-agent-app https://github.com/pertamaxxx/agents
cd my-agent-app
npm install

設定

wrangler.tomlを編集して、Durable Objectsバインディングを追加します:

name = "my-agent-app"
main = "src/index.ts"
compatibility_date = "2024-01-01"

[[durable_objects.bindings]]
name = "AGENTS"
class_name = "Agent"

[[migrations]]
tag = "v1"
new_classes = ["Agent"]

使用方法

エージェントの作成

import { Agent } from "pertamaxxx/agents";

// Durable Objectクラスとしてエージェントを定義
export class MyAgent extends Agent {
  async handleMessage(message: string): Promise<string> {
    // エージェントのロジックをここに実装
    return `受信: ${message}`;
  }
}

エージェントとの通信

// エージェントIDを指定して通信
const agentId = "user-123";
const stub = env.AGENTS.get(env.AGENTS.idFromName(agentId));
const response = await stub.fetch(new Request("https://agent/message", {
  method: "POST",
  body: JSON.stringify({ text: "こんにちは" })
}));

スケジューリング

// 特定の時間にタスクをスケジュール
await agent.scheduleTask("daily-report", {
  cron: "0 9 * * *",
  handler: async () => {
    // 日次レポートを生成
  }
});

高度な使用法

状態管理

各エージェントは自動的に状態を永続化します。this.stateを使用してアクセスします:

export class CounterAgent extends Agent {
  async increment(): Promise<number> {
    const count = (await this.state.get("count")) || 0;
    await this.state.put("count", count + 1);
    return count + 1;
  }
}

ブロードキャスト

// すべてのアクティブなエージェントにメッセージをブロードキャスト
await agent.broadcast("system-update", { version: "2.0.0" });

APIリファレンス

Agent クラス

メソッド説明
handleMessage(msg)受信メッセージを処理します
scheduleTask(name, config)タスクをスケジュールします
broadcast(event, data)メッセージを全エージェントにブロードキャストします
getState()現在の状態を取得します

ライセンス

MIT

関連スキル