#!/usr/bin/env python3 # -*- coding: utf-8 -*- """Submit reasoning request and return results""" import json, time, uuid result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': '推理请求失败', 'type': 'error'}} try: request_text = params_kw.get('request', '').strip() if not request_text: result['options'] = {'title': 'Error', 'message': '请输入推理请求', 'type': 'error'} else: user_id = await get_user() execute_immediately = params_kw.get('execute_immediately', '1') == '1' # Call the reasoning engine from ServerEnv reasoning_result = await hermes_reason_and_execute( request=request_text, execute_immediately=execute_immediately ) if reasoning_result.get('success'): # Build result widget showing reasoning output plan_items = [] for step in reasoning_result.get('execution_plan', []): plan_items.append(f"步骤{step.get('step_number', '?')}: {step.get('description', '')}") plan_text = '\n'.join(plan_items) if plan_items else '无执行计划' safety_text = '\n'.join(reasoning_result.get('safety_violations', [])) or '无安全风险' summary = ( f"请求: {request_text}\n\n" f"上下文: {reasoning_result.get('context_summary', '无')}\n\n" f"置信度: {reasoning_result.get('confidence_score', 0):.0%}\n\n" f"执行计划:\n{plan_text}\n\n" f"安全检查:\n{safety_text}\n\n" f"状态: {reasoning_result.get('status', 'unknown')}" ) if reasoning_result.get('execution_results'): summary += f"\n\n执行结果:\n{json.dumps(reasoning_result['execution_results'], ensure_ascii=False, indent=2)}" result = { 'widgettype': 'Message', 'options': { 'title': '推理完成', 'message': summary, 'type': 'success' } } else: result['options'] = { 'title': '推理失败', 'message': reasoning_result.get('error', '未知错误'), 'type': 'error' } except Exception as e: result['options'] = {'title': 'Error', 'message': '推理异常: ' + str(e), 'type': 'error'} return json.dumps(result, ensure_ascii=False)