Major changes: - Add Go backend (backend/) with microservices architecture - Enhanced master-agents-svc: reranker, content-classifier, stealth-crawler, proxy-manager, media-search, fastClassifier, language detection - New web-svc widgets: KnowledgeCard, ProductCard, ProfileCard, VideoCard, UnifiedCard, CardGallery, InlineImageGallery, SourcesPanel, RelatedQuestions - Improved discover-svc with discover-db integration - Docker deployment improvements (Caddyfile, vendor.sh, BUILD.md) - Library-svc: project_id schema migration - Remove deprecated finance-svc and travel-svc - Localization improvements across services Made-with: Cursor
42 KiB
Статус проекта — ВСЁ РАБОТАЕТ
Последнее обновление: 27.02.2026
Исправлена ошибка 500 в learning-svc (27.02.2026)
Проблема: При создании урока POST /api/v1/learning/lesson возвращалась ошибка 500.
Причина: learning-svc пытался использовать Timeweb JWT-токен (в переменной OPENAI_API_KEY) как ключ OpenAI API. Timeweb JWT имеет формат eyJ..., что не является валидным OpenAI ключом.
Решение:
-
backend/cmd/learning-svc/main.go — изменена логика инициализации LLM клиента:
- Приоритет 1: Timeweb Cloud AI (если
TIMEWEB_AGENT_ACCESS_ID+TIMEWEB_API_KEYустановлены) - Приоритет 2: Anthropic (только если ключ не JWT)
- Приоритет 3: OpenAI (только если ключ не JWT)
- Добавлена функция
isJWT()для детекции JWT-токенов
- Приоритет 1: Timeweb Cloud AI (если
-
backend/deploy/docker/docker-compose.yml — добавлены env vars для learning-svc:
TIMEWEB_API_BASE_URLTIMEWEB_AGENT_ACCESS_IDTIMEWEB_API_KEYDEFAULT_LLM_MODEL
Результат:
POST /api/v1/learning/lesson→ 200 (урок создаётся успешно)- learning-svc использует Timeweb Cloud AI как LLM провайдер
Исправлены API ошибки 503/404 (27.02.2026)
Проблема: Frontend получал ошибки:
api/v1/spaces- 503 Service Unavailableapi/v1/computer/tasks- 404 Not Foundapi/v1/computer/execute- 404 Not Found
Причины:
api-gatewayне имел переменных окружения для новых сервисов (THREAD_SVC_URL, COMPUTER_SVC_URL и др.)computer-svcпадал при попытке использовать "anonymous" как UUID в PostgreSQL
Решение:
-
docker-compose.yml - добавлены env vars в api-gateway:
- THREAD_SVC_URL=http://thread-svc:3027
- COMPUTER_SVC_URL=http://computer-svc:3030
- DISCOVER_SVC_URL=http://discover-svc:3002
- FINANCE_HEATMAP_SVC_URL=http://finance-heatmap-svc:3033
- LEARNING_SVC_URL=http://learning-svc:3034
-
computer-svc/main.go - исправлена обработка anonymous пользователей:
- GET /tasks возвращает пустой список для anonymous
- POST /execute возвращает 401 для anonymous
Результат:
GET /api/v1/spaces→ 401 (требует auth, frontend обрабатывает)GET /api/v1/computer/tasks→ 200 (пустой список для anonymous)POST /api/v1/computer/execute→ 401 (требует auth)
Исправлен баг с пустым ответом в Chat (27.02.2026)
Проблема: При отправке сообщения в UI приходил пустой ответ.
Причина: В backend/cmd/api-gateway/main.go функция handleChat использовала defer resp.Body.Close() до SetBodyStreamWriter. Поскольку SetBodyStreamWriter выполняется асинхронно, defer закрывал body сразу после return из функции, до того как данные успевали передаться клиенту.
Решение: Перенёс resp.Body.Close() внутрь callback SetBodyStreamWriter:
c.Context().SetBodyStreamWriter(func(w *bufio.Writer) {
defer resp.Body.Close() // <-- теперь здесь
// ... streaming logic
})
Файл: backend/cmd/api-gateway/main.go
Адаптивность и удаление модалок (27.02.2026)
Задача: Адаптировать под мобильные, убрать Dialog (модалки), сделать отдельные страницы.
Сделано:
-
Мобильный Sidebar (
layout.tsx,Sidebar.tsx):- На мобильных (<768px) sidebar скрыт, есть гамбургер-меню
- Появляется mobile header с кнопкой меню
- Sidebar открывается как overlay с анимацией
- Автозакрытие при навигации
-
Удалены все Dialog/модальные окна:
spaces/page.tsx— убран Dialog для создания/редактированияlearning/page.tsx— убран Dialog для создания урока
-
Созданы отдельные страницы вместо модалок:
/spaces/new— создание пространства/spaces/[id]/edit— редактирование пространства/learning/new— создание урока
-
Адаптивность всех страниц:
/— responsive grid для suggestions, адаптивные padding/размеры/discover— горизонтальный скролл табов, адаптивные карточки/history— адаптивные padding, видимые кнопки действий на мобильных/spaces— адаптивные карточки, dropdown всегда видим на мобильных/finance— адаптивный time range, компактные StockRow/learning— адаптивные stats cards, уроки/settings— компактные селекторы, toggle switches/computer— мобильная панель задач, адаптивные примеры
-
Общие улучшения:
h-[100dvh]вместоh-screenдля лучшей работы на iOS- Overflow-x-auto для табов с горизонтальной прокруткой
- Адаптивные padding:
px-4 sm:px-6,py-6 sm:py-8 - Адаптивные размеры текста:
text-xl sm:text-2xl - Видимость кнопок на мобильных (без hover-only)
Редизайн WebUI в стиле Cursor IDE 2026 (27.02.2026)
Задача: Редизайн backend/webui в стиле Cursor IDE 2026 — современная тёмная тема с индиговыми акцентами.
Сделано:
-
Глобальные стили (
globals.css):- Новая цветовая палитра: base/elevated/surface/overlay для фонов
- Текст: primary/secondary/muted/faint (zinc-based)
- Акценты: indigo (accent) + cyan (accent-secondary)
- CSS переменные для всех цветов
- JetBrains Mono для кода
- Классы: .btn-primary, .btn-primary-solid, .btn-secondary, .btn-ghost, .btn-icon
- .nav-item, .nav-item-active, .card, .card-interactive, .glass-card, .surface-card
- .badge, .badge-accent, .badge-success, .badge-warning, .badge-error
- Анимации: fade-in, fade-in-up, slide-in-right, slide-in-left, scale-in, glow-pulse
-
Tailwind Config (
tailwind.config.ts):- Semantic colors: base, elevated, surface, overlay, primary, secondary, muted, faint
- accent с оттенками: DEFAULT, hover, muted, subtle
- border с оттенками: DEFAULT, hover, focus
- success, warning, error с muted вариантами
- Кастомные тени: glow-sm/md/lg, elevated, card, dropdown
- Расширенные анимации
-
Компоненты (Cursor-style):
Sidebar.tsx— минималистичный с индиговыми акцентами, collapsibleChatInput.tsx— современный инпут с glow эффектом, ArrowUp кнопка отправкиChatMessage.tsx— чистый рендер, индиговые цитаты и кодDiscoverCard.tsx— карточки с цветными иконками
-
Страницы (все обновлены и адаптированы):
/— главная с suggestions grid/discover— лента новостей/history— история поиска/spaces— пространства (+ /new, /[id]/edit)/finance— котировки/learning— уроки (+ /new)/settings— настройки/computer— Computer page
Цветовая схема (Cursor IDE 2026):
- Background: base (#0a0a0c) → elevated (#121217) → surface (#1a1a1f)
- Text: primary (#e9e9eb) → secondary (#a8a8af) → muted (#6b6b75) → faint (#4a4a54)
- Accent: indigo (#818cf8) — основной акцент
- Accent Secondary: cyan (#22d3ee) — дополнительный
- Borders: #26262e → #32323d (hover)
- Success: green (#22c55e)
- Error: red (#ef4444)
- Warning: amber (#f59e0b)
Интеграция Frontend с Backend (27.02.2026)
Задача: Подключить backend к frontend в backend/webui/, убрать моковые данные.
Сделано:
-
API Gateway обновлён (
backend/cmd/api-gateway/main.go):- Добавлен роутинг для threads, spaces, pages, share → thread-svc
- Добавлен роутинг для discover → discover-svc
- Добавлен роутинг для heatmap, movers, markets → finance-heatmap-svc
- Добавлен роутинг для learning → learning-svc
-
Config обновлён (
backend/pkg/config/config.go):- Добавлены FinanceHeatmapURL, LearningSvcURL
-
Frontend Types (
backend/webui/src/lib/types.ts):- Добавлены Thread, ThreadMessage, ThreadSource
- Добавлены FinanceStock, HeatmapData, HeatmapSector, TopMovers, FinanceMarket
- Добавлены Lesson, LessonProgress, LessonStep, CodeExample, QuizQuestion, PracticeExercise
-
Frontend API (
backend/webui/src/lib/api.ts):fetchThreads(),fetchThread(),createThread(),deleteThread(),shareThread()fetchSpaces(),fetchSpace(),createSpace(),updateSpace(),deleteSpace()fetchMarkets(),fetchHeatmap(),fetchTopMovers()fetchLessons(),fetchLesson(),createLesson(),completeStep(),submitQuizAnswer(),deleteLesson()- Добавлен
getAuthHeaders()для JWT авторизации
-
History Page (
backend/webui/src/app/(main)/history/page.tsx):- Загрузка из threads API
- Удаление тредов
- Шаринг тредов
- Группировка по датам
- Поиск
-
Spaces Page (
backend/webui/src/app/(main)/spaces/page.tsx):- Загрузка из spaces API
- Создание/редактирование/удаление пространств
- Выбор focus mode
- Кастомные AI инструкции
-
Finance Page (
backend/webui/src/app/(main)/finance/page.tsx):- Загрузка рынков из API
- Heatmap данные по секторам
- Top movers (gainers/losers/most active)
- Переключение timeRange (1d/1w/1m/3m/1y)
-
Learning Page (
backend/webui/src/app/(main)/learning/page.tsx):- Загрузка уроков из API
- Создание уроков с выбором сложности и режима
- Отображение прогресса
- Удаление уроков
Новые функции (добавлено в этой сессии):
0. WebUI — Интерфейс бэкенда (Perplexity-style)
- Папка:
backend/webui/ - Технологии: Next.js 14, React 18, Tailwind CSS, TypeScript
- Цветовая схема: Глубокий синий (#0a1929) + золотистые акценты (#d4a373)
- Порт: 3000
- Страницы:
/— Главная страница с чатом и подсказками/discover— Лента новостей с AI-саммари/spaces— Пространства (workspaces) для организации исследований/history— История поисков/finance— Котировки MOEX, крипто, валюты/learning— Интерактивные курсы с AI-наставником/settings— Настройки (тема, язык, приватность)
- Компоненты:
Sidebar— Навигация с коллапсомChatInput— Ввод с режимами (speed/balanced/quality)ChatMessage— Рендер markdown + citationsCitation— Hover preview источниковDiscoverCard— Карточки новостей (large/medium/small)
- Docker:
backend/webui/Dockerfile, добавлен вdocker-compose.yml - Запуск:
cd backend/webui && npm run devили через Docker
1. Computer с долгосрочными задачами (Perplexity-style)
- Файлы:
backend/internal/computer/types.go,backend/internal/computer/computer.go - Duration Modes: Short (30 мин), Medium (4 часа), Long (24 часа), Extended (7 дней), Unlimited (365 дней)
- Checkpoints: автоматическое сохранение состояния для возобновления задач
- Heartbeat: периодические уведомления о статусе
- Resource Limits: контроль CPU, памяти, бюджета
2. Browser Automation через Playwright
- Файлы:
backend/internal/computer/browser/browser.go,backend/internal/computer/browser/server.go - Действия: navigate, click, type, fill, screenshot, scroll, evaluate, PDF, extract text/HTML
- Session management: пул сессий, автоочистка, управление viewport
- Сервис: browser-svc (порт 3050)
3. Персонализация Discover — "For You" feed
- Файлы:
backend/internal/discover/personalization.go,backend/internal/db/user_interests_repo.go - User Interests: topics, sources, keywords с decay-механизмом
- Feed Algorithm: relevance scoring, diversity, recency, trending boost
- Blocking: блокировка источников и тем
- Custom Categories: пользовательские категории с ключевыми словами
4. Labs Service — интерактивные отчёты
- Файлы:
backend/internal/labs/types.go,backend/internal/labs/generator.go,backend/cmd/labs-svc/main.go - Визуализации: bar/line/pie/donut charts, tables, stat cards, KPI, heatmap, timeline, comparison
- UI-элементы: tabs, accordion, collapsible, stepper, code blocks, markdown
- API: генерация отчётов, экспорт в HTML/JSON
- Сервис: labs-svc (порт 3031)
5. Finance Heatmaps
- Файлы:
backend/internal/finance/heatmap.go,backend/cmd/finance-heatmap-svc/main.go - Markets: S&P 500, NASDAQ, Dow Jones, MOEX, Crypto, Forex
- Views: treemap, grid
- Data: sectors, tickers, top movers (gainers/losers/most active)
- Colorscale: красно-зелёная шкала по изменению цены
- Сервис: finance-heatmap-svc (порт 3033)
6. Step-by-step Learning Mode
- Файлы:
backend/internal/learning/stepper.go,backend/cmd/learning-svc/main.go - Modes: explain, guided, interactive, practice, quiz
- Difficulty: beginner, intermediate, advanced, expert
- Content: explanations, code, visualizations, quiz questions, practice exercises
- Progress tracking: step completion, score, time spent
- Сервис: learning-svc (порт 3034)
7. Discover Daily Podcast Generation
- Файлы:
backend/internal/podcast/generator.go,backend/cmd/podcast-svc/main.go - Types: daily, weekly, topic_deep, breaking
- Script Generation: intro, news segments, analysis, outro
- TTS Integration: ElevenLabs API для генерации аудио
- RSS Feed: автоматическая генерация RSS для подкаст-платформ
- Сервис: podcast-svc (порт 3032)
Все 21 сервис:
- postgres, redis, searxng, crawl4ai (инфраструктура)
- search-svc (3001) ✅
- discover-svc (3002) ✅
- chat-svc (3005) ✅
- api-gateway (3015) ✅
- agent-svc (3018) ✅
- llm-svc (3020) ✅
- scraper-svc (3021) ✅
- collection-svc (3025) ✅
- file-svc (3026) ✅
- thread-svc (3027) ✅
- computer-svc (3030) ✅
- browser-svc (3050) ✅ NEW
- labs-svc (3031) ✅ NEW
- podcast-svc (3032) ✅ NEW
- finance-heatmap-svc (3033) ✅ NEW
- learning-svc (3034) ✅ NEW
Задача (исходный запрос)
Система виджетов в стиле Perplexity для российского рынка: карточки товаров/видео/профилей/промокодов, Knowledge Cards, улучшенные citations, sources panel, image/video gallery + интеграция с Яндекс, Рутуб, ВКонтакте.
Сделано (ВСЁ ЗАВЕРШЕНО)
1. SearXNG — Российские engines
- Файл:
deploy/docker/searxng/settings.yml - Добавлены: yandex, yandex images, yandex videos, yandex news, yandex music
- Добавлены: vk (через xpath), rutube (через json_engine), dzen
- Добавлены: youtube, aliexpress
2. Типы данных виджетов (Backend)
- Файл:
services/master-agents-svc/src/lib/types/widgets.ts - ProductData, VideoData, ProfileData, PromoData
- ImageData, KnowledgeCardData (comparison_table, charts, timeline, quote, definition)
- SourceData, ClassifiedResult
- Вспомогательные функции: formatPrice, formatViews, formatDuration, formatFollowers
3. Content Classifier (Backend)
- Файл:
services/master-agents-svc/src/lib/content-classifier.ts - Определение типа по URL паттернам (товары, видео, профили, промокоды)
- Определение платформы (yandex, vk, rutube, ozon, wildberries и др.)
- Классификация по ключевым словам в запросе
- Функции: classifySearchResult, groupResultsByType, detectKnowledgeCardType
4. UI Компоненты (Frontend)
Улучшенный Citation
- Файл:
services/web-svc/src/components/MessageRenderer/Citation.tsx - Расширенный hover preview с заголовком, описанием, favicon
- Иконки платформ (Яндекс, VK, Rutube, YouTube и др.)
- Улучшенный дизайн badges
UnifiedCard (базовая карточка)
- Файл:
services/web-svc/src/components/Widgets/UnifiedCard.tsx - Универсальный компонент для всех типов карточек
- Поддержка compact/horizontal режимов
- Badges, meta, actions
ProductCard (товары)
- Файл:
services/web-svc/src/components/Widgets/ProductCard.tsx - Цена, скидка, старая цена
- Рейтинг со звёздами, отзывы
- Маркетплейс (Ozon, WB, AliExpress, Яндекс Маркет)
- Наличие, доставка, badges
VideoCard (видео)
- Файл:
services/web-svc/src/components/Widgets/VideoCard.tsx - Thumbnail с длительностью
- Автор, views, likes
- Платформа (Rutube, VK, YouTube, Дзен)
- Horizontal и compact режимы
ProfileCard (профили)
- Файл:
services/web-svc/src/components/Widgets/ProfileCard.tsx - Аватар, имя, username
- Verified badge, online статус
- Followers/following
- Платформа (VK, Telegram, YouTube, Дзен)
PromoCard (промокоды)
- Файл:
services/web-svc/src/components/Widgets/PromoCard.tsx - Код с кнопкой копирования
- Скидка, магазин, логотип
- Срок действия, условия
- Verified badge
CardGallery (карусель)
- Файл:
services/web-svc/src/components/Widgets/CardGallery.tsx - Горизонтальный скролл с навигацией
- Поддержка всех типов карточек
- Индикаторы, gradient fade
KnowledgeCard (Tako-style)
- Файл:
services/web-svc/src/components/Widgets/KnowledgeCard.tsx - Сравнительные таблицы
- Bar chart, Pie chart
- Stat cards с изменениями (+/-)
- Timeline
- Quote, Definition
InlineImageGallery
- Файл:
services/web-svc/src/components/Widgets/InlineImageGallery.tsx - Grid, carousel, masonry layouts
- Lightbox с навигацией
- Lazy loading, источники
VideoEmbed
- Файл:
services/web-svc/src/components/Widgets/VideoEmbed.tsx - Embed для YouTube, Rutube
- Play preview для VK, Дзен
- Метаданные: views, likes, автор
SourcesPanel
- Файл:
services/web-svc/src/components/SourcesPanel.tsx - Expand/collapse
- Группировка по домену
- Поиск по источникам
- Favicon, snippets
RelatedQuestions
- Файл:
services/web-svc/src/components/RelatedQuestions.tsx - 3 стиля: inline, panel, chips
- Expand/collapse
- Иконки, анимации
5. Renderer обновлён
- Файл:
services/web-svc/src/components/Widgets/Renderer.tsx - Все новые типы виджетов: products, videos, profiles, promos
- knowledge_card, image_gallery, video_embed
- Одиночные карточки: product, video, profile, promo
6. Синхронный медиа-поиск (images/videos)
- Файл:
services/master-agents-svc/src/lib/media-search.ts - Создан модуль синхронного поиска через SearXNG (без LLM)
- Функции
searchImages(),searchVideos(),searchMedia() - Автодетект платформы видео (YouTube, Rutube, VK, Дзен)
7. Интеграция медиа в searchOrchestrator
- Файл:
services/master-agents-svc/src/lib/agent/searchOrchestrator.ts - Добавлен
mediaPromiseпараллельно сwidgetPromiseиsearchPromise - Эмит виджетов
image_gallery(carousel) иvideos(CardGallery) - Медиа загружается одновременно с research
8. Backend: Интеграция парсинга и эмиссии виджетов (ГОТОВО)
-
Файл:
services/master-agents-svc/src/lib/searxng.ts- Расширены типы SearxngSearchResult (thumbnail, views, price, duration, author)
- Добавлена функция categorizeResult для автоопределения типа контента
-
Файл:
services/master-agents-svc/src/lib/agent/researcher.ts- Интегрирован ContentClassifier
- Классификация результатов по типам (products, videos, profiles, promos, images)
- Автоматическая эмиссия WidgetBlock для каждого типа контента
- Эвристика для KnowledgeCard (comparison_table, stat_card)
9. Frontend: Типы для Widget (ГОТОВО)
-
Файл:
services/web-svc/src/lib/types.ts- Добавлен WidgetType union type со всеми типами виджетов
- Типизированы params
-
Файл:
services/web-svc/src/components/ChatWindow.tsx- Расширен интерфейс Widget новыми типами
10. Улучшение ReasoningSteps (ГОТОВО)
- Файл:
services/web-svc/src/components/AssistantSteps.tsx- Progress bar с процентами
- Таймер времени выполнения
- CheckCircle2 при завершении
- Loader2 spinner во время работы
- Улучшенная визуализация состояний
Осталось сделать
Go Backend (НОВОЕ)
Создан бэкенд на Go в backend/ — альтернатива TypeScript сервисам для продакшена.
Структура:
backend/
├── cmd/ # Точки входа (9 сервисов)
│ ├── api-gateway/ # HTTP proxy + routing (port 3015)
│ ├── chat-svc/ # Chat orchestration (port 3005)
│ ├── agent-svc/ # AI Agent / Search Orchestrator (port 3018)
│ ├── search-svc/ # SearXNG wrapper (port 3001)
│ ├── llm-svc/ # LLM providers (port 3020)
│ ├── scraper-svc/ # Web scraping (port 3021)
│ ├── discover-svc/ # Perplexity Discover (port 3002)
│ ├── collection-svc/ # Collections API (port 3025)
│ └── file-svc/ # File upload & analysis (port 3026)
├── internal/
│ ├── agent/ # Orchestrator, Classifier, Researcher, DeepResearch, FocusModes
│ ├── db/ # PostgreSQL repos (digest, article_summary, collection, file)
│ ├── files/ # File analyzer (PDF, images)
│ ├── llm/ # OpenAI, Anthropic, Gemini clients
│ ├── search/ # SearXNG, Media, BM25 Reranker
│ ├── session/ # Session manager + events
│ ├── prompts/ # LLM prompts
│ └── types/ # Blocks, Chunks, Widgets
├── pkg/
│ ├── config/ # Configuration
│ ├── ndjson/ # NDJSON streaming
│ ├── cache/ # Redis кэширование
│ └── middleware/ # Auth, RateLimit, Logging, JWT
└── deploy/
├── docker/ # Dockerfiles + docker-compose
└── k8s/ # Kubernetes manifests
Для запуска:
cd backend
make deps
make build
make dev # или docker-compose
Добавлено (Perplexity-style Article Summary):
fetchPreGeneratedDigest()— проверка готового дайджеста из discover-svcpreScrapeArticleURL()— параллельный скрейпинг через Crawl4AI- Обработка
Summary: <url>запросов как в Perplexity Discover - Writer prompt для article digest (структура, follow-up вопросы)
- Researcher prompt для поиска related sources
Добавлено (26.02.2026):
discover-svcна Go (port 3002) — полный функционал Perplexity Discover- Redis кэширование article summaries (
pkg/cache/redis.go) - Сохранение саммари в discover-svc после генерации из chat-svc
- Article summary flow: chat-svc -> agent-svc -> discover-svc
Добавлено (26.02.2026 - Perplexity Parity):
- PostgreSQL персистентность (
internal/db/) — digests, article_summaries, collections, files - Redis-based rate limiting (
pkg/middleware/ratelimit_redis.go) - JWT валидация токенов (
pkg/middleware/jwt.go) - Focus Modes (
internal/agent/focus_modes.go) — Academic, YouTube, Reddit, Code, News, Math, Finance - Deep Research (
internal/agent/deep_research.go) — multi-agent, 30+ searches, insights synthesis - Collections service (
cmd/collection-svc/) — saved research projects - File service (
cmd/file-svc/) — PDF/image upload & analysis
Добавлено (26.02.2026 - Full Perplexity Feature Parity):
- Thread service (
cmd/thread-svc/) — Threads, Spaces, Memory, Pages (port 3027) - Threads — сохранение истории чатов, sharing по публичной ссылке
- Spaces — workspaces с custom AI instructions, default focus mode
- Pages — генерация статей из threads (
internal/pages/generator.go) - Memory — персонализация (preferences, facts, instructions, interests)
- Clarifying Questions — уточняющие вопросы перед Pro Search (Quality mode)
- Related Questions — связанные вопросы после ответа
- Enhanced Context — buildEnhancedContext() объединяет User Memory + Collection + Files
- runDeepResearchMode() — интеграция Deep Research в orchestrator
- DB repositories:
internal/db/thread_repo.go,space_repo.go,memory_repo.go,page_repo.go
TODO для Go бэкенда:
- Тестирование интеграции с web-svc
- Добавить Redis кэширование ответов
- Добавить сохранение саммари в discover-svc после генерации
- Unit тесты
- K8s манифесты для Go сервисов (
backend/deploy/k8s/) - PostgreSQL персистентность
- Focus Modes (Perplexity-style)
- Deep Research (multi-agent)
- Collections API
- File Analysis (PDF, images)
- Thread History (chat persistence)
- Spaces (workspaces)
- Pages (article generation)
- Memory (personalization)
- Clarifying Questions
- Related Questions
- Sharing (public links)
- GooSeek Computer (Perplexity Computer аналог)
GooSeek Computer — Perplexity Computer Clone (26.02.2026)
Новый сервис: cmd/computer-svc/main.go (port 3030)
Автономная платформа для долгосрочных задач — аналог Perplexity Computer.
Архитектура:
backend/internal/computer/
├── types.go # ComputerTask, SubTask, Artifact, Schedule, Memory
├── computer.go # Главный оркестратор + EventBus
├── planner.go # AI планировщик задач
├── router.go # Роутинг на нужную модель
├── executor.go # Исполнение задач (research, code, deploy, report...)
├── sandbox.go # Docker sandbox для исполнения кода
├── scheduler.go # Планировщик (cron, interval, once, daily, weekly)
├── memory.go # Персистентная память пользователя
└── connectors/ # Внешние интеграции
├── connector.go # Интерфейс коннектора
├── email.go # SMTP отправка
├── telegram.go # Telegram Bot API
├── webhook.go # HTTP webhooks
└── storage.go # S3/MinIO хранилище
Model Registry: internal/llm/registry.go
- Capabilities: reasoning, coding, search, creative, fast, long_context, vision, math
- Роутинг задач на оптимальную модель (Claude для reasoning, Gemini для research, GPT для fast)
DB Repositories:
internal/db/computer_task_repo.go— задачиinternal/db/computer_memory_repo.go— памятьinternal/db/computer_artifact_repo.go— артефакты (код, отчёты, файлы)
API Endpoints:
POST /api/v1/computer/execute— запуск задачиGET /api/v1/computer/tasks— список задач пользователяGET /api/v1/computer/tasks/:id— статус задачиGET /api/v1/computer/tasks/:id/stream— SSE стрим событийPOST /api/v1/computer/tasks/:id/resume— продолжить с user inputDELETE /api/v1/computer/tasks/:id— отменаGET /api/v1/computer/tasks/:id/artifacts— артефактыGET /api/v1/computer/models— доступные моделиGET /api/v1/computer/connectors— доступные интеграцииPOST /api/v1/computer/connectors/:id/execute— выполнить action
Типы задач:
research— веб-исследование, сбор данныхcode— генерация кодаanalysis— анализ данныхdesign— проектирование архитектурыdeploy— запуск кода в sandboxreport— генерация отчётовcommunicate— отправка email/telegramtransform— преобразование данныхvalidate— валидация результатов
Планирование:
cron— cron-выраженияinterval— каждые N секундonce— одноразовый запускdaily/hourly/weekly/monthly— preset'ы
Пример использования:
POST /api/v1/computer/execute
{
"userId": "user-123",
"query": "Мониторь курс доллара каждый час и отправляй мне в Telegram если изменение > 1%",
"options": {
"async": true,
"schedule": { "type": "hourly" }
}
}
Нет критичных задач - система работает стабильно.
GooSeek Computer UI (27.02.2026)
Задача: Создать UI для Computer в стиле Perplexity Computer.
Сделано:
-
Типы (
backend/webui/src/lib/types.ts):- ComputerTask, ComputerTaskStatus, DurationMode, TaskPriority
- TaskPlan, SubTask, Artifact, Checkpoint
- ComputerSchedule, ResourceLimits
- ComputerTaskEvent, ComputerExecuteRequest
- ComputerModel, ComputerConnector
-
API функции (
backend/webui/src/lib/api.ts):executeComputerTask()— запуск задачиfetchComputerTasks()— список задачfetchComputerTask()— статус задачиstreamComputerTask()— SSE стрим событийresumeComputerTask()— продолжить с user inputcancelComputerTask()— отменитьfetchComputerArtifacts()— артефактыdownloadArtifact()— скачать артефактfetchComputerModels()— доступные моделиfetchComputerConnectors()— коннекторыexecuteConnectorAction()— выполнить action
-
UI страница (
backend/webui/src/app/(main)/computer/page.tsx):- Ввод задачи (textarea с placeholder)
- Duration mode selector (short/medium/long/extended/unlimited)
- Примеры задач (4 карточки)
- Список задач (левая панель)
- Детальный просмотр задачи:
- Progress bar
- Статус с иконками
- Подзадачи с прогрессом
- События (real-time log)
- Артефакты с кнопкой скачивания
- Расширенные настройки (коннекторы)
-
Навигация (
backend/webui/src/components/Sidebar.tsx):- Добавлен Computer в раздел "Инструменты"
- Иконка Cpu
Оптимизация Speed Mode 2.0 (26.02.2026):
Проблема: Запросы обрабатывались >2 минут из-за 5 последовательных LLM вызовов.
Решение — Fast Path для Speed Mode:
- Rule-based classifier — без LLM вызова (
fastClassifier.ts) - Direct SearXNG search — без researcher loop (без LLM)
- No scraping — только сниппеты, без Crawl4AI
- Parallel execution — search + media + widgets одновременно
- Single LLM call — только Writer для финального ответа
Новый файл: services/master-agents-svc/src/lib/agent/fastClassifier.ts
Изменённые файлы:
services/master-agents-svc/src/lib/agent/searchOrchestrator.ts— добавленrunSpeedMode()services/master-agents-svc/src/lib/actions/scrape_url.ts— отключен для speed mode
Ожидаемое время ответа:
- Speed mode: 8-15 сек (было >2 мин)
- Balanced mode: 20-40 сек
- Quality mode: 60-120 сек
Исправлено 26.02.2026:
-
SearXNG падал (ambiguous shortcut errors):
- Файл:
deploy/docker/searxng/settings.yml - Убраны дублирующие shortcuts для yandex engines (ya, yai, yav, yan, yam)
- Убраны конфликтующие кастомные engines (vk, rutube, dzen, aliexpress)
- Файл:
-
Ghost перезапускался каждые 2 минуты (HTTP 503):
- Файл:
deploy/docker/docker-compose.yml - Исправлен healthcheck (wget --spider не следует за 301 redirect)
- Увеличены start_period (90s), retries (5), interval (30s)
- Файл:
Контекст для продолжения
Новые файлы (созданы):
backend/cmd/computer-svc/main.go— GooSeek Computer service (port 3030)backend/internal/computer/types.go— Computer types (Task, SubTask, Artifact, etc.)backend/internal/computer/computer.go— Main orchestrator + EventBusbackend/internal/computer/planner.go— AI task plannerbackend/internal/computer/router.go— Model routingbackend/internal/computer/executor.go— Task executionbackend/internal/computer/sandbox.go— Docker sandbox managerbackend/internal/computer/scheduler.go— Cron/interval schedulerbackend/internal/computer/memory.go— Persistent user memorybackend/internal/computer/connectors/connector.go— Connector interfacebackend/internal/computer/connectors/email.go— SMTP connectorbackend/internal/computer/connectors/telegram.go— Telegram Bot connectorbackend/internal/computer/connectors/webhook.go— HTTP webhook connectorbackend/internal/computer/connectors/storage.go— S3/MinIO storage connectorbackend/internal/llm/registry.go— Model registry with capabilitiesbackend/internal/db/computer_task_repo.go— Computer task repositorybackend/internal/db/computer_memory_repo.go— Computer memory repositorybackend/internal/db/computer_artifact_repo.go— Computer artifact repositorybackend/deploy/k8s/computer-svc.yaml— K8s manifest for computer-svcbackend/cmd/discover-svc/main.go— Discover service на Gobackend/cmd/collection-svc/main.go— Collections servicebackend/cmd/file-svc/main.go— File upload & analysis servicebackend/internal/db/postgres.go— PostgreSQL connection + migrationsbackend/internal/db/digest_repo.go— Digest repositorybackend/internal/db/article_summary_repo.go— Article summary repositorybackend/internal/db/collection_repo.go— Collection repositorybackend/internal/db/file_repo.go— Uploaded file repositorybackend/internal/agent/focus_modes.go— Perplexity Focus Modesbackend/internal/agent/deep_research.go— Deep Research multi-agentbackend/internal/files/analyzer.go— PDF/image analyzerbackend/pkg/cache/redis.go— Redis кэш клиентbackend/pkg/middleware/ratelimit_redis.go— Redis-based rate limitingbackend/pkg/middleware/jwt.go— JWT validation middlewarebackend/deploy/k8s/postgres.yaml— PostgreSQL StatefulSetbackend/deploy/k8s/collection-svc.yaml— Collection service K8sbackend/deploy/k8s/file-svc.yaml— File service K8sbackend/deploy/k8s/thread-svc.yaml— Thread service K8sbackend/cmd/thread-svc/main.go— Thread/Spaces/Memory/Pages servicebackend/internal/db/thread_repo.go— Thread repositorybackend/internal/db/space_repo.go— Space repositorybackend/internal/db/memory_repo.go— Memory repositorybackend/internal/db/page_repo.go— Page repositorybackend/internal/pages/generator.go— Page generator (Markdown/HTML export)services/master-agents-svc/src/lib/media-search.ts— синхронный медиа-поискservices/media-svc/DEPRECATED.md— пометка устаревшего сервисаservices/master-agents-svc/src/lib/types/widgets.tsservices/master-agents-svc/src/lib/content-classifier.tsservices/web-svc/src/components/Widgets/UnifiedCard.tsxservices/web-svc/src/components/Widgets/ProductCard.tsxservices/web-svc/src/components/Widgets/VideoCard.tsxservices/web-svc/src/components/Widgets/ProfileCard.tsxservices/web-svc/src/components/Widgets/PromoCard.tsxservices/web-svc/src/components/Widgets/CardGallery.tsxservices/web-svc/src/components/Widgets/KnowledgeCard.tsxservices/web-svc/src/components/Widgets/InlineImageGallery.tsxservices/web-svc/src/components/Widgets/VideoEmbed.tsxservices/web-svc/src/components/SourcesPanel.tsxservices/web-svc/src/components/RelatedQuestions.tsx
Изменённые файлы:
backend/internal/agent/orchestrator.go— Clarifying/Related Questions, Deep Research mode, Enhanced Contextbackend/pkg/config/config.go— ThreadSvcURL, ComputerSvcURLbackend/go.mod— добавлены minio-go, robfig/cronbackend/Makefile— добавлен computer-svcbackend/deploy/docker/Dockerfile.all— добавлен build computer-svcbackend/deploy/k8s/kustomization.yaml— добавлен computer-svcbackend/Makefile— thread-svcbackend/deploy/docker/docker-compose.yml— thread-svcbackend/deploy/docker/Dockerfile.all— thread-svc buildbackend/deploy/k8s/kustomization.yaml— thread-svcbackend/deploy/k8s/configmap.yaml— THREAD_SVC_URLservices/master-agents-svc/src/lib/agent/searchOrchestrator.ts— интеграция медиа-поискаservices/master-agents-svc/src/lib/searxng.ts— расширенные типы и категоризацияservices/master-agents-svc/src/lib/agent/researcher.ts— интеграция classifier + эмиссия виджетовdeploy/docker/searxng/settings.yml— российские enginesservices/web-svc/src/components/MessageRenderer/Citation.tsx— enhanced hoverservices/web-svc/src/components/Widgets/Renderer.tsx— новые типы виджетовservices/web-svc/src/lib/types.ts— WidgetTypeservices/web-svc/src/components/ChatWindow.tsx— Widget interfaceservices/web-svc/src/components/AssistantSteps.tsx— progress bar, timer, icons