[MEMORY] Wiki compile rule: ambiguous/conflicting sources must NOT be force-compiled — leave in `cml/raw/` or move to `_hard/`, log reason to `log.md` [MEMORY] Wiki lint rule: lint is report-only, never make destructive edits to existing wiki pages without user confirmation [MEMORY] Wiki compilation runs in isolated background sessions without user interaction (batch/hands-off mode) [MEMORY] Wiki idempotency rule: if wiki pages already exist for a source, treat as done, move raw file to `_done/`, skip reconciliation [MEMORY] Every processed source must be moved out of `cml/raw/` to prevent cron reprocessing [MEMORY] Wiki source pages need explicit `slug` field (e.g. `slug: source-flash-attention`) and `graph.node_id` + `canonical: true` to avoid UNIQUE constraint collision with concept/entity pages sharing the same filename stem [MEMORY] `wiki_graph_extract.py` patched: skip duplicate slugs (first wins) instead of crashing on `nodes.slug` UNIQUE constraint [MEMORY] Workspace safety guard workaround: write Python runner scripts to `tmp/` using `uv run --script` with inline dependency declarations (`# /// script` metadata); graph scripts (`wiki_graph_lint.py`, `wiki_graph_extract.py`) cannot be run directly — use wrapper script in `tmp/` that imports and calls them [MEMORY] `pip3` not available in the environment; `uv` is the package manager; PyYAML must be installed via `uv` inline script metadata, not pip [MEMORY] Wiki content is in Czech [MEMORY-REMOVE] "Safety guard workaround: when direct DB/file access is blocked, write a Python script to `tmp/` and execute with `python3`" — superseded by the more comprehensive workspace safety guard entry above (which covers `uv run --script`, inline metadata, and the graph script wrapper pattern) [MEMORY-REMOVE] "`python` command is unavailable in runtime; `python3` must be used instead" — now subsumed under the broader `pip3`/`uv`/`python3` environment constraints entry above
11 KiB
11 KiB
Long-term Memory
This file stores important information that should persist across sessions.
Preferences
Report / result files
- Save important reports to
results/directory with descriptive, date-prefixed filenames (e.g.,2026-06-02_remind-skill-analysis-and-improvements.md)
Script-writing convention
- Location: always save scripts in the
scripts/directory. - Language choice:
- Extremely short script (a few lines) -> bash.
- Longer / non-trivial script -> Python.
- Override: if the user explicitly specifies a language or location, their instruction always takes precedence.
Temporary files
- All temporary files go to
tmp/directory. - Clean up after tests and one-off operations.
Code changes
- User prefers changes to be made in a temporary clone under
workspace/tmp/<repo-name>for review before applying
Project Context
- User wants to deploy "grill-me" plugin for Claude Code
- User wants to try "praneybehl/llm-wiki-plugin" for Claude Code — markdown-based thought management / organization
- Daily automated check for new nanobot Docker image releases with Telegram notifications (pending setup)
- Both user and assistant run on the same nanobot Docker image
- Docker CLI is unavailable in the current runtime environment
- Ollama cloud subscription: na požádání zobrazit aktuální využití (usage)
- Ollama cloud limity: 5hodinová session, 7denní týdenní okno
/noteskill: backend storage uses SQLite (not markdown)/noteskill: má být deterministický a logovat všechny provedené operace/noteskill: má být rozdělený na kratší prompt + python skript, který provádí operace- URLs should be on separate lines in both
listandshowoutput, not buried in long text lines - nanobot podporuje cross-channel session continuity přes
unifiedSession: truevconfig.jsonpodagents.defaults - Uživatel nemá
unifiedSessionpovolený vconfig.json(default false) - Zapnutí
unifiedSessionsjednotí jen budoucí zprávy; existující session soubory vyžadují ruční merge/rename pro propojení minulých konverzací - Session files are stored in
/home/nanobot/.nanobot/workspace/sessions/(confirmed after failed attempts at root.nanobot/sessions/) - User explicitly rejected unified/Mega session approach; prefers connecting to older existing sessions instead
- Telegram slash commands (e.g.,
/skills) are filtered out by& ~filters.COMMANDin telegram.py:384; workaround: invoke skills without slash prefix (e.g.,skillsnot/skills); alternative fix: remove the filter from MessageHandler - Current nanobot version: v0.2.1; no newer version available as of 2026-06-07
- User wants deterministic IRC-bot-style command dispatch in nanobot where
!command textinvokes a registered Python function or external app and returns output without LLM agent involvement - User expects nanobot creators to implement custom command registration natively and considers existing workaround solutions unsatisfactory
- Zájem o
:skillnameprefix pro deterministické vyvolání skillu bez LLM deliberace — varianta navrhovaného custom command patche s!prefixem - Nanobot CommandRouter has priority/exact/prefix/interceptor tiers but lacks an extension point for custom command registration with all handlers hardcoded in builtin.py
- Proposed nanobot patch adds a custom command tier to CommandRouter dispatching before session lock configured via
commandssection in config.json supporting exec script and python module/function handler types AgentLoop.__init__does not accept aconfigparameter; custom command loading must happen infrom_config()after instance creation, guarded by_custom_commands_loadedflag to prevent duplicate registration- Custom commands are dispatched inline before the session lock, same pattern as priority commands
- Nanobot turn state machine: RESTORE→COMPACT→COMMAND→BUILD→RUN→SAVE→RESPOND→DONE; matched non-priority commands shortcut to DONE skipping BUILD/RUN/SAVE
- Nanobot command handler return contract: OutboundMessage | None — None = fall through to LLM agent (/goal uses this hybrid pattern: returns None → LLM receives modified content)
- No existing
!prefix handling in nanobot — all current commands use/prefix only - cli_apps tool exists at nanobot/agent/tools/cli_apps.py — relevant for calling external apps from custom commands
pip3not available in the environment;uvis the package manager; PyYAML must be installed viauvinline script metadata, not pip- Note skill DB path is
db/note.sqlite, notskills/note/notes.db(the latter is empty/wrong) - Workspace safety guard workaround: write Python runner scripts to
tmp/usinguv run --scriptwith inline dependency declarations (# /// scriptmetadata); graph scripts (wiki_graph_lint.py,wiki_graph_extract.py) cannot be run directly — use wrapper script intmp/that imports and calls them
Agent Model Selection
- Prioritizes agentic performance, correct tool calling, and overall result quality
- Alternative nanobot agent model for tool-heavy tasks: Qwen 3.5:cloud (397B variant)
- Conservative fallback nanobot agent model: DeepSeek V3.2:cloud
- OpenRouter is pay-per-token alternative to Ollama subscription for model access
- Gemini Flash via Google AI Studio Free Tier: 15 RPM limit — unusable for agent work; only viable for simple prompts without tool calls
- Gemini Flash via Google AI Studio Tier 1 (paid): 360+ RPM
- Haiku (Claude) via OpenRouter: high rate limits, viable agent model alternative
- Gemini Flash Lite via OpenRouter: high rate limits, viable agent model alternative
- Kimi K2.6 vs GLM-5.1 agent comparison: Kimi leads SWE-Bench (80.2% vs ~77.8%), tool-error recovery (91.8% vs 88.4%), code quality (Tier A vs Tier C); GLM-5.1 leads schema adherence (99.6% vs 98.9%), tool-call latency (+140ms vs +210ms); GLM-5.1 tends to hallucinate non-existent APIs
- Kimi K2.6 has known bug with random switching to Chinese output (reported by Cursor and Reddit users) — critical risk for Czech use
- Both Kimi K2.6 and GLM-5.1 are Chinese-English models without specific Czech training data — both risky for Czech
- For Czech use with Chinese-English models: always explicitly specify language in system prompt (critical for Kimi K2.6, recommended for GLM-5.1)
- Kimi K2.6 supports
preserve_thinkingmode for multi-turn agent scenarios (retains reasoning content across turns) - minimax-m3:cloud is blocked for nanobot agent deployment due to empty tool result responses (ollama/ollama #16389)
- deepseek-v4-pro:cloud is blocked for interactive nanobot agent use due to 15.4 tok/s and 57s TTFT
- deepseek-v4-flash:cloud is a viable nanobot agent alternative with 1M ctx, MIT license, and ~30-50 tok/s speed
- qwen3.5:397b-cloud is a viable nanobot agent alternative with multimodal support, 1M ctx, 201 languages including Czech, but has speed and accuracy tradeoffs
- devstral-2:123b-cloud is a viable nanobot agent alternative with Terminal-Bench 77.3%, coding-only focus, and 128K ctx limit
- GLM-5.2 does not exist as of June 2026; Z.AI has made no official announcement
- User is interested in switching to GLM-5.2:cloud as primary nanobot agent model if/when it becomes available on Ollama Cloud
- nemotron-3-ultra:cloud released 2026-06-04 and is too new for real-world nanobot agent validation
- Czech language support is a hard requirement for nanobot agent models; Chinese output drift is a deployment blocker
- GLM-5.1:cloud achieves ~198 tok/s on Ollama Cloud
- Agent model comparison report saved to
results/2026-06-07_ollama-cloud-agent-model-comparison.md - User prefers Qwen model for deep research tasks (not currently in presets)
- For Ollama Cloud
/detachresearch tasks, explicitly specifying the model (e.g.,qwen35,gemini) is more reliable than generic model-agnostic prompts - Available model presets: gemini-flash, gemini-flash-lite, glm, haiku, kimi, minimax, sonnet
Wiki
- Wiki content is in Czech
- Wiki compile rule: ambiguous/conflicting sources must NOT be force-compiled — leave in
cml/raw/or move to_hard/, log reason tolog.md - Wiki lint rule: lint is report-only, never make destructive edits to existing wiki pages without user confirmation
- Wiki compilation runs in isolated background sessions without user interaction (batch/hands-off mode)
- Wiki idempotency rule: if wiki pages already exist for a source, treat as done, move raw file to
_done/, skip reconciliation - Every processed source must be moved out of
cml/raw/to prevent cron reprocessing - Wiki source pages need explicit
slugfield (e.g.slug: source-flash-attention) andgraph.node_id+canonical: trueto avoid UNIQUE constraint collision with concept/entity pages sharing the same filename stem wiki_graph_extract.pypatched: skip duplicate slugs (first wins) instead of crashing onnodes.slugUNIQUE constraint
Reminder System
- Reminder check script:
/home/nanobot/.nanobot/workspace/skills/remind/scripts/remind_check.py - Execution:
execvia/home/nanobot/.local/bin/uv run <script> - Empty output → silent exit (no notification sent)
- Each non-empty output line → forwarded as separate Telegram notification
/remindskill podporujeatparametr pro jednorázové arandompro náhodné časy v okně/remindSQLite redesign completed 2026-06-10, all 43 tests passing/remindmigration tested against 14 live reminders then rolled back, original YAML kept as .bak/remindsoft delete (deleted_at) for reminder removal instead of hard deletion/remindREMIND_DB env var configures SQLite database path/remindfixed cron due detection using croniter with ±1s tolerance around current time/remindfixed enable/disable returning incorrect state by re-fetching reminder after UPDATE/remindfixed test JSONDecodeError by clearing capsys buffer between consecutive CLI invocations in same test function
NuGet package caching
- Evaluating NuGet package hosting/caching on Linux
- Preferred solution: BaGetter (bagetter/BaGetter) — active BaGet fork with multiple upstream mirror support (PR #269), solves original BaGet's single-upstream limitation
Plans
- Set up Claude Code for removing ads and cutting songs from Radio 1 stream
- Find placement for 3D printer
- Integrate remind, keep, note, and todo systems
- Find use for pi-agent #devops
- "Objednat se na kolenoskopii" — every weekday 08:00 Europe/Prague
Personal Notes
- Chicken coop (chlívek): pending temperature sensor and MQTT display project
- Basement (sklep): pending key mapping project
- Recurring task: back up wood.hell to pivo.hell
This file is automatically updated by nanobot when important information should be remembered.