OpenBMB/ChatDev · error · ValueError
FileMemory requires at least one file_source in configuratio
Error message
FileMemory requires at least one file_source in configuration
What it means
FileMemory needs at least one configured file_source to index. Even with a valid FileMemoryConfig, an empty file_sources list leaves nothing to ingest and is rejected.
Source
Thrown at runtime/node/agent/memory/file_memory.py:40
from entity.configs.node.memory import FileMemoryConfig
logger = logging.getLogger(__name__)
class FileMemory(MemoryBase):
"""
File-based memory system that indexes and retrieves content from files/directories.
Supports multiple file types, chunking strategies, and incremental updates.
"""
def __init__(self, store: MemoryStoreConfig):
config = store.as_config(FileMemoryConfig)
if not config:
raise ValueError("FileMemory requires a file memory store configuration")
super().__init__(store)
if not config.file_sources:
raise ValueError("FileMemory requires at least one file_source in configuration")
self.file_config = config
self.file_sources: List[FileSourceConfig] = config.file_sources
self.index_path = self.file_config.index_path # Path to store the index
# Chunking configuration
self.chunk_size = 500 # Characters per chunk
self.chunk_overlap = 50 # Overlapping characters between chunks
# File metadata cache {file_path: {hash, chunks_count, ...}}
self.file_metadata: Dict[str, Dict[str, Any]] = {}
def load(self) -> None:
"""
Load existing index or build new one from file sources.
Validates index integrity and performs incremental updates if needed.
"""
if self.index_path and os.path.exists(self.index_path):View on GitHub (pinned to 4fb2db0ea9)
Solutions
- Add at least one entry under file_sources in the memory config
- If sources come from a glob/scanner, verify it matches files before constructing FileMemory
- Delay constructing FileMemory until sources are collected
Example fix
# before FileMemoryConfig(file_sources=[]) # after FileMemoryConfig(file_sources=[FileSourceConfig(path='./docs', types=['md'])])
Defensive patterns
Strategy: validation
Validate before calling
cfg = store.as_config(FileMemoryConfig)
if cfg is not None and not cfg.file_sources:
raise ConfigError('file memory requires at least one file_source') Prevention
- Verify glob/manifest yields sources before config
- Lint configs for empty file_sources
When it happens
Trigger: FileMemoryConfig(file_sources=[]) or omitting the file_sources key (defaulting to empty) when constructing FileMemory.
Common situations: Dynamically building file_sources from a glob/manifest that matched nothing; forgetting the field in YAML; intending to add sources later but constructing eagerly.
Related errors
- BlackboardMemory requires a blackboard memory store configur
- FileMemory requires a file memory store configuration
- Mem0Memory requires a Mem0 memory store configuration
- SimpleMemory requires a simple memory store configuration
- memories must be a list
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/be1f5dbb3b7fc550.
Report an issue: GitHub.