Files
pj0235-eai_agentplatform/debug-knowledge-chat-401.md
T

2.8 KiB
Raw Blame History

Debug Session: knowledge-chat-401

  • Status: [OPEN]
  • Issue: 04 知识库应用发送问题后,原先会看到 LLM 返回 401: {"error":{"message":"No cookie auth credentials found","code":401}};修复目标是让问题路由正确,并且不要把底层模型鉴权报错直接暴露给前台。
  • Debug Server: http://127.0.0.1:7777/event
  • Log File: .dbg/trae-debug-log-knowledge-chat-401.ndjson

Reproduction Steps

  1. 启动前端、Go 后端与知识服务。
  2. 打开 04 知识库应用。
  3. 发送闲聊、FAQ、总结类问题,例如:
    • 给我讲个小故事
    • 你好,你是怎么工作的
    • 请根据知识库总结规则制度库里关于审批的要点

Hypotheses & Verification

ID Hypothesis Likelihood Effort Evidence
A 后端把知识服务或模型服务地址调错了 High Low Rejected
B 当前运行进程不是最新版本 Medium Low Rejected
C LLM 兜底层命中了未配置 API Key 的 OpenRouter 路由,所以把 401 直接抛给了前台 High Low Confirmed
D 第一层分类器把闲聊 / 总结类问题分错了,所以问题走错层级 High Low Confirmed

Instrumentation Plan

  • A: frontend/src/api/ai.js 记录请求入口与非 200 响应
  • B: backend-go/internal/api/ai_chat.go 记录聊天入口、四层计划、LLM 路由与错误
  • C: backend-go/internal/ai/llm.go 记录真实下游 URL、状态码与错误体前缀
  • D: backend-go/internal/ai/knowledge_service_client.go 记录知识服务调用状态

Log Evidence

  • 知识服务稳定命中本地 http://127.0.0.1:10233/classify 和 /search
  • 分类修复后:
    • 给我讲个小故事 -> intent=smalltalk、layer=bert_classifier
    • 你好,你是怎么工作的 -> intent=smalltalk、layer=bert_classifier
    • 请根据知识库总结规则制度库里关于审批的要点 -> intent=document、layer=llm_fallback
  • 进入 llm_fallback 时,埋点显示:
    • 目标地址:https://openrouter.ai/api/v1/chat/completions
    • hasAPIKey=false
    • authHeader=false
    • 修复前下游直接返回 401 No cookie auth credentials found
  • 修复后,同类问题不再把 401 暴露给前台,而是返回“当前没有可用 LLM 兜底服务”的业务化提示

Verification Conclusion

  • pre-fix
    • 闲聊 / 总结类问题会被误路由
    • 一旦进入 llm_fallback,前台直接看到 OpenRouter 401 / cookie 报错
  • post-fix
    • 第一层分类已改成规则优先,闲聊与总结类问题路由更符合预期
    • llm_fallback 不再直抛 401,而是返回更友好的业务化提示
  • Remaining Blocker
    • 当前剩余不是代码 Bug,而是运行环境缺口:
      • OpenRouter 未配置 API Key
      • 本地 Ollama 未启动(127.0.0.1:11434 refused)