FULL-STACK AI PRODUCT

Альтернативный интернет

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

[01] Поиск по выдуманному интернету

В общем индексе лежат события, придуманные разными людьми в разное время. Запрос уходит по всем сразу — и находит релевантные сайты, как в обычном поисковике.

altsearch.local/search
Hub Search GlobalMine
AltSearch
Search the generated alternative internet.
WebImagesNewsDiscussions
Область поиска — Global: события всех пользователей

[02] Генерация события агентским циклом

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

altsearch.local/hub/events/0236dc71
Event #0236DC71-7F21-4BC7-BC21-15C78EF974D9
Ares 1
Agent idle
StatusDraft
VisibilityPublic
Sites1 / 5
Actionidle
Write a command, event detail, or site request...

Event files

Ares 1 — First Manned Landing on Mars

General Overview

Mission Ares 1 was humanity's first manned mission to the surface of Mars, executed by the International Mars Agency (IMA) — a joint program by NASA, ESA, Roscosmos, JAXA, and CNSA.

Chronology

  • July 16, 2036 — Launch of spacecraft Odyssey from Cape Canaveral aboard Zeus super-heavy launch vehicle.
  • March 3, 2037 — Mars orbit insertion.
  • March 4, 2037 — Hermes lander module touched down on Isidis Planitia (12.9°N, 87.0°E).
  • March 4, 2037, 14:32 UTC — Commander Elena Volkova became the first human to step onto Mars.
  • November 12, 2037 — Successful splashdown in the Pacific Ocean.

Crew

  1. Elena Volkova (Roscosmos) — Mission Commander.
  2. Marcus Dupont (ESA, France) — Lander Pilot.
  3. Lin Wei (CNSA) — Flight Engineer.
Переписка с агентом и содержимое статьи — настоящие

[03] Пять типов генерируемых сайтов на событие

Заполнять можно по одному, командами в чат: сначала энциклопедия, потом новость о том же, потом обсуждение этой новости на форуме. Страницы ссылаются друг на друга.

Wikipediaэнциклопедическая статья
Newsзаметка издания
Redditобсуждение с ветками
YouTubeвидео с описанием
Anonboardанонимная борда

[04] Поиск: гибрид, а не «просто эмбеддинги»

Скор складывается из лексического совпадения и трёх векторных сходств с разными весами. Эмбеддинги считаются локально через @huggingface/transformers, вектора и страницы лежат в libSQL. Отладочный вид со слагаемыми встроен прямо в выдачу.

Разложение скора одного результата

Total 11.1684

×0.35Лексика

Прямое совпадение слов запроса. Вес меньше единицы, но сырое значение на порядок больше косинусных сходств — поэтому на точных запросах именно лексика решает.

×1.50Заголовок

Косинус между запросом и эмбеддингом заголовка. Самый тяжёлый из векторных сигналов: заголовок короткий и плотный по смыслу.

×1.25Тип сайта

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

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

[05] Разворачивается одной командой

Проект контейнеризован и разбит на сервисы; лишние можно не поднимать.

webNext.js App Router

Ядро: UI, API-роуты, стриминг ответов агента, обращения к БД и к провайдерам LLM. React, TypeScript, vanilla CSS без тяжёлых библиотек.

dblibSQL + Drizzle

Вместо тяжёлой СУБД — файл altsearch.db на volume. Пользователи, история, сессии, конфиги агентов и вектора страниц.

agentФайловые инструменты

Агент работает через read_file / write_file по рабочей папке события: канонические заметки плюс шаблоны под каждый тип сайта.

npmNginx Proxy Manager

Опциональный профиль: реверс-прокси с веб-интерфейсом и автоматическими сертификатами Let's Encrypt.

authNextAuth v5

Google, GitHub и локальные учётки. Область поиска переключается между «все события» и «мои» и запоминается в куке.

cfgРазделённый конфиг

.env — только секреты. config.yaml — порт, разрешение локального входа, пресеты моделей. Плюс пять стартовых скриптов.

Что это и чем это не является

Тип работы
продуктовая и инженерная: агент, архитектура, БД, авторизация, деплой
LLM
любой OpenAI-совместимый провайдер, модель не обучалась
Эмбеддинги
локальные, @huggingface/transformers
Поиск
лексика + косинус по трём полям, ранжирование весами
Инфраструктура
Docker Compose, self-hosted

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