Skip to main content

Bathys

Bathys

Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов. Один процесс владеет всем конвейером — поиск → извлечение → дистилляция под запрос → кэш — и всей стратегией ресёрча: что искать, какие страницы читать, сколько вернуть. Агент видит лишь интерфейс из четырёх MCP-инструментов; SearXNG и Crawl4AI работают внутри как сменные движки. Облачных квот и API-ключей нет, LLM внутри нет — дистилляция детерминированная (BM25).

Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.

python version mcp license

⚡ Quick start

Нужны Python ≥ 3.10 и git. В каталоге проекта:

git clone https://github.com/Korrnals/bathys.git && cd bathys
python3.12 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/python -m playwright install chromium   # браузер для извлечения
.venv/bin/python -m unittest discover -s tests    # 72 теста без сети, ~0.1 c
.venv/bin/bathys-doctor                           # диагностика стека одним запуском

В минимальном контейнерном образе без ensurepip venv собирается через get-pip.py — ветка в docs/getting-started/install.md. SearXNG поднимать руками не нужно: при первом поиске сервер сам пробует внешний инстанс, затем docker/podman, затем нативный режим (docs/getting-started/configure.md).

🔌 Подключение к харнессу

Автоматически. Одна команда найдёт харнессы по стандартным путям, пропишет сервер с бэкапом конфига и (с --with-agent) скопирует субагента:

.venv/bin/bathys install            # сначала --dry-run, чтобы увидеть план

Детектируются zcode, Claude Code, Claude Desktop, Cursor; повторный запуск ничего не меняет — запись идемпотентна. Поддерживаются --print-config (готовые блоки для ручной вставки) и --searxng-home <путь>.

Вручную. Bathys — stdio MCP-сервер, конфиг везде один и тот же блок mcpServers; от харнесса зависит только файл, в который его кладут. command — абсолютный путь к вашему клону (~ внутри JSON не раскрывается); BATHYS_SEARXNG_HOME опциональна.

{
  "mcpServers": {
    "bathys": {
      "command": "/path/to/bathys/.venv/bin/bathys",
      "env": {
        "BATHYS_SEARXNG_HOME": "/path/to/bathys/.runtime/searxng-home"
      }
    }
  }
}
Харнесс Гайд
zcode docs/integrations/zcode.md
Claude Code / Claude Desktop docs/integrations/claude-code.md
Cursor docs/integrations/cursor.md
Любой другой MCP-клиент docs/integrations/generic-mcp.md

🧠 Научить агента работать эффективно

Конфиг — только половина дела. Из коробки харнесс получает instructions-playbook (матрицу выбора инструментов), annotations и три стратегии-промптаbathys_deep_research, bathys_source_audit, bathys_fresh_scan, — так что выбирает инструменты Bathys уже нативно. Сильнее — профиль: субагент agents/bathys-researcher.md с двумя скиллами, которому глубокий ресёрч делегируется целиком; для клиентов, не показывающих MCP instructions, — дроп-ин agents/HARNESS-DROPIN.md в AGENTS.md / CLAUDE.md / .cursor/rules.

Пошаговая инструкция «из коробки → субагент → дроп-ин» и таблица сигналов футеров — в «Живых кейсах», раздел C.

🧭 Ходовые кейсы

Сравнение технологий. «Сравни SQLite WAL и PostgreSQL под нагрузку — что выбрать в 2026?» → агент вызывает deep_research, доуточняет запрос терминами из найденного и верифицирует вывод по двум источникам. Итог: один вызов вместо цепочки «поиск + N чтений», в контекст попадает 7.5k символов вместо ~35k.

[bathys: 34 raw hits, top 8 considered · dove 3 pages · 35669 ch fetched → 7508 ch returned · 1.3s]

Аудит спорного утверждения. «Правда ли, что в X упали замеры?» → стратегия bathys_source_audit: пакетное чтение ссылок из обсуждения + кросс-поиск опровержений → вердикт по каждому тезису с URL. Битая ссылка стоит одну строку, а не сорванный вызов.

Свежий срез. «Что нового в Y за две недели?» → bathys_fresh_scan: поиск с time_range=week → пакетное чтение → сводка с датами; протухший cache HIT лечится одним refresh=true.

Все кейсы — пользовательские, автономных агентов и эксплуатация — с живыми диалогами и профитом каждого: «Живые кейсы» → docs/getting-started/cases.md.

🛠 Инструменты

