iflytek/astron-agent · error · CustomException
CodeEnum.ENG_NODE_PROTOCOL_VALIDATE_ERROR
CodeEnum.ENG_NODE_PROTOCOL_VALIDATE_ERROR
Error message
Variable aggregation node requires one output
What it means
A variable aggregation node must declare exactly one output identifier; the node's async_execute reads output_identifier and takes the first element. If output_identifier is empty/None, it raises CustomException with CodeEnum.ENG_NODE_PROTOCOL_VALIDATE_ERROR because there is nowhere to publish the aggregated result.
Solutions
- Configure exactly one output variable on the variable aggregation node in the workflow editor
- Re-save the node definition ensuring output_identifier is populated
- Check the workflow JSON for an empty 'output'/'output_identifier' field and fill it
- Recreate the node if its saved schema is corrupt
Example fix
# before
{"type": "variable-aggregation", "output_identifier": []}
# after
{"type": "variable-aggregation", "output_identifier": ["aggregated"]} Defensive patterns
Strategy: validation
Validate before calling
assert node_config.get("output_identifier"), "variable aggregation node needs exactly one output" Try / catch
try:
result = await node.async_execute(...)
except CustomException as e:
if e.err_code == CodeEnum.ENG_NODE_PROTOCOL_VALIDATE_ERROR:
logger.error(f"node {node.node_id} misconfigured: {e.err_msg}")
raise Prevention
- Always configure the output variable when adding an aggregation node
- Validate workflow JSON before deployment
- Preserve the output field when importing/exporting workflows
- Add schema validation for node definitions on save
When it happens
Trigger: Executing a variable aggregation node whose output was never configured in the node definition (empty output list), e.g. a node created programmatically or a form saved without selecting an output variable.
Common situations: Workflow imported/edited without the output field filled; node schema changed between versions dropping the output; manual JSON authoring of the workflow omitted outputs.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
AI-assisted analysis of iflytek/astron-agent@5e758547a8 (2026-09-12).
Data as JSON: /api/errors/1720529d54f18a7e.
Report an issue: GitHub.
Appendix: source
Thrown at core/workflow/engine/nodes/variable_aggregation/variable_aggregation_node.py:135
validator = type_validators.get(schema_type)
if validator and not validator(converted_value):
raise CustomException(
CodeEnum.VARIABLE_NODE_EXECUTION_ERROR,
err_msg=f"Variable aggregation fallback value type is invalid for {schema_type}",
)
return converted_value
async def async_execute(
self,
variable_pool: VariablePool,
span: Span,
event_log_node_trace: NodeLog | None = None,
**kwargs: Any,
) -> NodeRunResult:
try:
if not self.output_identifier:
raise CustomException(
CodeEnum.ENG_NODE_PROTOCOL_VALIDATE_ERROR,
err_msg="Variable aggregation node requires one output",
)
output_name = self.output_identifier[0]
output_schema = variable_pool.get_output_schema(self.node_id, output_name)
# Get all input values in order
inputs = {
input_key: variable_pool.get_variable(
node_id=self.node_id,
key_name=input_key,
span=span,
)
for input_key in self.input_identifier
}
# Find first non-empty value in input order (the core functionality)View on GitHub (pinned to 5e758547a8)