93 lines
7.1 KiB
Markdown
93 lines
7.1 KiB
Markdown
# 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.1–0.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.1–0.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 |