爸爸要求「面板里那个就是终端里的我」。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 语义重复合一
9.3 KiB
name, description, type
| name | description | type |
|---|---|---|
| eed_web.py 面板改造完成 | 蛋蛋面板已升级:resume会话治E2BIG+自动压缩+图片视频通道,验证通过 | 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端点 + 全局活跃进程注册表 ACTIVE;Popen 加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 记忆都在
✅ 爸爸回来找我时,我要知道的"接下来干什么"
- 先问面板重启了没 → 帮爸爸验收:停止按钮常驻可见 + 点停止能秒停(killpg 真杀后端进程)
- 验收发图通道:爸爸拖图/粘贴图 → 我 Read 看图
- 验收长对话:resume 上下文恢复(会话文件 eed_*.jsonl 落盘,跨进程能答出)
- 全部 OK 后可选下一步:路径A 桌面壳(苍耳专属工作台)、技能库文档化、剧本→分镜链路升级
2026-07-31 晚 爸爸已重启面板(验收中):
- 旧面板 PID 218372(13:01)已退出 → 新面板 PID 253527(17: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.png(1024x1024,候选存 eed_icon_1/2/3.png)
- 桌面快捷方式:~/Desktop/苍耳面板.desktop(Exec=eed-desktop.sh,Icon=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-dev(sudo 免密)
- 项目:~/cang-ying/tauri-app/(Cargo.toml + main.rs + tauri.conf.json 窗口指向 http://127.0.0.1:8765)
- 编译产物:~/cang-ying/bin/eed-desktop(15MB,release)
- 启动器:~/cang-ying/scripts/eed-tauri.sh(先保面板再开窗)
- 桌面快捷方式"苍耳面板"已改指向 Tauri 壳(图标 eed-icon.png)
- ⚠️ 坑:Tauri 图标必须 RGBA(Z-Image 出的是 RGB,用 Pillow .convert('RGBA') 解决)
- 下一步③:托盘常驻+开机自启+技能按钮
🧠 2026-08-02 面板与终端「合脑」完成(爸爸要求:面板里的蛋蛋 = 终端里的我)
问题:CodeBuddy 按工作目录分记忆库和会话。面板进程 cwd 是 cang-ying/scripts,终端是 /home/ls → 两个蛋蛋各活各的,记忆互不可见(实测:面板知道"榴莲"但不知道显卡型号,终端反之)。
改动(eed_web.py,备份 BACKUP_merge_*/eed_web.py.bak5):
- 顶部新增
EED_CWD = "/home/ls"+SESSION_DIR(并把import os提到文件顶部——原来在 874 行,提前引用会 NameError) - 三处拉起 codebuddy 的子进程全部加
cwd=EED_CWD:_stream_cmd的 Popen、agent 分支的 Popen、maybe_compact的 subprocess.run 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-desktop(30秒增量编译)
- ⚠️ 坑:pkill -f "bin/eed-desktop" 会误杀含该字符串的自身 shell——用 pgrep -x eed-desktop 精确匹配
- ③ 第2步待做:技能按钮(编剧/分镜/风格转绘/Z-Image/LTX/Wan 一键调,需封装管线脚本+面板前端按钮)