feat: add persistent memory system + SQLite session store
Two-part implementation: Part A - Curated Bounded Memory: - New memory tool (tools/memory_tool.py) with MEMORY.md + USER.md stores - Character-limited (2200/1375 chars), § delimited entries - Frozen snapshot injected into system prompt at session start - Model manages pruning via replace/remove with substring matching - Usage indicator shown in system prompt header Part B - SQLite Session Store: - New hermes_state.py with SessionDB class, FTS5 full-text search - Gateway session.py rewritten to dual-write SQLite + legacy JSONL - Compression-triggered session splitting with parent_session_id chains - New session_search tool with Gemini Flash summarization of matched sessions - CLI session lifecycle (create on launch, close on exit) Also: - System prompt now cached per session, only rebuilt on compression (fixes prefix cache invalidation from date/time changes every turn) - Config version bumped to 3, hermes doctor checks for new artifacts - Disabled in batch_runner and RL environments
This commit is contained in:
@@ -48,6 +48,8 @@ async def web_search(query: str) -> dict:
|
||||
| **Reasoning** | `mixture_of_agents_tool.py` | `mixture_of_agents` |
|
||||
| **Skills** | `skills_tool.py` | `skills_list`, `skill_view` |
|
||||
| **Todo** | `todo_tool.py` | `todo` (read/write task list for multi-step planning) |
|
||||
| **Memory** | `memory_tool.py` | `memory` (persistent notes + user profile across sessions) |
|
||||
| **Session Search** | `session_search_tool.py` | `session_search` (search + summarize past conversations) |
|
||||
| **Cronjob** | `cronjob_tools.py` | `schedule_cronjob`, `list_cronjobs`, `remove_cronjob` |
|
||||
| **RL Training** | `rl_training_tool.py` | `rl_list_environments`, `rl_start_training`, `rl_check_status`, etc. |
|
||||
|
||||
@@ -90,6 +92,10 @@ TOOLSETS = {
|
||||
"description": "Task planning and tracking for multi-step work",
|
||||
"tools": ["todo"]
|
||||
},
|
||||
"memory": {
|
||||
"description": "Persistent memory across sessions (personal notes + user profile)",
|
||||
"tools": ["memory"]
|
||||
},
|
||||
# ...
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user