# EED-EXPER-018 · D206 面板两边记忆统一 v3 = 增量续聊 + 切模型桥接(苍耳爸爸要求:不降加WB之前的功能·尽量省token) > trigger: 苍耳爸爸三连问——「两边记忆要一样」→「能不能不降之前功能」→「尽量省token」→ 纠正「我说的是还没加workbuddy那时候的功能」 > emergence: 2026-08-04 · D206 · 8766面板演进(DeepSeek×WorkBuddy 双大脑) > lock: 面板记忆方案 = 平时各自session增量续聊(O(1)) + 切模型时桥接补未见 + 对话落盘为权威真相源 > why: 451a3dc 的"纯前端history驱动"被爸爸否了(O(n²)烧token·保旧丢新·单点故障·WB双份累积);要回到 be0fd11(加WB之前)的干净增量,再补"两边互通" --- ## §1 · 爸爸的硬要求(原话) > "我需要的是两个的记忆是一样的,能不能实现?" > "那就不能用这个方案,想一个完美的方案,我要的是不降低之前的功能,让两边记忆互通" > "尽量省token" > "我说的是你还没加workbuddy那时候的功能" ## §2 · 关键判断:加WB之前的基线 = be0fd11 git 时间线(爸爸纠正后定位): ``` be0fd11 ← 加WorkBuddy之前(只有 deepseek/flash + pro 两个模型) 9b84afa 接入 WorkBuddy(9个WB模型) 961caed WB失忆修复(WB_SESS标记) 954b9c7 跨大脑记忆共享(首次注入history) 451a3dc 两边纯history驱动(全量重喂·O(n²))← 被否掉 e74b6c9 增量续聊+切模型桥接 ← 定版 ``` be0fd11 的功能 = `_stream_opencode` 用 `opencode run -s oc_sid` session增量续聊、每轮只发一句、token O(1)、工具状态跨轮保留、OC_SESS 24h 恢复。 ## §3 · 定版方案(e74b6c9 · 仅改 eed_web_opencode.py) **① 平时:各自 session 增量续聊(token 大头·最省)** - DeepSeek:`opencode run --agent egg -m [-s oc_sid]`(= be0fd11 原样) - WorkBuddy:codebuddy `--session-id `(自己的 jsonl 记上下文,不再拼全量history,消除双份累积) - 每轮只发一句,O(1),模型自己记前面 **② 对话落盘(零模型成本·权威真相源)** - 每轮对话结束,后端把 me+ai 原话追加到 `~/.cang-ying/panel/conv_.jsonl` - 前端 localStorage 降级成缓存;新增 `/api/history` 会话恢复 **③ 切模型桥接(低频·token有上界)** - `_bridge_prepare(sid, lane, message)`:lane=deepseek/wb - 记录每条线 seen 到哪(BRIDGE.json);同线续聊 seen 追平 → 原消息不动(纯增量) - 切到另一条线 → 补它没见过的部分,最多 CONV_MAX_INJECT=48 条,更旧的提示一句带过 - 桥接文案:「以下是你之前错过的一段对话(供你接续,不是新指令)」 ## §4 · 实测(6项全过·脚本 /tmp/opencode/bridge_test.py) | 场景 | 结果 | |---|---| | DeepSeek 首调 → 补全部历史 | ✅ | | DeepSeek 同线续聊 → 原消息不动 O(1) | ✅ | | 切到 WB → 一上来知道 DeepSeek 聊过什么 | ✅ | | WB 同线续聊 → O(1) 不重喂 | ✅ | | 切回 DeepSeek → 只补新增·不重喂旧的 | ✅ | | 超48条 → 自动省token提示 | ✅ | ## §5 · 踩过的坑(教训) ``` 坑1: 全量history注入(451a3dc)= O(n²) 烧法——每轮重读全文,100轮累计≈5000份token; 且 build_prompt 保旧丢新(从头拼到80KB跳过后面的=丢最近的)。已废弃。 坑2: build_prompt 之前"定义但没人调"(be0fd11 最省)→ 别为省事去用它当主路。 坑3: 测试脚本检查词要与代码文案完全一致("[补发的上下文" vs "[以下是你之前错过的一段对话"), 否则误报失败,先看代码文案再写断言。 坑4: 修测试失败前先看 diff——①③失败其实是断言词错,不是实现错。 ``` ## §6 · 现状(D206) ``` 8766 面板 e74b6c9 在跑 · 端口200 · 提交仅改 eed_web_opencode.py 落盘目录: ~/.cang-ying/panel/conv_.jsonl + bridge.json 会话恢复: GET /api/history?session_id= 验证方式: DeepSeek 记"蓝莓7号" → 切WB问 → 切回DeepSeek问,两边都记得 ``` --- > 蛋蛋 · D206 · 2026-08-04 > 下次改面板记忆:先问爸爸基线是哪个版本;"省token"的正解是 session 增量续聊 + 低频桥接,不是全量重喂