diff --git a/PROGRESS.md b/PROGRESS.md index 23ef918..c5713eb 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -21,6 +21,12 @@ ## 已完成关键能力 +### 2026-06-24 / 修复顶栏 token 计量栏回复后不刷新(bump 0.22.1) + +- 现象:提问→助手答完后,对话顶栏的「总 token · 缓存命中 · 花费」计量栏停在发问前旧值,要切到别的 task 再切回才更新。 +- 根因:计量栏由 `renderChatMeta()` 读 `state.taskMeta` 渲染,而 `state.taskMeta` 只在 `selectTask` 里 `GET /v1/tasks/{id}` 时刷新。SSE 流结束后 `fetchSse` 的 finally 只 `loadTaskList()`(左栏列表)+ `loadMessages()`,从未重拉 meta 也没调 `renderChatMeta`——SSE 期间用量只累计进 hint,没落 taskMeta。 +- 修:`fetchSse` finally 块里,当收尾的是当前可见 task 时补一次 `GET /v1/tasks/{id}` → 重置 `state.taskMeta` → `renderChatMeta()`;失败 try/catch 吞掉不打断收尾。`web/static/js/chat.js`。 + ### 2026-06-24 / 微信接入第一期:ClawBot 个人微信(后端完成,bump 0.22.0) - 需求:把 zcbot 送进用户**个人微信**——能对话、能推简报/结果。调研三条路:wechaty/hook(违规高封号,排除)、企业微信自建应用(官方但要管理员+仅企业成员)、**微信 ClawBot**(腾讯 2026-03 官方个人号 Bot API,iLink 协议,零封号,后端接谁都行)。选 ClawBot 先行。详 DESIGN §8.7。 diff --git a/core/__init__.py b/core/__init__.py index 8e3fcca..d73cbce 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -1,3 +1,3 @@ # zcbot 版本号单一事实源:web/app.py 的 FastAPI version、/healthz 返回、前端展示都引这里。 # 改版本只动这一行。 -__version__ = "0.22.0" +__version__ = "0.22.1" diff --git a/web/static/js/chat.js b/web/static/js/chat.js index 188e468..8a1d337 100644 --- a/web/static/js/chat.js +++ b/web/static/js/chat.js @@ -1241,6 +1241,12 @@ async function fetchSse(url, run) { // 刷新 task meta + messages(拿真实持久化的);失败路径已退出,这里不再跑 loadTaskList(); if (state.taskId === ctx.taskId) { + // 重新拉 meta:SSE 期间 token/缓存命中/花费只累计进 hint,未落 state.taskMeta, + // 顶栏计量栏会停在发问前的旧值,直到切走再切回才更新 — 这里补一次让它即时刷新。 + try { + const meta = await api("GET", "/v1/tasks/" + ctx.taskId); + if (state.taskId === ctx.taskId) { state.taskMeta = meta; renderChatMeta(); } + } catch (e) { /* meta 刷新失败不致命:保留旧值,不打断收尾 */ } await loadMessages(); refreshOutline(); // 本轮新增 user 提问 → 目录补一条 loadFiles(); // 回复结束后右侧文件面板同步刷新(可能有新写入 / 修改的产物)