2.5 KiB
2.5 KiB
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-namev textu zprávy = explicitní injekt SKILL.md do turnu.- Regex:
(?<![\w$])\$([A-Za-z0-9_-]+)—get_explicitly_invoked_skills()vskills.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())
- Regex:
/jmeno= command router. Jen builtins (/new,/stop,/model,/skill,/trigger,/pairing, … — seznam vnanobot/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ý/cokolipropustil k LLM (fallback interpretace). V 0.3.5 vracíTruepro jakýkoliv text začínající/→ router odmítne (Unknown command "/usage". Use "/help"...), zpráva nikdy nedosáhne LLM. Proto custom/usagepřestalo fungovat po upgradu;$usagefunguje dál.
Skill loading pořadí
- workspace (
workspace/skills/) — highest priority - Agent Plugin skills (
workspace/plugins/) - 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-namev turnu - agent sám:
read_filena 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/healthmůže vracet HTTP 503, když enabled WS channel neběží (Zabbix check! )