OpenAICloudflare Developer Platform2026/06/02 0:00

Agents, Workers - Agents SDK v0.14.0: Agent Skills, messengers, scheduled tasks, Workflows, and hardened chat recovery

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

Agents SDK v0.14.0:Skills、messengers、スケジュール、Workflows、チャット復旧の強化

Key Points

  • 実験的な Agent Skills 追加
  • Telegram 対応の Messengers
  • チャット復旧を本番向けに強化

Summary

Agents SDK v0.14.0 では、Think ベースのエージェント開発に対して4つの主要な拡張(Agent Skills、Messengers、Scheduled Tasks、Workflows内の耐久的ステップ)と、プロダクション向けの耐障害性強化が追加されました。特にチャットの耐久復旧が大幅に改善され、デプロイや接続切断時の中断を減らします。

Key Points

  • Agent Skills(実験機能)
    • getSkills() でオンデマンド指示・リソース・スクリプトのカタログを追加。
    • ローカル agents:skills、R2、マニフェストから読み込み。重複や失敗ソースは警告でスキップ。
    • スクリプト実行は初期段階で API の変更可能性あり。フィードバック推奨。
  • Messengers(チャット接続)
    • Think がウェブフック、会話ルーティング、耐久返信、配信を管理。Telegram が最初の提供者。
    • defineMessengers() を使い、スレッドごとにサブエージェントを割当て(DM とグループは分離)。
  • Scheduled Tasks(宣言型 DSL)
    • defineScheduledTasks() でタイムゾーン対応の繰り返しプロンプトとハンドラを宣言。起動時に宣言を照合し次回実行を再設定。
  • Think Workflows
    • ThinkWorkflowstep.prompt() でワークフロー内にモデル駆動の推論ステップを組込める。耐久的な構造化出力、長待機、承認ゲートをサポート。
  • チャット復旧のプロダクション強化
    • デプロイや DO eviction をまたいでターンが完走するよう改善。
    • useAgentChatisRecovering フラグを追加。UI は isStreaming || isRecovering を「処理中」と扱うとよい。
    • chatStreamStallTimeoutMs を設定するとハングしたプロバイダストリームを復旧経路へ誘導可能。
    • サブエージェントの子ツールは親復旧時に結果へ再アタッチされ、長時間の子処理が失われない。
  • MCP / トランスポート改善
    • SSE の再開対応(Last-Event-ID)で中断耐性向上。
    • addMcpServer に読みやすい id を指定でき、ツール名の可読化が可能。
    • 重複する JSON-RPC リクエストの正しい応答紐付けを改善。
  • その他の改善点(実務メモ)
    • セッションの tokenCounter が圧縮境界決定に影響。
    • @cloudflare/worker-bundlercreateWorkervirtualModules オプション追加(インメモリモジュールソース)。
    • クライアントツールの継続処理が合流し、承認後の再開が安定。

Upgrade / 互換性

  • Agent Skills は実験的で API が変更される可能性があります。スクリプト実行を本番で使う場合は注意してください。
  • 依存更新コマンド(いずれかを使用): npm i agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latestyarn add agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latestpnpm add agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latestbun add agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latest

フィードバックや具体的な採用ケースは Agents リポジトリで歓迎されています。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

Agents、Workers - Agents SDK v0.14.0:Agent Skills、messengers、scheduled tasks、Workflows、および強化されたチャット復旧

Agents SDK v0.14.0: Agent Skills、messengers、scheduled tasks、Workflows、および強化されたチャット復旧

公開日: 2026-06-02

最新リリースの Agents SDK (v0.14.0) は、@cloudflare/think を使った構築方法を4つ追加します:オンデマンドの Agent Skills、チャット用 messengers(まずは Telegram)、宣言的な scheduled tasks、Workflows 内での耐久的な推論ステップ。また、本リリースでは耐久的チャット復旧の大幅な強化を行っており、本番環境でのデプロイ/オブジェクト追い出し/モデルストリームの停止などの状況下でもターンが確実に継続されるようになりました。

Agent Skills(実験的)

エージェントにオンデマンドの命令、リソース、スクリプトのカタログを与えます。スキルソースはシステムプロンプトにカタログを追加し、タスクが一致したときのみモデルがスキルを有効化するため、膨大な機能ライブラリが常にプロンプトを肥大化させることはありません。

JavaScript 例:

