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

  1. Add at least one entry under file_sources in the memory config
  2. If sources come from a glob/scanner, verify it matches files before constructing FileMemory
  3. 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

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


AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27). Data as JSON: /api/errors/be1f5dbb3b7fc550. Report an issue: GitHub.