知识库列表为空问题排查指南

问题现象

创建知识库成功后,列表仍然显示为空。

快速检查步骤

1. 打开浏览器控制台(F12)

查看是否有以下日志:

  • 🔍 [KnowledgeService] API Response Debug - API 响应详情
  • 📚 [useKnowledgeBases] Load Result - Hook 处理结果

2. 检查 Network 标签

  1. 找到 GET /api/v1/admin/knowledge/ 请求
  2. 点击该请求
  3. 查看 Response 标签

预期响应格式

{
  "knowledge_bases": [
    {
      "id": "...",
      "name": "...",
      "status": "pending",
      ...
    }
  ],
  "total": 1
}

3. 手动测试 API

在浏览器控制台执行:

// 测试获取知识库列表
fetch('/api/v1/admin/knowledge/', {
  headers: {
    'Authorization': `Bearer ${localStorage.getItem('mbe_access_token')}`
  }
})
  .then(r => {
    console.log('Response status:', r.status)
    return r.json()
  })
  .then(data => {
    console.log('=== API 响应 ===')
    console.log('完整数据:', JSON.stringify(data, null, 2))
    console.log('knowledge_bases:', data.knowledge_bases)
    console.log('数量:', data.knowledge_bases?.length || 0)
    console.log('total:', data.total)
  })
  .catch(err => {
    console.error('错误:', err)
  })

4. 检查后端日志

查看后端控制台,应该看到:

  • 📚 Created knowledge base: ... - 创建知识库的日志
  • 如果没有这个日志,说明后端没有正确保存

5. 检查后端索引文件

知识库保存在后端的索引文件中。检查:

  • 文件位置:data/knowledge_bases/index.json(或类似路径)
  • 文件内容应该包含刚创建的知识库

常见问题及解决方案

问题 1: API 返回空数组

症状knowledge_bases: []total: 0

可能原因

  1. 后端没有正确保存知识库
  2. 后端索引文件损坏
  3. 后端服务重启后索引未加载

解决方案

  1. 检查后端日志
  2. 重启后端服务
  3. 检查索引文件是否存在

问题 2: API 返回 401/403

症状:Network 标签显示状态码 401 或 403

可能原因

  • Token 过期
  • 权限不足

解决方案

  1. 重新登录
  2. 检查用户角色

问题 3: 前端缓存问题

症状:创建成功但列表不更新

解决方案

  1. 强制刷新页面(Ctrl+F5)
  2. 清除浏览器缓存
  3. 在控制台执行:
    localStorage.clear()
    location.reload()
    

问题 4: developer_id 不匹配

症状:后端有知识库,但前端看不到

可能原因

  • 创建时使用的 developer_id 与当前用户不匹配

解决方案

  1. 检查创建请求中的 developer_id
  2. 检查当前用户的 ID
  3. 确认两者匹配

调试命令

检查当前用户信息

// 获取当前用户
fetch('/api/v1/users/me', {
  headers: {
    'Authorization': `Bearer ${localStorage.getItem('mbe_access_token')}`
  }
})
  .then(r => r.json())
  .then(user => {
    console.log('当前用户:', user)
    console.log('用户 ID:', user.id)
  })

检查所有知识库(不筛选)

如果后端 API 支持,可以尝试获取所有知识库(不按 developer_id 筛选)。

清除缓存并重新加载

// 清除缓存
localStorage.clear()
sessionStorage.clear()

// 重新加载页面
location.reload()

下一步

如果以上步骤都无法解决问题,请提供:

  1. Network 标签截图:显示 GET /api/v1/admin/knowledge/ 请求的完整响应
  2. 控制台完整日志:包括所有 [KnowledgeService][useKnowledgeBases] 的日志
  3. 后端日志:创建知识库时的后端日志

文档版本: 1.0
创建日期: 2026-02-08