bathys 0.6.1__tar.gz → 0.6.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bathys-0.6.1 → bathys-0.6.2}/.remember/logs/memory-2026-09-08.log +29 -0
- bathys-0.6.2/.remember/tmp/no-transcript-notice +1 -0
- {bathys-0.6.1 → bathys-0.6.2}/CHANGELOG.md +14 -0
- bathys-0.6.1/README.md → bathys-0.6.2/PKG-INFO +50 -10
- bathys-0.6.1/PKG-INFO → bathys-0.6.2/README.md +24 -22
- bathys-0.6.2/integrations/README.md +33 -0
- bathys-0.6.2/integrations/hermes/README.md +37 -0
- bathys-0.6.2/integrations/hermes/install.py +149 -0
- bathys-0.6.2/integrations/pi/README.md +42 -0
- bathys-0.6.2/integrations/pi/assets/bathys-rules.md +35 -0
- bathys-0.6.2/integrations/zcode/README.md +32 -0
- bathys-0.6.2/npm/bathys-mcp/.remember/.gitignore +1 -0
- bathys-0.6.2/npm/bathys-mcp/.remember/logs/hook-errors.log +0 -0
- bathys-0.6.2/npm/bathys-mcp/.remember/logs/memory-2026-09-08.log +11 -0
- bathys-0.6.2/npm/bathys-mcp/.remember/tmp/no-transcript-notice +1 -0
- bathys-0.6.2/npm/bathys-mcp/.remember/tmp/post-tool-ran +0 -0
- bathys-0.6.2/npm/bathys-mcp/README.md +42 -0
- bathys-0.6.2/npm/bathys-mcp/bin/cli.js +72 -0
- bathys-0.6.2/npm/bathys-mcp/bin/postinstall.js +45 -0
- bathys-0.6.2/npm/bathys-mcp/package.json +35 -0
- bathys-0.6.2/pyproject.toml +48 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/__init__.py +1 -1
- bathys-0.6.1/.remember/tmp/no-transcript-notice +0 -1
- bathys-0.6.1/pyproject.toml +0 -29
- {bathys-0.6.1 → bathys-0.6.2}/.github/workflows/ci.yml +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.gitignore +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.remember/.gitignore +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.remember/logs/hook-errors.log +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.remember/logs/memory-2026-09-06.log +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.remember/logs/memory-2026-09-07.log +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.remember/tmp/capture-gap-skipped +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.remember/tmp/case-divergence +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.remember/tmp/post-tool-ran +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/.remember/tmp/session-slug +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/Dockerfile +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/LICENSE +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/agents/HARNESS-DROPIN.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/agents/bathys-researcher.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/agents/skills/bathys-deep-dive/SKILL.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/agents/skills/bathys-source-audit/SKILL.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0001-python-crawl4ai.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0002-pin-mcp-sdk-v1.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0003-self-managed-searxng.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0004-bm25-distillation.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0005-cache-raw-before-distill.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0006-three-tool-string-surface.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/architecture/data-flow.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/architecture/overview.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/architecture/pipeline.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/assets/banner.svg +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/contracts/config.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/contracts/mcp-tools.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/contracts/module-contracts.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/contracts/output-format.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/getting-started/cases.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/getting-started/configure.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/getting-started/install.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/getting-started/integrate.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/index.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/claude-code.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/cursor.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/generic-mcp.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/overview.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/zcode.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/meta/glossary.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/meta/style-guide.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/operations/metrics.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/operations/runbook.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/product/charter.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/product/competitive.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/product/features.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/product/mind-initiative.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/product/ocr-initiative.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/docs/product/roadmap.md +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/scripts/acceptance_v02.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/scripts/batch_check.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/scripts/metrics_report.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/scripts/smoke.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/scripts/stdio_check.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/batch.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/cache.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/compose.yaml +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/config.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/core.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/crawler.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/distill.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/doctor.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/installer.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/searx.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/searxng-settings.yml +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/server.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/src/bathys/services.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/tests/test_batch.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/tests/test_cache.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/tests/test_config.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/tests/test_core.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/tests/test_distill.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/tests/test_installer.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/tests/test_searx.py +0 -0
- {bathys-0.6.1 → bathys-0.6.2}/tests/test_v04.py +0 -0
|
@@ -134,3 +134,32 @@
|
|
|
134
134
|
11:14:09 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
135
135
|
11:14:20 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
136
136
|
11:14:21 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
137
|
+
12:39:12 [hook] session-start: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
138
|
+
12:39:12 [hook] session-start: capture-gap check skipped — no session_id on stdin
|
|
139
|
+
12:42:38 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
140
|
+
12:42:38 [hook] WARNING: no session dir for this project: /var/home/abyss/.distrobox/ubuntu/home/.claude/projects/-var-home-abyss-LABs-MCP-deepreserch (slug of /var/home/abyss/LABs/MCP/deepreserch). Memory cannot save until it matches a directory under /var/home/abyss/.distrobox/ubuntu/home/.claude/projects/
|
|
141
|
+
12:42:44 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
142
|
+
12:42:49 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
143
|
+
12:42:49 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
144
|
+
12:42:56 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
145
|
+
12:43:05 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
146
|
+
12:43:06 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
147
|
+
12:43:16 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
148
|
+
12:43:16 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
149
|
+
12:43:16 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
150
|
+
12:43:19 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
151
|
+
12:43:23 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
152
|
+
12:43:41 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
153
|
+
12:43:45 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
154
|
+
12:43:55 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
155
|
+
12:43:56 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
156
|
+
12:43:56 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
157
|
+
12:43:56 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
158
|
+
12:44:29 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
159
|
+
12:45:15 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
160
|
+
12:45:19 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
161
|
+
12:45:29 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
162
|
+
12:45:35 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
163
|
+
12:45:40 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
164
|
+
12:45:43 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
165
|
+
12:45:47 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1788860558
|
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Формат: Keep a Changelog; версии — semver. Дата — дата выпуска версии.
|
|
4
4
|
|
|
5
|
+
## [0.6.2] — 2026-09-08
|
|
6
|
+
|
|
7
|
+
Публикационная волна: PyPI + NPM + кастомные интеграции.
|
|
8
|
+
|
|
9
|
+
### Добавлено
|
|
10
|
+
|
|
11
|
+
- **Каталог `integrations/`** — кастомные интеграции с конвенцией (README-установщик-assets): `hermes/` (установщик `install.py`: создаёт `~/.hermes/config.yaml` с `mcp_servers.bathys`, ставит субагента; идемпотентен, бэкап; ловит и чинит артефакт старой установки), `pi/` (дроп-ин `assets/bathys-rules.md` для `AGENTS.md` — у Pi нет MCP-конфига), `zcode/` (комплект: конфиг + субагент + скиллы + дроп-ин).
|
|
12
|
+
- **NPM-обёртка `bathys-mcp`** (`npm/bathys-mcp/`): тонкий установщик для Node-first пользователей — postinstall ставит Python-пакет (`pip install bathys`), CLI делегирует `bathys install|doctor|--help` и запускает stdio-сервер; проверена на node v20 (install --dry-run, print-config, doctor — зелёные). Публикуется на NPM как `bathys-mcp`.
|
|
13
|
+
- **Живые интеграции на машине мейнтейнера**: Hermes — `config.yaml` + субагент установлены идемпотентно.
|
|
14
|
+
|
|
15
|
+
### Изменено
|
|
16
|
+
|
|
17
|
+
- **Метаданные пакета** (PyPI-витрина): `description` переведён на канон продукта («Unified local deep-research search service…», вместо обёрточной формулировки про SearXNG/Crawl4AI); добавлены `keywords` (mcp, deep-research, local-first…), `classifiers`, секция `[project.urls]` (Homepage/Repository/Changelog/Documentation).
|
|
18
|
+
|
|
5
19
|
## [0.6.1] — 2026-09-08
|
|
6
20
|
|
|
7
21
|
Расширение автодетекта `bathys install` на базовый набор харнессов (форматы подтверждены первоисточниками каждого клиента).
|
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: bathys
|
|
3
|
+
Version: 0.6.2
|
|
4
|
+
Summary: Unified local deep-research search service for AI agents — one pipeline (search → extraction → query distillation → cache), zero cloud quotas. MCP stdio server with native harness integration (bathys install).
|
|
5
|
+
Project-URL: Homepage, https://github.com/Korrnals/bathys
|
|
6
|
+
Project-URL: Repository, https://github.com/Korrnals/bathys
|
|
7
|
+
Project-URL: Changelog, https://github.com/Korrnals/bathys/blob/main/CHANGELOG.md
|
|
8
|
+
Project-URL: Documentation, https://github.com/Korrnals/bathys/tree/main/docs
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: ai-agents,crawl4ai,deep-research,distillation,llm,local-first,mcp,search,searxng,web-search
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Requires-Dist: crawl4ai>=0.6.0
|
|
23
|
+
Requires-Dist: httpx>=0.27
|
|
24
|
+
Requires-Dist: mcp<2,>=1.2.0
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
|
|
1
27
|
<p align="center"><img src="docs/assets/banner.svg" alt="Bathys" width="720"></p>
|
|
2
28
|
|
|
3
29
|
# Bathys
|
|
@@ -7,21 +33,35 @@
|
|
|
7
33
|
Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.
|
|
8
34
|
|
|
9
35
|

