diff --git a/crates/zclaw-growth/src/experience_store.rs b/crates/zclaw-growth/src/experience_store.rs index 8943c9d..1f999c7 100644 --- a/crates/zclaw-growth/src/experience_store.rs +++ b/crates/zclaw-growth/src/experience_store.rs @@ -126,7 +126,16 @@ impl ExperienceStore { // If an experience with this URI already exists, merge instead of overwrite. if let Some(existing_entry) = self.viking.get(&uri).await? { - if let Ok(existing) = serde_json::from_str::(&existing_entry.content) { + let existing = match serde_json::from_str::(&existing_entry.content) { + Ok(e) => e, + Err(e) => { + warn!("[ExperienceStore] Failed to deserialize existing experience at {}: {}, overwriting", uri, e); + // Fall through to store new experience as overwrite + self.write_entry(&uri, exp).await?; + return Ok(()); + } + }; + { let merged = Experience { id: existing.id.clone(), reuse_count: existing.reuse_count + 1, diff --git a/crates/zclaw-hands/src/hands/browser.rs b/crates/zclaw-hands/src/hands/browser.rs index 70ecef0..07130d0 100644 --- a/crates/zclaw-hands/src/hands/browser.rs +++ b/crates/zclaw-hands/src/hands/browser.rs @@ -1,7 +1,7 @@ //! Browser Hand - Web automation capabilities (TypeScript delegation) //! //! **Architecture note (M3-02):** This Rust Hand is a **schema validator and passthrough**. -//! Every action returns `{"status": "pending_execution"}` — no real browser work happens here. +//! Every action returns `{"status": "delegated_to_frontend"}` — no real browser work happens here. //! //! The actual execution path is: //! 1. Frontend `HandsPanel.tsx` intercepts browser hands → routes to `BrowserHandCard` diff --git a/wiki/log.md b/wiki/log.md index 5eb1749..3af231c 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -19,7 +19,7 @@ tags: [log, history] - Hand 执行前端字段映射: instance_id → runId (kernel-hands.ts + gateway-api.ts) - Heartbeat 痛点感知: PAIN_POINTS_CACHE + VikingStorage 持久化 + 未解决痛点检查 (heartbeat.rs) - Browser Hand 委托消息: pending_execution → delegated_to_frontend + 中文摘要 (browser.rs) -- 跨会话记忆检索增强: IdentityRecall 模式 26→43 + 弱身份信号 + 低结果 fallback (query.rs + retriever.rs) +- 跨会话记忆检索增强: IdentityRecall 模式 26→54 + 弱身份信号(9个) + 低结果 fallback (query.rs + retriever.rs) - Twitter Hand 凭据持久化: SetCredentials action + 文件持久化 + 启动恢复 (twitter.rs) - Browser 测试适配: 新响应格式断言修复 @@ -34,6 +34,14 @@ tags: [log, history] **6 个集成测试**: 经验累积触发/阈值过滤/多模式独立/SkillGenerator prompt/QualityGate验证/FeedbackCollector计分。全量 918 PASS。 +## [2026-04-21] fix | 穷尽审计后 3 项修复 (browser doc / experience_store warn / identity pattern count) + +- browser.rs: 过时文档注释 `pending_execution` → `delegated_to_frontend` +- experience_store.rs: merge 反序列化失败时添加 `warn!()` 日志 + fallback 覆写 +- wiki/log.md: identity_patterns 数量更正 43→54 + +验证: cargo check 0 error | cargo test 112 PASS (growth+hands) + ## [2026-04-20] fix | 50 轮功能链路审计 7 项断链修复 (commit f291736) **审计报告**: `docs/test-evidence/FUNCTIONAL_CHAIN_AUDIT_2026_04_20.md`