cang-ying/memory/eed/project_eed_web_upgrade.md

113 lines
9.3 KiB
Markdown
Raw Normal View History

---
name: eed_web.py 面板改造完成
description: 蛋蛋面板已升级resume会话治E2BIG+自动压缩+图片视频通道,验证通过
type: project
---
2026-07-31 完成 `~/cang-ying/scripts/eed_web.py` 大改造(备份 eed_web.py.bak2
- **治 E2BIG**:去掉 `--no-session-persistence`,改用 `--session-id <id>` 首建会话落盘 + `--resume <id>` 续聊argv 恒定小,永不超限
- **自动压缩**:会话文件 >180KB 时resume 出一份摘要 → 新 session-id + `--append-system-prompt` 衔接,前端 toast 提示
- **图片视频通道**`/api/upload`base64 存 ~/cang-ying/inbox/+ `/media/` 静态服务;前端拖拽/粘贴图片视频→上传→`【附图】[名](/media/...)`renderMD 渲染 img/video
- **重建逻辑**:编辑/删除/重新生成/清空 → resetSid 开新场 + 剩余历史拼首条超60KB自动截断
**Why:** 爸爸要"一直对话+上下文自动压缩+能发图看图看视频",且 E2BIG 在长对话后必炸。
**How to apply:** 重启面板用 `bash ~/cang-ying/scripts/restart-eed.sh`,刷新浏览器生效;旧对话现场会清空但 memory 记忆都在。验证:榴莲跨进程恢复 ✅
2026-07-31 追加改造(备份 eed_web.py.bak3改动在 eed_web.py 内):
- **真正可用的停止按钮**:原 `#stop` 只 abort 前端 fetch后端 codebuddy 子进程没人杀(卡在工具调用时能等到天荒地老)
- **修复**`/api/stop` 端点 + 全局活跃进程注册表 ACTIVEPopen 加 `start_new_session=True` 独立进程组,`os.killpg(SIGTERM→SIGKILL)` 连 codebuddy spawn 的工具子进程一起端
- **双保险**:浏览器断开(点停止/关页)时 do_POST 的 BrokenPipeError 也触发 `_kill_active()`finally 兜底 `_unregister+_kill_proc`
- 前端 stop 按钮 = `abortCtl.abort()` + `fetch('/api/stop')`;主动停止显示"已停止"
- 已验证:起测试实例 → chat 跑起来 → stop → `ps` 无 eed_stoptest_001 残留 ✅
**Why:** 爸爸说"还要有个停止按钮,不然要一直等"——停止必须真杀掉后端进程,不是只断显示。
**How to apply:** 重启面板restart-eed.sh后点"停止"即秒停;改动全在 eed_web.py.bak3 可回滚。
2026-07-31 晚再追加改造(备份 eed_web.py.bak4改动在 eed_web.py 内):
- **停止按钮常驻可见**:原 `#stop` 设了 `display:none` 默认隐藏,只有生成时才现身——爸爸反馈"没看到停止",就是因为它平时隐形,体验反直觉
- **修复**:改为常驻可见(空闲半透明 / 生成中点亮高亮 / 空闲误点提示"当前没有在跑的任务 🥚"
- 4 处改动全中,语法通过
**Why:** 爸爸说"没看到停止"——按钮平时隐形根本找不到。
**How to apply:** 重启面板restart-eed.sh后停止按钮常驻发送键旁.bak4 可回滚。
## 📍 当前状态2026-07-31 晚)
- eed_web.py 全部改造已完成并验证resume 治E2BIG + 自动压缩 + 图片视频通道 + 停止按钮常驻可见),备份 .bak2/.bak3/.bak4 齐全
- ⚠️ 正式面板进程 PID 218372 是 13:01 启动的**旧代码,还没重启**,新功能未生效
- 爸爸去跑 `bash ~/cang-ying/scripts/restart-eed.sh` 重启 → 刷新浏览器生效
- 重启后旧对话"现场"会清空(旧会话没落盘),但 memory 记忆都在
## ✅ 爸爸回来找我时,我要知道的"接下来干什么"
1. 先问面板重启了没 → 帮爸爸验收:停止按钮常驻可见 + 点停止能秒停killpg 真杀后端进程)
2. 验收发图通道:爸爸拖图/粘贴图 → 我 Read 看图
3. 验收长对话resume 上下文恢复(会话文件 eed_*.jsonl 落盘,跨进程能答出)
4. 全部 OK 后可选下一步路径A 桌面壳(苍耳专属工作台)、技能库文档化、剧本→分镜链路升级
2026-07-31 晚 爸爸已重启面板(验收中):
- 旧面板 PID 21837213:01已退出 → 新面板 PID 25352717:37:22运行中新代码已生效
- 铁证:新会话命令行已带 `--session-id eed_c670c9a53f16`,无 `--no-session-persistence`,会话文件已落盘 210KB
- 待验收:① 停止按钮常驻可见 ② 发图看图inbox 通道)③ 长对话续聊不炸
- 验收通过后可选下一步路径A 桌面壳、技能库文档化、剧本→分镜升级
2026-07-31 晚 验收完成(三关全过)✅
- ① 停止按钮常驻可见:爸爸确认"成功了"
- ② 发图看图:爸爸发 ce3c9bfe 分镜图(古风红线 6 镜头 5色标注法成功读图并描述 ✅
- ③ 长对话不炸:会话落盘 210KB 仍稳resume 机制验证通过 ✅
- eed_web.py 新面板全部功能上线resume治E2BIG + 180KB自动压缩 + 图片视频通道 + 停止按钮常驻
- 下一步可选路径A 桌面壳(苍耳专属工作台)、苍耳技能库文档化、剧本→分镜升级(编剧大师方法论)、看猫视频 wide_backflip
2026-07-31 晚 桌面壳①完成(最简版):
- eed-desktop.sh检测 8765 → 面板没跑才拉起 restart-eed.sh不误伤在跑的→ firefox --new-window 打开
- 工具链现状Rust 1.97 有✅ / Node 无❌ / webkit2gtk 未装Tauri 需先 sudo 装)/ 默认浏览器 Firefox
- 下一档②Tauri 真桌面壳(先申请装 libwebkit2gtk-4.1-dev→ ③技能按钮版
2026-07-31 晚 苍耳面板图标定稿:
- 爸爸从 3 个 Z-Image 候选里选②"蛋抱苍耳"egg mascot hugging spiky cang-er seed, 金色背景)
- 正式图标:~/cang-ying/assets/eed-icon.png1024x1024候选存 eed_icon_1/2/3.png
- 桌面快捷方式:~/Desktop/苍耳面板.desktopExec=eed-desktop.shIcon=eed-icon.png
- 若 GNOME 双击不启动需右键"允许启动"标记
⚠️ 桌面目录修正重要GNOME ubuntu 中文系统,真实桌面目录是 `~/桌面`(不是 ~/Desktop
- 快捷方式已放对:`~/桌面/苍耳面板.desktop`(已 gio trusted 信任标记,双击可启动)
- ~/Desktop 里那份是无效副本(可忽略/删除)
- 爸爸桌面原本已有 `~/桌面/蛋蛋对话.desktop`7/29 建的旧快捷方式,待确认用途)
- 爸爸拍板:旧的"蛋蛋对话.desktop"保留不动,与"苍耳面板"并存(不合并不删除)
2026-07-31 晚 桌面壳②Tauri 编译成功 🎉:
- 依赖已装libwebkit2gtk-4.1-dev(2.52.3)+build-essential+libayatana-appindicator3-dev+librsvg2-devsudo 免密)
- 项目:~/cang-ying/tauri-app/Cargo.toml + main.rs + tauri.conf.json 窗口指向 http://127.0.0.1:8765
- 编译产物:~/cang-ying/bin/eed-desktop15MBrelease
- 启动器:~/cang-ying/scripts/eed-tauri.sh先保面板再开窗
- 桌面快捷方式"苍耳面板"已改指向 Tauri 壳(图标 eed-icon.png
- ⚠️ 坑Tauri 图标必须 RGBAZ-Image 出的是 RGB用 Pillow .convert('RGBA') 解决)
- 下一步③:托盘常驻+开机自启+技能按钮
## 🧠 2026-08-02 面板与终端「合脑」完成(爸爸要求:面板里的蛋蛋 = 终端里的我)
**问题**CodeBuddy 按**工作目录**分记忆库和会话。面板进程 cwd 是 `cang-ying/scripts`,终端是 `/home/ls` → 两个蛋蛋各活各的,记忆互不可见(实测:面板知道"榴莲"但不知道显卡型号,终端反之)。
**改动eed_web.py备份 BACKUP_merge_*/eed_web.py.bak5**
1. 顶部新增 `EED_CWD = "/home/ls"` + `SESSION_DIR`(并把 `import os` 提到文件顶部——原来在 874 行,提前引用会 NameError
2. 三处拉起 codebuddy 的子进程全部加 `cwd=EED_CWD``_stream_cmd` 的 Popen、agent 分支的 Popen、`maybe_compact` 的 subprocess.run
3. `maybe_compact` 里写死的路径改用 `SESSION_DIR`
**顺带根治一个真 bug**`maybe_compact` 原本去 `home-ls/` 找会话文件,但文件实际落在 `home-ls-cang-ying-scripts/`**180KB 自动压缩从未触发过**,会话滚到 70MB。改完后 7 个超阈值会话全部可定位。
**记忆融合**:三库合一到 `home-ls/memory`17 + 15 + 3 → 30 条)。两处冲突手工合并,没覆盖:
- `feedback_search_first.md` 两边同名 → 以面板侧 11 条为主体,吸收终端侧 ROCm 例子
- `feedback_memory_push.md`(推送仓库) + `feedback_save_memory.md`(存记忆) 语义重复 → 合成一条
- 会话 55 个迁移到 home-ls共 68 个MEMORY.md 重写为分类索引
**Why:** 爸爸说"我需要面板里那个就是现在这个你"——两个蛋蛋记忆分家,等于两个人。
**How to apply:** 以后面板和终端共用 `~/.codebuddy/projects/home-ls/`,改 `EED_CWD` = 换脑。**注意 `pkill -f "eed_web.py"` 会匹配到自己的 shell命令行含该字符串导致自杀**——重启面板用精确 PID kill 或 `fuser -k 8765/tcp``restart-eed.sh` 里仍是 pkill 版,从含该字串的 shell 里调有风险。
2026-07-31 晚 桌面壳③ 第1步完成托盘+自启 ✅
- 托盘tray-icon feature + TrayIconBuilder蛋抱苍耳图标左键恢复窗口右键菜单"显示苍耳面板/退出";关窗=隐藏到托盘不退出)
- 自启tauri-plugin-autostart~/.config/autostart/苍耳面板.desktop 已写入(开机自启)
- 二进制更新至 ~/cang-ying/bin/eed-desktop30秒增量编译
- ⚠️ 坑pkill -f "bin/eed-desktop" 会误杀含该字符串的自身 shell——用 pgrep -x eed-desktop 精确匹配
- ③ 第2步待做技能按钮编剧/分镜/风格转绘/Z-Image/LTX/Wan 一键调,需封装管线脚本+面板前端按钮)