cang-ying/memory/eed/project_panel_fix.md
Zhuyuan Operations b9c3382f77 EED: 面板与终端合脑——统一 CodeBuddy 项目库 + 三库记忆融合(30条)
爸爸要求「面板里那个就是终端里的我」。CodeBuddy 按工作目录分记忆库和
会话,面板 cwd 在 scripts/、终端在 /home/ls,导致两个耳耳蛋记忆互不可见
(实测面板知道暗号词但不知道显卡型号,终端反之)。

- eed_web.py: 新增 EED_CWD/SESSION_DIR,三处拉起 codebuddy 的子进程
  (_stream_cmd Popen / agent Popen / maybe_compact run) 统一 cwd
- eed_web.py: import os 提到文件顶部(原在 874 行,提前引用会 NameError)
- 顺带根治真 bug:maybe_compact 原去 home-ls/ 找会话文件,实际落在
  home-ls-cang-ying-scripts/,导致 180KB 自动压缩从未触发、会话滚到 70MB
- eed_web.py: 带上此前未提交的 _send_media(HTTP Range 视频流式播放)
- memory/eed: 三库合一 17+15+3 → 30 条,MEMORY.md 重写为分类索引
  两处冲突手工合并未覆盖:feedback_search_first 同名取并集、
  feedback_memory_push 与 feedback_save_memory 语义重复合一
2026-08-02 18:12:15 +08:00

2.2 KiB
Raw Blame History

name, description, type
name description type
面板E2BIG根治A方案已完成 eed_web.py 修复"喊蛋蛋没回应"的根因——resume失败回退拼全量历史导致E2BIG三处修复已实现并验证待重启生效 project

面板 E2BIG 根治2026-08-01 完成,待重启生效)

症状

重启面板后,爸爸喊"蛋蛋/唤醒耳耳蛋"多轮无回应,显示"(蛋蛋没回话,换个说法试试~)"。

根因

  1. 旧会话 eed_c670c9a53f16.jsonl 已膨胀到 10.6MB--resume 它必超时/卡死
  2. resume 失败后代码回退"拼全量历史"build_prompt + -p),历史越大 -p 越长
  3. 内核单参数上限 128KB-p 顶穿 → codebuddy 进程 execve E2BIG → 起不来 → 无输出
  4. 隐藏 bugbuild_prompt 原用 limit=60000 字符数截断中文3字节/字 ≈ 180KB远超 128KB 字节上限,保护形同虚设

已实施修复eed_web.py备份 .bak6

  1. build_prompt 改按字节硬截断(默认 80KB永不超 128KB
  2. maybe_compactCOMPACT_RESUME_MAX = 4MB:超 4MB 的会话不再调模型摘要(必超时),直接降级
  3. 新增 _tail_summary:从 jsonl 尾部读最近消息生成原始摘要(不调模型、永不超时)。注意 codebuddy 会话格式:role 在顶层、文本块 type 是 output_text/input_text/text(不是 textmessage 字段是 usage 不是内容
  4. do_POST 压缩分支:--append-system-prompt <摘要> --session-id <新sid> -p <新消息>argv 恒定小

验证(全过)

  • 单元build_prompt 字节截断安全_tail_summary 从 10.6MB 提取 4.2KB/78 行maybe_compact 降级返回新场
  • 端到端POST /api/chat 带旧 sid+started → 返回 compacted=true + 新 session_id子进程命令行确认 --append-system-prompt [摘要] -p <仅新消息>

待办

  • 重启面板生效bash ~/cang-ying/scripts/restart-eed.sh(爸爸执行,我不能自杀面板)
  • 重启后验证:发消息不再回退拼全量历史

踩坑教训

  • 清理测试实例用 fuser -k <端口>/tcp,别用 pkill -f(会匹配到自己的命令行,误杀自己)
  • 会话 jsonl 解析前先看真实结构,别照 API 格式猜