diff --git a/Html/apps/extension_ase/ase_client/manager.py b/Html/apps/extension_ase/ase_client/manager.py index 08adf3f..e48018e 100644 --- a/Html/apps/extension_ase/ase_client/manager.py +++ b/Html/apps/extension_ase/ase_client/manager.py @@ -33,7 +33,7 @@ class ChatManager: self.raw_score_prompts = raw_score_prompts self.chapter_chain = load_chapters(raw_markdown, raw_markdown_prompts, raw_score_prompts) self.function_manager = FunctionManager() - + self.bb = None def next_chapter(self): assert self.chapter_chain_now + 1 < len(self.chapter_chain), "chapter_chain_now out of range" @@ -46,6 +46,8 @@ class ChatManager: self.chapter_chain[chapter_index].Focus() self.ase_client.loadmarkdown(self.chapter_chain[chapter_index].chapter, self.chapter_chain[chapter_index].chapter_prompt, self.chapter_chain[chapter_index].score_prompt) + def upload_bb(self): + self.ase_client.send_text('backboard-in', self.bb.get_info_prompt()) def message_pass(self, messagetype, message): print("message_pass", self.user_uuid, messagetype, message) diff --git a/Html/apps/services/backboard_service.py b/Html/apps/services/backboard_service.py index cd36840..60d99ad 100644 --- a/Html/apps/services/backboard_service.py +++ b/Html/apps/services/backboard_service.py @@ -13,12 +13,10 @@ def realtime_response(config: dict, realtime_action: dict) -> None: """ 业务:根据 VSCode 上报的动作,更新 Backboard(黑板)状态。 """ - uuid2username = current_app.extensions["uuid2username"] backboard_manager = current_app.extensions["backboard_manager"] - user_uuid = config["user_uuid"] - folder_path = config["path"] - username = uuid2username[user_uuid] + chatmanager = current_app.extensions["user_uuid2chatmanager"][user_uuid] + bb = backboard_manager.get_backboard(user_uuid) assert isinstance(bb, Backboard) @@ -57,3 +55,5 @@ def realtime_response(config: dict, realtime_action: dict) -> None: # 如需调试输出,可在这里统一记录日志 current_app.logger.debug("vscode config: %s", config) current_app.logger.debug("vscode action: %s", realtime_action) + + chatmanager.upload_bb() \ No newline at end of file diff --git a/Html/apps/sockets/namespaces.py b/Html/apps/sockets/namespaces.py index 0a4ed93..050ee39 100644 --- a/Html/apps/sockets/namespaces.py +++ b/Html/apps/sockets/namespaces.py @@ -63,7 +63,12 @@ class AgentNamespace(Namespace): entry=self, init_data={'room': user_uuid} ) - + user_uuid2ase_client[user_uuid].register_route_with_entry( + route='judge', + callback=self.receive_ase_judge, + entry=self, + init_data={'room': user_uuid} + ) fmd,fmdp,fsp = load_full_markdown_file(course_id, chapter_name, lesson_name) user_uuid2chatmanager[user_uuid] = ChatManager(user_uuid, user_uuid2ase_client[user_uuid], fmd, fmdp, fsp, max_iter=5, app=current_app, socketio=self) chatmanager = user_uuid2chatmanager[user_uuid] @@ -73,7 +78,7 @@ class AgentNamespace(Namespace): join_room(user_uuid, namespace='/agent') # 将该用户加入以user_id为名的room backboard_manager.add_backboard(user_uuid, user_id, course_id, lesson_name, root_path=f'../../study/{user_id}/{course_id}/{chapter_name}/{lesson_name}') - + chatmanager.bb = backboard_manager.get_backboard(user_uuid) chatmanager.focus_chapter(0) def on_language(self, language): @@ -84,10 +89,7 @@ class AgentNamespace(Namespace): print(f"Message from client: {data}") ex = current_app.extensions agent_manager = ex["agent_manager"] - backboard_manager = ex["backboard_manager"] uuid = session.get('user_uuid') - uuid2username = ex["uuid2username"] - user_id = uuid2username[uuid] user_uuid2ase_client = ex["user_uuid2ase_client"] if (type(data)==str): data = json.loads(data) @@ -107,7 +109,8 @@ class AgentNamespace(Namespace): def receive_ase_dialog(client_entry: HSAEngineClient, namespace_entry: Namespace, data, init_data): namespace_entry.emit('message', data['data'], room=init_data['room'], namespace='/agent') - def receive_ase_function(client_entry: HSAEngineClient, namespace_entry: Namespace, data, init_data): + def receive_ase_judge(client_entry: HSAEngineClient, namespace_entry: Namespace, data, init_data): + print("receive_ase_judge", data) namespace_entry.emit('request_function', data['data'], room=init_data['room'], namespace='/agent') def on_initiative(self,data):