Дайджесты новостей
Постановочный натюрморт с прецизионными аптекарскими весами, сравнивающими тяжеловесный расход токенов Angular и легкость Hono.

Скрытая цена фреймворков для ИИ: почему агенты тратят больше денег на код для Angular, чем для Hono

Исторически при выборе технологического стека для веб-проекта инженеры оценивали привычные метрики: скорость загрузки клиентского бандла, удобство типизации в TypeScript, размер экосистемы готовых компонентов и доступность разработчиков на рынке труда.

Но в 2026 году, когда львиную долю кода генерируют автономные кодинг-агенты вроде Claude Code, Cursor и OpenAI Codex, в уравнение разработки внезапно ворвалась совершенно новая экономическая метрика: стоимость токенов ИИ на генерацию и отладку рабочего приложения (AI Cost per Feature).

Эту неочевидную закономерность исследовал признанный эксперт по веб-стандартам и бывший инженер Salesforce Нолан Лоусон (Nolan Lawson). В своем резонансном исследовании Нолана Лоусона он провел масштабный слепой эксперимент, сравнив затраты токенов при генерации одного и того же типового приложения на 12 различных современных веб-фреймворках.

Результаты эксперимента заставляют совершенно по-новому взглянуть на архитектурный бойлерплейт популярных библиотек.

Методология эксперимента: единое ТЗ для автономного агента

Лоусон сформулировал кристально четкую и приближенную к реальной разработке задачу:

  • Создать контентное веб-приложение каталога покемонов на базе публичного REST API (PokéAPI);
  • Реализовать список с поиском, пагинацией, карточками персонажей и экраном детального описания характеристик;
  • Обеспечить базовую адаптивность интерфейса и соблюдение базовых критериев доступности WCAG;
  • В качестве исполнителя выступал передовой агент на базе модели Claude 3.5 Sonnet / Claude Opus в изолированном окружении, получающий на вход пустое рабочее пространство с настроенным шаблоном соответствующего фреймворка.

Каждому фреймворку давалось пять независимых попыток генерации с нуля. Замерялись: итоговая стоимость потраченных API-токенов в долларах, количество циклов «написание кода — запуск тестов — исправление ошибок компиляции» и успешность итоговой сборки.

Давай посмотрим, как выглядел лаконичный серверный роутинг на победившем связке Hono + htmx:

import { Hono } from 'hono';
import { html } from 'hono/html';

const app = new Hono();

app.get('/pokemon/:id', async (c) => {
  const id = c.req.param('id');
  const res = await fetch(`https://pokeapi.co/api/v2/pokemon/${id}`);
  const data = await res.json();
  
  return c.html(html`
    <div class="pokemon-card" id="pokemon-${data.id}">
      <h3>${data.name}</h3>
      <img src="${data.sprites.front_default}" alt="${data.name}" />
      <div class="types">
        ${data.types.map((t: any) => html`<span class="badge">${t.type.name}</span>`)}
      </div>
    </div>
  `);
});

export default app;

Итоги бенчмарка: рейтинг стоимости стеков

Результаты замеров выявили колоссальный разброс в реальных денежных затратах на разработку:

  • Hono + htmx: $2.67 (самый дешевый и стабильный стек; чистый серверный HTML без клиентского рантайма);
  • Astro: $2.76 (архитектура островов с нулевым JS по умолчанию);
  • Remix / React Router v7: $3.81;
  • Next.js (App Router): $3.94;
  • SvelteKit: $4.28;
  • Angular: $4.97 (самый дорогой стек; при этом в 2 из 5 попыток агент вообще не смог собрать работающее приложение!).

Почувствуй разницу: генерация кода для Angular обошлась почти в два раза дороже, чем для Hono! А в 40% случаев модель запуталась в строгих инъекциях зависимостей (Dependency Injection), модулях и декораторах и исчерпала лимит шагов, выдав сломанный бинарник.

Давай взглянем на аналогичный компонент на легковесном фреймворке Astro:

---
// Компонент Astro: чистая серверная выборка данных без клиентского рантайма
const { id } = Astro.params;
const res = await fetch(`https://pokeapi.co/api/v2/pokemon/${id}`);
const pokemon = await res.json();
---

<div class="pokemon-details">
  <h2>{pokemon.name}</h2>
  <img src={pokemon.sprites.front_default} alt={pokemon.name} />
  <ul>
    {pokemon.stats.map((stat: any) => (
      <li>{stat.stat.name}: {stat.base_stat}</li>
    ))}
  </ul>
</div>

Смотри, насколько меньше токенов требуется модели, чтобы выразить ту же самую мысль: нет классов, нет сервисов, нет подписок RxJS. Меньше токенов — меньше вероятность галлюцинации и ошибки компилятора. Если тебе интересны практические замеры агентских команд, рекомендуем наш материал тестирование стека ИИ-агентов.

Почему бойлерплейт стал прямым финансовым налогом

Вывод исследования Лоусона фундаментален: в эпоху ИИ синтаксическая многословность фреймворка превратилась из вопроса личного вкуса разработчика в прямую финансовую статью расходов бизнеса.

Фреймворки, требующие обилия деклараций и сложной настройки окружения, заставляют ИИ гонять огромные контекстные окна и тратить дорогие итерации на исправление ошибок компиляции. Простые, стандартные веб-платформенные решения (Hono, Astro, чистый HTML и стандарты Fetch/Request) выигрывают не только в скорости загрузки у пользователей, но и в кошельке компании при автоматизированной генерации кода.