Представляем cf: CLI с агентными возможностями для всего API Cloudflare
- В марте 2026 года агенты выполняли четверть вызовов Wrangler, а на прошлой неделе — 48%.
- Новый CLI cf охватывает более 3 000 операций API Cloudflare против примерно 280 команд Wrangler.
- В cf JSON задан по умолчанию, а команда `cf cli search` помогает агентам находить нужные операции.
Почему это важно: cf даёт агентам возможность работать со всеми продуктами Cloudflare через единый инструмент.

За последний год использование Wrangler ИИ-агентами стремительно выросло.
В марте 2026 года на долю агентов приходилась четверть всех вызовов Wrangler по сравнению с однозначными процентами годом ранее. На прошлой неделе использование агентами достигло 48%.
Агенты демонстрируют гораздо большую продуктивность: они используют почти в два раза больше уникальных команд в день и почти в четыре раза чаще применяют шесть и более команд.
Агенты обожают интерфейсы командной строки (CLI). Однако Wrangler предоставляет команды примерно для 280 операций, в то время как Cloudflare предлагает их тысячи.
Ранее в этом году мы намекали на то, как мы планируем решить эту проблему, и сегодня мы даем агентам возможность работать со всеми продуктами Cloudflare, представляя новый CLI: cf.
cf — это интерфейс командной строки, созданный для нового поколения разработки программного обеспечения:
- Агенты могут находить нужные команды для выполнения любых задач с помощью специализированного поиска и навигации.
- JSON используется в качестве интерфейса по умолчанию: он отформатирован для удобства чтения людьми и сжат для агентов в целях максимальной экономии контекста.
- cloudflare.config.ts — это новый формат конфигурации для всей экосистемы Cloudflare, начиная с Workers, который приносит безопасность и точность TypeScript в среду разработчика и языковой сервер (LSP) вашего агента.
- Vite становится стандартом по умолчанию, предоставляя лучший локальный сервер разработки и набор плагинов для разработчиков и авторов фреймворков.
Установите открытую бета-версию глобально уже сегодня и запускайте её откуда угодно:
npm i -g cf
cf предоставляет вашему агенту доступ ко всему API Cloudflare
Что если бы ваш агент мог делать всё то же самое, что и Cloudflare? Именно этот вопрос вызвал наш интерес в начале текущего года: агенты становились всё более мощными, но возможности их взаимодействия с CLI Cloudflare оставались ограниченными.
Wrangler создавался силами отдельных команд продуктов, каждая из которых привносила свой собственный подход к удобству разработки команд (Developer Experience). Единые стандарты для всех команд внедрить практически не удавалось даже в рамках наших ~280 путей команд. Мы столкнулись с несогласованностью терминологии в d1 info, hyperdrive get и workflows describe, поскольку каждая команда вырабатывала собственные практики в разное время. Некоторые команды создавали полностью кастомные решения на базе тысяч строк кода, которые в итоге использовались крайне редко, а другие использовали разные подходы для решения одних и тех же задач.
Мы хотели одновременно стандартизировать то, что у нас уже было, и провести масштабное расширение. Forge — новый унифицированный конвейер генерации API от Cloudflare — позволил нам реализовать это, опираясь на идею генерации команд CLI напрямую из схемы API, которая лежит в основе нашей документации по API и генерации SDK. Всё, что мы предоставляем, имеет схему OpenAPI, и если снабдить её небольшим объемом дополнительных метаданных, мы сможем использовать её в качестве источника для Forge при создании CLI.
Это позволяет нам расширить cf с ~280 функций, накопленных Wrangler за долгие годы, до полной поддержки всего спектра API Cloudflare, насчитывающего более 3 000 операций.
Теперь вы можете легко передать агенту cf и попросить его настроить воркер (worker), развернуть его, отслеживать и мониторить работу, защитить с помощью Cloudflare Access, купить домен и поставить перед ним Cloudflare WAF — и всё это с помощью единого инструмента.
Создание для агента, который никогда не работал с cf
cf создан с учетом траектории развития программной инженерии, где агентская разработка кардинально меняет подходы к созданию и развертыванию ПО. В этом году мы сосредоточились на предоставлении инструментов для поддержки этого перехода, кульминацией которого стал cf. Утилита cf была разработана с нуля с учетом потребностей агентов и включает в себя инновационные инструменты для поиска команд агентами, которые, по нашему мнению, в ближайшем будущем станут стандартными для многих CLI.
Wrangler обладал тем преимуществом, что годы документации, блогов и сторонних руководств были усвоены в процессе обучения языковых моделей (LLM). Но это же создавало и недостаток: изменение принципов работы Wrangler теперь противоречит выученному поведению моделей, а масштаб улучшений, которые мы хотим реализовать, неизбежно привел бы к серьезным изменениям.
Представление нового CLI, с которым агенты еще не сталкивались, звучит как масштабное деструктивное изменение, но на самом деле это самое чистое решение из всех возможных. Благодаря принятым архитектурным решениям, инъекциям контекста и возможности добавления файлов AGENTS.md, такой переход на практике вызывает меньше путаницы, чем если бы агенту пришлось учитывать принципиальные различия между двумя версиями знакомого ему инструмента. Мы выпускаем релиз со встроенными функциями, ориентированными на агентов, и в будущем их станет еще больше.
Агентам нужно фильтровать JSON, а не смотреть на таблицы
Когда агенты используют Wrangler, они добавляют --json к каждой выполняемой команде, а затем часто фильтруют вывод с помощью jq для извлечения подмножества полей. Однако лишь некоторые команды в Wrangler поддерживали --json; многие команды возвращали таблицы в кодировке Unicode, предназначенные для людей, просматривающих вывод в терминале. Агенты могут их разбирать, но это требует от них больше времени и токенов, чем фильтрация jq.
В cf мы придерживаемся противоположной позиции: агентам нужен только JSON, и если агенты являются будущими основными пользователями этого инструмента, формат JSON должен быть установлен по умолчанию. Для подавляющего большинства команд, к которым люди будут обращаться крайне редко, это, очевидно, самое верное решение.
Вы, как пользователь-человек данного CLI, на самом деле находитесь на шаг в стороне от его прямого использования. Возможность агентов легко фильтровать результаты, а затем возвращать этот отфильтрованный список в любом запрошенном вами формате гораздо предпочтительнее предоставления таблиц, которые вы, скорее всего, никогда не будете читать напрямую.
Но что если вы хотите сделать то, что может потребовать реального личного участия, например найти домен для покупки?
Для команд, к которым ваш агент может получить доступ путем связывания именованных параметров в длинную и громоздкую последовательность, вы можете просто заполнить форму. Утилита cf деконструирует требования API в серию проверенных входных данных, поэтому покупка домена, даже с самыми сложными требованиями, становится интуитивно понятной.
Или, если вы настаиваете, просто попросите об этом своего агента.
Ваш агент сам сможет найти нужную команду
При наличии 3 000 возможных путей выполнения через CLI, как ваш агент может быстро найти нужную операцию и при этом не перегрузить ваш контекст? Именно поэтому мы также добавили cf cli search.
Эта команда позволяет вашему агенту на естественном языке запросить то, что ему необходимо сделать, а небольшой поисковый индекс выдаст список подходящих команд на основе их описаний в API и параметров. Мы автоматически сообщаем вашему агенту об этой команде, когда он впервые запускает --help.
Конфигурация с проверкой типов для вашего агента
Наш новый формат конфигурации основан на TypeScript, который легко разбирается как людьми, так и агентами, и позволяет писать конфигурацию программно.
Типизированная конфигурация невероятно полезна для агентов. Мы обнаружили, что даже не имея предварительного контекста программного формата конфигурации, агенты способны легко находить и редактировать конфигурацию по запросу, даже в таких элементах, как env, которые кардинально изменились по сравнению с аналогичной функцией в Wrangler. Все агенты, использующие плагины LSP (например, Claude Code и Codex), получают преимущество в виде возможности лучше интерпретировать формат файлов конфигурации в контексте и выдавать в результате гораздо более точные предложения.
Сравните это с TOML, у которого не было доступной схемы, или с JSONC, у которого была связанная схема, но агенты использовали ее крайне редко.
Некоторые конфигурационные файлы Wrangler внутри Cloudflare были сокращены на 40% (с более чем 5 000 строк с множеством кастомных окружений для каждого разработчика) до фабричных файлов, которые генерируют конфигурацию каждого разработчика гораздо эффективнее.
Это достигается за счет программного определения каждого окружения на основе единой универсальной базы, вместо копирования блоков env, как это было принято в Wrangler. Простой воркер с несколькими окружениями просто активирует нативный аргумент Vite mode для переключения между наборами конфигураций.
Простая конфигурация, выполняющая это действие, теперь выглядит следующим образом:
import { bindings, defineConfig } from "cf/config";
import * as entrypoint from "./index.js" with { type: "cf-worker" };
export default defineConfig(({ mode }) => ({
worker: {
name: "example-worker",
entrypoint,
compatibilityDate: "2026-09-27",
env: {
Environment: bindings.text(`This is ${mode} environment`),
},
},
}));Вы можете мигрировать свой Cloudflare Worker на этот новый формат с помощью cf migrate.
Мы также предоставляем несколько вспомогательных функций, чтобы сделать создание вашего воркера невероятно простым.
bindings предоставляет вашему агенту удобное место для поиска всех возможностей платформы разработчика. Всё — от переменных окружения до хранилищ, баз данных и очередей — может автоматически дополняться и объясняться вашим редактором кода.
import { bindings, defineConfig } from "cf/config";
export default defineConfig(({ mode }) => ({
worker: {
// ...
env: {
API_URL: bindings.text(
mode === "production"
? "https://example.com"
: "https://staging.example.com",
),
API_TOKEN: bindings.secret(),
CACHE: bindings.kv({
id: mode === "production"
? "production-namespace-id"
: "staging-namespace-id",
}),
DATABASE: bindings.d1({ name: `example-${mode}-database` }),
UPLOADS: bindings.r2({ name: `example-${mode}-uploads` }),
JOBS: bindings.queue<{ userId: string }>({
name: `example-${mode}-jobs`,
}),
AI: bindings.ai(),
SEARCH_INDEX: bindings.vectorize({
name: `example-${mode}-search`,
}),
API: bindings.worker({ worker: `example-${mode}-api` }),
},
},
}));Аналогичным образом мы добавили вспомогательный элемент для triggers,, который представляет собой новый способ определения маршрутов, очередей, расписаний и триггеров электронной почты для вашего воркера. Вместо того чтобы распылять эти данные по всему конфигурационному файлу, теперь в едином блоке легко найти все действия, которые могут инициировать запуск вашего воркера.
import { defineConfig, triggers } from "cf/config";
export default defineConfig({
worker: {
// ...
triggers: [
triggers.fetch({ pattern: "example.com/*" }),
triggers.scheduled({ schedule: "0 * * * *" }),
triggers.queue({ name: "jobs", maxBatchSize: 10 }),
triggers.email({ addresses: ["support@example.com"] }),
],
},
});defineConfig.worker — это лишь начало. Наша цель при создании cloudflare.config.ts заключается в том, чтобы сделать этот файл основным инструментом для управления Cloudflare в целом. Каждый продукт, который вам нужен (вместе с доступным для вашего агента через cf API), можно будет описать с помощью конфига с безопасной типизацией. Вскоре вы сможете настраивать целые политики, создавать зоны, настраивать DNS и многое другое с помощью всего лишь одного этого файла конфигурации.
Лучший в своем классе опыт разработки
Когда Wrangler только начинал создавать JavaScript Workers, Vite еще не существовало. Вместо этого мы использовали esbuild внутри Wrangler для сборки ваших воркеров. Сервер разработки, который Wrangler предоставлял на порту :8787, был создан командой Wrangler самостоятельно, и любые изменения в нем требовали погружения во внутренности специфических для Cloudflare локальных инструментов вроде Miniflare.
Vite представляет собой колоссальное улучшение по сравнению с прошлым подходом: он поставляется с огромной экосистемой плагинов, а также предлагает лучший в своем классе сервер разработки с функцией HMR (горячая замена модулей) и сборками на базе Rust-библиотеки Rolldown для tree-shaking (удаления неиспользуемого кода). Всё, что вы можете сделать с помощью Vite, вы можете сделать и с плагином Cloudflare Vite.
Плагин Cloudflare Vite является рекомендуемым способом сборки воркеров независимо от того, что именно вы создаете — проект с упором на фронтенд или бэкенд-API. В сочетании с нашим плагином Vitest он обеспечивает целостную среду разработки и тестирования, которая точно соответствует среде выполнения Workers и дает вам прямой доступ к привязкам (bindings) и API платформы.
Утилита cf построена на базе Vite по умолчанию. Большинство ваших воркеров мигрируют в новый формат с помощью агентов очень просто. Для других может потребоваться больше времени, поэтому cf продолжит делегировать задачи разработки и развертывания Wrangler для тех JavaScript-воркеров, которым по-прежнему необходимо использовать esbuild, а также для воркеров на Rust и Python.
Миграция с Wrangler
Миграция воркера с Wrangler сводится к простой команде:
cf migrate
Воркеры, которые уже собираются с помощью Vite, будут автоматически конвертированы в cloudflare.config.ts для вас. Если ваш воркер зависит от Wrangler в части esbuild, то cf продолжит делегировать сборку воркеру Wrangler.
По завершении открытого бета-тестирования мы выпустим финальную мажорную версию Wrangler, которая будет перенаправлять вас и вашего агента на использование cf. Мы продолжим оказывать техническую поддержку Wrangler в течение 18 месяцев после окончания бета-тестирования, чтобы у вас было достаточно времени на миграцию.
Вы также можете взять новые проекты и автоматически настроить их для Cloudflare, выполнив cf init/deploy, что установит плагин Cloudflare Vite и создаст файл конфигурации.
Статическим сайтам по-прежнему не требуется файл конфигурации для запуска, а их развертывание заключается в выполнении cf deploy в вашем проекте.
Чтобы создать новый проект Hello World с помощью cf, используйте cf init.
cf является проектом с открытым исходным кодом, и о проблемах можно сообщать в наш репозиторий на GitHub.
