52 lines
2.5 KiB
Markdown
52 lines
2.5 KiB
Markdown
# nanobot internals — ověřená fakta ze zdrojáků
|
|
|
|
Ověřeno proti v0.3.5 (`nanobot/agent/skills.py`, `nanobot/command/router.py`, tag v0.3.5 na GitHubu).
|
|
|
|
## Volání skillů
|
|
|
|
- **`$skill-name`** v textu zprávy = explicitní injekt SKILL.md do turnu.
|
|
- Regex: `(?<![\w$])\$([A-Za-z0-9_-]+)` — `get_explicitly_invoked_skills()` v `skills.py`
|
|
- Zpráva jde normálně k LLM; SKILL.md (bez frontmatteru) se vloží jako
|
|
`[Active Skills — instructions for this user turn]` RuntimeContextBlock
|
|
- Nezávislé na command routeru (nezačíná `/`), funguje přes všechny kanály
|
|
(Telegram ověřeno 2026-09-16)
|
|
- CLI App aliases se resolvují taky (`installed_skill_aliases()`)
|
|
- **`/jmeno`** = command router. Jen builtins (`/new`, `/stop`, `/model`, `/skill`,
|
|
`/trigger`, `/pairing`, … — seznam v `nanobot/command/builtin.py`,
|
|
`BUILTIN_COMMAND_SPECS`). Custom skilly nelze registrovat jako slash command.
|
|
- **v0.3.0 vs v0.3.5 breaking change**: v 0.3.0 `is_dispatchable_command()`
|
|
neznámý `/cokoli` propustil k LLM (fallback interpretace). V 0.3.5 vrací
|
|
`True` pro jakýkoliv text začínající `/` → router odmítne
|
|
(`Unknown command "/usage". Use "/help"...`), zpráva nikdy nedosáhne LLM.
|
|
Proto custom `/usage` přestalo fungovat po upgradu; `$usage` funguje dál.
|
|
|
|
## Skill loading pořadí
|
|
|
|
1. workspace (`workspace/skills/`) — highest priority
|
|
2. Agent Plugin skills (`workspace/plugins/`)
|
|
3. builtin (`nanobot/skills/`) — duplicity skipnuté dle jména
|
|
|
|
Disabled skilly se filtrují přes `disabled_skills` + aliases.
|
|
|
|
## Progresivní loading
|
|
|
|
System prompt obsahuje jen summary (jméno + description + cesta) —
|
|
`build_skills_summary()`. Plný obsah SKILL.md se načte až:
|
|
- explicitně: `$skill-name` v turnu
|
|
- agent sám: `read_file` na cestu ze summary
|
|
|
|
## Sessions storage (v0.3.5)
|
|
|
|
- JSONL soubory: `<config-dir>/sessions/<workspace-id>/` (mimo workspace)
|
|
- Migrace z `<workspace>/sessions/` proběhne automaticky při prvním startu po
|
|
upgradu (atomic copy, symlinks rejected)
|
|
- Downgrade: `nanobot sessions restore-workspace --config <config.json> --workspace <workspace>`
|
|
|
|
## Env vars (v0.3.5)
|
|
|
|
- `NANOBOT_LLM_TIMEOUT_S` — zrušen (Unused)
|
|
- `NANOBOT_STREAM_IDLE_TIMEOUT_S` — default 90 s, idle-based (renewed per stream
|
|
event), max 3600; platí i pro interní tasky (Dream, heartbeat, title gen)
|
|
- `NANOBOT_MAX_CONCURRENT_REQUESTS` — default unlimited, kladné int = cap
|
|
- `/health` může vracet HTTP 503, když enabled WS channel neběží (Zabbix check!
|
|
) |