mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-14 08:09:16 +03:00
39 lines
2.2 KiB
Markdown
39 lines
2.2 KiB
Markdown
---
|
|
name: memory
|
|
description: Two-layer memory system with Dream-managed knowledge files.
|
|
always: true
|
|
---
|
|
|
|
# Memory
|
|
|
|
## Structure
|
|
|
|
- `SOUL.md` — Bot personality and communication style. **Managed by Dream.** Do NOT edit.
|
|
- `USER.md` — User profile and preferences. **Managed by Dream.** Do NOT edit.
|
|
- `memory/MEMORY.md` — Long-term facts (project context, important events). **Managed by Dream.** Do NOT edit.
|
|
- `memory/history.jsonl` — append-only JSONL, not loaded into context. Prefer the built-in `grep` tool to search it.
|
|
|
|
## Search Past Events
|
|
|
|
`memory/history.jsonl` is JSONL format — each line is a JSON object with `cursor`, `timestamp`, `content`.
|
|
|
|
- For broad searches, start with `grep(..., path="memory", glob="*.jsonl", output_mode="count")` or the default `files_with_matches` mode before expanding to full content
|
|
- Use `output_mode="content"` plus `context_before` / `context_after` when you need the exact matching lines
|
|
- Use `fixed_strings=true` for literal timestamps or JSON fragments
|
|
- Use `head_limit` / `offset` to page through long histories
|
|
- Use `exec` only as a last-resort fallback when the built-in search cannot express what you need
|
|
|
|
Examples (replace `keyword`):
|
|
- `grep(pattern="keyword", path="memory/history.jsonl", case_insensitive=true)`
|
|
- `grep(pattern="2026-04-02 10:00", path="memory/history.jsonl", fixed_strings=true)`
|
|
- `grep(pattern="keyword", path="memory", glob="*.jsonl", output_mode="count", case_insensitive=true)`
|
|
- `grep(pattern="oauth|token", path="memory", glob="*.jsonl", output_mode="content", case_insensitive=true)`
|
|
|
|
## Important
|
|
|
|
- **Do NOT edit SOUL.md, USER.md, or MEMORY.md.** They are automatically managed by Dream.
|
|
- If you notice outdated information, it will be corrected when Dream runs next.
|
|
- Users can view Dream's activity with the `/dream-log` command.
|
|
- Dream runs as a `system` session inside the AgentLoop, triggered by the `/dream` command or cron. Each turn processes one batch; if backlog remains, Dream automatically chains additional turns until complete. All changes are committed in a single git commit.
|
|
- Dream can use a different model than the main agent via `agents.defaults.dream.modelOverride`. Supports preset names or raw model identifiers.
|