mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-06-13 22:34:06 +00:00
* refactor(dream): replace two-phase Dream class with simple cron + process_direct - Remove the heavyweight Dream class (AgentRunner-based two-phase system) from nanobot/agent/memory.py - Delete dream_phase1.md and dream_phase2.md templates - New dream.md template serves as the consolidation prompt - Cron callback uses agent.process_direct(prompt, session_key=\"dream\") instead of agent.dream.run() - Always performs git auto_commit after execution - /dream command updated to use process_direct + git commit - DreamConfig kept for backward compatibility; deprecated fields (model_override, max_batch_size, max_iterations, annotate_line_ages) are ignored but accepted in config - interval_h remains configurable via agents.defaults.dream.interval_h - Update tests and webui settings to match new architecture * feat(loop): add ephemeral mode to process_direct, skip history writes for Dream When ephemeral=True, _state_save skips enforce_file_cap (which calls raw_archive -> append_history) and consolidator.maybe_consolidate_by_tokens. This prevents Dream sessions from creating a positive feedback loop where they process their own output. The session IS still saved to disk. * fix(loop): skip extra hooks for ephemeral sessions (Dream) * feat(dream): per-run timestamped sessions with rotation for WebUI * test(config): restore DreamConfig schedule and alias tests * fix(dream): include LLM response summary in git auto-commit message The old two-phase Dream class included the Phase 1 analysis in the git commit message body. The new single-phase version lost this. Restore it by extracting resp.content from the process_direct return value and appending it to the commit message in both the cron handler and the /dream command. * fix(test): accept ephemeral kwarg in test_openai_api fake_process * refactor(dream): merge dream_session.py into MemoryStore The standalone dream_session.py module only contained three small helpers that all revolve around MemoryStore concerns (session keys, commit messages, file pruning). Fold them into MemoryStore as @staticmethod to reduce indirection and avoid a 35-line module with no independent reason to exist. * fix(test): address code review — patch correct instance, use actual function - Fix test_ephemeral_skips_raw_archive to patch loop.context.memory instead of the fixture's separate MemoryStore instance - Fix TestDreamCommitMessage to call MemoryStore.build_dream_commit_message instead of reimplementing the logic inline - Move Dream helpers in memory.py above the Consolidator section comment to avoid misleading visual boundary * fix(dream): gate cursor advancement and restrict tools maintainer edit: Dream now processes backlog from the oldest unprocessed entries, only advances the cursor after a completed ephemeral run, and uses a restricted file-only tool registry for background consolidation. * fix(dream): skip idle compact for dream sessions Dream runs use internal dream:* sessions that are pruned by Dream retention. Exclude them from AutoCompact scheduling, archive execution, and summary injection so idle-session compaction cannot truncate Dream transcripts. * fix(dream): keep batched history isolated * feat(dream): tag archived memory for single-phase Dream --------- Co-authored-by: Xubin Ren <52506698+Re-bin@users.noreply.github.com>
nanobot Docs
For the latest documentation, visit nanobot.wiki.
The pages in this directory track the current repository and may move faster than the published website.
Core Docs
Start here for setup, everyday usage, and deployment.
| Topic | Repo docs | What it covers |
|---|---|---|
| Install and quick start | quick-start.md |
Installation, onboarding, and first-run setup |
| Chat apps | chat-apps.md |
Connect nanobot to Telegram, Discord, WeChat, and more |
| Agent social network | agent-social-network.md |
Join external agent communities from nanobot |
| Configuration | configuration.md |
Providers, tools, channels, MCP, and runtime settings |
| Image generation | image-generation.md |
Configure image providers, WebUI image mode, and generated artifacts |
| WebUI | ../webui/README.md |
Open the bundled browser UI; LAN access; Vite dev server for contributors |
| Multiple instances | multiple-instances.md |
Run isolated bots with separate configs and workspaces |
| CLI reference | cli-reference.md |
Core CLI commands and common entrypoints |
| In-chat commands | chat-commands.md |
Slash commands and periodic task behavior |
| OpenAI-compatible API | openai-api.md |
Local API endpoints, request format, and file uploads |
| Deployment | deployment.md |
Docker, Linux service, and macOS LaunchAgent setup |
Advanced Docs
Use these when you want deeper customization, integration, or extension details.
| Topic | Repo docs | What it covers |
|---|---|---|
| Memory | memory.md |
How nanobot stores, consolidates, and restores memory |
| Python SDK | python-sdk.md |
Use nanobot programmatically from Python |
| Channel plugin guide | channel-plugin-guide.md |
Build and test custom chat channel plugins |
| WebSocket channel | websocket.md |
Real-time WebSocket access and protocol details |
| Custom tools | my-tool.md |
Inspect and tune runtime state with the my tool |