故障排查
本页列出使用 KaaS 时可能遇到的常见问题,以及对应的原因分析和解决步骤。
LLM 连接失败
表现: 编译立即失败并报连接错误;日志中出现 LLM request failed 或超时信息。
可能原因:
- API Key 不正确或未设置
base_url配置错误- 网络问题(防火墙、代理、DNS)
解决步骤:
确认环境变量已正确设置:
bashecho $KAAS_LLM_API_KEY echo $KAAS_LLM_BASE_URL直接测试 LLM 端点连通性:
bashcurl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: Bearer $KAAS_LLM_API_KEY" \ "$KAAS_LLM_BASE_URL/models"返回
200表示端点可达。如果处于代理环境,确保
HTTP_PROXY/HTTPS_PROXY已配置。检查 API Key 是否已过期或达到速率限制。
编译卡住 / 无进度
表现: 编译过程似乎挂起;长时间没有新文章生成。
可能原因:
- 熔断器触发(LLM 连续失败次数过多)
- Worker 租约过期(等待 LLM 响应超时)
- LLM 端点响应极慢
解决步骤:
检查后端日志中的熔断器信息:
bashdocker logs kaas-backend 2>&1 | grep -i "circuit"如果熔断器已触发,它会在冷却期结束后自动恢复。可调整相关参数:
toml[compiler] cb_failure_threshold = 5 # 触发熔断前的失败次数 cb_cooldown_sec = 60 # 恢复前的冷却秒数验证 LLM 端点仍然可用(参见 LLM 连接失败)。
如果 Worker 已超时,重启编译:
bashkaas compile --resume
MCP 连接被拒绝
表现: MCP 客户端无法连接 KaaS;报 connection refused 错误。
可能原因:
KAAS_MCP_ENABLED环境变量未设置为true- 端口配置错误或未暴露
- 客户端与服务端 Token 不匹配
解决步骤:
确认 MCP 已启用:
bashexport KAAS_MCP_ENABLED=true验证 MCP 端口已正确映射(默认
8081):bash# Docker 环境 docker ps --format "table {{.Ports}}" | grep kaas测试 MCP 端点:
bashcurl -v http://localhost:8081/health确认客户端 Token 与 KaaS 配置一致:
bashecho $KAAS_MCP_TOKENMCP 客户端配置中的 Token 必须与此值完全匹配。
Docker 容器无法启动
表现: docker compose up 立即退出或容器反复重启。
可能原因:
- 端口冲突(其他服务占用了 8080 或 8081 端口)
- 缺少必需的环境变量
- 挂载卷权限问题
解决步骤:
查看容器日志定位具体错误:
bashdocker logs kaas-backend检查端口冲突:
bashlsof -i :8080 lsof -i :8081如果端口被占用,停止占用进程或在
docker-compose.yml中修改 KaaS 的端口映射。确保所有必需环境变量已设置,至少包括:
bashKAAS_LLM_API_KEY=your-key KAAS_LLM_BASE_URL=https://api.openai.com/v1验证数据目录权限:
bashls -la ./data/ # 目录需要对容器用户(UID 1000)可写 chmod -R 755 ./data/
编译完成但 Wiki 为空
表现: 编译报告成功但 Wiki 中没有文章;知识库条目为零。
可能原因:
- 源内容太短,无法提取有意义的知识
kb_dir路径配置错误- 编译实际上静默失败(部分失败)
解决步骤:
通过状态页或 API 检查编译结果:
bashcurl http://localhost:8080/api/v1/status验证数据目录包含已生成的 Markdown 文件:
bashls ./data/*.md 2>/dev/null | wc -l检查后端日志中的提取警告:
bashdocker logs kaas-backend 2>&1 | grep -i "skip\|empty\|too short"确认配置中
kb_dir指向正确的源目录:toml[compiler] kb_dir = "./data"如果源文档非常短(< 100 字符),KaaS 可能会跳过它们。考虑合并小文档。
聊天返回"未找到相关文章"
表现: 聊天界面返回"No relevant articles found",即使查询的主题应该已被覆盖。
可能原因:
- Wiki 尚未编译
- 主索引缺失或损坏
- 查询过于模糊,或使用了与源材料不同的术语
解决步骤:
确认编译已成功完成:
bashcurl http://localhost:8080/api/v1/status # 查看 "compilation_status": "completed"验证数据目录有 Markdown 文件和主索引:
bashls ./data/*.md ls ./data/master-index*如果索引缺失,重新执行编译:
bashkaas compile尝试更具体的查询,使用源文档中直接出现的术语。
编译性能缓慢
表现: 编译时间远超预期;进度非常慢但未卡住。
可能原因:
- 使用本地 LLM 时模型对硬件来说太大或太慢
- 提取 Worker 数量配置过少
- 到 LLM API 的网络延迟过高
解决步骤:
增加 Worker 数量:
toml[compiler] extract_workers = 4 # 默认为 2;根据 API 速率限制适当增加如果使用远程 API,检查延迟:
bashtime curl -s -o /dev/null "$KAAS_LLM_BASE_URL/models"考虑使用更快或更小的模型进行提取:
toml[llm] model = "gpt-4o-mini" # 提取任务中比 gpt-4o 更快如果运行本地 LLM,确保有足够的 GPU 显存,模型无需过度交换。
编译期间监控系统资源:
bashdocker stats kaas-backend