feat: 同步知识库与工作台相关改动

This commit is contained in:
Jackzhou
2026-08-24 10:40:15 +08:00
parent 8d0588827d
commit 4f33b036d1
50 changed files with 8034 additions and 273 deletions
+52
View File
@@ -0,0 +1,52 @@
# 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)