← Создание агентов на Cloudflare / agents / harnesses / think
Конфигурация
Think настраивается путём переопределения методов и свойств в вашем Think подкласс. Большинство агентов переопределяют только getModel().
Переопределения конфигурации
| Метод / Свойство | По умолчанию | Описание |
|---|---|---|
getModel() |
выбрасывает | Возврат LanguageModel чтобы использовать |
getSystemPrompt() |
"You are a helpful assistant." |
Системный промпт (запасной вариант при отсутствии блоков контекста) |
getTools() |
{} |
AI SDK ToolSet для агентного цикла |
getScheduledTasks() |
{} |
Объявленные в коде повторяющиеся промпты или обработчики: см. Запланированные задачи |
getDefaultTimezone() |
undefined |
Часовой пояс по умолчанию для задач, запланированных по астрономическому времени |
getMessengers() |
{} |
Декларации входящих сообщений и доставки мессенджера: см. Мессенджеры |
maxSteps |
10 |
Максимальное количество раундов вызова инструментов за ход |
sendReasoning |
true |
Отправлять части рассуждений клиентам чата |
configureSession() |
идентичность | Добавьте блоки контекста, компактизацию, поиск, skills: обратитесь к Сеансы |
getSkills() |
[] |
Верните источники Agent Skills для активации навыка по требованию: см. Agent Skills |
getSkillScriptRunner() |
null |
Включите необязательный run_skill_script инструмент |
workspaceBash |
true |
Включите или настройте рабочее пространство по умолчанию bash инструмент: см. Инструменты |
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);
}
}Интеграция Session
Think сохраняет беседы в Сессия : слой хранения, который содержит ваши сообщения и даёт модели доступную для записи память. Здесь появляются два понятия: блоки контекста это помеченные разделы системного промпта, которые модель может читать и обновлять (например, memory блок фактов о пользователе), и компактизация суммаризирует более старые сообщения, чтобы длинные беседы оставались в пределах контекстного окна модели. Переопределите configureSession чтобы добавить постоянную память, компактизацию, search и skills:
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.
Полное описание API Session (блоки контекста, компактизация, поиск, skills и поддержка нескольких сессий) см. в Документация Sessions.
Экспорты пакета
| Экспорт | Описание |
|---|---|
@cloudflare/think |
Think, Session, Workspace, skills пространство имён |
@cloudflare/think/messengers |
Контракты мессенджера, мост Chat SDK, агент состояния, доставка |
@cloudflare/think/messengers/telegram |
Провайдер мессенджера Telegram и вспомогательные функции доставки |
@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 : рантайм расширений |
Зависимости
Peer-зависимости, которые вы предоставляете:
| Пакет | Обязательный | Примечания |
|---|---|---|
agents |
да | Cloudflare Agents SDK |
ai |
да | AI SDK v6 |
zod |
да | Валидация схемы (v4) |
@chat-adapter/telegram |
необязательно | Требуется для мессенджеров Telegram |
Поставляется с @cloudflare/think:
| Пакет | Примечания |
|---|---|
@cloudflare/shell |
Workspace файловая система |
@cloudflare/codemode |
Выполнение кода для createExecuteTool() |
just-bash |
Изолированная оболочка shell для рабочего пространства по умолчанию bash инструмент |
Движок Agent Skills и его исполнитель скриптов находятся в agents/skills, чтобы скрипты навыков получали @cloudflare/worker-bundler и just-bash через agents, а не Think.