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 |
任意のターン途中のコンテキストオーバーフロー処理です。reactive、maxRetries、proactive オプションがあります。classifyChatError とセッションのコンパクション関数が必要です — コンテキストウィンドウオーバーフローのリカバリー を参照してください |
chatRecovery と chatStreamStallTimeoutMs の動作は 耐久リカバリー を参照してください。
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);
}
}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 | 説明 |
|---|---|
@cloudflare/think |
Think、Session、Workspace、skills 名前空間 |
@cloudflare/think/messengers |
Messenger のコントラクト、Chat SDK ブリッジ、状態エージェント、配信 |
@cloudflare/think/messengers/telegram |
Telegram messenger プロバイダーと配信ヘルパー |
@cloudflare/think/workflows |
ThinkWorkflow、step.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 |
ExtensionManager、HostBridgeLoopback — 拡張ランタイム |
利用側が用意するピア依存関係です。
| パッケージ | 必須 | 備考 |
|---|---|---|
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-bundler と just-bash を引き込みます。