|
|
10
|
-

|
|
11
37
|

|
|
12
38
|

|
|
13
39
|
|
|
14
40
|
## ⚡ Quick start
|
|
15
41
|
|
|
16
|
-
|
|
42
|
+
**Из PyPI** (основной путь — Python ≥ 3.10):
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install bathys # сервер + команды bathys/bathys-doctor
|
|
46
|
+
python -m playwright install chromium # браузер для извлечения
|
|
47
|
+
bathys install # автоподключение к найденным харнессам
|
|
48
|
+
bathys-doctor # диагностика стека одним запуском
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Из npm** (для Node-first окружений — обёртка ставит Python-пакет сама):
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npm install -g bathys-mcp
|
|
55
|
+
bathys-mcp install
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Из исходников** (разработка):
|
|
17
59
|
|
|
18
60
|
```bash
|
|
19
61
|
git clone https://github.com/Korrnals/bathys.git && cd bathys
|
|
20
|
-
python3.12 -m venv .venv
|
|
21
|
-
.venv/bin/
|
|
22
|
-
.venv/bin/python -m
|
|
23
|
-
.venv/bin/python -m unittest discover -s tests # 72 теста без сети, ~0.1 c
|
|
24
|
-
.venv/bin/bathys-doctor # диагностика стека одним запуском
|
|
62
|
+
python3.12 -m venv .venv && .venv/bin/pip install -e .
|
|
63
|
+
.venv/bin/python -m playwright install chromium
|
|
64
|
+
.venv/bin/python -m unittest discover -s tests # юнит-тесты без сети, ~0.1 c
|
|
25
65
|
```
|
|
26
66
|
|
|
27
67
|
В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md). SearXNG поднимать руками не нужно: при первом поиске сервер сам пробует внешний инстанс, затем docker/podman, затем нативный режим ([docs/getting-started/configure.md](docs/getting-started/configure.md)).
|
|
@@ -34,7 +74,7 @@ python3.12 -m venv .venv
|
|
|
34
74
|
.venv/bin/bathys install # сначала --dry-run, чтобы увидеть план
|
|
35
75
|
```
|
|
36
76
|
|
|
37
|
-
Детектируются zcode, Claude Code, Claude Desktop, Cursor
|
|
77
|
+
Детектируются zcode, Claude Code, Claude Desktop, Cursor, VS Code-семейство (Cline / Roo Code / Kilo Code), Gemini CLI, Windsurf, Zed, opencode, goose, Hermes; форматы каждого — свои (JSON-схемы и YAML-контуры goose/hermes), запись идемпотентна. Для Pi (badlogic pi-mono), у которого нет MCP-конфига, — дроп-ин в `AGENTS.md`. Поддерживаются `--print-config` (готовые блоки для ручной вставки) и `--searxng-home <путь>`; кастомные интеграции — в каталоге [integrations/](integrations/).
|
|
38
78
|
|
|
39
79
|
**Вручную.** Bathys — stdio MCP-сервер, конфиг везде один и тот же блок `mcpServers`; от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к вашему клону (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна.
|
|
40
80
|
|
|
@@ -122,11 +162,11 @@ docs/
|
|
|
122
162
|
└── meta/ # стайлгайд · глоссарий
|
|
123
163
|
```
|
|
124
164
|
|
|
125
|
-
Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, дроп-ин для харнессов) · [tests/](tests/) (
|
|
165
|
+
Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, скиллы, дроп-ин для харнессов) · [integrations/](integrations/) (кастомные интеграции: hermes, pi, zcode) · [tests/](tests/) (юнит-тесты без сети) · [scripts/](scripts/) (smoke, stdio_check, метрики) · [npm/bathys-mcp/](npm/bathys-mcp/) (NPM-обёртка) · [CHANGELOG.md](CHANGELOG.md).
|
|
126
166
|
|
|
127
167
|
## 📍 Статус
|
|
128
168
|
|
|
129
|
-
**0.6.
|
|
169
|
+
**0.6.2.** Выпускная история: 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](CHANGELOG.md).
|
|
130
170
|
|
|
131
171
|
Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
|
|
132
172
|
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.5
|
|
2
|
-
Name: bathys
|
|
3
|
-
Version: 0.6.1
|
|
4
|
-
Summary: Deep-research MCP server: SearXNG metasearch + Crawl4AI extraction, distilled to LLM-lean output
|
|
5
|
-
License: MIT
|
|
6
|
-
License-File: LICENSE
|
|
7
|
-
Requires-Python: >=3.10
|
|
8
|
-
Requires-Dist: crawl4ai>=0.6.0
|
|
9
|
-
Requires-Dist: httpx>=0.27
|
|
10
|
-
Requires-Dist: mcp<2,>=1.2.0
|
|
11
|
-
Description-Content-Type: text/markdown
|
|
12
|
-
|
|
13
1
|
<p align="center"><img src="docs/assets/banner.svg" alt="Bathys" width="720"></p>
|
|
14
2
|
|
|
15
3
|
# Bathys
|
|
@@ -19,21 +7,35 @@ Description-Content-Type: text/markdown
|
|
|
19
7
|
Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.
|
|
20
8
|
|
|
21
9
|

