全面更换orjson

This commit is contained in:
雅诺狐
2025-08-26 14:20:26 +08:00
parent bfabf896b5
commit 4a44ba9866
45 changed files with 991 additions and 1279 deletions

View File

@@ -1,4 +1,4 @@
import json
import orjson
import time
from json_repair import repair_json
@@ -165,7 +165,7 @@ class ChatAction:
logger.info(f"response: {response}")
logger.info(f"reasoning_content: {reasoning_content}")
if action_data := json.loads(repair_json(response)):
if action_data := orjson.loads(repair_json(response)):
# 记录原动作,切换后进入冷却
prev_body_action = self.body_action
new_body_action = action_data.get("body_action", self.body_action)
@@ -228,7 +228,7 @@ class ChatAction:
logger.info(f"response: {response}")
logger.info(f"reasoning_content: {reasoning_content}")
if action_data := json.loads(repair_json(response)):
if action_data := orjson.loads(repair_json(response)):
prev_body_action = self.body_action
new_body_action = action_data.get("body_action", self.body_action)
if new_body_action != prev_body_action and prev_body_action:

View File

@@ -1,5 +1,5 @@
import asyncio
import json
import orjson
from collections import deque
from datetime import datetime
from typing import Dict, List, Optional
@@ -299,7 +299,7 @@ class ContextWebManager:
ws.onmessage = function(event) {
console.log('收到WebSocket消息:', event.data);
try {
const data = JSON.parse(event.data);
const data = orjson.parse(event.data);
updateMessages(data.contexts);
} catch (e) {
console.error('解析消息失败:', e, event.data);
@@ -573,7 +573,7 @@ class ContextWebManager:
</div>
<script>
console.log('调试信息:', {json.dumps(debug_info, ensure_ascii=False, indent=2)});
console.log('调试信息:', {orjson.dumps(debug_info,option=orjson.OPT_INDENT_2).decode('utf-8')});
setTimeout(() => location.reload(), 5000); // 5秒自动刷新
</script>
</body>
@@ -619,7 +619,7 @@ class ContextWebManager:
contexts_data = [msg.to_dict() for msg in all_context_msgs[-self.max_messages:]]
data = {"contexts": contexts_data}
await ws.send_str(json.dumps(data, ensure_ascii=False))
await ws.send_str(orjson.dumps(data).decode('utf-8'))
async def broadcast_contexts(self):
"""向所有WebSocket连接广播上下文更新"""
@@ -638,8 +638,8 @@ class ContextWebManager:
contexts_data = [msg.to_dict() for msg in all_context_msgs[-self.max_messages:]]
data = {"contexts": contexts_data}
message = json.dumps(data, ensure_ascii=False)
message = orjson.dumps(data).decode('utf-8')
logger.info(f"广播 {len(contexts_data)} 条消息到 {len(self.websockets)} 个WebSocket连接")
# 创建WebSocket列表的副本避免在遍历时修改

View File

@@ -12,7 +12,7 @@ from src.config.config import global_config
from src.common.message.api import get_global_api
from src.chat.message_receive.storage import MessageStorage
from .s4u_watching_manager import watching_manager
import json
import orjson
from .s4u_mood_manager import mood_manager
from src.person_info.relationship_builder_manager import relationship_builder_manager
from src.mais4u.s4u_config import s4u_config
@@ -215,8 +215,8 @@ class S4UChat:
priority_info = {}
if isinstance(priority_info_raw, str):
try:
priority_info = json.loads(priority_info_raw)
except json.JSONDecodeError:
priority_info = orjson.loads(priority_info_raw)
except orjson.JSONDecodeError:
logger.warning(f"Failed to parse priority_info JSON: {priority_info_raw}")
elif isinstance(priority_info_raw, dict):
priority_info = priority_info_raw

View File

@@ -1,5 +1,5 @@
import asyncio
import json
import orjson
import time
from src.chat.message_receive.message import MessageRecv
@@ -132,7 +132,7 @@ class ChatMood:
elif "```" in response:
response = response.split("```")[1].split("```")[0]
data = json.loads(response)
data = orjson.loads(response)
# Validate
required_keys = {"joy", "anger", "sorrow", "fear"}
@@ -148,7 +148,7 @@ class ChatMood:
return {key: data[key] for key in required_keys}
except json.JSONDecodeError:
except orjson.JSONDecodeError:
logger.warning(f"Failed to parse numerical mood JSON: {response}")
return None
except Exception as e: