token2everything 64bb16a884 feat: preserve workflow session on browser refresh with reconnect and message replay
- Decouple WebSocket connection from session lifecycle: workflows continue running after disconnect
- Message buffering with ring buffer (max 1000) for chat history replay on reconnect
- Session garbage collection: 24-hour TTL for terminal sessions via background asyncio task
- Multi-tab support: last tab wins, old WebSocket closed on new connection for same session
- Cancel now sends explicit WebSocket message instead of relying on disconnect detection
- Replace hardcoded API keys and BASE_URL with ${API_KEY}/${BASE_URL} placeholders in yaml configs
2026-05-26 19:12:51 +08:00

508 lines
23 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"settings": {
"title": "设置",
"auto_show_advanced": "自动显示高级设置",
"auto_show_advanced_desc": "在配置表单中自动展开“高级设置”。",
"auto_expand_messages": "自动展开消息",
"auto_expand_messages_desc": "在聊天视图中自动展开消息内容。",
"enable_help_tooltips": "启用帮助提示",
"enable_help_tooltips_desc": "在整个工作流界面中显示上下文帮助提示。",
"language": "语言 / Language",
"language_desc": "选择您的首选语言。"
},
"common": {
"cancel": "取消",
"save": "保存",
"submit": "提交",
"download": "下载",
"retry": "重试",
"search": "搜索"
},
"nav": {
"home": "主页",
"tutorial": "教程",
"workflows": "工作流",
"launch": "启动",
"laboratory": "实验室"
},
"tutorial": {
"copy": "复制",
"copied": "已复制",
"failed_to_copy": "复制代码失败:",
"failed_to_fetch": "获取教程 markdown 失败",
"failed_to_load": "加载教程失败:",
"zh": "中文",
"en": "English"
},
"home": {
"title": "ChatDev 2.0",
"highlight": "DevAll",
"introduction": "ChatDev 2.0 - DevAll 是一个用于开发万物的零代码多智能体平台,提供用于设计、可视化和运行智能体工作流的工作区。",
"get_started": "开始使用 →"
},
"workbench": {
"select_workflow": "选择工作流",
"choose_workflow": "从列表中选择要查看或编辑的工作流。"
},
"workflow_list": {
"create": "创建工作流",
"loading": "加载工作流中...",
"no_files": "未找到工作流文件"
},
"workflow_view": {
"yaml_parse_error": "YAML 解析错误:",
"loading_yaml": "正在加载 YAML 内容...",
"create_node": "创建节点",
"copy_node": "复制节点",
"delete_node": "删除节点",
"delete_edge": "删除连线",
"workflow_graph": "工作流图",
"yaml_configuration": "YAML 配置",
"configure_graph": "配置图",
"launch": "启动",
"rename_workflow": "重命名工作流",
"copy_workflow": "复制工作流",
"manage_variables": "管理变量",
"manage_memories": "管理记忆",
"create_edge": "创建连线",
"enter_new_name": "输入新工作流名称",
"workflow_name": "工作流名称"
},
"batch_run": {
"title": "实验室",
"batch_settings": "批量设置",
"logs_placeholder": "批量处理日志将显示在此处...",
"rows_completed": "完成行数",
"total_time": "总耗时",
"success_rate": "成功率",
"current_status": "当前状态",
"overall_progress": "总体进度",
"workflow_selection": "选择工作流",
"loading": "加载中...",
"select_yaml": "选择 YAML 文件...",
"no_results": "无结果",
"input_file_selection": "选择输入文件",
"select_input_file": "选择输入文件...",
"input_file_format": "输入文件格式",
"view": "视图",
"dashboard": "仪表盘",
"terminal": "终端",
"max_parallel": "最大并发数",
"max_parallel_desc": "并行启动工作流的最大数量",
"log_level": "日志级别",
"log_level_desc": "日志详细级别",
"download_logs": "下载日志",
"status_completed": "批次已完成",
"status_cancelled": "批次已取消",
"status_in_progress": "进行中",
"status_idle": "空闲",
"status_waiting_workflow": "等待选择工作流...",
"status_waiting_file": "等待选择输入文件...",
"manual_intro": "输入文件应至少包含 task任务和/或 attachments附件列",
"manual_id": "必须唯一,若未找到对应列则自动生成",
"manual_task": "存储用户输入",
"manual_vars": "包含全局变量键值对的 JSON 对象",
"manual_attachments": "包含工作流附件绝对文件路径的 JSON 数组",
"launch": "启动",
"relaunch": "重新启动"
},
"launch": {
"title": "启动",
"collapse_chat": "折叠聊天",
"expand_chat": "展开聊天",
"loading_image": "加载图片...",
"preparing": "准备中...",
"upload_file": "上传文件",
"uploading": "上传中...",
"no_files_uploaded": "未上传文件",
"drop_files": "将文件拖放到此处",
"enter_prompt": "请输入任务提示词...",
"status": "状态",
"view": "视图",
"chat": "聊天",
"graph": "图",
"send": "发送",
"relaunch": "重新启动",
"download_logs": "下载日志",
"settings": "设置",
"download": "下载",
"workflow_selection": "工作流选择",
"loading": "加载中...",
"select_yaml": "选择 YAML 文件...",
"no_results": "无结果",
"status_waiting_workflow": "等待选择工作流...",
"status_connecting": "连接中...",
"status_waiting_launch": "等待启动...",
"status_running": "运行中...",
"status_completed": "已完成",
"status_cancelled": "已取消",
"status_failed": "失败",
"status_error": "错误",
"status_disconnected": "已断开连接",
"status_waiting_input": "等待输入...",
"status_launching": "启动中...",
"status_connection_error": "连接错误",
"launch_button": "启动",
"alert_session_not_ready": "会话尚未就绪。请等待连接。",
"alert_failed_upload": "文件上传失败",
"alert_file_upload_failed": "文件上传失败,请重试。",
"alert_recording_error": "录制发生错误",
"alert_mic_access_failed": "麦克风访问失败。请检查权限。",
"alert_recording_upload_failed": "录制上传失败,请重试。",
"alert_choose_workflow": "请选择一个工作流文件!",
"alert_ws_error": "WebSocket 连接错误!",
"alert_missing_session": "服务器缺少会话信息。",
"alert_enter_prompt": "请输入任务提示或上传文件。",
"alert_ws_not_ready": "WebSocket 连接尚未就绪。",
"alert_failed_launch": "启动工作流失败",
"unknown_error": "未知错误",
"alert_failed_execute": "调用 execute API 失败",
"alert_download_failed": "下载文件失败,请重试。",
"alert_download_logs_failed": "下载失败,请稍后重试",
"no_initial_instructions": "未提供初始说明",
"workflow_cancelled": "工作流已取消",
"reconnected": "已重新连接到现有会话"
},
"components": {
"workflow_edge": {
"includes": "包含:{values}",
"excludes": "排除:{values}",
"regex": "正则表达式:{values}"
},
"start_node": {
"title": "起始节点"
},
"rich_tooltip": {
"learn_more": "了解更多 →"
},
"inline_config": {
"advanced_settings": "高级设置"
},
"collapsible_message": {
"copied": "已复制!",
"copy_original": "复制原始内容",
"show_more": "显示更多",
"show_less": "显示更少"
}
},
"form_generator": {
"advanced_settings": "高级设置",
"copy_node": "复制节点",
"submit": "提交",
"key": "键",
"value": "值",
"cancel": "取消",
"confirm": "确认",
"edit_entry": "编辑条目",
"add_entry": "添加条目",
"delete_node": "删除节点",
"delete_edge": "删除边",
"delete": "删除",
"field_required": "\"{field}\" 为必填项",
"failed_to_load_yaml": "加载现有工作流 YAML 失败",
"graph_id_required": "保存工作流需要 Graph ID",
"no_workflow_context": "删除时无可用工作流上下文",
"node_id_required": "删除时需要 Node ID",
"failed_to_save": "保存工作流失败",
"failed_to_delete": "删除条目失败",
"failed_to_generate_yaml": "生成 YAML 输出失败",
"failed_to_submit": "提交表单失败,错误:\n",
"failed_to_load_child": "加载子 Schema 失败,错误:\n",
"key_required": "键为必填项",
"value_required": "值为必填项",
"invalid_field_context": "字段上下文无效",
"key_exists": "键已存在",
"confirm_delete": "确定要删除此 {entity} 吗?",
"entry_configured_single": "{label}: 配置了 1 个条目",
"entry_configured_multiple": "{label}: 配置了 {count} 个条目",
"configured": "{label}: 已配置",
"invalid_configuration": "配置无效",
"error_in": "{key} 中的错误:{error}"
},
"dynamic_form_field": {
"type_to_filter": "输入以筛选选项...",
"none": "无",
"no_options_found": "未找到选项",
"add_key_value": "添加键值对",
"add_entry": "添加条目",
"select_type_and_configure": "请选择类型并进行配置",
"clear_configuration": "清除配置",
"delete_child": "删除子项",
"delete_variable": "删除变量",
"delete_item": "删除项目",
"edit_child": "编辑 {child}",
"configure_child": "配置 {child}",
"configure": "配置"
},
"schema": {
"agent_role": "Agent 角色",
"model": "模型",
"temperature": "温度",
"max_tokens": "最大 Token 数",
"top_p": "Top P",
"presence_penalty": "存在惩罚",
"frequency_penalty": "频率惩罚",
"prompt": "提示词",
"description": "描述",
"graph": "图谱",
"nodes": "节点",
"edges": "边",
"start": "开始",
"end": "结束",
"vars": "变量",
"memory": "记忆",
"id": "ID",
"name": "名称",
"type": "类型",
"config": "配置",
"condition": "条件",
"trigger": "触发器",
"from": "来源",
"to": "目标",
"version": "版本",
"is_majority_voting": "多数投票",
"log_level": "日志级别",
"context_window": "上下文窗口",
"provider": "提供商",
"base_url": "基础 URL",
"api_key": "API 密钥",
"params": "参数",
"tooling": "工具集",
"tools": "工具",
"auto_fill": "自动填充",
"timeout": "超时时间",
"server": "服务器",
"headers": "请求头",
"command": "命令",
"args": "参数",
"cwd": "当前工作目录 (CWD)",
"env": "环境变量",
"inherit_env": "继承环境",
"startup_timeout": "启动超时时间",
"wait_for_log": "等待日志",
"thinking": "思考",
"reflection_prompt": "反思提示词",
"memories": "记忆",
"retrieve_stage": "检索阶段",
"top_k": "Top K",
"similarity_threshold": "相似度阈值",
"read": "读取",
"write": "写入",
"retry": "重试",
"enabled": "启用",
"max_attempts": "最大尝试次数",
"min_wait_seconds": "最小等待秒数",
"max_wait_seconds": "最大等待秒数",
"retry_on_status_codes": "基于状态码的重试",
"retry_on_exception_types": "基于异常类型的重试",
"non_retry_exception_types": "非重试异常类型",
"retry_on_error_substrings": "基于错误子串的重试",
"initial_instruction": "初始指令",
"organization": "组织"
},
"schema_desc": {
"agent_role": "定义智能体的系统级角色、身份或行为准则。",
"model": "指定要使用的底层大语言模型配置 (例如 gpt-4, gpt-3.5-turbo)。",
"temperature": "控制生成结果的随机性或创造性。较高的值产生更多随机输出。",
"max_tokens": "单次响应生成的最大 Token 数量限制。",
"top_p": "考虑标记概率质量的累计分布。推荐在改变温度范围时保持不变。",
"presence_penalty": "基于新词是否出现在目前生成的文本中来惩罚它们,增加谈论新话题的可能性。",
"frequency_penalty": "基于新词在目前生成的文本中的频率来惩罚它们,减少模型原样重复相同内容的可能性。",
"prompt": "在此输入针对该节点执行任务的特定提示词或详细指令。",
"description": "以人类可读的文字详细说明当前工作流、节点或配置的功能目标。",
"graph": "整个工作网状图的底层定义和配置集合。",
"nodes": "此工作流包含的一系列处理节点单元。",
"edges": "定义节点之间如何连接和按顺序传递数据的连线集合。",
"start": "指定哪些节点ID作为当前工作流或子图的起始点。",
"end": "指定哪些节点ID作为终点。用于收集图表的最终输出。",
"vars": "设定可被工作流节点引用的全局变量池。",
"memory": "配置能提供给模型作为长期挂载记忆的外部存储配置。",
"id": "用于唯一标识和引用的标识符。只能包含字母、数字、下划线或连字符,且不能有空格。",
"name": "用于展示用的简短名称标签。",
"type": "定义当前节点或组件的运行类型机制。",
"config": "当前节点的详细参数设置池。",
"condition": "设定只有当本字段运行结果为真时,数据才能顺着当前条件连线流向下一节点。",
"trigger": "指定连线是否可以触发激活下游节点的执行。如果不触发,则仅作为数据通道。",
"from": "连线的起点数据来源。",
"to": "连线的终点数据接收方。",
"version": "当前配置结构的版本号标记。",
"is_majority_voting": "决定此工作图是否采用多分支并发执行并在最终输出前做多数票决机制。",
"log_level": "选择运行时输出日志的详细信息程度。",
"context_window": "限制模型在一次处理中所能读取的最大历史上下文标记数。",
"provider": "指定大语言模型的 API 提供商 (如 OpenAI, Anthropic等)。",
"base_url": "如果使用了定制化或本地的代理转发,可修改覆盖模型默认基础 URL。",
"api_key": "用于验证调用该模型服务的 API 密钥授权码。",
"params": "附加传输给底层模型服务的可选任意参数字典。",
"tooling": "启用并定义允许模型主动调用的外部函数或工具列表。",
"tools": "列出可被使用的可用外部工具。",
"auto_fill": "开启自动填充功能时,系统会自动补全必填参数片段。",
"timeout": "在此节点调用服务等待超时的最大容忍时间。",
"server": "网络服务的目标服务器地址等相关参数。",
"headers": "发送网络请求时需要附带的自定义表头信息。",
"command": "需要在系统终端中执行的具体命令。",
"args": "启动该系统命令时额外传入的各组参数。",
"cwd": "设定执行代码或命令时的运行目录,所有相对路径将默认此目录。",
"env": "可覆盖并配置的专属系统环境变量。",
"inherit_env": "是否继承当前宿主系统的全部环境变量参数。",
"startup_timeout": "设定等待命令初始化或服务完全启动的最大容限时长。",
"wait_for_log": "通过监听并等待指定的日志行特征来确认前置服务就绪。",
"thinking": "开启让模型展现逐步自我反省与内部思考过程的功能。",
"reflection_prompt": "覆盖或增加用作引导模型自我复审与反思纠错的特殊配置。",
"memories": "链接到外部数据记忆存储区域,支持长期长效的查询能力。",
"retrieve_stage": "指示检索引擎所应用的检索环节阶段(如预加载或是被动查询等)。",
"top_k": "在检索相似上下文片段时最多返回的文档区块数量。",
"similarity_threshold": "指定被接受且纳入考虑范围内的匹配数据最低相似度分级。",
"read": "开启或控制系统读取外部缓存能力设定。",
"write": "开启控制系统向外部持久层写回数据的设定。",
"retry": "统一设定应对临时性错误的重试配置。",
"enabled": "指明当前特性或节点功能是否处于激活状态。",
"max_attempts": "限定尝试失败的最大可重试次数上限。",
"min_wait_seconds": "配置失败发起重试前最少退避时长(秒)。",
"max_wait_seconds": "配置重试间隔时长递增时的最大等待时长(秒)。",
"retry_on_status_codes": "只遇到特定网络状态码时才激活重试。",
"retry_on_exception_types": "遇指定代码异常类型时才重试。",
"non_retry_exception_types": "设定不进行徒劳重试的限制类型。",
"retry_on_error_substrings": "利用关键字正则匹配错误触发重试。",
"initial_instruction": "系统维度的初始上下文统领级全局指令声明。"
},
"help": {
"startNode": {
"title": "起始节点",
"description": "您的工作流的入口点。当工作流启动时,所有连接到起始节点的节点将同时并行运行。",
"examples": [
"连接多个节点以同时启动它们",
"首先执行的节点会接收您的初始输入内容"
]
},
"workflowNode": {
"agent": {
"title": "Agent 节点 (智能体)",
"description": "一个能够推理、生成内容以及使用工具的 AI 智能体。智能体接收消息并根据其配置产出相应的响应内容。",
"examples": [
"内容生成 (写作、编码、分析)",
"逻辑决策与路由分发",
"使用外部工具 (搜索、文件操作、API 调用)"
]
},
"human": {
"title": "Human 节点 (人工节点)",
"description": "暂停工作流执行并等待人工输入介入。使用此节点来审查内容、做决策或提供反馈修订。",
"examples": [
"审查并批准 AI 生成的内容",
"提供额外的修正指令",
"在不同的工作流分支中做选择"
]
},
"python": {
"title": "Python 节点",
"description": "在您的本地环境中执行 Python 代码。代码将在工作区目录下运行,并可以访问用户上传的文件。",
"examples": [
"数据处理和分析清洗",
"运行由 AI 生成的代码测试",
"直接在本地操作文件"
]
},
"passthrough": {
"title": "Passthrough 节点 (透传节点)",
"description": "将接收到的消息未经任何修改的地传递给下一个节点。常用于工作流结构的整理和在循环执行中过滤无用输出。",
"examples": [
"在循环体内保留初始的上游上下文",
"过滤掉多余冗余的节点输出",
"将工作流结构的连线梳理得更整洁"
]
},
"literal": {
"title": "Literal 节点 (常量节点)",
"description": "直接输出固定的文本内容,忽略一切上游输入。可以用来在工作流的特定位置硬性植入指令或上下文。",
"examples": [
"在目标节点前强制追加固定的系统设定",
"注入硬编码的上下文或约束条件",
"提供模拟的测试样例数据"
]
},
"loop_counter": {
"title": "Loop Counter 节点 (循环计数器)",
"description": "用来限制循环的迭代次数。仅仅在达到最大的计数值时才会产生输出,这在使用 AI 时能有效防止无限死循环。",
"examples": [
"防止工作流陷入失控的失控循环",
"设定最大允许的工作流修改/审查次数",
"控制复杂的迭代处理流程"
]
},
"subgraph": {
"title": "Subgraph 节点 (子图节点)",
"description": "将另外一个独立的工作流文件作为可重用模块嵌入进来。有了它即可实现模块化设计与大型工作流协同组合。",
"examples": [
"在不同的工作流间重用常用的功能模式",
"将巨大复杂的工作流拆分成多个方便管理的小块",
"在不同的团队间共享固定的工作流资产"
]
},
"unknown": {
"title": "工作流节点",
"description": "您工作流中的一个节点。点击即可查看并编辑其相关配置属性。"
}
},
"edge": {
"basic": {
"title": "节点连线",
"description": "用来连接两个节点以控制信息数据流向和逻辑执行顺序。上游节点输出的结果将直接作为下游节点的输入内容。",
"examples": [
"数据从源节点无缝传递到目标节点",
"等待源节点完全处理结束后目标节点再开始执行"
]
},
"trigger": {
"enabled": {
"description": "当前连线会触发并唤醒处于下游的节点执行。"
},
"disabled": {
"description": "目前连线仅会传递数据,但不触发下游执行。这说明下游节点只能在被其它节点触发时才会运行。"
}
},
"condition": {
"hasCondition": {
"description": "这是一个附带条件的连线。只有当满足相关条件并计算为 true 时连线上的数据流才会激活穿行。"
}
}
},
"contextMenu": {
"createNode": {
"description": "在您的工作流中创建一个全新的节点。可以在智能体 (Agent)、人工 (Human)、代码 (Python) 等各个节点类型中选择。"
},
"copyNode": {
"description": "带着原有的全部设置完美复刻这个节点。由于是克隆产生的,所以新生成的节点需要您手动给它重置一个空白的节点 ID。"
},
"deleteNode": {
"description": "从当前工作流内彻底移除该节点及其所连接的所有上下游连线。"
},
"deleteEdge": {
"description": "移除这两个节点之间的连线与关系。"
},
"createNodeButton": {
"description": "打开节点创建表单。您也可以在画布空白处右键点击来将节点直接创建在该对应的坐标位置上。"
},
"configureGraph": {
"description": "配置整个工作流级别的全局设定,例如工作流最终名称、文字描述以及那些关键的全局变量参数。"
},
"launch": {
"description": "使用任务提示词直接运行您的这个工作流。工作流将会自动执行并且即刻为您展示中间的所有思考运行轨迹与最终产出结果。"
},
"createEdge": {
"description": "在两个节点模型中创建连接桥梁。当然,您更可以直接通过在节点的手柄圆点上拖拽出一条线来直观地构建连线图谱。"
},
"manageVariables": {
"description": "统一定义全局共享变量 (比如各种 API key 或默认参数),这样整个工作流所有的节点都能通用 ${变量名} 这一语法来提取并访问利用它们。"
},
"manageMemories": {
"description": "跨越多次工作流执行,配置长期的工作记忆模块专门用作存储信息并支持快速的知识检索反馈。"
},
"renameWorkflow": {
"description": "重新修改并调整此工作流配置文件的名称。"
},
"copyWorkflow": {
"description": "为此完整的工作流模型资产创建一个同结构副本,它将被赋予一个新的副本名称存储到同目录下。"
}
}
}
}