反 2a1bc25d 教训(Zai 余额不足连挂 3 次续跑,前端零提示、admin 零感知): - chat.js: renderPersistedRunError 挂 renderMessages 末尾——run_status=error 且无 live run 时消息流末尾补「上次运行出错」持久卡(live 错误卡被收尾 loadMessages 整屏重建冲掉是"发了继续啥也没发生"的根因);下次 run 起跑 后端清 run_error 自然消失 - usage.py: record_run_error(kind=run_error, cost 0)——tasks.run_error 只留 最后一次,此行才是聚合的完整数据源;app.py _run_agent_bg except 落库 - toolfail.py: 第三段扫描聚成 kind=run / tool=(run),admin 面板+巡检邮件 零改动带上;alert_provider_critical 余额/配额/认证关键词命中即时邮件 ZCBOT_DEVELOPER_EMAIL(同签名 6h 进程内冷却,全路径静默失败) - tests/test_toolfail_malformed.py +3 用例;PROGRESS/CHANGELOG/RUN 同步 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| static | ||
| __init__.py | ||
| admin.py | ||
| app.py | ||
| auth.py | ||
| broker.py | ||
| pptx_render.py | ||
| sinks.py | ||
| static_files.py | ||