From 023f50950129f5cd5193b1075aa6aa49fb9dc158 Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Wed, 19 Nov 2025 09:49:40 +0800 Subject: [PATCH] Fix: variable assigner issue. (#11351) ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- agent/canvas.py | 2 +- agent/component/variable_assigner.py | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/agent/canvas.py b/agent/canvas.py index 152dd945e..667e457f5 100644 --- a/agent/canvas.py +++ b/agent/canvas.py @@ -301,7 +301,7 @@ class Canvas(Graph): self.retrieval = [] self.memory = [] for k in self.globals.keys(): - if k.startswith("sys."): + if k.startswith("sys.") or k.startswith("env."): if isinstance(self.globals[k], str): self.globals[k] = "" elif isinstance(self.globals[k], int): diff --git a/agent/component/variable_assigner.py b/agent/component/variable_assigner.py index 2faecd7da..08b283343 100644 --- a/agent/component/variable_assigner.py +++ b/agent/component/variable_assigner.py @@ -47,12 +47,14 @@ class VariableAssigner(ComponentBase,ABC): return else: for item in self._param.variables: + if any([not item.get("variable"), not item.get("operator"), not item.get("parameter")]): + assert "Variable is not complete." variable=item["variable"] operator=item["operator"] parameter=item["parameter"] variable_value=self._canvas.get_variable_value(variable) new_variable=self._operate(variable_value,operator,parameter) - self._canvas.set_variable_value(variable,new_variable) + self._canvas.set_variable_value(variable, new_variable) def _operate(self,variable,operator,parameter): if operator == "overwrite": @@ -122,7 +124,8 @@ class VariableAssigner(ComponentBase,ABC): elif len(variable)!=0 and not isinstance(parameter,type(variable[0])): return "ERROR:PARAMETER_NOT_LIST_ELEMENT_TYPE" else: - return variable+parameter + variable.append(parameter) + return variable def _extend(self,variable,parameter): parameter=self._canvas.get_variable_value(parameter) @@ -135,7 +138,7 @@ class VariableAssigner(ComponentBase,ABC): elif len(variable)!=0 and len(parameter)!=0 and not isinstance(parameter[0],type(variable[0])): return "ERROR:PARAMETER_NOT_LIST_ELEMENT_TYPE" else: - return variable+parameter + return variable + parameter def _remove_first(self,variable): if len(variable)==0: @@ -153,7 +156,6 @@ class VariableAssigner(ComponentBase,ABC): else: return variable[:-1] - def is_number(self, value): if isinstance(value, bool): return False @@ -161,19 +163,19 @@ class VariableAssigner(ComponentBase,ABC): def _add(self,variable,parameter): if self.is_number(variable) and self.is_number(parameter): - return variable+parameter + return variable + parameter else: return "ERROR:VARIABLE_NOT_NUMBER or PARAMETER_NOT_NUMBER" def _subtract(self,variable,parameter): if self.is_number(variable) and self.is_number(parameter): - return variable-parameter + return variable - parameter else: return "ERROR:VARIABLE_NOT_NUMBER or PARAMETER_NOT_NUMBER" def _multiply(self,variable,parameter): if self.is_number(variable) and self.is_number(parameter): - return variable*parameter + return variable * parameter else: return "ERROR:VARIABLE_NOT_NUMBER or PARAMETER_NOT_NUMBER" @@ -184,4 +186,7 @@ class VariableAssigner(ComponentBase,ABC): else: return variable/parameter else: - return "ERROR:VARIABLE_NOT_NUMBER or PARAMETER_NOT_NUMBER" \ No newline at end of file + return "ERROR:VARIABLE_NOT_NUMBER or PARAMETER_NOT_NUMBER" + + def thoughts(self) -> str: + return "Assign variables from canvas." \ No newline at end of file