|
|
22
|
-

|
|
23
11
|

|
|
24
12
|

|
|
25
13
|
|
|
26
14
|
## ⚡ Quick start
|
|
27
15
|
|
|
28
|
-
|
|
16
|
+
**Из PyPI** (основной путь — Python ≥ 3.10):
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pip install bathys # сервер + команды bathys/bathys-doctor
|
|
20
|
+
python -m playwright install chromium # браузер для извлечения
|
|
21
|
+
bathys install # автоподключение к найденным харнессам
|
|
22
|
+
bathys-doctor # диагностика стека одним запуском
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Из npm** (для Node-first окружений — обёртка ставит Python-пакет сама):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g bathys-mcp
|
|
29
|
+
bathys-mcp install
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Из исходников** (разработка):
|
|
29
33
|
|
|
30
34
|
```bash
|
|
31
35
|
git clone https://github.com/Korrnals/bathys.git && cd bathys
|
|
32
|
-
python3.12 -m venv .venv
|
|
33
|
-
.venv/bin/
|
|
34
|
-
.venv/bin/python -m
|
|
35
|
-
.venv/bin/python -m unittest discover -s tests # 72 теста без сети, ~0.1 c
|
|
36
|
-
.venv/bin/bathys-doctor # диагностика стека одним запуском
|
|
36
|
+
python3.12 -m venv .venv && .venv/bin/pip install -e .
|
|
37
|
+
.venv/bin/python -m playwright install chromium
|
|
38
|
+
.venv/bin/python -m unittest discover -s tests # юнит-тесты без сети, ~0.1 c
|
|
37
39
|
```
|
|
38
40
|
|
|
39
41
|
В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md). SearXNG поднимать руками не нужно: при первом поиске сервер сам пробует внешний инстанс, затем docker/podman, затем нативный режим ([docs/getting-started/configure.md](docs/getting-started/configure.md)).
|
|
@@ -46,7 +48,7 @@ python3.12 -m venv .venv
|
|
|
46
48
|
.venv/bin/bathys install # сначала --dry-run, чтобы увидеть план
|
|
47
49
|
```
|
|
48
50
|
|
|
49
|
-
Детектируются zcode, Claude Code, Claude Desktop, Cursor
|
|
51
|
+
Детектируются zcode, Claude Code, Claude Desktop, Cursor, VS Code-семейство (Cline / Roo Code / Kilo Code), Gemini CLI, Windsurf, Zed, opencode, goose, Hermes; форматы каждого — свои (JSON-схемы и YAML-контуры goose/hermes), запись идемпотентна. Для Pi (badlogic pi-mono), у которого нет MCP-конфига, — дроп-ин в `AGENTS.md`. Поддерживаются `--print-config` (готовые блоки для ручной вставки) и `--searxng-home <путь>`; кастомные интеграции — в каталоге [integrations/](integrations/).
|
|
50
52
|
|
|
51
53
|
**Вручную.** Bathys — stdio MCP-сервер, конфиг везде один и тот же блок `mcpServers`; от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к вашему клону (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна.
|
|
52
54
|
|
|
@@ -134,11 +136,11 @@ docs/
|
|
|
134
136
|
└── meta/ # стайлгайд · глоссарий
|
|
135
137
|
```
|
|
136
138
|
|
|
137
|
-
Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, дроп-ин для харнессов) · [tests/](tests/) (
|
|
139
|
+
Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, скиллы, дроп-ин для харнессов) · [integrations/](integrations/) (кастомные интеграции: hermes, pi, zcode) · [tests/](tests/) (юнит-тесты без сети) · [scripts/](scripts/) (smoke, stdio_check, метрики) · [npm/bathys-mcp/](npm/bathys-mcp/) (NPM-обёртка) · [CHANGELOG.md](CHANGELOG.md).
|
|
138
140
|
|
|
139
141
|
## 📍 Статус
|
|
140
142
|
|
|
141
|
-
**0.6.
|
|
143
|
+
**0.6.2.** Выпускная история: 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](CHANGELOG.md).
|
|
142
144
|
|
|
143
145
|
Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
|
|
144
146
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# integrations/ — кастомные интеграции Bathys
|
|
2
|
+
|
|
3
|
+
Здесь живут интеграции для харнессов, которым мало стандартной записи MCP-сервера:
|
|
4
|
+
скрипты, оболочки, готовые конфиги и дроп-ины. Стандартный автопат (`bathys
|
|
5
|
+
install`) покрывает 14 клиентов из их собственных конфигов; этот каталог —
|
|
6
|
+
для кастомной механики.
|
|
7
|
+
|
|
8
|
+
## Конвенция
|
|
9
|
+
|
|
10
|
+
Каждая интеграция — подкаталог `integrations/<harness>/`:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
integrations/<harness>/
|
|
14
|
+
├── README.md # что это, когда нужно, установка по шагам
|
|
15
|
+
├── install.* # установщик (если интеграция больше ручной вставки)
|
|
16
|
+
└── assets/ # конфиги, скрипты, промпты, расширения
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Правила:
|
|
20
|
+
|
|
21
|
+
- интеграция не тянет зависимостей сверх самого Bathys (только stdlib);
|
|
22
|
+
- установщик идемпотентен и делает бэкап перед записью — как `bathys install`;
|
|
23
|
+
- каждый README фиксирует формат конфига по первоисточнику (ссылка на доки
|
|
24
|
+
харнесса) и дату проверки;
|
|
25
|
+
- сюда попадают только кастомные пути; обычные конфиги правит `bathys install`.
|
|
26
|
+
|
|
27
|
+
## Содержимое
|
|
28
|
+
|
|
29
|
+
| Интеграция | Что даёт |
|
|
30
|
+
|---|---|
|
|
31
|
+
| [`hermes/`](hermes/) | установщик для Hermes Agent: `mcp_servers` в `~/.hermes/config.yaml` + субагент в `~/.hermes/agents/`; обходит случай, когда у Hermes нет конфига вообще (создаёт по канону его доков) |
|
|
32
|
+
| [`pi/`](pi/) | дроп-ин для Pi (badlogic pi-mono): у Pi нет MCP-конфига — интеграция это правила для `AGENTS.md` проекта + скилл-каталог Bathys |
|
|
33
|
+
| [`zcode/`](zcode/) | комплект для zcode: MCP-конфиг, субагент `bathys-researcher`, скиллы и ссылка на дроп-ин — всё, что ставится копированием |
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Bathys × Hermes Agent
|
|
2
|
+
|
|
3
|
+
[Hermes Agent](https://github.com/NousResearch/hermes-agent) читает MCP из
|
|
4
|
+
`~/.hermes/config.yaml` под ключом `mcp_servers` (snake_case; формат
|
|
5
|
+
подтверждён [доками Hermes](https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp),
|
|
6
|
+
проверено 2026-09-08). Стандартный `bathys install` уже пишет этот файл, если
|
|
7
|
+
он существует. Эта интеграция добавляет остальное:
|
|
8
|
+
|
|
9
|
+
- **создаёт** `~/.hermes/config.yaml`, если его ещё нет (Hermes после первого
|
|
10
|
+
запуска имеет), — по канону его доков;
|
|
11
|
+
- ставит **субагента** `bathys-researcher` в `~/.hermes/agents/`.
|
|
12
|
+
|
|
13
|
+
## Установка
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
python integrations/hermes/install.py # что изменится — вначале план
|
|
17
|
+
python integrations/hermes/install.py --apply # записать (бэкап создастся сам)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Скрипту нужен только Python ≥3.10 (stdlib); он не импортирует bathys и
|
|
21
|
+
работает с любой установки (`pip install bathys` или из клона). Идемпотентен:
|
|
22
|
+
повторный запуск ничего не меняет.
|
|
23
|
+
|
|
24
|
+
## Что именно пишется
|
|
25
|
+
|
|
26
|
+
`~/.hermes/config.yaml`:
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
mcp_servers:
|
|
30
|
+
bathys:
|
|
31
|
+
command: "<путь к bathys>"
|
|
32
|
+
args: []
|
|
33
|
+
env: {}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`~/.hermes/agents/bathys-researcher.md` — профиль субагента глубокого ресёрча
|
|
37
|
+
(копия `agents/bathys-researcher.md` из корня репозитория).
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Bathys integration installer for Hermes Agent.
|
|
3
|
+
|
|
4
|
+
Creates ~/.hermes/config.yaml (mcp_servers.bathys) when absent and installs
|
|
5
|
+
the researcher subagent into ~/.hermes/agents/. Idempotent; backs up any
|
|
6
|
+
existing config before writing. Stdlib-only, works from any Bathys install.
|
|
7
|
+
|
|
8
|
+
Usage:
|
|
9
|
+
python integrations/hermes/install.py # plan only
|
|
10
|
+
python integrations/hermes/install.py --apply # write changes
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import argparse
|
|
16
|
+
import datetime
|
|
17
|
+
import re
|
|
18
|
+
import shutil
|
|
19
|
+
import sys
|
|
20
|
+
from pathlib import Path
|
|
21
|
+
|
|
22
|
+
HOME = Path.home()
|
|
23
|
+
CONFIG = HOME / ".hermes" / "config.yaml"
|
|
24
|
+
AGENTS = HOME / ".hermes" / "agents"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _bathys_command() -> str:
|
|
28
|
+
launcher = Path(sys.executable).parent / "bathys"
|
|
29
|
+
if launcher.is_file():
|
|
30
|
+
return str(launcher)
|
|
31
|
+
here = Path(__file__).resolve()
|
|
32
|
+
for base in (here.parents[2], here.parents[3]):
|
|
33
|
+
cand = base / ".venv" / "bin" / "bathys"
|
|
34
|
+
if cand.is_file():
|
|
35
|
+
return str(cand)
|
|
36
|
+
return "bathys"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
ENTRY = """mcp_servers:
|
|
40
|
+
bathys:
|
|
41
|
+
command: "{cmd}"
|
|
42
|
+
args: []
|
|
43
|
+
env: {{}}
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _entry_block(cmd: str) -> str:
|
|
48
|
+
return ENTRY.format(cmd=cmd)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def _has_bathys(text: str) -> bool:
|
|
52
|
+
return re.search(r"^ bathys:", text, re.M) is not None
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def _set_bathys(text: str, cmd: str) -> str:
|
|
56
|
+
block = _entry_block(cmd).rstrip("\n").splitlines()
|
|
57
|
+
lines = text.splitlines()
|
|
58
|
+
# replace existing entry if present
|
|
59
|
+
for i, ln in enumerate(lines):
|
|
60
|
+
if re.match(r"^ bathys:\s*$", ln):
|
|
61
|
+
j = i + 1
|
|
62
|
+
while j < len(lines) and (not lines[j].strip() or lines[j].startswith(" ")):
|
|
63
|
+
j += 1
|
|
64
|
+
lines[i:j] = block[1:]
|
|
65
|
+
return "\n".join(lines) + "\n"
|
|
66
|
+
# root mcp_servers present? insert at its end
|
|
67
|
+
for i, ln in enumerate(lines):
|
|
68
|
+
if re.match(r"^mcp_servers:\s*$", ln):
|
|
69
|
+
j = i + 1
|
|
70
|
+
while j < len(lines) and (not lines[j].strip() or lines[j].startswith(" ")):
|
|
71
|
+
j += 1
|
|
72
|
+
lines[j:j] = block[1:]
|
|
73
|
+
return "\n".join(lines) + "\n"
|
|
74
|
+
# append a fresh root
|
|
75
|
+
sep = [""] if lines else []
|
|
76
|
+
return "\n".join(lines + sep + block) + "\n"
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _agent_src() -> Path | None:
|
|
80
|
+
here = Path(__file__).resolve()
|
|
81
|
+
for base in (here.parents[2], here.parents[3]):
|
|
82
|
+
cand = base / "agents" / "bathys-researcher.md"
|
|
83
|
+
if cand.is_file():
|
|
84
|
+
return cand
|
|
85
|
+
# site-packages layout (pip install): bathys/agents/ inside the package
|
|
86
|
+
for parent in here.parents:
|
|
87
|
+
cand = parent / "bathys" / "agents" / "bathys-researcher.md"
|
|
88
|
+
if cand.is_file():
|
|
89
|
+
return cand
|
|
90
|
+
return None
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def main() -> int:
|
|
94
|
+
ap = argparse.ArgumentParser(description=__doc__)
|
|
95
|
+
ap.add_argument("--apply", action="store_true", help="write changes (default: plan)")
|
|
96
|
+
args = ap.parse_args()
|
|
97
|
+
|
|
98
|
+
cmd = _bathys_command()
|
|
99
|
+
changes: list[str] = []
|
|
100
|
+
|
|
101
|
+
if CONFIG.is_file():
|
|
102
|
+
text = CONFIG.read_text(encoding="utf-8")
|
|
103
|
+
if _has_bathys(text) and f'command: "{cmd}"' in text:
|
|
104
|
+
print(f"[=] {CONFIG}: bathys уже актуален")
|
|
105
|
+
else:
|
|
106
|
+
changes.append(f"обновить {CONFIG} (бэкап создастся)")
|
|
107
|
+
else:
|
|
108
|
+
changes.append(f"создать {CONFIG} (mcp_servers.bathys)")
|
|
109
|
+
|
|
110
|
+
src = _agent_src()
|
|
111
|
+
dst = AGENTS / "bathys-researcher.md" if src else None
|
|
112
|
+
if src and dst:
|
|
113
|
+
if dst.is_file() and dst.read_text(encoding="utf-8") == src.read_text(encoding="utf-8"):
|
|
114
|
+
print("[=] субагент уже актуален")
|
|
115
|
+
else:
|
|
116
|
+
changes.append(f"субагент {src.name} -> {dst}")
|
|
117
|
+
|
|
118
|
+
if not changes:
|
|
119
|
+
print("Готово: изменений нет.")
|
|
120
|
+
return 0
|
|
121
|
+
print("План изменений:")
|
|
122
|
+
for c in changes:
|
|
123
|
+
print(" -", c)
|
|
124
|
+
if not args.apply:
|
|
125
|
+
print("Запустите с --apply, чтобы записать.")
|
|
126
|
+
return 0
|
|
127
|
+
|
|
128
|
+
if not args.apply:
|
|
129
|
+
return 0
|
|
130
|
+
if CONFIG.is_file():
|
|
131
|
+
stamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
|
|
132
|
+
shutil.copy2(CONFIG, CONFIG.with_name(f"{CONFIG.name}.bathys-backup-{stamp}"))
|
|
133
|
+
CONFIG.write_text(_set_bathys(CONFIG.read_text(encoding="utf-8"), cmd), encoding="utf-8")
|
|
134
|
+
else:
|
|
135
|
+
CONFIG.parent.mkdir(parents=True, exist_ok=True)
|
|
136
|
+
CONFIG.write_text(_entry_block(cmd), encoding="utf-8")
|
|
137
|
+
print(f"[OK] конфиг: {CONFIG}")
|
|
138
|
+
if src and dst:
|
|
139
|
+
if dst.is_dir():
|
|
140
|
+
shutil.rmtree(dst) # recover from the pre-0.6.2 dir-instead-of-file bug
|
|
141
|
+
dst.parent.mkdir(parents=True, exist_ok=True)
|
|
142
|
+
shutil.copy2(src, dst)
|
|
143
|
+
print(f"[OK] субагент: {dst}")
|
|
144
|
+
print("Перезапустите Hermes, чтобы он подхватил mcp_servers.")
|
|
145
|
+
return 0
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
if __name__ == "__main__":
|
|
149
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Bathys × Pi (badlogic pi-mono)
|
|
2
|
+
|
|
3
|
+
У Pi **нет MCP-конфигурационного файла** — интеграции в нём делаются
|
|
4
|
+
TypeScript-расширениями (проверено по исходникам [pi-mono](https://github.com/badlogic/pi-mono),
|
|
5
|
+
2026-09-08: ни `mcpServers`, ни modelcontextprotocol-зависимостей в кодовой
|
|
6
|
+
базе). Поэтому интеграция Bathys в Pi — это **агентные тексты**, а не конфиг:
|
|
7
|
+
|
|
8
|
+
1. **Правила для `AGENTS.md` проекта** — Pi читает его как файл инструкций
|
|
9
|
+
агента; блок ниже приучает агента Pi работать в интернете только через
|
|
10
|
+
Bathys.
|
|
11
|
+
2. **Скилл-каталог** — копия профилей Bathys, которые Pi-агент подхватывает
|
|
12
|
+
как документы-инструкции.
|
|
13
|
+
|
|
14
|
+
## Установка (в каталог проекта, где работает Pi)
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
cp integrations/pi/assets/bathys-rules.md ./AGENTS.md.appendix # или вставьте блок в AGENTS.md
|
|
18
|
+
mkdir -p .pi/skills && cp -r agents/skills/* .pi/skills/
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Правильнее — открыть `AGENTS.md` проекта и добавить блок из
|
|
22
|
+
[`assets/bathys-rules.md`](assets/bathys-rules.md) целиком (он самодостаточен).
|
|
23
|
+
|
|
24
|
+
## Блок для AGENTS.md (суть)
|
|
25
|
+
|
|
26
|
+
- Вся работа в интернете — через инструменты MCP-сервера `bathys`
|
|
27
|
+
(`deep_research` / `web_search` / `read_url` / `read_urls`), если он
|
|
28
|
+
подключён в вашей среде.
|
|
29
|
+
- Выбор инструмента по задаче: ресёрч-вопрос → `deep_research`; ссылки →
|
|
30
|
+
`web_search`; известный URL → `read_url`; 2–10 URL → `read_urls`.
|
|
31
|
+
- Верификация фактов — два независимых источника; каждый нетривиальный факт —
|
|
32
|
+
с URL.
|
|
33
|
+
- Сигналы ответов (`cache HIT`/`MISS`, `robots-refused`, `(not fetched — …)`)
|
|
34
|
+
трактуются по семантике Bathys.
|
|
35
|
+
|
|
36
|
+
## Почему не установщик
|
|
37
|
+
|
|
38
|
+
MCP-сервер Bathys подключается к Pi **средой**, где Pi запущен (например,
|
|
39
|
+
через обёртку, которая стартует MCP-сервер), а не конфигом самого Pi. Если
|
|
40
|
+
ваша среда запускает Pi внутри харнесса с MCP (zcode, opencode и т.п.) —
|
|
41
|
+
используйте `bathys install` для этого харнесса; для чистого Pi достаточно
|
|
42
|
+
правил `AGENTS.md` выше.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!-- Bathys: вставьте этот блок в AGENTS.md проекта, где работает Pi.
|
|
2
|
+
Блок самодостаточен: после него агент Pi не работает в интернете мимо
|
|
3
|
+
инструментов Bathys (если MCP-сервер подключён в среде запуска). -->
|
|
4
|
+
|
|
5
|
+
## Веб-доступ: всегда через Bathys (локальный поисковый сервис, MCP)
|
|
6
|
+
|
|
7
|
+
Вся работа в интернете — поиск, чтение страниц, исследования — идёт через
|
|
8
|
+
инструменты MCP-сервера Bathys, когда он подключён в среде запуска. Сторонние
|
|
9
|
+
web-инструменты не использовать: у Bathys свои дистилляция под запрос,
|
|
10
|
+
токен-бюджеты, кэш и метрики.
|
|
11
|
+
|
|
12
|
+
Выбор инструмента:
|
|
13
|
+
|
|
14
|
+
- Исследовательский вопрос («что/как/почему/сравни») → `deep_research(query)` —
|
|
15
|
+
ищет, читает топ-источники и возвращает дистиллят под запрос одним вызовом.
|
|
16
|
+
- Нужен только пул ссылок → `web_search(query)`.
|
|
17
|
+
- Один известный URL → `read_url(url, query=…)`; 2–10 URL →
|
|
18
|
+
`read_urls(urls, query=…)` (общий бюджет, битая страница стоит строку).
|
|
19
|
+
- Свежесть: `time_range` = day|week|month|year; протухший кэш (`cache HIT` с
|
|
20
|
+
устаревшими данными) — один `refresh=true` на главный источник.
|
|
21
|
+
|
|
22
|
+
Правила работы:
|
|
23
|
+
|
|
24
|
+
1. Формулируй `query` как вопрос: дистиллятор отбирает пассажи по смыслу.
|
|
25
|
+
Максимум 3 итерации без сдвига — смени угол (термины из найденного, язык).
|
|
26
|
+
2. Ключевой факт — два независимых источника (разные домены); конфликт
|
|
27
|
+
источников фиксируй явно с обеими URL.
|
|
28
|
+
3. Каждый нетривиальный факт в ответе сопровождай URL из секций Bathys.
|
|
29
|
+
4. Сигналы: `(not fetched — …)` — источник не прочитан, используй остальные;
|
|
30
|
+
`robots-refused` — сайт запретил чтение, уважай; `No results … tried N
|
|
31
|
+
engine sets` — смени формулировку. Футер `[bathys: …]` — статистика,
|
|
32
|
+
не для цитирования.
|
|
33
|
+
|
|
34
|
+
Готовые стратегии (MCP-промпты Bathys): `bathys_deep_research`,
|
|
35
|
+
`bathys_source_audit`, `bathys_fresh_scan` — бери как стартовый шаблон плана.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Bathys × zcode — комплект установки
|
|
2
|
+
|
|
3
|
+
zcode покрывается стандартным `bathys install` (автодетект
|
|
4
|
+
`~/.zcode/cli/config.json` → `mcp.servers`). Этот комплект — для ручной
|
|
5
|
+
установки всех.agent-активов разом и для случаев, когда ставят из клона.
|
|
6
|
+
|
|
7
|
+
## Установка
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
bathys install # конфиг MCP (авто; бэкап создаётся сам)
|
|
11
|
+
cp agents/bathys-researcher.md ~/.zcode/agents/ # субагент
|
|
12
|
+
cp -r agents/skills/* ~/.zcode/skills/ 2>/dev/null || true # скиллы (если каталог скиллов используется)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Что ставится
|
|
16
|
+
|
|
17
|
+
| Артефакт | Куда | Зачем |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| MCP-сервер `bathys` | `~/.zcode/cli/config.json` → `mcp.servers` | 4 инструмента + 3 промпта + annotations (видны харнессу на рукопожатии) |
|
|
20
|
+
| Субагент `bathys-researcher` | `~/.zcode/agents/` | профиль глубокого ресёрча; делегируй ему исследования целиком |
|
|
21
|
+
| Скиллы `bathys-deep-dive`, `bathys-source-audit` | каталог скиллов харнесса | процедуры глубокого исследования и аудита источников |
|
|
22
|
+
| Дроп-ин (опционально) | `~/.zcode/AGENTS.md` или проектный `AGENTS.md` | если instructions MCP не показываются — блок из `agents/HARNESS-DROPIN.md` |
|
|
23
|
+
|
|
24
|
+
## Проверка
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
bathys-doctor # конфиг + бэкенд + кэш + браузерный стек
|
|
28
|
+
bathys install --dry-run # конфиг виден и актуален
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
После установки перезапустите zcode; сервер поднимется при первом вызове
|
|
32
|
+
вместе с бэкендом (external → docker → native).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
12:44:02 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
2
|
+
12:44:02 [hook] WARNING: no session dir for this project: /var/home/abyss/.distrobox/ubuntu/home/.claude/projects/-var-home-abyss-LABs-MCP-deepreserch-npm-bathys-mcp (slug of /var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp). Memory cannot save until it matches a directory under /var/home/abyss/.distrobox/ubuntu/home/.claude/projects/
|
|
3
|
+
12:44:05 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
4
|
+
12:44:09 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
5
|
+
12:44:09 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
6
|
+
12:44:12 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
7
|
+
12:44:15 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
8
|
+
12:44:21 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
9
|
+
12:44:57 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
10
|
+
12:45:02 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
11
|
+
12:45:09 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp/.remember
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1788860642
|
|
File without changes
|