diff --git a/core/main_terminal_parts/tools_definition.py b/core/main_terminal_parts/tools_definition.py index 7e37b30..6b60a38 100644 --- a/core/main_terminal_parts/tools_definition.py +++ b/core/main_terminal_parts/tools_definition.py @@ -607,12 +607,11 @@ class MainTerminalToolsDefinitionMixin: "parameters": { "type": "object", "properties": self._inject_intent({ - "memory_type": {"type": "string", "enum": ["main", "task"], "description": "记忆类型"}, "content": {"type": "string", "description": "条目内容。append/replace 时必填"}, "operation": {"type": "string", "enum": ["append", "replace", "delete"], "description": "操作类型"}, "index": {"type": "integer", "description": "要替换/删除的序号(从1开始)"} }), - "required": ["memory_type", "operation"] + "required": ["operation"] } } }, diff --git a/core/main_terminal_parts/tools_execution.py b/core/main_terminal_parts/tools_execution.py index ac442c9..31d4c9f 100644 --- a/core/main_terminal_parts/tools_execution.py +++ b/core/main_terminal_parts/tools_execution.py @@ -585,7 +585,6 @@ class MainTerminalToolsExecutionMixin: } elif tool_name == "update_memory": - memory_type = arguments["memory_type"] operation = arguments["operation"] content = arguments.get("content") index = arguments.get("index") @@ -598,8 +597,9 @@ class MainTerminalToolsExecutionMixin: elif operation == "delete" and (index is None or index <= 0): result = {"success": False, "error": "delete 操作需要有效的 index"} else: + # 统一使用 main 记忆类型 result = self.memory_manager.update_entries( - memory_type=memory_type, + memory_type="main", operation=operation, content=content, index=index diff --git a/modules/personalization_manager.py b/modules/personalization_manager.py index 78b4e4b..0e12fd0 100644 --- a/modules/personalization_manager.py +++ b/modules/personalization_manager.py @@ -41,6 +41,7 @@ DEFAULT_PERSONALIZATION_CONFIG: Dict[str, Any] = { "default_model": "kimi-k2.5", "image_compression": "original", # original / 1080p / 720p / 540p "silent_tool_disable": False, # 禁用工具时不向模型插入提示 + "enhanced_tool_display": True, # 增强工具显示 } __all__ = [ @@ -183,6 +184,12 @@ def sanitize_personalization_payload( else: base["silent_tool_disable"] = bool(base.get("silent_tool_disable")) + # 增强工具显示 + if "enhanced_tool_display" in data: + base["enhanced_tool_display"] = bool(data.get("enhanced_tool_display")) + else: + base["enhanced_tool_display"] = bool(base.get("enhanced_tool_display", True)) + return base diff --git a/package-lock.json b/package-lock.json index 09ef73a..c9d0399 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "4.1.0", "dependencies": { "@types/html2canvas": "^0.5.35", + "diff": "^8.0.3", "enquirer": "^2.4.1", "html2canvas": "^1.4.1", "katex": "^0.16.9", @@ -2139,6 +2140,15 @@ "node": ">=0.10" } }, + "node_modules/diff": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz", + "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", diff --git a/package.json b/package.json index 67b7031..595743d 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@types/html2canvas": "^0.5.35", + "diff": "^8.0.3", "enquirer": "^2.4.1", "html2canvas": "^1.4.1", "katex": "^0.16.9", diff --git a/server/chat_flow_tool_loop.py b/server/chat_flow_tool_loop.py index 5502555..7db104f 100644 --- a/server/chat_flow_tool_loop.py +++ b/server/chat_flow_tool_loop.py @@ -51,7 +51,7 @@ async def execute_tool_calls(*, web_terminal, tool_calls, sender, messages, clie 'reason': 'user_stop' }) clear_stop_flag(client_sid, username) - return + return {"stopped": True, "last_tool_call_time": last_tool_call_time} # 工具调用间隔控制 current_time = time.time() diff --git a/server/conversation.py b/server/conversation.py index 83af8f0..8886087 100644 --- a/server/conversation.py +++ b/server/conversation.py @@ -127,14 +127,14 @@ def create_conversation(terminal: WebTerminal, workspace: UserWorkspace, usernam """创建新对话""" try: data = request.get_json() or {} - # 前端现在期望“新建对话”回到用户配置的默认模型/模式, + # 前端现在期望"新建对话"回到用户配置的默认模型/模式, # 只有当客户端显式要求保留当前模式时才使用传入值。 preserve_mode = bool(data.get('preserve_mode')) thinking_mode = data.get('thinking_mode') if preserve_mode and 'thinking_mode' in data else None run_mode = data.get('mode') if preserve_mode and 'mode' in data else None - + result = terminal.create_new_conversation(thinking_mode=thinking_mode, run_mode=run_mode) - + if result["success"]: session['run_mode'] = terminal.run_mode session['thinking_mode'] = terminal.thinking_mode @@ -143,13 +143,13 @@ def create_conversation(terminal: WebTerminal, workspace: UserWorkspace, usernam 'action': 'created', 'conversation_id': result["conversation_id"] }, room=f"user_{username}") - + # 广播当前对话切换事件 socketio.emit('conversation_changed', { 'conversation_id': result["conversation_id"], 'title': "新对话" }, room=f"user_{username}") - + return jsonify(result), 201 else: return jsonify(result), 500 @@ -208,7 +208,7 @@ def load_conversation(conversation_id, terminal: WebTerminal, workspace: UserWor """加载特定对话""" try: result = terminal.load_conversation(conversation_id) - + if result["success"]: # 广播对话切换事件 socketio.emit('conversation_changed', { @@ -216,21 +216,21 @@ def load_conversation(conversation_id, terminal: WebTerminal, workspace: UserWor 'title': result.get("title", "未知对话"), 'messages_count': result.get("messages_count", 0) }, room=f"user_{username}") - + # 广播系统状态更新(因为当前对话改变了) status = terminal.get_status() socketio.emit('status_update', status, room=f"user_{username}") - + # 清理和重置相关UI状态 socketio.emit('conversation_loaded', { 'conversation_id': conversation_id, 'clear_ui': True # 提示前端清理当前UI状态 }, room=f"user_{username}") - + return jsonify(result) else: return jsonify(result), 404 if "不存在" in result.get("message", "") else 500 - + except Exception as e: print(f"[API] 加载对话错误: {e}") return jsonify({ diff --git a/static/src/App.vue b/static/src/App.vue index 6106a72..6d69d9e 100644 --- a/static/src/App.vue +++ b/static/src/App.vue @@ -293,14 +293,6 @@
- -