Merge #107 into develop_web from feature/20251219_zy

feat(web): memory-read、memory-write、iteration、assigner、tool node

* feature/20251219_zy: (4 commits)
  feat(web): add question classifier node
  feat(web): memory insight
  feat(web): add loop node; add chat variable;
  feat(web): memory-read、memory-write、iteration、assigner、tool node

Signed-off-by: zhaoying <zhaoying@redbearai.com>
Merged-by: zhaoying <zhaoying@redbearai.com>

CR-link: https://codeup.aliyun.com/redbearai/python/redbear-mem-open/change/107
This commit is contained in:
赵莹
2026-01-05 16:41:11 +08:00
35 changed files with 2443 additions and 319 deletions

View File

@@ -1117,7 +1117,11 @@ export const en = {
memoryContent: 'Memory Content',
created_at: 'Created At',
memoryWindow: "{{name}}'s Window of Memory"
memoryWindow: "{{name}}'s Window of Memory",
memory_insight: 'Overall Overview',
key_findings: 'Key Findings',
behavior_pattern: 'Behavior Pattern',
growth_trajectory: 'Growth Trajectory',
},
space: {
createSpace: 'Create Space',
@@ -1580,16 +1584,22 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
'parameter-extractor': 'Parameter Extraction',
flowControl: 'Flow Control',
'if-else': 'Conditional Branch',
'question-classifier': 'Question Classifier',
iteration: 'Iteration',
loop: 'Loop',
'cycle-start': '',
break: 'Break Loop',
assigner: 'Variable Assignment',
parallel: 'Parallel Execution',
'var-aggregator': 'Variable Aggregator',
externalInteraction: 'External Interaction',
"http-request": 'HTTP Request',
tools: 'Tools',
tool: 'Tools',
code_execution: 'Code Execution',
"jinja-render": 'Template Rendering',
cognitiveUpgrading: 'Cognitive Upgrading (Innovation)',
'memory-read': 'Memory Retrieval',
'memory-write': 'Memory Storage',
task_planning: 'Task Planning',
reasoning_control: 'Reasoning Control',
self_reflection: 'Self Reflection',
@@ -1607,9 +1617,11 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
clickToConfigure: 'Click to configure node parameters',
nodeProperties: 'Node Properties',
empty: "Emmm... The box is empty, nothing here~",
empty: "EmmmThe box is empty, there's nothing here",
nodeName: 'Node Name',
addvariable: 'Chat Variables',
addChatVariable: 'Add Chat Variable',
editChatVariable: 'Edit Chat Variable',
config: {
llm: {
@@ -1631,7 +1643,7 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
editVariable: 'Edit Variable',
variableType: 'Variable Type',
variableName: 'Variable Name',
invalidVariableName: 'Variable name must start with a letter and contain only letters, numbers, and underscores',
invalidVariableName: 'Variable name can only start with English letters and contain English letters, numbers, and underscores',
description: 'Display Name',
default: 'Default Value',
required: 'Required',
@@ -1658,10 +1670,11 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
editParam: 'Edit Extract Parameter',
name: 'Name',
invalidParamName: 'Parameter name must start with a letter and contain only letters, numbers, and underscores',
invalidParamName: 'Extract parameter name can only start with English letters and contain English letters, numbers, and underscores',
type: 'Type',
desc: 'Description',
required: 'Required',
default: 'Default Value',
'string': 'String',
'number': 'Number',
@@ -1673,7 +1686,7 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
},
'var-aggregator': {
group: 'Aggregation Group',
invalidVariableName: 'Variable name must start with a letter and contain only letters, numbers, and underscores',
invalidVariableName: 'Variable name can only start with English letters and contain English letters, numbers, and underscores',
addGroup: 'Add Group',
variable: 'Variable Assignment'
},
@@ -1691,7 +1704,76 @@ Memory Bear: After the rebellion, regional warlordism intensified for several re
"gt": '>',
"ge": '>=',
else_desc: 'Used to define the logic that should be executed when the if condition is not met.'
}
},
'http-request': {
auth: 'Authentication',
authType: 'Auth Type',
apiKey: 'API Key',
basic: 'Basic',
bearer: 'Bearer',
custom: 'Custom',
header: 'Header',
api_key: 'API Key',
timeouts: 'Timeout Settings',
"connect_timeout": 'Connection Timeout (seconds)',
"read_timeout": 'Read Timeout (seconds)',
"write_timeout": 'Write Timeout (seconds)',
retry: 'Retry on Failure',
error_handle: 'Error Handling',
verify_ssl: 'Verify SSL Certificate',
none: 'None',
default: 'Default Value',
branch: 'Error Branch',
status_code: 'Status Code',
max_attempts: 'Max Retry Attempts',
retry_interval: 'Retry Interval',
},
'jinja-render': {
template: 'Code',
mapping: 'Input Variables'
},
'question-classifier': {
model_id: 'Model',
input_variable: 'Input Variable',
categories: 'Categories',
user_supplement_prompt: 'Instruction',
class_name: 'Classification',
addClassName: 'Add Classification'
},
loop: {
cycle_vars: 'Loop Variables',
condition: 'Loop Termination Condition',
},
assigner: {
assignments: 'Variables',
cover: 'Overwrite',
assign: 'Set',
clear: 'Clear'
},
iteration: {
input: 'Input Variable',
output: 'Output Variable',
parallel: 'Parallel Mode',
parallel_count: 'Max Parallelism',
flatten: 'Flatten Output',
},
tool: {
tool_id: 'Tool',
},
'memory-read': {
message: 'Message',
config_id: 'Memory Configuration',
search_switch: 'Search Mode',
},
'memory-write': {
message: 'Message',
config_id: 'Memory Configuration',
search_switch: 'Search Mode',
},
name: 'Key',
type: 'Type',
value: 'Value',
addCase: 'Add Condition',
},
clear: 'Clear',

