Files
nanobot-runtime/memory/MEMORY.md
nanobot bd88df5ca1 dream: 2026-06-06 12:12, 1 change(s)
[MEMORY-REMOVE] "Currently taking antibiotics (started 2026-06-04)" — redundant with the more detailed "Antibiotic reminder schedule confirmed: 23 reminders starting 2026-06-04…" entry in Reminder System, which already implies active antibiotic use and provides full context
2026-06-06 14:11:30 +02:00

7.7 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
  • /note skill: backend storage uses SQLite (not markdown)
  • /note skill: má být deterministický a logovat všechny provedené operace
  • /note skill: má být rozdělený na kratší prompt + python skript, který provádí operace
  • 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
  • nanobot v0.2.1 available (current: v0.2.0)
  • 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
  • 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 commands section in config.json supporting exec script and python module/function handler types
  • AgentLoop.__init__ does not accept a config parameter; custom command loading must happen in from_config() after instance creation, guarded by _custom_commands_loaded flag 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

Agent Model Selection

  • Ollama subscription covers all discussed models; price/cost excluded from model comparison criteria
  • Prioritizes agentic performance, correct tool calling, and overall result quality
  • Primary nanobot agent model: GLM-5.1:cloud (best sustained productivity over long sessions/hundreds of rounds, strong real-world agent benchmarks)
  • 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_thinking mode for multi-turn agent scenarios (retains reasoning content across turns)

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 critical issues: one-time at reminders fire repeatedly (60s tolerance window), non-atomic YAML writes, fragile manual YAML string construction, missing list subcommand, no tests for edit/send scripts, race condition between edit and send without file locking
  • /remind fix priorities: P0 = atomic writes + deduplicate one-time reminders; P1 = list command + proper YAML serialization + validation; P2 = add tests; P3 = SQLite state tracking + edit command + cron step syntax
  • Daily reminder at 18:00 and 19:00 to fix the BRANO on entrance doors
  • Daily reminder at 19:00 to install pigeon spikes on the window to the shed
  • Weekday reminder at 9:30 to check notebook repair prices for Horáčková
  • Daily reminder at 9:10 to order xshoes
  • Daily reminder at 11:00 and 20:00 to supplement meeting minutes and send them to Přibyl
  • Weekday reminder at 9:20 for an anti-smoking sign in the elevator

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

Personal Notes

  • Buy new merino shirt ("koupit nové merino triko")
  • Koupit skleničky z lahví is vína — recurring Sundays 20:30
  • Reminder to write in travel diary: pants, pills, sprinkling ("kalhoty, prášky, sypani")
  • Antibiotic reminder schedule confirmed: 23 reminders starting 2026-06-04 at 16:00 and 22:00, then every 8 hours until 2026-06-11 22:00

This file is automatically updated by nanobot when important information should be remembered.