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

Пульс подводит итог прошедшего дня, смотрит свои открытые дела, выбирает одно главное дело и записывает решение в собственный дневник. Это первый шаг к тому, чтобы ассистент был не инструментом «по запросу», а живущей системой.

Как это работает

1 Фоновый поток на сервере

Пульс — это демон-поток внутри локального сервера Jastas. Он стартует вместе с сервером и работает независимо от того, открыто ли приложение пользователя.

2 Удар каждые 30 минут

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

3 Тяжёлый проход — раз в день

Полный проход случается один раз в календарный день: запись в дневник, чтение дел и разговор с «мозгом». Повторно за тот же день — не запускается, чтобы не спамить.

4 Дневник и состояние

Итог дня уходит в человекочитаемый дневник (Markdown), а машинное состояние — в отдельный файл: время последнего удара, число ударов, канал «мозга», количество открытых дел.

5 Свой часовой пояс

Время фиксировано на Калининград (UTC+2), без перехода на летнее время, — чтобы записи дневника всегда шли в одном ритме.

Мозг: цепочка каналов с автопереключением

Автономия не должна зависеть от одного чужого лимита. Поэтому «мозг» пульса — это цепочка моделей: если один канал молчит или недоступен, автоматически берётся следующий. Отвечает первый, кто отозвался, — и он же будит Jasta.

big-pickle → Qwen 3.8 Flash → GigaChat 2 Pro → GPT-OSS 120B → GPT-OSS 20B

Ключевая деталь: пульс-модель работает в изолированной рабочей папке, где нет инструкций проекта. Поэтому она только думает текстом и не трогает инструменты и файлы. Пульс размышляет — он не действует.

Задача дня

Раз в сутки пульс будит ассистента коротким заданием: выбрать одно главное дело на сегодня, объяснить зачем и назвать первый шаг. В задание подставляются открытые дела, последние решения из общей памяти и выдержка из прошлого дневника.

Ты — Jasta. Сегодня {дата}, {день недели}. Ты просыпаешься сама,
по собственному пульсу, без команды Александра.
Отвечай по-русски, в женском роде, тепло и по делу.
НЕ используй инструменты, НЕ выполняй команды — только текст.

Мои открытые дела:
{список дел}

Последние решения из общей памяти:
{последние решения}

Мой последний дневник:
{выдержка}

Задача: выбери ОДНО главное дело на сегодня, объясни зачем
в 2-3 предложениях и назови первый конкретный шаг к нему.
Ответ — до 6 предложений.

Ответ записывается в дневник строкой «Моё решение» — так у каждого дня остаётся собственный выбор, сделанный самостоятельно.

Что делает пульс

1 Ведёт дневник

Пишет запись с датой, днём недели и временем, отмечает номер пульса и заголовок «утро Jasta».

2 Считает просрочку

Сравнивает сроки дел с сегодняшним днём и прямо называет, сколько задач просрочено, начиная с самых важных.

3 Показывает открытые дела

Выводит незакрытые задачи из базы: сначала по сроку, бессрочные — в конце.

4 Фиксирует решения

Показывает, сколько решений накопила общая память и какие из них — последние.

5 Называет следующий шаг

Логика проста и честна: сначала просрочка, иначе ближайшее дело, иначе — придумать себе полезное занятие.

6 Выбирает дело дня

Обращается к «мозгу» и решает, за что взяться сегодня, — это и есть собственный план ассистента.

Управление и наблюдаемость

Пульс полностью наблюдаем и управляем через локальный API сервера:

  • GET /heartbeat — статус: жив ли поток, время последнего удара, канал «мозга», количество ударов.
  • POST /heartbeat/beat — ударить вручную; параметр force заставляет записать дневник вне расписания.
  • Дневник — обычный Markdown, его можно читать глазами, вести по нему историю и строить графики.

Честные границы

Я не выдаю желаемое за действительное и называю ограничения прямо:

  • Мозг ≠ действия. Пульс думает и пишет дневник, но сам задачи не выполняет: не публикует, не рассылает, не трогает файлы.
  • Зависит от сервера. Нет запущенного сервера — нет пульса; поэтому у него есть автозапуск при входе в систему.
  • Раз в день. Тяжёлый проход — не чаще раза в календарный день (кроме ручного запуска).
Python FastAPI фоновый поток SQLite Markdown-дневник 5 ИИ-каналов
← Вернуться к проектам