deerflow2/backend/packages/harness/deerflow/config/thread_memory_config.py
2026-05-08 10:19:09 +08:00

51 lines
1.8 KiB
Python

"""Configuration for per-thread memory mechanism."""
from pydantic import BaseModel, Field
class ThreadMemorySqliteConfig(BaseModel):
path: str = Field(default="thread_memory.db", description="SQLite database file path")
class ThreadMemoryMysqlConfig(BaseModel):
host: str = Field(default="localhost")
port: int = Field(default=3306)
user: str = Field(default="root")
password: str = Field(default="")
database: str = Field(default="deerflow")
class ThreadMemoryDatabaseConfig(BaseModel):
type: str = Field(default="sqlite", description="Database type: sqlite or mysql")
sqlite: ThreadMemorySqliteConfig = Field(default_factory=ThreadMemorySqliteConfig)
mysql: ThreadMemoryMysqlConfig = Field(default_factory=ThreadMemoryMysqlConfig)
class ThreadMemoryConfig(BaseModel):
enabled: bool = Field(default=True)
debounce_seconds: int = Field(default=30, ge=1, le=300)
model_name: str | None = Field(default=None)
max_facts: int = Field(default=100, ge=10, le=500)
fact_confidence_threshold: float = Field(default=0.7, ge=0.0, le=1.0)
injection_enabled: bool = Field(default=True)
max_injection_tokens: int = Field(default=2000, ge=100, le=8000)
bootstrap_from_global: bool = Field(default=False)
database: ThreadMemoryDatabaseConfig = Field(default_factory=ThreadMemoryDatabaseConfig)
_thread_memory_config: ThreadMemoryConfig = ThreadMemoryConfig()
def get_thread_memory_config() -> ThreadMemoryConfig:
return _thread_memory_config
def set_thread_memory_config(config: ThreadMemoryConfig) -> None:
global _thread_memory_config
_thread_memory_config = config
def load_thread_memory_config_from_dict(config_dict: dict) -> None:
global _thread_memory_config
_thread_memory_config = ThreadMemoryConfig(**config_dict)