feat: enhance Knowledge Ingester with symbolic extraction
Some checks failed
Docker Build and Publish / build-and-push (pull_request) Failing after 1m20s
Tests / test (pull_request) Failing after 16s
Supply Chain Audit / Scan PR for supply chain risks (pull_request) Failing after 34s

This commit is contained in:
2026-03-30 22:28:59 +00:00
parent b5527fee26
commit 1bff6d17d5

View File

@@ -1,13 +1,14 @@
"""Sovereign Knowledge Ingester for Hermes Agent.
Uses Gemini 3.1 Pro to learn from Google Search in real-time and
persists the knowledge to Timmy's sovereign memory.
persists the knowledge to Timmy's sovereign memory (both Markdown and Symbolic).
"""
import logging
import base64
from typing import Any, Dict, List, Optional
from agent.gemini_adapter import GeminiAdapter
from agent.symbolic_memory import SymbolicMemory
from tools.gitea_client import GiteaClient
logger = logging.getLogger(__name__)
@@ -16,6 +17,7 @@ class KnowledgeIngester:
def __init__(self):
self.adapter = GeminiAdapter()
self.gitea = GiteaClient()
self.symbolic = SymbolicMemory()
def learn_about(self, topic: str) -> str:
"""Searches Google, analyzes the results, and saves the knowledge."""
@@ -43,12 +45,14 @@ Include:
knowledge_fragment = result["text"]
# 2. Persist to Timmy's Memory
# 2. Extract Symbolic Triples
self.symbolic.ingest_text(knowledge_fragment)
# 3. Persist to Timmy's Memory (Markdown)
repo = "Timmy_Foundation/timmy-config"
filename = f"memories/realtime_learning/{topic.lower().replace(' ', '_')}.md"
try:
# Check if file exists to get SHA
sha = None
try:
existing = self.gitea.get_file(repo, filename)
@@ -63,7 +67,7 @@ Include:
else:
self.gitea.create_file(repo, filename, content_b64, f"Initial knowledge on {topic}")
return f"Successfully learned about {topic} and updated Timmy's memory at {filename}"
return f"Successfully learned about {topic}. Updated Timmy's Markdown memory and Symbolic Knowledge Graph."
except Exception as e:
logger.error(f"Failed to persist knowledge: {e}")
return f"Learned about {topic}, but failed to save to memory: {e}\n\n{knowledge_fragment}"
return f"Learned about {topic}, but failed to save to Markdown memory: {e}\n\n{knowledge_fragment}"