OpenBMB/ChatDev · error · ValueError
BlackboardMemory requires a blackboard memory store configur
Error message
BlackboardMemory requires a blackboard memory store configuration
What it means
BlackboardMemory requires its MemoryStoreConfig to carry a BlackboardMemoryConfig section. store.as_config(BlackboardMemoryConfig) returning None means the store config is for a different memory type (or missing the blackboard section), so the constructor aborts.
Source
Thrown at runtime/node/agent/memory/blackboard_memory.py:25
from typing import List
from entity.configs import MemoryStoreConfig
from entity.configs.node.memory import BlackboardMemoryConfig
from runtime.node.agent.memory.memory_base import (
MemoryBase,
MemoryContentSnapshot,
MemoryItem,
MemoryWritePayload,
)
class BlackboardMemory(MemoryBase):
"""Simple append-only memory: save raw outputs, retrieve by recency."""
def __init__(self, store: MemoryStoreConfig):
config = store.as_config(BlackboardMemoryConfig)
if not config:
raise ValueError("BlackboardMemory requires a blackboard memory store configuration")
super().__init__(store)
self.config = config
self.memory_path = config.memory_path
self.max_items = config.max_items
# -------- Persistence --------
def load(self) -> None:
if not self.memory_path or not os.path.exists(self.memory_path):
self.contents = []
return
try:
with open(self.memory_path, "r", encoding="utf-8") as file:
data = json.load(file)
contents: List[MemoryItem] = []
for raw in data:
try:
contents.append(MemoryItem.from_dict(raw))View on GitHub (pinned to 4fb2db0ea9)
Solutions
- Set the memory store's type to 'blackboard' in the agent configuration
- Verify create_memory(store) is being used rather than instantiating BlackboardMemory directly with a foreign config
- Check for typos in the store type field
Example fix
# before store = MemoryStoreConfig(type='simple', ...) mem = BlackboardMemory(store) # after store = MemoryStoreConfig(type='blackboard', ...) mem = BlackboardMemory(store) # or use create_memory(store)
Defensive patterns
Strategy: validation
Validate before calling
cfg = store.as_config(BlackboardMemoryConfig)
if cfg is None:
raise ConfigError('store type must be blackboard for BlackboardMemory')
mem = BlackboardMemory(store) Prevention
- Use create_memory for type-driven dispatch
- Keep memory.type and class in sync in configs
When it happens
Trigger: Constructing BlackboardMemory with a MemoryStoreConfig whose type/name is not 'blackboard' (e.g. a 'simple' or 'file' store config), typically via create_memory or a factory dispatching on the store's type field.
Common situations: YAML/JSON agent config where memory.type says 'simple' but code instantiates BlackboardMemory; typos in the memory store type string; copy-pasting a memory block from another agent template.
Related errors
- FileMemory requires a file memory store configuration
- Mem0Memory requires a Mem0 memory store configuration
- SimpleMemory requires a simple memory store configuration
- FileMemory requires at least one file_source in configuratio
- Entry '{name}' is not a MemoryStoreRegistration
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/49cdcf60f6d6e1de.
Report an issue: GitHub.