Инструмент Что делает
deep_research(query, max_sources=3, …) ищет, параллельно читает топ-источники, возвращает слитый дистиллят под запрос. Первый вызов для любого ресёрч-вопроса.
web_search(query, max_results=8, …) ранжированный список ссылок со сниппетами без содержимого страниц; as_json=true — чистый JSON для программ.
read_url(url, query=None, max_chars=8000) читает одну страницу; с query — только релевантные пассажи.
read_urls(urls, query=None, total_chars=12000) пакетно читает до 10 известных страниц; бюджет делится между успешными, сбой страницы — одна строка, не сорванный вызов.

Поиск сужается общими фильтрами time_range, category, engines, language. Живой футер ответа показывает сжатие и кэш: [bathys: 41 raw hits, top 3 considered · dove 3 pages · 35669 ch fetched → 7508 ch returned · 3.2s].

📊 Экономия токенов

Шкала честная и символьная, токены ≈ chars/4; каждая цифра взята из футера реального вызова.

Вызов Из сети Агенту Сжатие
web_search 37 549 симв. 1 986 симв. 18.9×
read_url 17 063 симв. 2 325 симв. 7.3×
deep_research (3 страницы) 35 669 симв. 7 508 симв. 4.7×
  • Дистилляция под запрос — пять стадий очистки (JS-рендер → вырезание бойлерплейта → PruningContentFilter → схлопывание markdown → BM25-отбор пассажей) с жёсткими бюджетами символов.
  • Кэш сырца до дистилляции — SQLite хранит сырой текст, поэтому перечитать страницу под другим углом можно бесплатно и без сети.
  • Ноль облачных квотdeep_research заменяет цепочку «поиск + N чтений», то есть N+1 списаний квоты, одним локальным вызовом.

Методика и пороги — в docs/operations/metrics.md.

📚 Документация

Хаб с маршрутами «с чего начать» — docs/index.md.

docs/
├── index.md          # хаб: дерево + три маршрута чтения
├── getting-started/  # установка · конфигурация · подключение · живые кейсы
├── integrations/     # zcode · claude-code · cursor · generic-mcp
├── architecture/     # компоненты · конвейер очистки · потоки данных
├── contracts/        # инструменты · футеры · модули · конфиг (19 env)
├── operations/       # runbook · метрики токен-экономии
├── product/          # хартия · реестр функций · роадмап · конкуренты
├── adr/              # шесть принятых архитектурных решений
└── meta/             # стайлгайд · глоссарий

Вне docs/: agents/ (субагент bathys-researcher, дроп-ин для харнессов) · tests/ (72 юнит-теста без сети) · scripts/ (smoke, stdio_check, метрики) · CHANGELOG.md.

📍 Статус

0.6.1. Выпускная история: v0.2 «Качество выдачи» (ретраи, здоровье движков), v0.3 «Паритет с Tavily» (read_urls, JSON-режим), v0.4 «Эксплуатация» (robots-этика, метрики, bathys-doctor), v0.5 «Identity & Harness» (репозиционирование, промпты, субагент), v0.6 «Native Install» (bathys install) — итоги в CHANGELOG.md.

Репозиторий: github.com/Korrnals/bathys. До 1.0 остаются публикация пакета bathys на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.

⚖️ Лицензия

MIT — см. поле license в pyproject.toml.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bathys-0.6.1.tar.gz (151.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bathys-0.6.1-py3-none-any.whl (51.0 kB view details)

Uploaded Python 3

File details

Details for the file bathys-0.6.1.tar.gz.

File metadata

  • Download URL: bathys-0.6.1.tar.gz
  • Upload date:
  • Size: 151.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for bathys-0.6.1.tar.gz
Algorithm Hash digest
SHA256 aa015d471e6f62b9468f1d2f214063ae4d7c77b841cab452d1e4c7bd7eb47a6a
MD5 7abdcac23de47f5edf10ca85914e6708
BLAKE2b-256 aa6b14bf9110862ece2b1c4881e541d27d83c85572bc241045967f553acfffcd

See more details on using hashes here.

File details

Details for the file bathys-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: bathys-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 51.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for bathys-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a6cede830e7c655055073d9e69fd89ac04d26c38ee8f9761851dea80e8b21d58
MD5 56b80451d5c899f7b8c0fda053fd4fd9
BLAKE2b-256 8675eedeee377a6e55d3740d7ddd45c849f71c37873218b1873b5fcdbb4bf143

See more details on using hashes here.

Release history Release notifications | RSS feed

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.2

2 files

This release

0.6.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page