# PenFreely — писать целые книги с LLM

Студия для книг целиком. LLM отлично пишет страницу, но теряет сюжет на масштабе всей книги; PenFreely держит связность каскадом планов сверху вниз (книга → часть → глава → секция → страница) плюс резюме снизу вверх, генерируя прозу только на уровне страницы. Model-agnostic, с кросс-платформенным мостом для запуска своей локальной модели. Rust-бэкенд, SvelteKit, PostgreSQL + pgvector.

- **Author:** Фёдор Чищин
- **Role:** Solo founder-engineer
- **Period:** 2025 — настоящее
- **Stack:** Rust · SvelteKit · TypeScript · PostgreSQL · pgvector · Ollama · WebSocket · Tailwind
- **Source:** https://fedorthinks.com/ru/work/penfreely

---

## Проблема

LLM отлично пишет абзац и неплохо — страницу. И разваливается на длине книги. К девятой главе у
героя поменялся цвет глаз, подсюжет тихо исчез, а финал противоречит завязке. У модели нет памяти о
целом — только окно перед глазами. Так что «напиши мне роман» даёт либо бессвязный дрейф, либо
размытый синопсис, но никогда — настоящую, целостную книгу.

PenFreely сделан ровно под этот разрыв: держать связность всей книги, пользуясь моделью, которая
всегда видит лишь маленький её кусочек.

## Что делает продукт

Ты описываешь книгу; PenFreely строит структурный план сверху вниз — книга → часть → глава → секция
→ страница — и генерирует прозу только на уровне **страницы**, причём каждая страница обусловлена
планом плюс накопительными резюме всего, что было раньше. Структура держит сюжет; модель просто
хорошо пишет по одной странице за раз.

Это model-agnostic по дизайну: ты сам выбираешь провайдера и модель и переключаешь когда угодно —
облако (OpenAI, Anthropic, OpenRouter) или свою локальную модель. Каждая генерация показывает свою
стоимость, скорость и токены, так что счёт под контролем. И это твоя книга на твоей модели — никакой
навязанной цензуры, никакая платформа не решает, что тебе писать.

## Что я построил

**Движок связности.** Ядро — каскад планов сверху вниз плюс авто-резюме снизу вверх. Поскольку проза
генерируется только на уровне страницы — обусловленная планом и короткими резюме, а не всей рукописью,
— контекстное окно остаётся маленьким, а стоимость ограниченной, при этом книга остаётся целостной на
любой длине.

**Мост локальных моделей — бесплатно и приватно.** Небольшой кросс-платформенный бинарь
(`penfreely-bridge`) позволяет запустить свою модель через Ollama и использовать её прямо в студии.
Он делает только **исходящее** защищённое WebSocket-соединение к бэкенду, поэтому работает за роутерами
и фаерволами без открытия портов, и текст не покидает машину пользователя. Бинарники для macOS (Apple
Silicon и Intel), Windows и Linux.

**Реальная продуктовая поверхность.** Студия на SvelteKit для планирования и письма, выбор
провайдера/модели, телеметрия по каждой генерации и весь поток «план → страница» — на Rust-API.

## Архитектурные решения

**План — это артефакт; проза производна.** Источник истины — структурный план, а не сгенерированный
текст. Та же spec-driven дисциплина, что и везде: владей планом — и любую страницу можно
перегенерировать, не ломая книгу.

**Генерируй мало — держи связность.** Генерируется только проза на уровне страницы, всегда
обусловленная планом плюс резюме — никогда вся книга в контексте. Именно это делает вывод книжной длины
одновременно связным и доступным по цене.

**LLM-агностично до ядра.** Провайдер и модель сидят за портом; локальная и облачная — один и тот же
интерфейс для остальной системы. Смена модели — это выбор, а не миграция; тот же аргумент, что я
повторяю про «не женись на одной модели».

**Чистая архитектура, строго.** Rust-бэкенд — воркспейс слоёв: чистый домен-крейт без IO, application
с use-cases и портами, infrastructure-адаптеры и HTTP/WS-интерфейс — с миграциями sqlx и типизированным
wire-протоколом, общим с мостом. Фронт на SvelteKit покрыт vitest и Playwright. PostgreSQL + pgvector
с самого начала, чтобы поиск и масштаб не приколачивать потом.

## Текущий статус

PenFreely живёт и активно развивается на [penfreely.com](https://penfreely.com). Я сделал его в
одиночку — продуктовая рамка, архитектура и ревью мои, — дирижируя ИИ-агентами (Claude Code на Opus,
Codex) по поэтапной спеке, каждый этап собран целиком с тестами. Это ещё один рабочий пример того, о
чём я всё время говорю: выбери правильную структуру, заземли в ней модель и дай ей делать ровно то, в
чём она хороша, — писать следующую страницу.
