nanobot: 2026-09-16 09:17:27
This commit is contained in:
52
knowledge/nanobot-internals.md
Normal file
52
knowledge/nanobot-internals.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# 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!
|
||||
)
|
||||
Reference in New Issue
Block a user