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

53 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)