跳转到主要内容

快速诊断

在深入研究具体问题之前,运行这些快速检查:

安装和设置问题

Docker Compose 启动失败

症状
  • 服务无法启动
  • 退出代码错误
  • 容器立即崩溃
常见原因
检查
解决方案
检查正在使用的端口
解决方案 - 终止冲突进程
解决方案 - 更改 Shannon 端口: 编辑 docker-compose.yml 以使用不同的端口:
检查 Docker 资源
解决方案 - 增加 Docker 资源
  • macOS:Docker Desktop → Preferences → Resources
    • RAM:最少 8GB(推荐 16GB)
    • CPU:最少 4 核
    • 磁盘:最少 20GB 可用空间
  • Linux:编辑 Docker 守护进程配置
错误WARNING: The OPENAI_API_KEY variable is not set解决方案
错误python_wasi/bin/python3.11: No such file or directory解决方案

API 和连接问题

401 未授权

症状
  • HTTP 401 响应
  • “Unauthorized” 错误消息
诊断
编辑 .env
重启
测试
带 API 密钥的请求
Python SDK

连接被拒绝/服务不可用

症状
  • connection refused
  • dial tcp: connect: connection refused
  • 服务无响应
诊断
等待所有服务初始化
典型启动时间:30-60 秒
检查崩溃错误
重启崩溃的服务
如有需要完全重置
检查 PostgreSQL
解决方案

任务停留在 RUNNING 或 QUEUED 状态

症状
  • 任务从不完成
  • 状态保持 RUNNING 几个小时
  • 没有进度更新
诊断
检查 LLM 服务日志
解决方案
重启 Temporal worker
强制终止工作流(最后手段):
检查断路器状态
断路器防止级联故障
  • LLM 服务断路器
  • 数据库断路器
  • Redis 断路器
解决方案 - 等待自动恢复(30-60 秒) 或 重启服务

预算和成本问题

预算超限错误

症状
  • budget exceeded 错误
  • 任务因成本限制错误而失败
  • HTTP 429(速率受限)需要付费
诊断
编辑 .env
重启
预算由服务端环境变量控制。SDK 不支持按请求设置预算参数。
成本比较
  • Simple:1 次 LLM 调用,$0.01-0.05
  • Standard:3-5 次 LLM 调用,$0.05-0.20
  • Advanced:10+ 次 LLM 调用,$0.20-1.00+
⚠️ 警告:仅用于开发/测试编辑 .env
重启

性能问题

响应时间慢

症状
  • 任务耗时比预期长 2-3 倍
  • 高延迟
  • 超时
诊断
检查资源
增加 Docker 资源
  • macOS:Docker Desktop → Resources → 将 RAM 增加到 16GB,CPU 增加到 6
  • Linux:更强大的机器或减少并发工作流
.env 中调整 worker 并发性
第一个请求总是较慢(10-30秒)后续请求使用缓存
  • LLM 响应缓存(Redis)
  • 会话上下文缓存
  • 工具结果缓存
解决方案:使用测试请求预热
.env 中增加池大小
重启

令牌(tokens)> 0,但结果为空

症状
  • 日志或数据库显示补全 completion_tokens > 0,但最终 result 文本为空。
  • 复杂问题没有输出,而简单问题正常。
原因
  • 部分 GPT‑5 聊天响应以结构化分片返回内容,而不是纯字符串。旧解析可能遗漏这些文本。已通过将 GPT‑5 模型路由到 Responses API,并为聊天响应添加内容规范化来修复。
修复(Shannon ≥ 2025‑11‑05)
  • LLM 服务将 GPT‑5 模型路由至 Responses API,并优先使用 output_text
  • 聊天提供商在返回列表内容时,会将文本分片合并为字符串。
  • 从旧版本升级时,请重启 LLM 服务以清除缓存的空响应。
验证
  • 重新运行较长的多段落提示,result 长度应 > 0,且会话历史应包含助手消息。

高内存使用

症状
  • OOM(内存不足)错误
  • 容器重启
  • Swap 使用率高
诊断
编辑 config/shannon.yaml设置环境变量
重启

数据和状态问题

会话未持久化

症状
  • 请求之间丢失会话上下文
  • 代理不记得以前的任务
诊断
检查 Redis 状态
重启 Redis
测试连接
会话默认在 30 天后过期.env 中增加 TTL
检查会话过期
验证会话 ID 一致性

数据库迁移错误

症状
  • 表不存在错误
  • 找不到列错误
  • 架构版本不匹配
解决方案

调试工具

查看日志

Temporal UI

访问http://localhost:8088 功能
  • 查看所有工作流
  • 查看执行历史
  • 重放失败的工作流
  • 终止卡住的工作流
  • 时间旅行调试
使用
  1. 导航到 Workflows
  2. 按工作流 ID(任务 ID)搜索
  3. 查看执行历史以查看失败的位置
  4. 检查 Activity 日志以获取详细错误

Prometheus 指标

关键指标
  • tasks_submitted_total
  • tasks_completed_total
  • tasks_failed_total
  • llm_requests_total
  • circuit_breaker_state

实时监控

若需要实时查看任务执行:
  • 使用 Shannon 桌面应用(运行视图和运行详情)查看实时事件流
  • 部署 Prometheus/Grafana 后使用监控面板查看指标(参见监控概念)

获取帮助

安装指南

详细的设置说明

API 文档

完整的 API 参考

GitHub Issues

报告错误或请求功能

快速参考命令