This commit is contained in:
Ubuntu
2025-09-11 13:23:32 +00:00
3 changed files with 18 additions and 13 deletions

View File

@@ -33,7 +33,7 @@ class ChatManager:
self.raw_score_prompts = raw_score_prompts self.raw_score_prompts = raw_score_prompts
self.chapter_chain = load_chapters(raw_markdown, raw_markdown_prompts, raw_score_prompts) self.chapter_chain = load_chapters(raw_markdown, raw_markdown_prompts, raw_score_prompts)
self.function_manager = FunctionManager() self.function_manager = FunctionManager()
self.bb = None
def next_chapter(self): def next_chapter(self):
assert self.chapter_chain_now + 1 < len(self.chapter_chain), "chapter_chain_now out of range" 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.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) 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): def message_pass(self, messagetype, message):
print("message_pass", self.user_uuid, messagetype, message) print("message_pass", self.user_uuid, messagetype, message)

View File

@@ -13,14 +13,12 @@ def realtime_response(config: dict, realtime_action: dict) -> None:
""" """
业务:根据 VSCode 上报的动作,更新 Backboard黑板状态。 业务:根据 VSCode 上报的动作,更新 Backboard黑板状态。
""" """
# 依赖从 app.extensions 取,避免循环导入
username2uuid = current_app.extensions["username2uuid"]
backboard_manager = current_app.extensions["backboard_manager"] backboard_manager = current_app.extensions["backboard_manager"]
user_uuid = config["user_uuid"]
chatmanager = current_app.extensions["user_uuid2chatmanager"][user_uuid]
user_id = config["user_id"]
folder_path = config["path"] # 如需 WSL 转换可在生成 config 时处理 bb = backboard_manager.get_backboard(user_uuid)
useruuid = username2uuid[user_id]
bb = backboard_manager.get_backboard(useruuid)
assert isinstance(bb, Backboard) 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 config: %s", config)
current_app.logger.debug("vscode action: %s", realtime_action) current_app.logger.debug("vscode action: %s", realtime_action)
chatmanager.upload_bb()

View File

@@ -63,7 +63,12 @@ class AgentNamespace(Namespace):
entry=self, entry=self,
init_data={'room': user_uuid} 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) 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) 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] chatmanager = user_uuid2chatmanager[user_uuid]
@@ -73,7 +78,7 @@ class AgentNamespace(Namespace):
join_room(user_uuid, namespace='/agent') # 将该用户加入以user_id为名的room 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}') 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) chatmanager.focus_chapter(0)
def on_language(self, language): def on_language(self, language):
@@ -84,10 +89,7 @@ class AgentNamespace(Namespace):
print(f"Message from client: {data}") print(f"Message from client: {data}")
ex = current_app.extensions ex = current_app.extensions
agent_manager = ex["agent_manager"] agent_manager = ex["agent_manager"]
backboard_manager = ex["backboard_manager"]
uuid = session.get('user_uuid') uuid = session.get('user_uuid')
uuid2username = ex["uuid2username"]
user_id = uuid2username[uuid]
user_uuid2ase_client = ex["user_uuid2ase_client"] user_uuid2ase_client = ex["user_uuid2ase_client"]
if (type(data)==str): if (type(data)==str):
data = json.loads(data) data = json.loads(data)
@@ -107,7 +109,8 @@ class AgentNamespace(Namespace):
def receive_ase_dialog(client_entry: HSAEngineClient, namespace_entry: Namespace, data, init_data): 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') 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') namespace_entry.emit('request_function', data['data'], room=init_data['room'], namespace='/agent')
def on_initiative(self,data): def on_initiative(self,data):