Перейти к содержимому
Экосистема AI Vibe

Разборы

KODA на смартфоне: схема, RLS и fallback для AI-ментора по коду

Редакция 2 сентября 2026 г.

KODA на смартфоне: схема, RLS и fallback для AI-ментора по коду

Если вы собираете персонального AI-наставника без команды и без monorepo, узкое место редко в промпте. Три слоя решают, выживет ли продукт: база с политиками доступа, цепочка облачных моделей и запасной офлайн-режим, когда API режут. В разборе двенадцатилетний автор KODA показывает, как это выглядит на POCO C55: Android-смартфон, где SQL пишут вручную, а клиент — один index.html без сборщика.

Схема и RLS: где живут диалоги AI-ментора

KODA — «AI coding mentor», собранный целиком на смартфоне. По запросу разработчика Artur автор раскрывает архитектуру: в фокусе шесть таблиц Supabase Postgres — profiles, conversations, chats, submissions, votes, files. ORM и миграционных инструментов нет: DDL для chats набирают с телефона, а «Supabase's editor is my IDE».

Позиция автора: «The frontend is a suggestion. The database is the law». На chats включён row-level security и политика select — пользователь видит только свои сообщения:

alter table public.chats enable row level security;
create policy "users see own chats"
  on public.chats for select
  using (auth.uid() = user_id);

Даже если убрать все проверки во фронтенде, чужие чаты не читаются. Senior-разработчик nyaomaru stress-тестил RLS и назвал паттерн «highly resilient». Для соло, который один тянет и UI, и агента, это не академия, а страховка от утечки истории диалогов.

Для vibe-coding workflow с персональным ментором база — не хранилище логов, а граница доверия: кто видит, что агент советовал вам по коду.

DDL остальных пяти таблиц в публикации не раскрыт, только имена. Это ограничение источника, не пробел редакции.

Цепочка моделей Groq и OFFLINE SENSEI

Онлайн-инференс идёт через Groq API со стримингом. В углублённом разборе перечислены четыре модели; при ошибке берётся следующая:

const MODELS = ['llama-3.3-70b-versatile', 'openai/gpt-oss-20b',
                'llama-4-scout', 'qwen3-32b'];
// model fails → next model. ALL fail → OFFLINE SENSEI MODE.

Если падают все четыре, включается OFFLINE SENSEI MODE: локальный ментор без сети — keyword-routed уроки, анимированная математика KaTeX, задачи Codewars («zero network»). Это не on-device LLM, а rule-based запасной путь, но для пользователя агент не обрывается на белом экране.

Мотивация привязана к реальному сценарию: пользователь VP_xudon сообщил, что Groq блокируется за Great Firewall. KODA задуман так, чтобы работать «in a basement, on a bus, behind a firewall». Для соло-разработчика с одним облачным провайдером это ближе к практике, чем к красивой диаграмме.

Обзорная статья от 1 сентября согласуется: клиент → Supabase Auth/Postgres → Groq с четырёхмодельным fallback → Netlify. Точные таймауты HTTP и очереди запросов автор не описывает.

Z-index и badge хостинга: UI не должен перекрывать ментора

На мобильном клиенте badge хостинга Netlify «плавал» поверх интерфейса ментора. Три попытки починить stacking context не сработали. Решение — максимальный z-index и наблюдатель за DOM:

.modal-overlay { z-index: 2147483647; } /* the max integer. yes. */

Плюс MutationObserver, который снимает badge в момент инъекции. Автор честно называет эту войну «scar» кодовой базы; в обзорном посте та же история фигурирует как урок про z-index, а не как косметика.

Для AI-инструмента на телефоне это напоминание: агент может быть умным, но если overlay перекрывает поле ввода, сессия мертва. Инженерия доверия к ментору начинается с того, что пользователь вообще может задать вопрос.

Соло-стек: один HTML, деплой zip с телефона

Стек намеренно минимален, без webpack и node_modules:

Слой Технология
Устройство POCO C55, Android
Клиент один index.html, vanilla JS
Auth и данные Supabase Auth + Postgres с RLS
AI online Groq API, streaming, fallback по списку моделей
AI offline OFFLINE SENSEI — keyword-router, не облако
Хостинг Netlify, деплой «перетаскиванием zip»

Предыдущая публикация автора обещала open source на 2 088 подписчиков, но код не выложен: из соображений безопасности детей на DOJO FEED и «шрамов» кодовой базы; углублённый разбор — продолжение по комментарию, а не релиз репозитория.

Для ру-соло без отдельного DevOps это читаемый эталон: production-агент по коду не обязан начинаться с monorepo. Сначала закон в базе, цепочка моделей с офлайн-запасом, UI, который не сдаётся badge хостинга. Semantic caching, referral graph и belt/XP автор обещает только «если Artur попросит» — в тексте их нет.

Проверьте свой ментор на той же тройке: RLS на диалогах, fallback при отказе API, клиент, который переживает чужой overlay.

Источники