bathys 0.6.2__tar.gz → 0.7.1__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.2 → bathys-0.7.1}/.remember/logs/memory-2026-09-08.log +50 -0
- bathys-0.7.1/.remember/tmp/no-transcript-notice +1 -0
- {bathys-0.6.2 → bathys-0.7.1}/CHANGELOG.md +22 -0
- {bathys-0.6.2 → bathys-0.7.1}/PKG-INFO +44 -22
- {bathys-0.6.2 → bathys-0.7.1}/README.md +43 -21
- {bathys-0.6.2 → bathys-0.7.1}/docs/contracts/config.md +1 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/getting-started/configure.md +1 -0
- bathys-0.7.1/install.sh +105 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/.remember/logs/memory-2026-09-08.log +5 -0
- {bathys-0.6.2 → bathys-0.7.1}/pyproject.toml +1 -1
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/__init__.py +1 -1
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/config.py +2 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/core.py +1 -1
- bathys-0.7.1/src/bathys/crawler.py +205 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/installer.py +102 -17
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/server.py +12 -7
- {bathys-0.6.2 → bathys-0.7.1}/tests/test_installer.py +5 -3
- bathys-0.6.2/.remember/tmp/no-transcript-notice +0 -1
- bathys-0.6.2/src/bathys/crawler.py +0 -104
- {bathys-0.6.2 → bathys-0.7.1}/.github/workflows/ci.yml +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.gitignore +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.remember/.gitignore +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.remember/logs/hook-errors.log +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.remember/logs/memory-2026-09-06.log +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.remember/logs/memory-2026-09-07.log +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.remember/tmp/capture-gap-skipped +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.remember/tmp/case-divergence +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.remember/tmp/post-tool-ran +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/.remember/tmp/session-slug +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/Dockerfile +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/LICENSE +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/agents/HARNESS-DROPIN.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/agents/bathys-researcher.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/agents/skills/bathys-deep-dive/SKILL.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/agents/skills/bathys-source-audit/SKILL.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/adr/0001-python-crawl4ai.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/adr/0002-pin-mcp-sdk-v1.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/adr/0003-self-managed-searxng.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/adr/0004-bm25-distillation.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/adr/0005-cache-raw-before-distill.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/adr/0006-three-tool-string-surface.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/architecture/data-flow.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/architecture/overview.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/architecture/pipeline.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/assets/banner.svg +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/contracts/mcp-tools.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/contracts/module-contracts.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/contracts/output-format.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/getting-started/cases.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/getting-started/install.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/getting-started/integrate.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/index.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/integrations/claude-code.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/integrations/cursor.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/integrations/generic-mcp.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/integrations/overview.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/integrations/zcode.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/meta/glossary.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/meta/style-guide.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/operations/metrics.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/operations/runbook.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/product/charter.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/product/competitive.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/product/features.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/product/mind-initiative.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/product/ocr-initiative.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/docs/product/roadmap.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/integrations/README.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/integrations/hermes/README.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/integrations/hermes/install.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/integrations/pi/README.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/integrations/pi/assets/bathys-rules.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/integrations/zcode/README.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/.remember/.gitignore +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/.remember/logs/hook-errors.log +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/.remember/tmp/no-transcript-notice +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/.remember/tmp/post-tool-ran +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/README.md +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/bin/cli.js +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/bin/postinstall.js +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/npm/bathys-mcp/package.json +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/scripts/acceptance_v02.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/scripts/batch_check.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/scripts/metrics_report.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/scripts/smoke.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/scripts/stdio_check.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/batch.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/cache.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/compose.yaml +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/distill.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/doctor.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/searx.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/searxng-settings.yml +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/src/bathys/services.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/tests/test_batch.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/tests/test_cache.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/tests/test_config.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/tests/test_core.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/tests/test_distill.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/tests/test_searx.py +0 -0
- {bathys-0.6.2 → bathys-0.7.1}/tests/test_v04.py +0 -0
|
@@ -163,3 +163,53 @@
|
|
|
163
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
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
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
|
|
166
|
+
12:45:52 [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
|
|
167
|
+
12:46: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
|
|
168
|
+
12:47:02 [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
|
|
169
|
+
12:47:14 [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
|
|
170
|
+
12:47:17 [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
|
|
171
|
+
12:47: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
|
|
172
|
+
12:47:25 [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
|
|
173
|
+
12:47:31 [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
|
|
174
|
+
12:47:50 [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
|
|
175
|
+
13:37:33 [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
|
|
176
|
+
13:37:33 [hook] session-start: capture-gap check skipped — no session_id on stdin
|
|
177
|
+
13:54:37 [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
|
|
178
|
+
13:54:37 [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/
|
|
179
|
+
13:54: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
|
|
180
|
+
13:54:59 [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
|
|
181
|
+
13:55:07 [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
|
|
182
|
+
13:55:17 [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
|
|
183
|
+
13:55:27 [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
|
|
184
|
+
13:55:33 [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
|
|
185
|
+
13:56:11 [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
|
|
186
|
+
13:56:25 [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
|
|
187
|
+
13:56:37 [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
|
|
188
|
+
13:56:50 [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
|
|
189
|
+
13:56:58 [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
|
|
190
|
+
13:57:00 [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
|
|
191
|
+
13:57:08 [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
|
|
192
|
+
13:57: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
|
|
193
|
+
13:57:22 [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
|
|
194
|
+
13:57:36 [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
|
|
195
|
+
13:57:42 [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
|
|
196
|
+
13:57:52 [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
|
|
197
|
+
13:58:04 [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
|
|
198
|
+
13:58: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
|
|
199
|
+
13:58:27 [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
|
|
200
|
+
13:58:39 [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
|
|
201
|
+
13:58: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
|
|
202
|
+
14:16: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
|
|
203
|
+
14:16:53 [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
|
|
204
|
+
14:17:02 [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
|
|
205
|
+
14:31:07 [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
|
|
206
|
+
14:31: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
|
|
207
|
+
14:31:39 [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
|
|
208
|
+
14:32: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
|
|
209
|
+
14:32:27 [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
|
|
210
|
+
14:32: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
|
|
211
|
+
14:32: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
|
|
212
|
+
14:33:04 [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
|
|
213
|
+
14:33: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
|
|
214
|
+
14:33: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
|
|
215
|
+
14:33:32 [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
|
+
1788864877
|
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
Формат: Keep a Changelog; версии — semver. Дата — дата выпуска версии.
|
|
4
4
|
|
|
5
|
+
## [0.7.1] — 2026-09-08
|
|
6
|
+
|
|
7
|
+
### Добавлено
|
|
8
|
+
|
|
9
|
+
- **Однострочный установщик `install.sh`** — основной путь установки: `curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash`. Приватный venv в `~/.local/share/bathys/venv` (решение против хрупкости `pip --user` между контейнерами и PEP 668), бутстрап pip через `get-pip.py` для минимальных образов, PATH прописывается в `.profile`/`.bashrc`, затем `bathys setup` и финальный `bathys-doctor`. Идемпотентен (повтор = обновление), без sudo, ничего вне `$HOME`. Живые прогоны: двойной (создание + идемпотентное обновление), setup прописал zcode+hermes с бэкапами, doctor 5/6 (бэкенд поднимается при первом вызове — норма).
|
|
10
|
+
- README: однострочник — основной путь Quick start; `pip install` + `bathys setup` — равноправная альтернатива «без скрипта»; npm/исходники — под катом.
|
|
11
|
+
|
|
12
|
+
## [0.7.0] — 2026-09-08
|
|
13
|
+
|
|
14
|
+
Тема: «Ship & Setup» — двухъярусное извлечение без обязательного браузера и модульная установка.
|
|
15
|
+
|
|
16
|
+
### Добавлено
|
|
17
|
+
|
|
18
|
+
- **Двухъярусное извлечение** (`crawler.py`): по умолчанию страницы читает собственный HTTP-движок (httpx, миллисекунды, ноль браузера); headless-Chromium включается автоматически только когда страница — JS-оболочка (детект: app-root-разметка, пустое тело, экранирование контента) или HTTP-ярус не смог. Замеры: Wikipedia 0.61 c, GitHub 1.0 c по HTTP против ~4–5 c с браузером. `BATHYS_BROWSER=off|auto|always` управляет режимом; браузер больше не обязательная зависимость запуска — `bathys setup` ставит его для JS-страниц, но сервер работает и без него.
|
|
19
|
+
- **`bathys setup`** — полная установка одним вызовом: браузерный движок (пропускается по `--skip-browser`) → интеграция всех найденных харнессов → субагент → итоговые подсказки. Идемпотентен; после `pip install bathys` пользователю достаточно `bathys setup`.
|
|
20
|
+
- **Точечная установка `bathys install <HARNESS>`**: `bathys install hermes` пишет только Hermes, отсутствующий конфиг целевого харнесса создаётся с нуля (проверено: opencode-конфиг создан в его формате); `--list` печатает все таргеты с их путями и статусом; неизвестное имя — понятная ошибка.
|
|
21
|
+
|
|
22
|
+
### Изменено
|
|
23
|
+
|
|
24
|
+
- README: идентичность переписана («самостоятельный продукт, а не обёртка над чужими сервисами: реализует весь конвейер сам»); основной путь установки — `pip install bathys` + `bathys setup`, альтернативы (npm, исходники, минимальные образы) и ручное подключение убраны под `<details>`-каты.
|
|
25
|
+
- Синтаксис вызова диспетчера: `bathys` (сервер) / `bathys setup` / `bathys install [targets]` / `bathys doctor`; справка `--help` обновлена.
|
|
26
|
+
|
|
5
27
|
## [0.6.2] — 2026-09-08
|
|
6
28
|
|
|
7
29
|
Публикационная волна: PyPI + NPM + кастомные интеграции.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: bathys
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.1
|
|
4
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
5
|
Project-URL: Homepage, https://github.com/Korrnals/bathys
|
|
6
6
|
Project-URL: Repository, https://github.com/Korrnals/bathys
|
|
@@ -28,31 +28,43 @@ Description-Content-Type: text/markdown
|
|
|
28
28
|
|
|
29
29
|
# Bathys
|
|
30
30
|
|
|
31
|
-
**Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов.**
|
|
31
|
+
**Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов.** Это самостоятельный продукт, а не обёртка над чужими сервисами: Bathys реализует весь конвейер сам — метапоиск с дедупликацией и живучестью к блокировкам, двухъярусное извлечение (HTTP-движок по умолчанию, headless-браузер только для JS-страниц), пятистадийную дистилляцию под запрос с жёсткими бюджетами, TTL-кэш сырца, robots-этику, метрики и диагностику. Метапоиск и извлечение оформлены как сменные внутренние движки (SearXNG, Crawl4AI) — их можно заменить, продукт останется Bathys. Облачных квот нет; LLM внутри нет — синтез остаётся за вызывающим агентом, дистилляция детерминированная (BM25).
|
|
32
32
|
|
|
33
33
|
Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.
|
|
34
34
|
|
|
35
35
|

|
|
36
|
-

|
|
37
37
|

|
|
38
38
|

|
|
39
39
|
|
|
40
40
|
## ⚡ Quick start
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
**Одной командой** (Python ≥ 3.10; приватный venv, без sudo, идемпотентно):
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
|
|
46
|
-
python -m playwright install chromium # браузер для извлечения
|
|
47
|
-
bathys install # автоподключение к найденным харнессам
|
|
48
|
-
bathys-doctor # диагностика стека одним запуском
|
|
45
|
+
curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash
|
|
49
46
|
```
|
|
50
47
|
|
|
51
|
-
|
|
48
|
+
Скрипт ставит пакет с PyPI в `~/.local/share/bathys/venv`, прописывает PATH, запускает `bathys setup` (браузер для JS-страниц → все найденные харнессы → субагент) и финальный `bathys-doctor`. Повторный запуск — безопасное обновление.
|
|
49
|
+
|
|
50
|
+
**Без скрипта** (то же самое вручную, для тех кто предпочитает pip):
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install bathys # пакет: сервер + bathys setup/install/doctor
|
|
54
|
+
bathys setup # браузер → харнессы → субагент
|
|
55
|
+
bathys doctor # самодиагностика стека
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
SearXNG ставить руками не нужно: бэкенд поднимется сам при первом поиске (внешний инстанс → docker → нативный режим). Браузер нужен только для JS-страниц: обычные страницы Bathys читает собственным HTTP-движком, `BATHYS_BROWSER=off` отключает браузерный ярус полностью.
|
|
59
|
+
|
|
60
|
+
<details>
|
|
61
|
+
<summary><b>Альтернативные пути установки</b> (npm, исходники, минимальные образы)</summary>
|
|
62
|
+
|
|
63
|
+
**npm** (Node-first окружения — обёртка ставит Python-пакет сама):
|
|
52
64
|
|
|
53
65
|
```bash
|
|
54
66
|
npm install -g bathys-mcp
|
|
55
|
-
bathys-mcp
|
|
67
|
+
bathys-mcp setup
|
|
56
68
|
```
|
|
57
69
|
|
|
58
70
|
**Из исходников** (разработка):
|
|
@@ -60,32 +72,40 @@ bathys-mcp install
|
|
|
60
72
|
```bash
|
|
61
73
|
git clone https://github.com/Korrnals/bathys.git && cd bathys
|
|
62
74
|
python3.12 -m venv .venv && .venv/bin/pip install -e .
|
|
63
|
-
.venv/bin/
|
|
64
|
-
.venv/bin/python -m unittest discover -s tests # юнит-тесты без
|
|
75
|
+
.venv/bin/bathys setup
|
|
76
|
+
.venv/bin/python -m unittest discover -s tests # юнит-тесты без сети
|
|
65
77
|
```
|
|
66
78
|
|
|
67
|
-
В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md).
|
|
79
|
+
В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md).
|
|
80
|
+
|
|
81
|
+
</details>
|
|
68
82
|
|
|
69
83
|
## 🔌 Подключение к харнессу
|
|
70
84
|
|
|
71
|
-
|
|
85
|
+
**Автоматически — весь стек:** `bathys setup` (см. выше) прописывает сервер во все найденные харнессы.
|
|
86
|
+
|
|
87
|
+
**Точечно — когда нужно именно здесь:**
|
|
72
88
|
|
|
73
89
|
```bash
|
|
74
|
-
|
|
90
|
+
bathys install # автодетект всех установленных харнессов
|
|
91
|
+
bathys install hermes # только Hermes (отсутствующий конфиг создастся)
|
|
92
|
+
bathys install --list # все поддерживаемые таргеты
|
|
93
|
+
bathys install --print-config # готовые блоки для ручной вставки
|
|
75
94
|
```
|
|
76
95
|
|
|
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), запись
|
|
96
|
+
Детектируются 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`. Кастомные интеграции — в каталоге [integrations/](integrations/).
|
|
78
97
|
|
|
79
|
-
|
|
98
|
+
<details>
|
|
99
|
+
<summary><b>Ручное подключение</b> (когда правите конфиги сами)</summary>
|
|
100
|
+
|
|
101
|
+
Bathys — stdio MCP-сервер: блок `mcpServers` один и тот же везде, от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к бинарнику (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна. Готовые блоки под каждый клиент: `bathys install --print-config`.
|
|
80
102
|
|
|
81
103
|
```json
|
|
82
104
|
{
|
|
83
105
|
"mcpServers": {
|
|
84
106
|
"bathys": {
|
|
85
|
-
"command": "/path/to/bathys
|
|
86
|
-
"env": {
|
|
87
|
-
"BATHYS_SEARXNG_HOME": "/path/to/bathys/.runtime/searxng-home"
|
|
88
|
-
}
|
|
107
|
+
"command": "/path/to/bathys",
|
|
108
|
+
"env": { "BATHYS_SEARXNG_HOME": "/path/to/searxng-home" }
|
|
89
109
|
}
|
|
90
110
|
}
|
|
91
111
|
}
|
|
@@ -98,6 +118,8 @@ python3.12 -m venv .venv && .venv/bin/pip install -e .
|
|
|
98
118
|
| Cursor | [docs/integrations/cursor.md](docs/integrations/cursor.md) |
|
|
99
119
|
| Любой другой MCP-клиент | [docs/integrations/generic-mcp.md](docs/integrations/generic-mcp.md) |
|
|
100
120
|
|
|
121
|
+
</details>
|
|
122
|
+
|
|
101
123
|
## 🧠 Научить агента работать эффективно
|
|
102
124
|
|
|
103
125
|
Конфиг — только половина дела. Из коробки харнесс получает **instructions-playbook** (матрицу выбора инструментов), **annotations** и **три стратегии-промпта** — `bathys_deep_research`, `bathys_source_audit`, `bathys_fresh_scan`, — так что выбирает инструменты Bathys уже нативно. Сильнее — профиль: субагент [`agents/bathys-researcher.md`](agents/bathys-researcher.md) с двумя скиллами, которому глубокий ресёрч делегируется целиком; для клиентов, не показывающих MCP instructions, — дроп-ин [`agents/HARNESS-DROPIN.md`](agents/HARNESS-DROPIN.md) в `AGENTS.md` / `CLAUDE.md` / `.cursor/rules`.
|
|
@@ -166,7 +188,7 @@ docs/
|
|
|
166
188
|
|
|
167
189
|
## 📍 Статус
|
|
168
190
|
|
|
169
|
-
**0.
|
|
191
|
+
**0.7.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](CHANGELOG.md).
|
|
170
192
|
|
|
171
193
|
Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
|
|
172
194
|
|
|
@@ -2,31 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
# Bathys
|
|
4
4
|
|
|
5
|
-
**Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов.**
|
|
5
|
+
**Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов.** Это самостоятельный продукт, а не обёртка над чужими сервисами: Bathys реализует весь конвейер сам — метапоиск с дедупликацией и живучестью к блокировкам, двухъярусное извлечение (HTTP-движок по умолчанию, headless-браузер только для JS-страниц), пятистадийную дистилляцию под запрос с жёсткими бюджетами, TTL-кэш сырца, robots-этику, метрики и диагностику. Метапоиск и извлечение оформлены как сменные внутренние движки (SearXNG, Crawl4AI) — их можно заменить, продукт останется Bathys. Облачных квот нет; LLM внутри нет — синтез остаётся за вызывающим агентом, дистилляция детерминированная (BM25).
|
|
6
6
|
|
|
7
7
|
Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.
|
|
8
8
|
|
|
9
9
|

|
|
10
|
-

|
|
11
11
|

|
|
12
12
|

|
|
13
13
|
|
|
14
14
|
## ⚡ Quick start
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
**Одной командой** (Python ≥ 3.10; приватный venv, без sudo, идемпотентно):
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
|
|
20
|
-
python -m playwright install chromium # браузер для извлечения
|
|
21
|
-
bathys install # автоподключение к найденным харнессам
|
|
22
|
-
bathys-doctor # диагностика стека одним запуском
|
|
19
|
+
curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash
|
|
23
20
|
```
|
|
24
21
|
|
|
25
|
-
|
|
22
|
+
Скрипт ставит пакет с PyPI в `~/.local/share/bathys/venv`, прописывает PATH, запускает `bathys setup` (браузер для JS-страниц → все найденные харнессы → субагент) и финальный `bathys-doctor`. Повторный запуск — безопасное обновление.
|
|
23
|
+
|
|
24
|
+
**Без скрипта** (то же самое вручную, для тех кто предпочитает pip):
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pip install bathys # пакет: сервер + bathys setup/install/doctor
|
|
28
|
+
bathys setup # браузер → харнессы → субагент
|
|
29
|
+
bathys doctor # самодиагностика стека
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
SearXNG ставить руками не нужно: бэкенд поднимется сам при первом поиске (внешний инстанс → docker → нативный режим). Браузер нужен только для JS-страниц: обычные страницы Bathys читает собственным HTTP-движком, `BATHYS_BROWSER=off` отключает браузерный ярус полностью.
|
|
33
|
+
|
|
34
|
+
<details>
|
|
35
|
+
<summary><b>Альтернативные пути установки</b> (npm, исходники, минимальные образы)</summary>
|
|
36
|
+
|
|
37
|
+
**npm** (Node-first окружения — обёртка ставит Python-пакет сама):
|
|
26
38
|
|
|
27
39
|
```bash
|
|
28
40
|
npm install -g bathys-mcp
|
|
29
|
-
bathys-mcp
|
|
41
|
+
bathys-mcp setup
|
|
30
42
|
```
|
|
31
43
|
|
|
32
44
|
**Из исходников** (разработка):
|
|
@@ -34,32 +46,40 @@ bathys-mcp install
|
|
|
34
46
|
```bash
|
|
35
47
|
git clone https://github.com/Korrnals/bathys.git && cd bathys
|
|
36
48
|
python3.12 -m venv .venv && .venv/bin/pip install -e .
|
|
37
|
-
.venv/bin/
|
|
38
|
-
.venv/bin/python -m unittest discover -s tests # юнит-тесты без
|
|
49
|
+
.venv/bin/bathys setup
|
|
50
|
+
.venv/bin/python -m unittest discover -s tests # юнит-тесты без сети
|
|
39
51
|
```
|
|
40
52
|
|
|
41
|
-
В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md).
|
|
53
|
+
В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md).
|
|
54
|
+
|
|
55
|
+
</details>
|
|
42
56
|
|
|
43
57
|
## 🔌 Подключение к харнессу
|
|
44
58
|
|
|
45
|
-
|
|
59
|
+
**Автоматически — весь стек:** `bathys setup` (см. выше) прописывает сервер во все найденные харнессы.
|
|
60
|
+
|
|
61
|
+
**Точечно — когда нужно именно здесь:**
|
|
46
62
|
|
|
47
63
|
```bash
|
|
48
|
-
|
|
64
|
+
bathys install # автодетект всех установленных харнессов
|
|
65
|
+
bathys install hermes # только Hermes (отсутствующий конфиг создастся)
|
|
66
|
+
bathys install --list # все поддерживаемые таргеты
|
|
67
|
+
bathys install --print-config # готовые блоки для ручной вставки
|
|
49
68
|
```
|
|
50
69
|
|
|
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), запись
|
|
70
|
+
Детектируются 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`. Кастомные интеграции — в каталоге [integrations/](integrations/).
|
|
52
71
|
|
|
53
|
-
|
|
72
|
+
<details>
|
|
73
|
+
<summary><b>Ручное подключение</b> (когда правите конфиги сами)</summary>
|
|
74
|
+
|
|
75
|
+
Bathys — stdio MCP-сервер: блок `mcpServers` один и тот же везде, от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к бинарнику (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна. Готовые блоки под каждый клиент: `bathys install --print-config`.
|
|
54
76
|
|
|
55
77
|
```json
|
|
56
78
|
{
|
|
57
79
|
"mcpServers": {
|
|
58
80
|
"bathys": {
|
|
59
|
-
"command": "/path/to/bathys
|
|
60
|
-
"env": {
|
|
61
|
-
"BATHYS_SEARXNG_HOME": "/path/to/bathys/.runtime/searxng-home"
|
|
62
|
-
}
|
|
81
|
+
"command": "/path/to/bathys",
|
|
82
|
+
"env": { "BATHYS_SEARXNG_HOME": "/path/to/searxng-home" }
|
|
63
83
|
}
|
|
64
84
|
}
|
|
65
85
|
}
|
|
@@ -72,6 +92,8 @@ python3.12 -m venv .venv && .venv/bin/pip install -e .
|
|
|
72
92
|
| Cursor | [docs/integrations/cursor.md](docs/integrations/cursor.md) |
|
|
73
93
|
| Любой другой MCP-клиент | [docs/integrations/generic-mcp.md](docs/integrations/generic-mcp.md) |
|
|
74
94
|
|
|
95
|
+
</details>
|
|
96
|
+
|
|
75
97
|
## 🧠 Научить агента работать эффективно
|
|
76
98
|
|
|
77
99
|
Конфиг — только половина дела. Из коробки харнесс получает **instructions-playbook** (матрицу выбора инструментов), **annotations** и **три стратегии-промпта** — `bathys_deep_research`, `bathys_source_audit`, `bathys_fresh_scan`, — так что выбирает инструменты Bathys уже нативно. Сильнее — профиль: субагент [`agents/bathys-researcher.md`](agents/bathys-researcher.md) с двумя скиллами, которому глубокий ресёрч делегируется целиком; для клиентов, не показывающих MCP instructions, — дроп-ин [`agents/HARNESS-DROPIN.md`](agents/HARNESS-DROPIN.md) в `AGENTS.md` / `CLAUDE.md` / `.cursor/rules`.
|
|
@@ -140,7 +162,7 @@ docs/
|
|
|
140
162
|
|
|
141
163
|
## 📍 Статус
|
|
142
164
|
|
|
143
|
-
**0.
|
|
165
|
+
**0.7.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](CHANGELOG.md).
|
|
144
166
|
|
|
145
167
|
Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
|
|
146
168
|
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
| `BATHYS_SEARCH_MIN_INTERVAL` | `1.0` | float, с | вежливый минимальный интервал между поисками к бэкенду (F-301); 0 — без пауз |
|
|
31
31
|
| `BATHYS_SEARCH_RETRIES` | `2` | int | дoп. попытки при пустой/заблокированной выдаче с ротацией наборов движков и паузой 1.5s×n (F-101); 0–3 |
|
|
32
32
|
| `BATHYS_DIVE_CONCURRENCY` | `4` | int | параллельные нырки страниц в `deep_research` (F-301); 1–8 |
|
|
33
|
+
| `BATHYS_BROWSER` | `auto` | режим | двухъярусное извлечение: `auto` — HTTP-движок первым, браузер только для JS-страниц; `off` — без браузера; `always` — только браузер (отладка) |
|
|
33
34
|
| `BATHYS_ROBOTS` | `1` | bool | уважать robots.txt при прямых нырках страниц (F-303); fail-open при недоступном robots; поиск не затрагивается |
|
|
34
35
|
| `BATHYS_METRICS` | `1` | bool | локальный журнал вызовов `{DATA_DIR}/metrics.jsonl` (F-304); выключается полностью |
|
|
35
36
|
| `BATHYS_ENGINE_BRAVE_KEY` | — | str | API-ключ Brave Search: одним ключом включает движок `brave` в генерируемых настройках SearXNG нативного режима (F-203, `services.render_settings`); для docker-режима — пропишите движок в settings сами |
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
| `BATHYS_SEARCH_MIN_INTERVAL` | `1.0` | вежливая пауза между поисками к бэкенду, сек |
|
|
23
23
|
| `BATHYS_SEARCH_RETRIES` | `2` | доп. попытки при пустой выдаче (ротация движков с паузами), 0–3 |
|
|
24
24
|
| `BATHYS_DIVE_CONCURRENCY` | `4` | параллельные чтения страниц в `deep_research`, 1–8 |
|
|
25
|
+
| `BATHYS_BROWSER` | `auto` | режим | двухъярусное извлечение: `auto` — HTTP-движок первым, браузер только для JS-страниц; `off` — без браузера; `always` — только браузер (отладка) |
|
|
25
26
|
| `BATHYS_ROBOTS` | `1` | уважать robots.txt при чтении страниц (отказ — пометкой, не ошибкой) |
|
|
26
27
|
| `BATHYS_METRICS` | `1` | писать локальный журнал вызовов `~/.local/share/bathys/metrics.jsonl` |
|
|
27
28
|
| `BATHYS_ENGINE_BRAVE_KEY` | — | ключ Brave Search API: включает движок `brave` в настройках нативного SearXNG одним env |
|
bathys-0.7.1/install.sh
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Bathys — one-line installer.
|
|
3
|
+
#
|
|
4
|
+
# curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash
|
|
5
|
+
#
|
|
6
|
+
# What it does (idempotent, safe to re-run):
|
|
7
|
+
# 1. finds Python >= 3.10 (python3/python/3.12/3.11/3.10);
|
|
8
|
+
# 2. installs the `bathys` package from PyPI into a PRIVATE venv at
|
|
9
|
+
# ~/.local/share/bathys/venv (deterministic, no PEP-668 surprises,
|
|
10
|
+
# no sudo, nothing outside $HOME; --user is deliberately not used —
|
|
11
|
+
# it is fragile across containers/managed environments);
|
|
12
|
+
# 3. wires the venv bin into PATH permanently (.profile/.bashrc);
|
|
13
|
+
# 4. runs `bathys setup`: browser engine for JS pages -> harness
|
|
14
|
+
# auto-integration (zcode, Claude, Cursor, VS Code family, Gemini CLI,
|
|
15
|
+
# Windsurf, Zed, opencode, goose, Hermes) -> researcher subagent;
|
|
16
|
+
# 5. runs `bathys-doctor` for a final health check.
|
|
17
|
+
#
|
|
18
|
+
# Exit code is the doctor's. Manual alternative (the same result, no script):
|
|
19
|
+
# pip install bathys && bathys setup
|
|
20
|
+
|
|
21
|
+
set -euo pipefail
|
|
22
|
+
|
|
23
|
+
BOLD="$(tput bold 2>/dev/null || echo '')"
|
|
24
|
+
DIM="$(tput dim 2>/dev/null || echo '')"
|
|
25
|
+
RESET="$(tput sgr0 2>/dev/null || echo '')"
|
|
26
|
+
say() { printf "%s\n" "${BOLD}[bathys]${RESET} $*"; }
|
|
27
|
+
note() { printf "%s\n" "${DIM}[bathys]${RESET} $*"; }
|
|
28
|
+
die() { printf "%s\n" "${BOLD}[bathys]${RESET} ERROR: $*" >&2; exit 1; }
|
|
29
|
+
|
|
30
|
+
VENV_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/bathys/venv"
|
|
31
|
+
|
|
32
|
+
# ------------------------------------------------------------------ python --
|
|
33
|
+
find_python() {
|
|
34
|
+
for cand in python3.12 python3.11 python3.10 python3 python; do
|
|
35
|
+
if command -v "$cand" >/dev/null 2>&1; then
|
|
36
|
+
if "$cand" - <<'PY' >/dev/null 2>&1
|
|
37
|
+
import sys
|
|
38
|
+
raise SystemExit(0 if (3, 10) <= sys.version_info[:2] <= (3, 14) else 1)
|
|
39
|
+
PY
|
|
40
|
+
then
|
|
41
|
+
echo "$cand"
|
|
42
|
+
return 0
|
|
43
|
+
fi
|
|
44
|
+
fi
|
|
45
|
+
done
|
|
46
|
+
return 1
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
PY="$(find_python)" || die "Python 3.10–3.14 не найден. Установите его и повторите — либо вручную: pip install bathys && bathys setup"
|
|
50
|
+
note "python: $($PY --version 2>&1)"
|
|
51
|
+
|
|
52
|
+
# ------------------------------------------------------------------- venv --
|
|
53
|
+
if [ -x "$VENV_DIR/bin/bathys" ] && "$VENV_DIR/bin/bathys" --help >/dev/null 2>&1; then
|
|
54
|
+
note "venv уже живой: $VENV_DIR (обновляю пакет)"
|
|
55
|
+
UPGRADE=yes
|
|
56
|
+
else
|
|
57
|
+
note "создаю приватный venv: $VENV_DIR"
|
|
58
|
+
rm -rf "$VENV_DIR"
|
|
59
|
+
"$PY" -m venv "$VENV_DIR" 2>/dev/null \
|
|
60
|
+
|| "$PY" -m venv --without-pip "$VENV_DIR" \
|
|
61
|
+
|| die "не удалось создать venv в $VENV_DIR"
|
|
62
|
+
UPGRADE=no
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
# bootstrap pip when the venv lacks it (minimal images without ensurepip)
|
|
66
|
+
if [ ! -x "$VENV_DIR/bin/pip" ]; then
|
|
67
|
+
note "pip отсутствует в venv — бутстрап через get-pip.py…"
|
|
68
|
+
TMP_GP="$(mktemp)"; trap 'rm -f "$TMP_GP"' EXIT
|
|
69
|
+
curl -fsSL https://bootstrap.pypa.io/get-pip.py -o "$TMP_GP" \
|
|
70
|
+
|| die "не удалось скачать get-pip.py (сеть?)"
|
|
71
|
+
"$VENV_DIR/bin/python" "$TMP_GP" -q >/dev/null 2>&1 \
|
|
72
|
+
|| die "get-pip.py не смог подняться в venv"
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# ---------------------------------------------------------------- install --
|
|
76
|
+
if [ "$UPGRADE" = yes ]; then
|
|
77
|
+
"$VENV_DIR/bin/pip" install --quiet --upgrade bathys >/dev/null 2>&1 \
|
|
78
|
+
|| die "pip install --upgrade bathys не удался (сеть/PyPI?)"
|
|
79
|
+
else
|
|
80
|
+
"$VENV_DIR/bin/pip" install --quiet bathys >/dev/null 2>&1 \
|
|
81
|
+
|| die "pip install bathys не удался (сеть/PyPI?)"
|
|
82
|
+
fi
|
|
83
|
+
[ -x "$VENV_DIR/bin/bathys" ] || die "bathys не появился в venv — проверьте вывод pip вручную"
|
|
84
|
+
|
|
85
|
+
# ------------------------------------------------------------------- PATH --
|
|
86
|
+
PATH_LINE='export PATH="$HOME/.local/share/bathys/venv/bin:$PATH"'
|
|
87
|
+
if ! case ":$PATH:" in *":$VENV_DIR/bin:"*) false;; esac; then
|
|
88
|
+
export PATH="$VENV_DIR/bin:$PATH"
|
|
89
|
+
fi
|
|
90
|
+
for rc in "$HOME/.profile" "$HOME/.bashrc"; do
|
|
91
|
+
if [ -f "$rc" ] && ! grep -qF 'bathys/venv/bin' "$rc"; then
|
|
92
|
+
printf '\n# bathys (one-line installer)\n%s\n' "$PATH_LINE" >> "$rc"
|
|
93
|
+
note "PATH дополнен в $rc — перезапустите шелл или: source $rc"
|
|
94
|
+
fi
|
|
95
|
+
done
|
|
96
|
+
|
|
97
|
+
say "установлен: $VENV_DIR/bin/bathys"
|
|
98
|
+
|
|
99
|
+
# ------------------------------------------------------------------ setup --
|
|
100
|
+
say "полная настройка (браузер → харнессы → субагент)…"
|
|
101
|
+
"$VENV_DIR/bin/bathys" setup
|
|
102
|
+
|
|
103
|
+
# ----------------------------------------------------------------- doctor --
|
|
104
|
+
say "финальная диагностика:"
|
|
105
|
+
exec "$VENV_DIR/bin/bathys" doctor
|
|
@@ -9,3 +9,8 @@
|
|
|
9
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
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
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
|
|
12
|
+
12:46:14 [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
|
|
13
|
+
12:46:18 [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
|
|
14
|
+
12:46:23 [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
|
|
15
|
+
12:46:28 [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
|
|
16
|
+
12:46:30 [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,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "bathys"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.7.1"
|
|
8
8
|
description = "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)."
|
|
9
9
|
keywords = ["mcp", "deep-research", "search", "web-search", "ai-agents", "llm", "local-first", "distillation", "searxng", "crawl4ai"]
|
|
10
10
|
classifiers = [
|
|
@@ -39,6 +39,7 @@ class Config:
|
|
|
39
39
|
search_min_interval: float
|
|
40
40
|
search_retries: int
|
|
41
41
|
dive_concurrency: int
|
|
42
|
+
browser_mode: str
|
|
42
43
|
respect_robots: bool
|
|
43
44
|
metrics: bool
|
|
44
45
|
|
|
@@ -66,6 +67,7 @@ class Config:
|
|
|
66
67
|
search_min_interval=float(os.environ.get("BATHYS_SEARCH_MIN_INTERVAL", "1.0")),
|
|
67
68
|
search_retries=max(0, min(3, int(os.environ.get("BATHYS_SEARCH_RETRIES", "2")))),
|
|
68
69
|
dive_concurrency=max(1, min(8, int(os.environ.get("BATHYS_DIVE_CONCURRENCY", "4")))),
|
|
70
|
+
browser_mode=(os.environ.get("BATHYS_BROWSER") or "auto").strip().lower(),
|
|
69
71
|
respect_robots=_env_bool("BATHYS_ROBOTS", True),
|
|
70
72
|
metrics=_env_bool("BATHYS_METRICS", True),
|
|
71
73
|
)
|
|
@@ -313,7 +313,7 @@ class Engine:
|
|
|
313
313
|
self.cache.set(pk, {"error": err}, ttl=max(3600, self.cfg.page_ttl // 24))
|
|
314
314
|
raise RobotsRefusal(err)
|
|
315
315
|
try:
|
|
316
|
-
page = await self.crawler.fetch(url)
|
|
316
|
+
page = await self.crawler.fetch(url, http=self.http)
|
|
317
317
|
except Exception as e:
|
|
318
318
|
err = f"{e.__class__.__name__}: {e}"
|
|
319
319
|
self.cache.set(pk, {"error": err}, ttl=max(3600, self.cfg.page_ttl // 24))
|