OpenBMB/ChatDev · error · ConfigError
node configuration missing
Error message
node configuration missing
What it means
NodeConfig.validate raises this ConfigError when self.config is falsy, delegating to the node type's own validate() afterwards. Like the memory-store analogue, from_dict normally guarantees a config, so this fires on programmatically constructed or mutated node objects.
Source
Thrown at entity/configs/node/node.py:298
removed_keep = 0
for message in self.input:
is_keep = message.keep
if is_keep and drop_keep:
removed_keep += 1
continue
if not is_keep and drop_non_keep:
removed_non_keep += 1
continue
remaining.append(message)
if removed_non_keep or removed_keep:
self.input = remaining
return removed_non_keep, removed_keep
def validate(self) -> None:
if not self.config:
raise ConfigError("node configuration missing", extend_path(self.path, "config"))
if hasattr(self.config, "validate"):
self.config.validate()
@property
def node_type(self) -> str:
return self.type
@property
def model_name(self) -> Optional[str]:
agent = self.as_config(AgentConfig)
if not agent:
return None
return agent.name
@property
def role(self) -> Optional[str]:
agent = self.as_config(AgentConfig)
if agent:View on GitHub (pinned to 4fb2db0ea9)
Solutions
- Build node configs via NodeConfig.from_dict so config is required and validated
- Pass a valid config object when constructing manually
- Check node.config is not None before calling validate
Example fix
# before
node = NodeConfig(id='n1', type='agent', config=None)
node.validate()
# after
node = NodeConfig.from_dict({'id':'n1','type':'agent','config':{}}, path='nodes[0]')
node.validate() Defensive patterns
Strategy: type-guard
Type guard
def node_is_valid(node) -> bool:
return bool(getattr(node, 'config', None)) Try / catch
try:
node.validate()
except ConfigError:
# rebuild via from_dict with a config block
... Prevention
- Construct nodes via from_dict only
- Never null out node.config before validate
When it happens
Trigger: Creating NodeConfig directly with config=None (e.g. in tests or after a partial copy) and calling validate(), which from_dict also invokes.
Common situations: Direct constructor use in tests/mocks; code that clears config before validation; refactors bypassing from_dict.
Related errors
- memory store payload missing
- unsupported node type '{node_type}'
- node config block required
- model.name must be a non-empty string
- model.input_mode must be 'prompt' or 'messages'
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/082f682d87ad0182.
Report an issue: GitHub.