Some checks failed
Build and Deploy GooSeek / build-and-deploy (push) Failing after 8m25s
- Add tier-based provider routing in llm-svc - free tier → Ollama (local qwen3.5:9b) - pro/business → Timeweb Cloud AI - Add /api/v1/embed endpoint for embeddings via Ollama - Update Ollama client: qwen3.5:9b default, remove auth - Add GenerateEmbedding() function for qwen3-embedding:0.6b - Add Ollama K8s deployment with GPU support (RTX 4060 Ti) - Add monitoring stack (Prometheus, Grafana, Alertmanager) - Add Grafana dashboards for LLM and security metrics - Update deploy.sh with monitoring and Ollama deployment Made-with: Cursor
GooSeek Backend (Go)
Perplexity-style AI Search Backend на Go.
Архитектура
backend/
├── cmd/ # Точки входа
│ ├── api-gateway/ # API Gateway (HTTP proxy + routing)
│ ├── chat-svc/ # Chat orchestration service
│ ├── search-svc/ # SearXNG wrapper
│ ├── llm-svc/ # LLM providers abstraction
│ ├── scraper-svc/ # Web scraping (Crawl4AI-like)
│ ├── agent-svc/ # AI Agent (search orchestrator)
│ ├── discover-svc/ # Discover (article summaries)
│ ├── collection-svc/ # Collections (saved research)
│ ├── file-svc/ # File upload & analysis
│ └── thread-svc/ # Threads, Spaces, Memory, Pages
├── internal/ # Внутренние пакеты
│ ├── agent/ # Search orchestrator logic
│ │ ├── classifier.go # Query classifier
│ │ ├── researcher.go # Research agent
│ │ ├── writer.go # Response writer
│ │ └── orchestrator.go # Main orchestration
│ ├── llm/ # LLM abstractions
│ │ ├── client.go # Generic LLM client
│ │ ├── openai.go # OpenAI provider
│ │ ├── anthropic.go # Anthropic provider
│ │ └── gemini.go # Google Gemini
│ ├── search/ # Search integrations
│ │ ├── searxng.go # SearXNG client
│ │ ├── media.go # Image/video search
│ │ └── reranker.go # BM25 reranking
│ ├── scraper/ # Web scraping
│ │ ├── crawler.go # Page crawler
│ │ ├── parser.go # HTML parser
│ │ └── cache.go # Scrape cache
│ ├── widgets/ # Widget generation
│ │ ├── weather.go # Weather widget
│ │ ├── calculator.go # Calculator widget
│ │ └── registry.go # Widget registry
│ ├── session/ # Session management
│ │ ├── manager.go # Session manager
│ │ └── events.go # Event emitter
│ ├── prompts/ # LLM prompts
│ │ ├── classifier.go # Classification prompts
│ │ ├── researcher.go # Research prompts
│ │ └── writer.go # Writer prompts
│ └── types/ # Shared types
│ ├── blocks.go # Response blocks
│ ├── chunks.go # Search chunks
│ └── widgets.go # Widget types
├── pkg/ # Public packages
│ ├── ndjson/ # NDJSON streaming
│ ├── middleware/ # HTTP middleware
│ └── config/ # Configuration
├── api/ # API definitions
│ └── proto/ # gRPC definitions (optional)
├── deploy/ # Deployment configs
│ ├── docker/ # Dockerfiles
│ └── k8s/ # Kubernetes manifests
├── go.mod
├── go.sum
└── Makefile
Сервисы
1. API Gateway (port 3015)
HTTP прокси для роутинга запросов к микросервисам.
2. Chat Service (port 3005)
Оркестрация чат-запросов, интеграция с agent-svc.
3. Agent Service (port 3018)
Главная логика Perplexity-style поиска:
- Query classification
- Multi-step research
- Response generation with citations
4. Search Service (port 3001)
SearXNG wrapper для веб-поиска.
5. LLM Service (port 3020)
Абстракция над LLM провайдерами.
6. Scraper Service (port 3021)
Web scraping для получения контента страниц.
7. Discover Service (port 3002)
Perplexity-style Discover функционал:
- Article summaries (дайджесты статей)
- Digest generation и кэширование
- Pre-generated digests storage
- Redis + PostgreSQL персистентность
8. Collection Service (port 3025)
Perplexity Collections:
- Сохранение исследований в проекты
- Контекст коллекции для новых поисков
- Шаринг коллекций
- CRUD для items (searches, notes, urls, files)
9. File Service (port 3026)
Perplexity File Analysis:
- Загрузка PDF, images, text файлов
- Автоматический анализ через LLM
- Извлечение текста из PDF
- Vision analysis для изображений
- Интеграция с Collections
10. Thread Service (port 3027)
Полный функционал сессий и персонализации:
Threads (Chat History):
- Сохранение истории чатов в PostgreSQL
- Автогенерация заголовков
- Пагинация сообщений
- Sharing по публичной ссылке
Spaces (Workspaces):
- Custom AI instructions per space
- Default focus mode и model
- Организация threads по проектам
- Цветовые теги и иконки
Pages (Article Generator):
- Генерация статей из threads
- Форматированные секции с цитатами
- Экспорт в Markdown/HTML
- Публичный sharing
Memory (Personalization):
- Сохранение предпочтений пользователя
- Фактов о пользователе
- Custom instructions
- Контекст для всех сессий
Запуск
# Development
make dev
# Build all
make build
# Docker
make docker-build
make docker-up
# Tests
make test
API
POST /api/chat (NDJSON stream)
{
"message": {
"messageId": "uuid",
"chatId": "uuid",
"content": "What is quantum computing?"
},
"optimizationMode": "speed|balanced|quality",
"chatModel": {
"providerId": "openai",
"key": "gpt-4o"
},
"history": [["human", "..."], ["ai", "..."]],
"locale": "ru"
}
Response (NDJSON)
{"type":"block","block":{"id":"...","type":"research","data":{...}}}
{"type":"block","block":{"id":"...","type":"source","data":[...]}}
{"type":"block","block":{"id":"...","type":"widget","data":{...}}}
{"type":"textChunk","blockId":"...","chunk":"Квантовые..."}
{"type":"messageEnd"}
Режимы оптимизации
| Mode | Time | LLM Calls | Scraping |
|---|---|---|---|
| Speed | 8-15s | 1 | No |
| Balanced | 20-40s | 2-3 | Top 5 |
| Quality | 60-120s | 5-10 | Top 15 |
Perplexity-style Features
Focus Modes
- All — полный веб-поиск
- Academic — Google Scholar, ArXiv, PubMed
- YouTube — видео контент
- Reddit — обсуждения сообщества
- Code — GitHub, StackOverflow
- News — актуальные новости
- Math — Wolfram Alpha, вычисления
- Finance — финансовые данные
Deep Research
Multi-agent система глубокого исследования:
- Автоматическое разбиение на подзапросы
- 30+ поисков, 100+ источников
- Итеративный поиск с follow-up
- Синтез инсайтов
- Генерация отчёта с цитатами
Collections
- Сохранение исследований в проекты
- Контекст коллекции для новых поисков
- Типы items: search, note, url, file
- Шаринг коллекций
File Analysis
- PDF extraction
- Image analysis (vision models)
- Text file processing
- Интеграция с поиском
Clarifying Questions (Pro Search)
- Автоматическое определение неоднозначных запросов
- 2-3 уточняющих вопроса перед поиском
- Работает в Quality mode
Related Questions
- Генерация 3-4 связанных вопросов после ответа
- На основе контекста запроса и ответа
- Поддержка локализации (ru/en)
Spaces & Pages
- Spaces: workspaces с custom instructions
- Pages: генерация статей из исследований
- Публичный sharing по ссылке
- Счётчик просмотров
Memory & Personalization
- Сохранение предпочтений пользователя
- Типы: preference, fact, instruction, interest
- Автоматический контекст в каждом запросе
- Importance scoring
Технологии
- HTTP: Fiber v2
- Streaming: NDJSON over HTTP
- LLM: OpenAI, Anthropic, Gemini
- Search: SearXNG
- Scraping: Crawl4AI / custom crawler
- Caching: Redis
- Database: PostgreSQL
- Auth: JWT validation