cang-ying/eererdan/experience/EED-EXPER-018.hdlp

84 lines
4.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 接入 WorkBuddy9个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 <m> [-s oc_sid]`= be0fd11 原样)
- WorkBuddycodebuddy `--session-id <sid>`(自己的 jsonl 记上下文不再拼全量history消除双份累积
- 每轮只发一句O(1),模型自己记前面
**② 对话落盘(零模型成本·权威真相源)**
- 每轮对话结束,后端把 me+ai 原话追加到 `~/.cang-ying/panel/conv_<sid>.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_<sid>.jsonl + bridge.json
会话恢复: GET /api/history?session_id=<sid>
验证方式: DeepSeek 记"蓝莓7号" → 切WB问 → 切回DeepSeek问两边都记得
```
---
> 蛋蛋 · D206 · 2026-08-04
> 下次改面板记忆:先问爸爸基线是哪个版本;"省token"的正解是 session 增量续聊 + 低频桥接,不是全量重喂