Files
nanobot-runtime/results/2026-09-16_nanobot-v0.3.0-vs-v0.3.5-deep-research.md
2026-09-17 18:48:05 +02:00

93 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# nanobot v0.3.0 → v0.3.5 — deep research report
## Shrnutí
v0.3.5 je největší release od v0.3.0: 402 merged PRs, 45 nových contributorů, 809 commitů mezi tagy. Hlavní příběhy: (1) nativní terminálový klient (TUI) sdílející stejný gateway a session storage jako WebUI, (2) přemístění session JSONL souborů mimo workspace + viditelná context compaction, (3) přepis timeout modelu z celkového na idle-based, (4) výrazné security zpevnění (credentials v subprocess env, SSRF, sandbox backends).
## Zjištění
### 1. Terminálový UI (nové) — ~95 commitů scope `tui`
- `nanobot` bez argumentů spouští nativní TypeScript TUI; `nanobot agent` zůstává alias; `--classic` = starý Python prompt
- TUI hovoří se stejným gateway jako WebUI — jeden protokol, sdílené WebSocket session
- Funkce: resume/fork sessionů, `/detach`, `/diff` (fullscreen unified diff posledního turnu), `/usage` token grafy, paste clipboard obrázků, autocomplete skill references, slash commands, LaTeX rendering, follow-up queue, interaktivní titulky sessionů
- Platform wheels obsahují TUI binárku (checksummed, version-matched) — první spuštění nestahuje z GitHubu, nevyžaduje Bun
- Podporované wheels: macOS 13+ arm64/x64, glibc 2.17+ Linux arm64/x64, Windows x64
- Lifecycle: zavření posledního interaktivního launcheru (WebUI/TUI) stopne on-demand gateway; `/detach` nebo `nanobot gateway --background` ji nechá běžet
- Zdroj: [1], [3]
### 2. Session storage — breaking změna
- Session JSONL soubory se stěhují z `<workspace>/sessions/` do `<config-dir>/sessions/<workspace-id>/` — mimo agent-readable workspace
- První upgraded start provede migraci po ověření atomic copy; symlinked legacy migration se rejectuje
- Stará a nová verze nesmí zapisovat stejný workspace současně
- Downgrade: `nanobot sessions restore-workspace --config <config.json> --workspace <workspace>` (odmítne přepsat odlišný existující soubor)
- Zdroj: [1], [3]
### 3. Runtime / env vars — breaking změny
- `NANOBOT_LLM_TIMEOUT_S`**zrušen (Unused)**. Nahrazuje ho `NANOBOT_STREAM_IDLE_TIMEOUT_S` (default 90 s, max 3600, clamp). Idle timeout renewed každým stream eventem včetně reasoning/tool-call delt — není to celkový limit
- `NANOBOT_MAX_CONCURRENT_REQUESTS` — defaultně **unlimited** (dřív limit); kladné int = cap
- Subagent concurrency: default 4, přebytečná práce čeká na kapacitu
- `agents.defaults.failOnToolError` — odstraněno
- `/health` endpoint může vracet **HTTP 503**, když enabled WebSocket channel neběží — monitoring (Zabbix) nesmí předpokládat 200 vždy
- Remote project selection používá cesty na nanobot hostu, vyžaduje Restricted access
- Zdroj: [1], [4]
### 4. Security
- `fix(providers): stop writing API keys into process os.environ` — klíče už neleží v environ subprocessů
- Izolace prostředí: `fix(cli): isolate management subprocess environments`, `fix(webui): isolate folder picker environment`
- SSRF: block IPv6 unspecified targets, pin validated DNS (přesněji: harden generated image downloads, credential URLs mimo Jina reader a failure logy)
- `feat(exec): add a macOS Seatbelt sandbox backend` + `feat(exec): allow extra bwrap bind roots` (Linux bwrap)
- Executive advisory v release: `exec.allowPatterns` shell-chain bypass umožňující unintended command execution — opraveno
- Email auth: `verifySpf`/`verifyDkim` nyní vyžadují `channels.email.trustedAuthservIds` (explicitní trust anchor od receiving mail service). Bez něj Email config nenastartuje — workaround „vypnout verifikaci" není podporován
- Zdroj: [1], [2]
### 5. WebUI workbench — ~240 commitů scope `webui` (největší oblast)
- Až 4 conversation panely vedle sebe v resizable groups, persistent sidebar ordering, drag sessionů do mentions, temporary chats
- Per-round token/cache grafy, visible context-compaction progress, paged history search, cumulative summaries
- SkillHub (marketplace), portable Agent Plugins, remote MCP browser OAuth + token refresh
- Automations: task + calendar view, per-run replies, edit zachovává pending executions, delete už neblokuje navigaci
- PWA (instalace na home screen), mobilní composer, draggable context sheets
- Zdroj: [1], [2]
### 6. Memory / Dream — 32 commitů
- `feat(memory): restore Dream model preset override` — Dream lze přepnout na jiný model preset
- `fix(dream): stop duplicating SOUL/USER/MEMORY into the Dream prompt` — prompt duplikace opravena
- Idle compaction: konfigurovatelný scan interval, reuse session context (perf), invalidace provider state po idle compaction
- Množství robustness fixů: no-op batche, retryable failed batches, truncated consolidation output, tool-call-only consolidation reject
- Zdroj: [1], [2]
### 7. Providers / modely
- DeepSeek Responses API + V4 Pro Responses + V4 vision
- Eden AI a OrcaRouter jako OpenAI-compatible gateway providers
- Grok 4.6 subscription model, OAuth model catalogs online discovery
- AnySearch provider (key-optional, anonymous quota)
- Telegram: streaming rich messages, compaction notices collapsed do jedné editované zprávy
- Zdroj: [1], [2]
### 8. Cron / scheduling — 14 commitů
- Edit automation details zachová pending runs
- Scheduler přežije selhání job-store persistence, žádný replay po persistence failure
- Retire persisted heartbeat/dream jobs při disabled, startup job count reconciliation
- Heartbeat: unified sessions routují na last channel
- Zdroj: [2]
## Co se netýká tvého deploymentu
- Desktop coexistence, DingTalk/WeCom/WeChat/Matrix/QQ/Signal/Mattermost fixes — neaktivní kanály
- Windows path escaping v sandbox testech
## Dopady na tvůj deployment (systemd + Telegram + Zabbix + Ollama)
- **Zabbix health check**: `/health` může vracet 503 — ověř trigger na 503, ne jen connection refused
- **Env vars**: pokud máš někde `NANOBOT_LLM_TIMEOUT_S`, přestal fungovat → `NANOBOT_STREAM_IDLE_TIMEOUT_S`
- **Session soubory**: zmigrované z workspace do config dir — pozor na zálohy (wood.hell → pivo.hell): `/sessions/` pod workspace už nebude primární umístění
- **Gateway lifetime**: systemd service běží gateway explicitně — on-demand lifetime se netýká
- **Telegram**: rich streaming nově podporován
## Rozpory a nejistoty
- GitHub tagy 0.3.10.3.4 neexistují (release notes tvrdí „Since v0.3.0" — 402 PRs; compare API ukazuje 809 commitů, což zahrnuje i merge commity). Oba údaje z primárních zdrojů, rozdíl je v metodice počítání
- PyPI uvádí releases 0.3.10.3.4 (neověřeno, co obsahovaly — bez GitHub tagů nejsou release notes k dispozici)
## Zdroje
[1] Release notes v0.3.5 — https://github.com/HKUDS/nanobot/releases/tag/v0.3.5
[2] Git compare v0.3.0...v0.3.5 (809 commit subjects, GitHub API) — https://github.com/HKUDS/nanobot/compare/v0.3.0...v0.3.5
[3] CLI Reference v0.3.5 (session storage & rollback) — https://github.com/HKUDS/nanobot/blob/v0.3.5/docs/cli-reference.md
[4] Configuration v0.3.5 (runtime env vars) — https://github.com/HKUDS/nanobot/blob/v0.3.5/docs/configuration.md
[5] PyPI JSON API — https://pypi.org/pypi/nanobot-ai/json