feat: 请求日志和 usage 记录中追踪代理节点信息

- 新增 resolve_proxy_info/get_proxy_label 提取脱敏的代理摘要
- StreamContext 增加 proxy_info 字段,流式/非流式全路径写入 metadata
- ProxyNode 缓存补充 name 字段,日志输出代理节点标识
- aether-proxy 连接和转发日志从 debug 提升为 info 级别
- TaskService 代理不可用日志补充 node_id 细节
This commit is contained in:
fawney19
2026-02-08 00:49:43 +08:00
parent 5384ffd403
commit 4a1029961a
9 changed files with 153 additions and 27 deletions

View File

@@ -746,9 +746,15 @@ class TaskService:
return "break"
if isinstance(cause, ProxyNodeUnavailableError):
# ProxyNode 不可用属于配置明确指定但不可达/不可用的情况,
# ProxyNode 不可用属于"配置明确指定但不可达/不可用"的情况,
# 在当前候选上重试通常没有意义,直接切换到下一个候选更合理。
logger.warning(" [{}] 代理节点不可用,切换候选: {}", request_id, str(cause))
node_id = cause.details.get("proxy_node_id") if cause.details else None
logger.warning(
" [{}] 代理节点不可用 (node_id={}),切换候选: {}",
request_id,
node_id or "unknown",
str(cause),
)
RequestCandidateService.mark_candidate_failed(
db=self.db,
candidate_id=candidate_record_id,