View File

@@ -1198,7 +1198,11 @@ export const zh = {
updated_at: '最后更新时间',
fullScreen: '全屏',
memoryWindow: "{{name}}的记忆之窗"
memoryWindow: "{{name}}的记忆之窗",
memory_insight: '总体概述',
key_findings: '关键发现',
behavior_pattern: '行为模式',
growth_trajectory: '成长轨迹',
},
space: {
createSpace: '创建空间',
@@ -1680,16 +1684,22 @@ export const zh = {
'parameter-extractor': '参数提取',
flowControl: '流程控制',
'if-else': '条件分支',
'question-classifier': '问题分类器',
iteration: '迭代 (Iteration)',
loop: '循环 (Loop)',
'cycle-start': '',
break: '退出循环',
assigner: '变量赋值',
parallel: '并行执行',
'var-aggregator': '变量聚合器',
externalInteraction: '外部交互',
"http-request": 'HTTP请求',
tools: '工具 (Tools)',
tool: '工具 (Tool)',
code_execution: '代码执行',
"jinja-render": '模板渲染',
cognitiveUpgrading: '认知升级(创新)',
'memory-read': '记忆提取',
'memory-write': '记忆储存',
task_planning: '任务规划',
reasoning_control: '推理控制',
self_reflection: '自我反思',
@@ -1709,7 +1719,9 @@ export const zh = {
nodeProperties: '节点属性',
empty: "Emmm…盒子是空的这里什么都没有",
nodeName: '节点名称',
addvariable: '会话变量',
addChatVariable: '添加会话变量',
editChatVariable: '编辑会话变量',
config: {
llm: {
@@ -1762,6 +1774,7 @@ export const zh = {
type: '类型',
desc: '描述',
required: '必填',
default: '默认值',
'string': 'String',
'number': 'Number',
@@ -1819,9 +1832,48 @@ export const zh = {
template: '代码',
mapping: '输入变量'
},
'question-classifier': {
model_id: '模型',
input_variable: '输入变量',
categories: '分类',
user_supplement_prompt: '指令',
class_name: '分类',
addClassName: '添加分类'
},
loop: {
cycle_vars: '循环变量',
condition: '循环终止条件',
},
assigner: {
assignments: '变量',
cover: '覆盖',
assign: '设置',
clear: '清空'
},
iteration: {
input: '输入变量',
output: '输出变量',
parallel: '并行模式',
parallel_count: '最大并行度',
flatten: '扁平化输出',
},
tool: {
tool_id: '工具',
},
'memory-read': {
message: '消息',
config_id: '记忆配置',
search_switch: '检索模式',
},
'memory-write': {
message: '消息',
config_id: '记忆配置',
search_switch: '检索模式',
},
name: '键',
type: '类型',
value: '值',
addCase: '添加条件',
},
clear: '清空',