2.8 KiB
2.8 KiB
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
- 启动前端、Go 后端与知识服务。
- 打开
04 知识库应用。 - 发送闲聊、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=falseauthHeader=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:11434refused)
- 当前剩余不是代码 Bug,而是运行环境缺口: