Skip to content

Commit 4cad0a4

Browse files
committed
refactor(cli): 重构CLI适配器为模块化架构
## 主要变更 - cli_adapter.py: 897行 → 204行 (77%精简) - cli_event.py: 194行 → 116行 - 新增76个单元测试,全部通过 ## 新增模块 - config/: ConfigLoader, TokenManager - handlers/: SocketHandler, TTYHandler, FileHandler - message/: MessageConverter, ImageProcessor, ResponseBuilder - session/: SessionManager - utils/: AOP装饰器集合 (异常处理/重试/超时/日志/权限) ## 设计原则 - 单一职责: 每个模块职责单一 - 依赖倒置: IHandler/IMessageConverter等接口 - AOP: 横切关注点从业务代码抽离 - 组合优于继承: 通过组合构建复杂功能 ## 修复 - Windows UTF-8输出乱码问题
1 parent b070282 commit 4cad0a4

29 files changed

Lines changed: 3635 additions & 964 deletions

astrbot-cli

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,20 @@ AstrBot CLI Tool - 跨平台Socket客户端
1111
"""
1212

1313
import argparse
14+
import io
1415
import json
1516
import os
1617
import socket
1718
import sys
1819
import uuid
1920
from typing import Optional
2021

22+
# Windows UTF-8 输出支持
23+
if sys.platform == "win32":
24+
# 设置stdout/stderr为UTF-8编码
25+
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8", errors="replace")
26+
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding="utf-8", errors="replace")
27+
2128

2229
def get_data_path() -> str:
2330
"""获取数据目录路径,兼容容器和非容器环境"""
@@ -90,9 +97,7 @@ def load_connection_info(data_dir: str) -> Optional[dict]:
9097
return None
9198

9299

93-
def connect_to_server(
94-
connection_info: dict, timeout: float = 30.0
95-
) -> socket.socket:
100+
def connect_to_server(connection_info: dict, timeout: float = 30.0) -> socket.socket:
96101
"""连接到服务器
97102
98103
根据连接信息类型选择Unix Socket或TCP Socket连接

0 commit comments

Comments
 (0)