chore(log): 缩减 INFO 日志量,高频诊断日志降级/删除

1. 删除缓存诊断日志 4 处(openai.rs):排查已完结,字段已补齐,每次 LLM 调用都刷屏。
2. 删除 AgentPromptProvider 模型配置日志(agent_prompt_provider.rs):排查遗留,每次请求刷。
3. AgentFactory 创建日志 info→debug(agent_factory.rs):每轮对话刷,降级保留供偶发排查。
4. Calling tool / Tool calls detected info→debug(agent_loop.rs):每次工具调用都刷,全量参数打印开销大,tracing 在未启用级别时不评估字段。
5. LoadTaskMessages 3 条日志 info→debug(load_task_messages.rs):每次前端 trigger 都刷,一次 3 条。
6. 旧结果诊断日志 info→debug(execution.rs):每条消息首次 agent 迭代都触发。
7. pending subagents 日志 info→debug(processor.rs):子代理运行期高频率重复触发。
8. Updating current_session_id 仅变化时打(ws.rs):old==new 时每条消息都刷,无信息量。
编译通过,测试全绿。
This commit is contained in:
oudecheng 2026-08-15 23:10:39 +08:00
parent ca7dcabbde
commit 0f60b02ede
8 changed files with 17 additions and 40 deletions

View File

@ -1406,7 +1406,7 @@ impl AgentLoop {
}
// Execute tool calls
tracing::info!(
tracing::debug!(
iteration,
count = response.tool_calls.len(),
"Tool calls detected, executing tools"
@ -2088,7 +2088,7 @@ impl AgentLoop {
serde_json::Value::Object(obj) if obj.is_empty() => "{}".to_string(),
other => serde_json::to_string_pretty(other).unwrap_or_else(|_| other.to_string()),
};
tracing::info!(tool = %tool_call.name, args = %args_str, "Calling tool");
tracing::debug!(tool = %tool_call.name, args = %args_str, "Calling tool");
// Record ToolCallStart event
if let Some(ref observer) = self.observer {

View File

@ -56,7 +56,7 @@ async fn handle_load_task_messages(
task_id: String,
ctx: CommandContext,
) -> Result<CommandResponse, CommandError> {
tracing::info!(
tracing::debug!(
task_id = %task_id,
request_id = %ctx.request_id,
"LoadTaskMessages: looking up task"
@ -65,7 +65,7 @@ async fn handle_load_task_messages(
// 1. Try in-memory repository first
let task = match handler.task_repository.load_task_session(&task_id).await {
Ok(Some(task)) => {
tracing::info!(
tracing::debug!(
task_id = %task.id,
session_id = %task.session_id,
state = ?task.state,
@ -74,7 +74,7 @@ async fn handle_load_task_messages(
Some(task)
}
Ok(None) => {
tracing::info!(
tracing::debug!(
task_id = %task_id,
"LoadTaskMessages: task not in memory, searching database"
);

View File

@ -233,8 +233,8 @@ impl AgentFactory {
_ => expert_provider_config,
};
// 诊断日志:记录 agent 实际使用的配置和实例 ID
tracing::info!(
// 诊断日志debug:记录 agent 实际使用的配置和实例 ID
tracing::debug!(
instance_id = self.instance_id,
channel = %request.channel_name,
session_id = %session_id,

View File

@ -61,15 +61,6 @@ impl SystemPromptProvider for AgentPromptProvider {
return None;
}
// 诊断日志:记录系统提示词实际使用的模型配置(用于排查"配置不生效"问题)
tracing::info!(
session_id = ?context.session_id,
chat_id = %context.chat_id,
provider = %self.provider_config.name,
model_id = %self.provider_config.model_id,
"AgentPromptProvider: building system prompt with model config"
);
// 加载 Agent 提示词AGENT.md + builtin + MEMORY_SUMMARY.md
let agent_prompt = load_agent_prompt().ok().flatten()?;

View File

@ -167,7 +167,7 @@ impl AgentExecutionService {
.as_deref()
.unwrap_or(request.chat_id),
);
tracing::info!(
tracing::debug!(
channel = %request.channel_name,
chat_id = %request.chat_id,
user_message_id = %request.user_message.id,

View File

@ -594,7 +594,7 @@ impl InboundProcessor {
.list_pending_subagents(topic_id, Some("running"))
.unwrap_or_default();
if !pending.is_empty() {
tracing::info!(
tracing::debug!(
topic_id = %topic_id,
pending_count = pending.len(),
"Skipping ExecutionCompleted: pending subagents still running"

View File

@ -557,13 +557,15 @@ async fn handle_inbound(
// 处理响应
if response.success {
// 更新当前会话 ID如果是创建会话
// 更新当前会话 ID如果是创建会话;仅在变化时记录日志
if let Some(session_id) = response.metadata.get("session_id") {
if session_id != current_session_id {
tracing::info!(
old_session_id = %current_session_id,
new_session_id = %session_id,
"Updating current_session_id"
);
}
*current_session_id = session_id.clone();
let _ = state
.channel_manager

View File

@ -96,7 +96,6 @@ impl StreamingAccumulator {
/// 跳过 total_tokens=0 的占位帧,避免覆盖真实值。
fn set_usage(&mut self, usage: OpenAIUsage) {
if usage.total_tokens > 0 {
usage.log_cache_diagnostics("stream_final_frame");
self.usage = Some(usage);
}
}
@ -725,7 +724,6 @@ impl OpenAIProvider {
})
.unwrap_or_default();
// 回退场景下也从非流式响应提取 usage
openai_resp.usage.log_cache_diagnostics("non_streaming_fallback");
response.usage = Usage {
prompt_tokens: openai_resp.usage.prompt_tokens,
completion_tokens: openai_resp.usage.completion_tokens,
@ -1108,19 +1106,6 @@ impl OpenAIUsage {
})
.unwrap_or(0)
}
/// 诊断日志:记录 API 是否返回缓存字段及解析后的值(排查"缓存一直不命中"问题)。
/// field_present=false 说明 API/网关根本没返回缓存字段(中转服务剥离或模型不支持)。
fn log_cache_diagnostics(&self, source: &str) {
tracing::info!(
source = %source,
prompt_tokens = self.prompt_tokens,
cached_tokens = self.cached_tokens(),
deepseek_cache_field_present = self.prompt_cache_hit_tokens.is_some(),
openai_cache_details_present = self.prompt_tokens_details.is_some(),
"OpenAI usage cache diagnostics"
);
}
}
#[async_trait]
@ -1279,7 +1264,6 @@ impl LLMProvider for OpenAIProvider {
reasoning_content: openai_resp.choices[0].message.reasoning_content.clone(),
tool_calls,
usage: {
openai_resp.usage.log_cache_diagnostics("non_streaming");
Usage {
prompt_tokens: openai_resp.usage.prompt_tokens,
completion_tokens: openai_resp.usage.completion_tokens,