Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

設定

最終更新 Markdown で表示Agent セットアップ

Think は、Think サブクラスのメソッドとプロパティをオーバーライドして設定します。ほとんどのエージェントは getModel() だけをオーバーライドします。

設定のオーバーライド

メソッド / プロパティ デフォルト 説明
getModel() throws 使う LanguageModel を返します
getSystemPrompt() "You are a helpful assistant." システムプロンプト(コンテキストブロックがない場合のフォールバック)
getTools() {} エージェンティックループ向けの AI SDK ToolSet
getScheduledTasks() {} コード宣言の定期プロンプトまたはハンドラー — スケジュールタスク を参照してください
getDefaultTimezone() undefined 壁時計ベースのスケジュールタスクのデフォルトタイムゾーン
getMessengers() {} Messenger の受信と配信の宣言 — Messengers を参照してください
maxSteps 10 1 ターンあたりのツール呼び出しラウンドの上限
sendReasoning true 推論チャンクをチャットクライアントへ送ります
configureSession() identity コンテキストブロック、コンパクション、検索、スキルを追加します — Sessions を参照してください
getSkills() [] オンデマンドのスキル有効化向けに Agent Skills のソースを返します — Agent Skills を参照してください
getSkillScriptRunner() null 任意の run_skill_script ツールを有効にします
workspaceBash true デフォルトのワークスペース bash ツールを含める、または設定します — Tools を参照してください
messageConcurrency "queue" 重なった送信の扱い — クライアントツール を参照してください
includeMcpTools true 接続済み MCP ツールを AI SDK ツールに変換し、モデルターンへ追加します。MCP ツール を参照してください
waitForMcpConnections false 推論の前に MCP サーバーを待ちます
chatRecovery 常時オン 耐久リカバリーの設定。オプションとデフォルトは 耐久リカバリー を参照してください
chatStreamStallTimeoutMs 0(オフ) 任意の無活動ウォッチドッグです。モデルストリームがこの時間チャンクを出さないターンを中止します(チャンク間の間隔を測り、ツール実行も含みます)。ストールは境界付きリカバリーへ進みます
contextOverflow undefined 任意のターン途中のコンテキストオーバーフロー処理です。reactivemaxRetriesproactive オプションがあります。classifyChatError とセッションのコンパクション関数が必要です — コンテキストウィンドウオーバーフローのリカバリー を参照してください

chatRecoverychatStreamStallTimeoutMs の動作は 耐久リカバリー を参照してください。

動的設定

Think のクラスジェネリクスは Agent<Env, State, Props> と一致します。永続化されたランタイム設定は configure<T>()getConfig<T>() の呼び出し箇所で型付けされ、SQLite に保存され、ハイバネーションと再起動をまたいで残ります。

export class MyAgent extends Think {
	getModel() {
		const tier = this.getConfig()?.modelTier ?? "fast";
		const models = {
			fast: "@cf/moonshotai/kimi-k2.6",
			capable: "@cf/meta/llama-4-scout-17b-16e-instruct",
		};
		return createWorkersAI({ binding: this.env.AI })(models[tier]);
	}
}
type MyConfig = { modelTier: "fast" | "capable"; theme: string };

export class MyAgent extends Think<Env> {
	getModel() {
		const tier = this.getConfig<MyConfig>()?.modelTier ?? "fast";
		const models = {
			fast: "@cf/moonshotai/kimi-k2.6",
			capable: "@cf/meta/llama-4-scout-17b-16e-instruct",
		};
		return createWorkersAI({ binding: this.env.AI })(models[tier]);
	}
}
メソッド 説明
configure<T>(config: T) 型付き設定オブジェクトを永続化します
getConfig<T>(): T | null 永続化した設定を読みます。未設定なら null です

@callable でクライアントへ設定を公開します。

import { callable } from "agents";

export class MyAgent extends Think {
	getModel() {
		/* ... */
	}

	@callable()
	updateConfig(config) {
		this.configure(config);
	}
}
import { callable } from "agents";

export class MyAgent extends Think<Env> {
	getModel() {
		/* ... */
	}

	@callable()
	updateConfig(config: MyConfig) {
		this.configure<MyConfig>(config);
	}
}

Session 連携

Think は会話を Session に保存します。メッセージを保持し、モデルへ書き込み可能なメモリを与えるストレージ層です。ここで出てくる概念は 2 つです。コンテキストブロックは、モデルが読み書きできるシステムプロンプトのラベル付きセクションです(例: ユーザーに関する事実の memory ブロック)。コンパクションは古いメッセージを要約し、長い会話をモデルのコンテキストウィンドウ内に収めます。永続メモリ、コンパクション、検索、スキルを追加するには configureSession をオーバーライドします。

import { Think, Session } from "@cloudflare/think";

export class MyAgent extends Think {
	getModel() {
		/* ... */
	}

	configureSession(session) {
		return session
			.withContext("soul", {
				provider: { get: async () => "You are a helpful coding assistant." },
			})
			.withContext("memory", {
				description: "Important facts learned during conversation.",
				maxTokens: 2000,
			})
			.withCachedPrompt();
	}
}
import { Think, Session } from "@cloudflare/think";

export class MyAgent extends Think<Env> {
	getModel() {
		/* ... */
	}

	configureSession(session: Session) {
		return session
			.withContext("soul", {
				provider: { get: async () => "You are a helpful coding assistant." },
			})
			.withContext("memory", {
				description: "Important facts learned during conversation.",
				maxTokens: 2000,
			})
			.withCachedPrompt();
	}
}

configureSession がコンテキストブロックを追加すると、Think は getSystemPrompt() ではなく、それらのブロックからシステムプロンプトを組み立てます。Think の this.messages ゲッターは、Session のツリー構造ストレージから直接読みます。

Session API の全体(コンテキストブロック、コンパクション、検索、スキル、マルチセッション)は Sessions のドキュメント を参照してください。

パッケージの export

Export 説明
@cloudflare/think ThinkSessionWorkspaceskills 名前空間
@cloudflare/think/messengers Messenger のコントラクト、Chat SDK ブリッジ、状態エージェント、配信
@cloudflare/think/messengers/telegram Telegram messenger プロバイダーと配信ヘルパー
@cloudflare/think/workflows ThinkWorkflowstep.prompt() — Workflow のプロンプト
@cloudflare/think/tools/workspace createWorkspaceTools() — カスタムストレージバックエンド向け
@cloudflare/think/tools/execute createExecuteTool() — Code Mode によるサンドボックスコード実行
@cloudflare/think/tools/browser createBrowserTools() — Chrome DevTools Protocol ツール
@cloudflare/think/tools/extensions createExtensionTools() — LLM 駆動の拡張読み込み
@cloudflare/think/extensions ExtensionManagerHostBridgeLoopback — 拡張ランタイム

依存関係

利用側が用意するピア依存関係です。

パッケージ 必須 備考
agents はい Cloudflare Agents SDK
ai はい AI SDK v6
zod はい スキーマ検証(v4)
@chat-adapter/telegram 任意 Telegram messengers に必要です

@cloudflare/think に同梱されます。

パッケージ 備考
@cloudflare/shell Workspace ファイルシステム
@cloudflare/codemode createExecuteTool() 向けのコード実行
just-bash デフォルトのワークスペース bash ツール向けサンドボックスシェル

Agent Skills エンジンとそのスクリプトランナーは agents/skills にあります。スキルスクリプトは Think ではなく agents 経由で @cloudflare/worker-bundlerjust-bash を引き込みます。

役に立ちましたか?