Все кейсы
[ CASE 01 // DEVDEPT ]Автономный отдел разработки

Отдел разработки, в котором деньги, цену и допуск к работе решает код, а не уговоры

DevDept принимает заказ в Telegram, считает цену и срок, отдаёт задачу ИИ-агентам-программистам, поднимает живое демо в песочнице и сдаёт проект так, как выбрал клиент: архивом с инструкцией или установкой на его сервер. Мы спроектировали и написали его целиком: от брифа из девяти вопросов до отзыва временного ключа с чужого сервера.

код отдела
≈ 14 тыс.
строк Python, из них 3,7 тыс. — тесты
офлайн-проверки
708
провалов 0, без сети и без модели
прогон задачи
2 → 10 мин
медиана: простая и сложная
демо-стенды
3
показ живёт 3 дня и гасится сам

Путь заказа

  1. 01
    Бриф

    9 вопросов кнопками, включая способ сдачи

  2. 02
    ТЗ и вилка

    клиент подтверждает ТЗ кнопкой, цену считает код

  3. 03
    Предоплата

    15 %, только после неё задача уходит в очередь

  4. 04
    Агент

    прогон в своей копии заказа, план и отчёты по этапам

  5. 05
    Демо

    рабочая копия в песочнице, клиент проверяет сам

  6. 06
    Сдача

    после полной оплаты: архив с инструкцией или установка у клиента

Десять решений, на которых держится отдел

Автономная разработка упирается не в то, умеет ли модель писать код, а в то, что вокруг неё: деньги, изоляция, отказы провайдера, чужие серверы. Ниже — как каждая из этих задач решена.

01[ FAIL-CLOSED MONEY ]

Инварианты денег записаны в диспетчере

Без предоплаты задача не попадает в очередь, без полной оплаты архив с исходниками не отдаётся. Это две проверки в коде, а не договорённость: их не обходит ни команда менеджера, ни просьба к модели. Работа не начинается раньше денег, исходники не уходят раньше расчёта — защищены обе стороны.

core/dispatch.py · is_prepaid · is_paid_full
02[ PRICE WITHOUT LLM ]

Цену и срок считает код, модель их не называет

Сложность заказа — сумма баллов: тип работы, интеграции ×2, оплата ×3, админка ×2, больше пяти экранов ×2, неясности ×2. Каждый балл добавляет 8 % к вилке из прайса, потолок +60 %, округление до 100 ₽. Срок считается по объёму работы с запасом на круг правок; наценки за срочность нет — если «за сутки» нереально, клиент узнаёт это до оплаты.

core/scoring.py · core/price.py · core/terms.py
03[ SPEC BY BUTTON ]

ТЗ, которое клиент подтверждает кнопкой

Консультант собирает ТЗ из девяти ответов и пишет его простым языком: что делаем, как клиент получит результат, что нужно от него, что не входит. Модель только переписывает формулировки — цену, срок и гарантию подставляет код. Клиент соглашается или просит правки, до трёх кругов; до согласия заявка менеджеру не уходит.

core/spec.py · визард консультанта
04[ AGENT SANDBOX ]

Агент-программист работает не от root

В задание попадает текст клиента, а агент сам выполняет команды — значит, ему нельзя доверять сервер. У каждого программиста свой системный пользователь: настройки отдела, базу заказов, чужие проекты и код отдела он не прочитает и не изменит. Изоляция включается одним скриптом с режимами «только проверить» и «вернуть как было»; не сошлись настройки после перезапуска — скрипт откатывается сам.

agents/sandbox.py · tools/apply_isolation.sh --check | --undo
05[ LIVE DEMO ]

Живое демо до оплаты остатка

Клиент проверяет работающий проект руками, а не по скриншотам. Копия заказа поднимается вне каталога отдела в отдельной службе: пути к данным отдела закрыты, файловая система только для чтения, потолок памяти 250 МБ. В пуле три демо-бота; через три дня показ гасится, слот «вымывается» — имя, описание, меню и вебхук, — и следующий клиент не видит чужой заказ.

devdept-demo@.service · InaccessiblePaths · ProtectSystem=strict · MemoryMax=250M
06[ CLIENT DEPLOY ]

Размещение на сервере клиента одной командой

Чужой сервер — это чужая ОС, работающий прод и занятые порты. Поэтому сначала проверки без изменений: A-запись домена, ssh, sudo, systemd, место на диске, порты 80 и 443. Клиент выполняет одну команду, которая добавляет временный ключ. Ключ отзывается при любом исходе, а не только после успеха, копии секретов удаляются. Адрес, пользователь и домен проверяются по шаблонам, поэтому строка вида «1.2.3.4; rm -rf /» до shell не доходит. Установка — платная опция: клиент выбирает её в брифе или добавляет кнопкой после демо. Без опции и без полной оплаты ключ не выдаётся — это одна проверка и для клиента, и для команд владельца.

hosting/deploy_client.py · core/dispatch.py · host_blocker · DEPLOY.md клиенту
07[ FAILOVER ]

Отказ провайдера модели не останавливает заказ

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

core/provider_balance.py · JOB_BUDGET_USD · DAILY_BUDGET_USD · JOB_MAX_MINUTES
08[ NO SILENCE ]

План работы и отчёты по этапам

Перед началом агент обязан написать план из 4–7 этапов простыми словами. После каждой закрытой галочки владелец получает короткий отчёт, а клиент видит номер этапа командой /status. Каждые 20 секунд агент отмечается в базе; если служба упала, при старте он возвращает брошенные задачи в очередь.

PLAN.md · core/plan.py · отметка раз в 20 с
09[ SELF-CHECK CODE ]

Отдел не верит модели на слово

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

tests/test_core.py · test_consultant.py · test_agents.py · test_manager.py
10[ OPS ]

Бэкапы и доставка сообщений

База заказов снимается каждые три часа средствами SQLite на живой базе, каждый снимок проходит проверку целостности, хранится 16 снимков за 14 дней. Сообщения клиенту идут через очередь с растущей паузой от 30 секунд до часа; исчерпаны попытки — владелец получает уведомление, а не тишину.

devdept-backup.timer · integrity_check · OUTBOX_MAX_ATTEMPTS
Что из этого мы повторим в вашем проекте
  • бот с оплатой, где деньги и выдача доступа связаны проверками в коде
  • прайс и расчёт стоимости по правилам, без ручных смет
  • песочница для чужого или сгенерированного кода
  • развёртывание на сервере заказчика с проверками до изменений
Стек
PythonSQLiteTelegram Bot APIsystemdИИ-агенты-программистыrsync / sshNext.js (витрина)

Цифры — из кода отдела и его статуса: медианы времени посчитаны по прогонам конвейера на наших задачах. Отдел запущен осенью 2026 года.

Витрина отдела — mosquant.ru
следующий кейс
EBIDTA — новостной конвейер для рынка moex

Нужно похожее решение?

Опишите задачу консультанту: 9 вопросов кнопками, ТЗ на подтверждение и вилка цены до оплаты.

Открыть @MosQuantbot и получить расчёт

9 вопросов · ТЗ на подтверждение · вилка цены до оплаты