import { Think, skills } from "@cloudflare/think";
import bundledSkills from "agents:skills";
export class SkillsAgent extends Think {
  getSkills() {
    return [
      bundledSkills,
      skills.r2(this.env.SKILLS_BUCKET, { prefix: "skills/" }),
    ];
  }
}

TypeScript 例:

import { Think, skills } from "@cloudflare/think";
import bundledSkills from "agents:skills";
export class SkillsAgent extends Think<Env> {
  getSkills() {
    return [
      bundledSkills,
      skills.r2(this.env.SKILLS_BUCKET, { prefix: "skills/" }),
    ];
  }
}

agents:skills の import は Agents Vite プラグインを通じてローカルの ./skills ディレクトリをバンドルします(スキルごとに1つのディレクトリ、各ディレクトリに SKILL.md)。スキルは R2 やマニフェストからも読み込めます。スキルが利用可能な場合、Think は activate_skillread_skill_resource、およびオプションの run_skill_script ツールを公開します。スキルの読み込みは堅牢で、重複や読み込み失敗したソースは警告を出してスキップされ、エージェント全体を壊すことはありません。

Agent Skills は実験的です。特にスクリプト実行はまだ初期段階であり、API は将来のリリースで変更される可能性があります。フィードバック歓迎 — 何を作っているか、何が不足しているかを Agents リポジトリ ↗ に教えてください。

Messengers

Think エージェントをチャットプラットフォームに直接接続します。Think は webhook ルート、会話ルーティング、耐久的な返信ファイバー、プロバイダーへのストリーミング配信を管理します。最初のプロバイダーとして Telegram を提供します。

JavaScript 例:

import { Think } from "@cloudflare/think";
import { defineMessengers, ThinkMessengerStateAgent } from "@cloudflare/think/messengers";
import telegramMessenger from "@cloudflare/think/messengers/telegram";
export { ThinkMessengerStateAgent };
export class SupportAgent extends Think {
  getMessengers() {
    return defineMessengers({
      telegram: telegramMessenger({
        token: this.env.TELEGRAM_BOT_TOKEN,
        userName: "support_bot",
        secretToken: this.env.TELEGRAM_WEBHOOK_SECRET_TOKEN,
      }),
    });
  }
}

TypeScript 例:

import { Think } from "@cloudflare/think";
import { defineMessengers, ThinkMessengerStateAgent } from "@cloudflare/think/messengers";
import telegramMessenger from "@cloudflare/think/messengers/telegram";
export { ThinkMessengerStateAgent };
export class SupportAgent extends Think<Env> {
  getMessengers() {
    return defineMessengers({
      telegram: telegramMessenger({
        token: this.env.TELEGRAM_BOT_TOKEN,
        userName: "support_bot",
        secretToken: this.env.TELEGRAM_WEBHOOK_SECRET_TOKEN,
      }),
    });
  }
}

各チャット SDK スレッドはデフォルトで独自の Think サブエージェントにマップされるため、グループチャットとダイレクトメッセージはメモリを共有しません。複数ボットのサポート、カスタム会話ルーティング、カスタムプロバイダーもサポートされています。

Scheduled tasks(宣言的スケジュール)

型付き DSL を使って、繰り返しのタイムゾーン対応プロンプトとハンドラを宣言できます。Think は起動時に宣言を整合し、各実行後に次回発生時刻を再設定します。バックエンドは耐久的で冪等なサブミッションです。

JavaScript 例:

import { Think, defineScheduledTasks } from "@cloudflare/think";
export class DigestAgent extends Think {
  getScheduledTasks() {
    return defineScheduledTasks({
      weeklyCommitReport: {
        schedule: "every week on monday at 09:00",
        prompt: "Compile my GitHub commits for the last week and summarize them.",
      },
      workout: {
        schedule: "every day at 08:00 in Europe/London",
        prompt: "Start my workout.",
      },
    });
  }
}

TypeScript 例:

import { Think, defineScheduledTasks } from "@cloudflare/think";
export class DigestAgent extends Think<Env> {
  getScheduledTasks() {
    return defineScheduledTasks({
      weeklyCommitReport: {
        schedule: "every week on monday at 09:00",
        prompt: "Compile my GitHub commits for the last week and summarize them.",
      },
      workout: {
        schedule: "every day at 08:00 in Europe/London",
        prompt: "Start my workout.",
      },
    });
  }
}

Think Workflows

