Files
nanobot-runtime/memory/MEMORY.md
nanobot a9c8ef30a1 dream: 2026-06-22 17:25, 3 change(s)
[MEMORY-REMOVE] /remind SQLite redesign completed 2026-06-10, all 43 tests passing — completed past event, no longer actionable
[MEMORY-REMOVE] /remind migration tested against 14 live reminders then rolled back, original YAML kept as .bak — completed past event
[MEMORY-REMOVE] /remind fixed cron due detection using croniter with ±1s tolerance around current time — applied bug fix, no longer tracking
[MEMORY-REMOVE] /remind fixed enable/disable returning incorrect state by re-fetching reminder after UPDATE — applied bug fix
[MEMORY-REMOVE] /remind fixed test JSONDecodeError by clearing capsys buffer between consecutive CLI invocations in same test function — applied bug fix
[MEMORY-REMOVE] Wiki compile/drain complete: all sources in `cml/raw/` already compiled and moved to `_done/`; no pending sources remain — completed status, likely stale
2026-06-22 17:56:53 +02:00

129 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
- podman is acceptable as alternative to Docker CLI when required
- Ollama cloud subscription: na požádání zobrazit aktuální využití (usage)
- Ollama cloud limity: 5hodinová session, 7denní týdenní okno
- `/note` skill: backend uses SQLite (not markdown); must be deterministic, log all operations, split into shorter prompt + Python script
- URLs should be on separate lines in both `list` and `show` output, not buried in long text lines
- Reminders DB schema has no "frequency" column; scheduling uses separate tables (schedule_at, schedule_cron, schedule_random, reminder_fires)
- Use `python3` not `python` on this system (latter not found)
- nanobot podporuje cross-channel session continuity přes `unifiedSession: true` v `config.json` pod `agents.defaults`
- Uživatel nemá `unifiedSession` povolený v `config.json` (default false)
- Zapnutí `unifiedSession` sjednotí 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.COMMAND` in telegram.py:384; workaround: invoke skills without slash prefix (e.g., `skills` not `/skills`); alternative fix: remove the filter from MessageHandler
- User wants deterministic IRC-bot-style command dispatch in nanobot where `!command text` invokes 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 `:skillname` prefix pro deterministické vyvolání skillu bez LLM deliberace — varianta navrhovaného custom command patche s `!` prefixem
- User wants nanobot use-case analysis framed as personal project relevance, not generic use case lists
- User is interested in litellm proxy for Ollama
- User considers Raspberry Pi good for testing
- User wants to try writing a nanobot extension in TypeScript
- 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
- Note skill DB path is `db/note.sqlite`, not `skills/note/notes.db` (the latter is empty/wrong)
## Agent Model Selection
- Prioritizes agentic performance, correct tool calling, and overall result quality
- 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
- Kimi K2.6 supports `preserve_thinking` mode 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
- 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 `/detach` research 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 to `log.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
- Duplicate wiki sources (same URL as an already-compiled source) must be detected and moved to `_hard/`
- Every processed source must be moved out of `cml/raw/` to prevent cron reprocessing
- Wiki graph regeneration: run `wiki_graph_lint.py` + `wiki_graph_extract.py` after each ingest batch that adds graph metadata
- 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
- `wiki_graph_extract.py` patched: skip duplicate slugs (first wins) instead of crashing on `nodes.slug` UNIQUE constraint
- Wiki current state: 17 nodes, 125 edges, 1 broken ref (concept:llm — page not yet created, report-only)
## Reminder System
- Reminder check script: `/home/nanobot/.nanobot/workspace/skills/remind/scripts/remind_check.py`
- Execution: `exec` via `/home/nanobot/.local/bin/uv run <script>`
- Empty output → silent exit (no notification sent)
- Each non-empty output line → forwarded as separate Telegram notification
- `/remind` soft delete (deleted_at) for reminder removal instead of hard deletion
- `/remind` REMIND_DB env var configures SQLite database path
- Reminder #5 (koupit skleničky z lahví z vína): frequency 1× weekly random 09:0019:00 (changed from daily)
- Reminder #6 (mapování klíčů ve sklepě): frequency 1× weekly random 08:0021:00 (changed from daily)
- Reminder #7 (znovu rozchodit teplotní senzor ve chlívku): frequency 2× weekly random 08:0021:00 (changed from daily)
- Reminder #8 (zálohování wood.hell na pivo.hell): frequency 2× weekly random 08:0021:00 (changed from daily)
### NuGet package caching ← 17d
- Evaluating NuGet package hosting/caching on Linux ← 17d
- Preferred solution: BaGetter (bagetter/BaGetter) — active BaGet fork with multiple upstream mirror support (PR #269), solves original BaGet's single-upstream limitation ← 17d
## Deep Research ← 2d
- Deep-research use-cases task (2026-06-18) partial results saved to `results/2026-06-18_nanobot-use-cases-analysis.md`
- Deep-research task failure on 2026-06-18 caused by hitting 200 tool-call iteration limit (not a freeze/deadlock)
## 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
---
*This file is automatically updated by nanobot when important information should be remembered.*