问题修复
可选服务不可用时如何优雅降级并给出可操作回退提示
当可选服务可能不可用时,提前检查并缓存状态,继续提供降级功能,同时告诉用户缺少什么以及如何启用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
可选服务不可用时如何优雅降级并给出可操作通用
解决思路
- 在开始阶段检查服务可用性,避免在服务不可用时浪费计算。
- 缓存健康检查结果供会话使用,例如设置 60s TTL。
- 提供可操作的回退消息,说明缺少哪个服务、哪些功能被降级、如何启用该服务。
- 在可能时继续以降低后的功能运行。
- 按 LMStudio 检查模式实现:维护 lmstudioAvailable: boolean | null = null、lastCheck = 0、CACHE_TTL = 60000。
- 如果 lmstudioAvailable !== null 且 now - lastCheck < CACHE_TTL,直接返回缓存的 lmstudioAvailable。
- 使用 fetch('http://localhost:1234/v1/models', { signal: AbortSignal.timeout(2000) }) 检查可用性,并把 response.ok 赋给 lmstudioAvailable。
- 捕获异常时将 lmstudioAvailable 设为 false,然后更新 lastCheck = now 并返回 lmstudioAvailable。
- 在调用处,如果 await checkLMStudio() 为 false,则返回降级结果,例如 result: 'continue',并附带具体消息。
- 回退消息写明:LMStudio not available at localhost:1234;启用 Godel-Prover tactic suggestions 的步骤为:1. 从 https://lmstudio.ai/ 安装 LMStudio;2. 加载 Goedel-Prover-V2-8B 模型;3. 在 1234 端口启动本地服务器;并说明 Continuing without AI-assisted tactics...
- 使用回退消息模板:[Service] not available at [endpoint]. To enable [feature]: 1. [Step to install/start] 2. [Configuration step if needed] 3. [Verification step] Continuing without [degraded feature]...
- 不要静默失败或返回空结果。
- 不要每次调用都检查可用性;应缓存检查结果。
- 不要假设用户知道如何启动缺失的服务。
适用边界 · 注意事项
- 核心功能必须依赖该服务且无法安全降级时,不应仅返回提示后继续。
- 服务可用性变化极快、固定 60s TTL 会导致误判时,不应使用该缓存策略。
- 用户无法安装、启动或配置该服务,或无法执行修复步骤时,修复指引可能无效。