fix: debug reasoning execution flow and fix JSON serialization

- Add debug log for execute_immediately, violations, steps_count
- Fix JSON serialization in _store_session using default=str
- Plan object might contain non-serializable types (e.g. datetime)
This commit is contained in:
yumoqing 2026-05-07 18:45:25 +08:00
parent f9dac4ce7f
commit 356544853a

View File

@ -470,6 +470,7 @@ class HermesReasoningEngine:
}) })
# Step 5: Execute if requested and safe # Step 5: Execute if requested and safe
info(f"[reasoning] execute_immediately={execute_immediately}, violations={violations}, steps_count={len(plan.get('steps', []))}")
if execute_immediately and not violations and plan.get('steps'): if execute_immediately and not violations and plan.get('steps'):
exec_results = await self._execute_plan( exec_results = await self._execute_plan(
session_id, plan['steps'], config, context session_id, plan['steps'], config, context
@ -602,12 +603,14 @@ class HermesReasoningEngine:
plan: Dict, violations: List, status: str): plan: Dict, violations: List, status: str):
"""Store reasoning session in database.""" """Store reasoning session in database."""
try: try:
# Ensure plan is serializable
plan_str = json.dumps(plan, ensure_ascii=False, default=str)
data = { data = {
'id': session_id, 'id': session_id,
'user_id': user_id, 'user_id': user_id,
'initial_request': request, 'initial_request': request,
'context_summary': '', 'context_summary': '',
'execution_plan_json': json.dumps(plan, ensure_ascii=False), 'execution_plan_json': plan_str,
'reasoning_steps_json': '[]', 'reasoning_steps_json': '[]',
'safety_violations_json': json.dumps(violations, ensure_ascii=False), 'safety_violations_json': json.dumps(violations, ensure_ascii=False),
'final_decision_json': json.dumps({'status': status}), 'final_decision_json': json.dumps({'status': status}),