iflytek/astron-agent · error · ValueError
Node has no ref node info
Error message
Node {dep_node_id} has no ref node info What it means
Raised by BaseNode._is_valid_stream_dependency when determining whether a dependency template unit can stream its output to msg/end nodes: for node types other than LLM/AGENT, the template unit must carry ref_node_info identifying the referenced node and variable. Missing ref_node_info is an invalid internal reference configuration.
Solutions
- Re-open and re-save the workflow in the editor so ref_node_info is regenerated for each template unit
- Fix the DSL so every referenced template unit includes ref_node_info (node id + ref var name)
- Remove the broken dependency/variable reference from the msg/end node configuration
- Validate the workflow definition against the current schema version before running
Example fix
// before
{"templateUnit": {"type": "knowledge_pro"}}
// after
{"templateUnit": {"type": "knowledge_pro", "refNodeInfo": {"nodeId": "node-1", "refVarName": "answer"}}} Defensive patterns
Strategy: validation
Validate before calling
def stream_deps_have_ref_info(template_units: list[dict]) -> bool:
return all(
u.get("refNodeInfo") or u.get("type") in ("llm", "agent")
for u in template_units
) Try / catch
try:
await node.msg_or_end_node_stream_output(...)
except ValueError as e:
if "has no ref node info" in str(e):
log.error("broken dependency reference: %s", e)
return None
raise Prevention
- Edit dependencies in the workflow editor rather than hand-editing DSL
- Re-export workflows when migrating between engine versions
- Clean up dangling references when deleting nodes
When it happens
Trigger: A workflow dependency edge references a node's output but its template_unit lacks ref_node_info — e.g. hand-edited or older-format DSL where the reference metadata was not filled in, or a knowledge/flow node reference missing its ref variable.
Common situations: Importing workflows exported from other versions with different reference metadata shape; deleting/renaming nodes in the DSL editor leaving dangling references; programmatic workflow construction that skips populating ref_node_info.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
AI-assisted analysis of iflytek/astron-agent@5e758547a8 (2026-09-12).
Data as JSON: /api/errors/2693f5ec5fbb8c47.
Report an issue: GitHub.
Appendix: source
Thrown at core/workflow/engine/nodes/base_node.py:544
"""
Check if a dependency node supports streaming output.
This method determines whether a dependent node can provide streaming
output based on its node type and configuration.
:param dep_node_id: ID of the dependent node
:param template_unit: Template unit containing variable information
:param variable_pool: Pool containing system parameters and node configurations
:return: True if the dependency supports streaming, False otherwise
"""
node_type = dep_node_id.split(":")[0]
if node_type in [NodeType.LLM.value, NodeType.AGENT.value]:
# LLM and Agent nodes always support streaming
return True
if not template_unit.ref_node_info:
raise ValueError(f"Node {dep_node_id} has no ref node info")
if node_type == NodeType.KNOWLEDGE_PRO.value:
# Knowledge Pro nodes support streaming except for result variables
return not template_unit.ref_node_info.ref_var_name.startswith("result")
if node_type == NodeType.FLOW.value:
# Flow nodes support streaming only in prompt mode
flow_output_mode = variable_pool.system_params.get(
ParamKey.FlowOutputMode, node_id=dep_node_id
)
return flow_output_mode == EndNodeOutputModeEnum.PROMPT_MODE.value
return False
async def _process_llm_output_stream(
self,
dep_node_id: str,
variable_pool: VariablePool,View on GitHub (pinned to 5e758547a8)