错误处理与诊断
wescode 通过多种机制帮助你理解和处理 AI 交互中的各类错误。
AI 回复中的错误
错误类型分类
| 严重度 | 显示方式 | 重试按钮 | 适用场景 |
|---|---|---|---|
| 默认(可重试) | 红色错误块 | ✅ 显示 | Provider 瞬时错误、认知内部错误 |
| 信息性(不可重试) | 柔和提示 | ❌ 隐藏 | 安全策略阻止、预算用尽 |
| 静默 | 不渲染 | ❌ 不渲染 | 引擎自愈中的瞬态 |
可重试错误
同样请求再发一次可能成功:
- Provider 503 / 429(服务暂时不可用)
- 网络超时
- 认知内部错误
- 终端事件缺失
不可重试错误
重发同样内容只会得到同样拒绝:
guardrail_blocked:安全策略阻止content_filter_blocked:内容过滤budget_exhausted:预算用尽memory_limit_exceeded:记忆限制panic_stop:引擎崩溃
对于这类错误,建议换一种表述或开启新对话。
用户中断
context_cancelled 和 interrupted 不会渲染任何错误块。
Provider 相关错误
API Key 问题
| 症状 | 原因 | 解决 |
|---|---|---|
| 401 Unauthorized | Key 无效或过期 | 在设置中更新 Key |
| 403 Forbidden | 无权限访问该模型 | 检查账户权限 |
| 429 Rate Limited | 请求频率过高 | 等待后重试 |
模型不可用
"vision_not_supported"
→ 当前模型不支持图片输入
→ 切换到支持 Vision 的模型
WES 欠费
- WES 模型标记为
disabled - BYOK 模型仍可正常使用
- 选中 BYOK 模型后不显示欠费提示
- 状态栏显示黄色"WES 欠费"指示
工具执行错误
exec 错误
命令执行失败时,AI 会:
- 读取错误输出
- 分析失败原因
- 尝试修复并重试
- 报告最终结果
文件操作错误
| 错误 | 原因 | AI 行为 |
|---|---|---|
| 权限不足 | 文件只读 | 提示更改权限 |
| 路径不存在 | 目录缺失 | 创建目录后重试 |
| 文件过大 | 超过读取限制 | 分段读取 |
CycleDetector
当 AI 陷入重复操作时:
- 首次触发:注入纠正消息,给 AI 第二次机会
- 再次触发:HITL 询问用户怎么办
- 超时:60 秒后自动终止并保存进度
引擎状态诊断
健康检查
在状态栏查看引擎状态:
| 状态 | 含义 |
|---|---|
| AI 就绪 | 引擎正常 |
| AI 启动中 | 引擎正在初始化 |
| AI 不可用 | 引擎未启动或崩溃 |
引擎日志
日志位置:
~/Library/Application Support/wescode/
logs/wescode.log ← Go 后端日志(INFO+)
常见引擎问题
| 问题 | 排查步骤 |
|---|---|
| Chat 无响应 | 检查状态栏 → 查看日志 → 重启窗口 |
| 索引卡住 | 检查索引进度条 → 查看 CKG 状态 |
| 记忆丢失 | 确认工作区正确 → 检查 Cell 数据 |
治理策略错误
Hardline 拦截
以下命令永远被拦截(18 条灾难正则):
rm -rf /
fork bomb
shutdown
kill engine
...
显示为信息性提示,不可重试。
Sandbox 限制
当 NetworkPolicy=deny 时:
"网络命令被安全策略阻止"
→ curl/wget/nc 等命令被拦截
→ 调整治理策略或切换到编程模式
DenyPaths
写入被禁止的路径:
"写入路径被治理策略拒绝"
→ 检查当前治理模式
→ 确认目标路径是否在允许范围内
连接性问题
Provider 连通性测试
在设置中测试 Provider:
- 打开设置 → AI 服务
- 点击 Provider 旁的测试按钮
- 查看测试结果(chat / embedding / vision)
网络排查
用户:"Provider 连接失败"
排查步骤:
1. 检查 API Key 是否有效
2. 检查 base_url 是否正确
3. 测试网络连通性
4. 查看 Provider 服务状态
5. 检查代理设置
数据恢复
Cell 数据损坏
wesgine 的三层数据韧性保证:
- meta.db 损坏:不影响会话和记忆
- sessions.db 损坏:不影响记忆和状态
- state.db 损坏:不影响会话
Boot 永远成功
Cell 启动时自动处理:
- 损坏的数据库文件归档到
corrupt/ - 降级启动(部分功能不可用)
- 不阻塞新对话
手动恢复
如果数据出现问题:
1. 检查 ~/Library/Application Support/wescode/cells/ws-{hash}/
2. 损坏的 DB 在 corrupt/ 目录
3. 删除 Cell 数据后重新索引(CKG 可重建)
4. 记忆数据不可重建——定期导出
最佳实践
遇到错误时
- 查看错误类型:可重试 vs 不可重试
- 检查状态栏:引擎是否健康
- 查看日志:
logs/wescode.log - 重启窗口:解决大部分瞬态问题
预防措施
- 定期更新 wescode 版本
- 保持 API Key 有效
- 监控 WES 余额
- Git 干净状态下做大改动
- 配置合适的治理模式