Cloudflare Workflow 内でモデル駆動の推論ステップを実行できます。ThinkWorkflowstep.prompt() を使い、耐久的で型付きの構造化出力、長時間待機、承認ゲートをサポートします。

JavaScript 例:

import { z } from "zod";
import { ThinkWorkflow } from "@cloudflare/think/workflows";

const draftSchema = z.object({
  title: z.string(),
  summary: z.string(),
  labels: z.array(z.string()),
});

export class TriageWorkflow extends ThinkWorkflow {
  async run(event, step) {
    const draft = await step.prompt("triage-issue", {
      prompt: `Triage issue #${event.payload.issueNumber}`,
      output: draftSchema,
      timeout: "3 days",
    });

    await step.do("apply-labels", async () => {
      await this.agent.applyLabels(draft.labels);
    });
  }
}

TypeScript 例:

import { z } from "zod";
import { ThinkWorkflow } from "@cloudflare/think/workflows";
import type { ThinkWorkflowStep } from "@cloudflare/think/workflows";
import type { AgentWorkflowEvent } from "agents/workflows";

const draftSchema = z.object({
  title: z.string(),
  summary: z.string(),
  labels: z.array(z.string()),
});

export class TriageWorkflow extends ThinkWorkflow<TriageAgent, Params> {
  async run(event: AgentWorkflowEvent<Params>, step: ThinkWorkflowStep) {
    const draft = await step.prompt("triage-issue", {
      prompt: `Triage issue #${event.payload.issueNumber}`,
      output: draftSchema,
      timeout: "3 days",
    });

    await step.do("apply-labels", async () => {
      await this.agent.applyLabels(draft.labels);
    });
  }
}

本番向けの耐久的チャット復旧の強化

耐久的チャットターン(durable chat turns)は、以前からターン中のデプロイや Durable Object の追い出しに耐える設計でした。本リリースはその仕組みを本番向けに大幅に強化しています。

  • デプロイ中の回復性の向上
    • ターンは継続的なデプロイや追い出しをまたいで完了済みの作業を失わず、既に実行されたツールを再実行しません。
  • ライブでの "recovering…" シグナル
    • useAgentChat は新しい isRecovering フラグを公開します。回復中のターンはフリーズしているように見えず進行状況を表示できます。多くの UI は isStreaming || isRecovering を "busy" としてレンダリングします。
  • 停止したストリームの回復
    • chatStreamStallTimeoutMs を設定すると、プロバイダーストリームがハングした場合でも無限スピナーを残すのではなく同じ回復経路にルーティングされます。
  • サブエージェントの再アタッチ
    • 親の回復時に、実行中の agentTool() 子が放棄されて再実行されるのではなく、その結果に再アタッチされるため、長時間実行される子がデプロイ時に作業を失うことがなくなります。

MCP トランスポートの改善

  • 再開可能なストリーム
    • SSE(Server-Sent Events)上の実行中ツール呼び出しは、接続が切断されても生き残ります。クライアントは Last-Event-ID で再接続し、見逃したイベントを再生します。
  • 読みやすいサーバー ID
    • addMcpServer はオプションの id を受け付けるようになり、ツールは読みやすいキー(例: tool_github_create_pull_request)として表示できます。接続 ID のような不透明な値ではありません。
  • 同時リクエストのハンドリング向上
    • オーバーラップする JSON-RPC リクエストは、HTTP と RPC の両トランスポート上で正しくレスポンスと対応付けられるようになりました。

その他の改善

  • コンパクション
    • SessiontokenCounter が、単にトリガーするかどうかだけでなくコンパクション境界("何を圧縮するか")の決定にも使われるようになりました。
  • @cloudflare/worker-bundler
    • createWorkervirtualModules オプションを追加し、バンドル時にインメモリのモジュールソースを提供できるようになりました。
  • クライアント-ツールの継続処理
    • 並列のツール結果は単一の継続にまとまり、即時のリジューム要求は保留中の継続にアタッチされ、サーバー側の needsApproval 継続は承認後に確実に再開されます。

アップグレード

最新バージョンに更新するには、パッケージマネージャーに応じて次を実行してください。

  • npm:

    npm i agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latest

  • yarn:

    yarn add agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latest

  • pnpm:

    pnpm add agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latest

  • bun:

    bun add agents@latest @cloudflare/think@latest @cloudflare/ai-chat@latest

詳しくは Agents API リファレンスと Chat agents ドキュメントを参照してください。


フィードバックや詳細については Agents リポジトリ ↗ をご確認ください。