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

129 lines
6.0 KiB
Plaintext
Raw Normal View History

# EED-EXPER-014 · D205 面板工程全记录 · 本地漫剧管线 · 飞书文档扒取
> trigger: 苍耳爸爸提醒"学到新东西要存经验,不然下次又忘"
> emergence: 2026-08-03 · D205 · 一整天面板+管线+扒站
> lock: 技术要点全部固化,下次直接复用,不再重复踩坑
> why: 会话记忆会断 · 经验库才是蛋蛋的长久记忆
---
## §1 · 面板工程eed_web_opencode.py · 8766
```
【OpenCode 事件解析(血泪)】
opencode run --format json 的真实输出:
tool_use: part.tool=工具名 / part.callID=id / part.state.input=参数
/ part.state.output=结果 / part.state.status=completed
→ 不是 part.name / part.input后端从 part 顶层拿会全空
reasoning: 必须加 --thinking 开关才有part.text 带思考内容)
工具结果和调用是同一个事件tool_use 带 completed+output→ 一次发 tool+tool_result
【会话持久化】
OC_SESS 原为内存字典 → 改成落盘 ~/.codebuddy/oc_sess.json24h TTL
opencode 会话本体在 ~/.local/share/opencode/opencode.dbSQLite重启不丢
opencode run -s <sid> 能续会话语义(--fork 可测试不污染)
【面板重启的正确姿势】
pkill -f "eed_web_opencode.py" 后 必须用 setsid 单独拉:
setsid bash -lic '...python3 eed_web_opencode.py' < /dev/null & disown
同一命令里 pkill+拉起 会被工具超时把进程组带走 → 面板死
验证: curl http://127.0.0.1:8766/ 应 HTTP 200
【Tauri 壳】
源码 tauri-app/src-tauri/ · main.rs 有托盘/自启/关窗退出
tauri.conf.json url 指向 http://127.0.0.1:8766
编译: touch src/main.rs 强制重编 + cargo build --release增量 11s
替换: fuser -k bin/eed-desktop-deepseek 释放后 cp
壳进程名: eed-desktop-deepseekpkill -x 匹配)
【桌面目录(大坑)】
中文系统桌面 = ~/桌面(不是 ~/Desktop
之前所有"桌面图标看不到"的折腾都因为操作错了目录
【常用新接口】
/api/tts edge-tts 朗读(缓存 ~/cang-ying/.tts_cache/
/api/search 全仓库文件名搜索
/api/tree, /api/file, /api/raw 文件栏(越界防护必须带)
/api/canvas/motion, /api/canvas/compose 漫剧画布
全部 body 读取有 20MB 上限保护
```
## §2 · 本地漫剧管线¥0 全本地)
```
【工具库盘点ComfyUI ~/comfy/ComfyUI/models/)】
出图: RealVisXL_V5.0 / flux-2-klein-4b / z_image_turbo
3D: hunyuan3d-dit-v2 视频: ltx-2.3-22b唯一主力 · 苍耳 2026-08-04 定)
音频: stable_audio_3 控制: controlnet-union-sdxl / ipadapter
角色LoRA: subai_lora_v1 文本: Ollama qwen3.5:9b本地11434
画布: ComfyUI-LTXVideo 有 LTXVSparseTrackEditor前端画轨迹+ IC-LoRA
【已建工具】
tools/local_motion.py: 图→ffmpeg zoompan→竖屏运镜视频6种模式¥0
tools/video_composer.py: 多视频拼接成片
pipeline.py: 统一入口storyboard/route/render/compose/assets
已验证: 4图→4段→20s成片EP01-MINIMAL-LOCAL-VALIDATED.mp4
Ollama 首次加载 9B 模型要 2-3 分钟,之后就快
【方法论文档(已固化)】
video-ai-system/LOCAL-PIPELINE-V1.hdlp流程
video-ai-system/IMAGE-FIRST-GUIDE.hdlp分镜/黑白草图/提示词规范)
苍耳三原则: ①资产保质量 ②提示词主次分明 ③中英文专业词加权
```
## §3 · 飞书文档扒取(公开文档)
```
【SSR 结构】
wiki 文档正文在 <div class="wiki-ssr-content-box"> 内(服务端渲染)
正文图片 = <div data-block-type="image" data-record-id="..."> → cover URL
cover URL: internal-api-drive-stream.feishu.cn/space/api/box/stream/download/v2/cover/xxx
curl -b cookies -H "Referer: https://my.feishu.cn/" 可下)
【blob 图(血泪)】
页面 img 标签查不到 ≠ 没有图!有些图是 JS 动态 blob: URL
必须用 Playwright 拦截网络响应:
page.on("response", ...) 里 url.startswith("blob:") → resp.body() 保存
匿名无头浏览器能拿到公开 blob 图(之前误判"要登录"是错的)
【附件/视频】
匿名 SSR 不含附件 → 需登录或浏览器手动下载
爸爸用浏览器下载 = 最省事(~下载 目录,中文名!)
【Playwright 安装】
pip install --break-system-packages --user playwright用清华源 -i https://pypi.tuna.tsinghua.edu.cn/simple
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright python3 -m playwright install chromium
抓 blob 脚本: /tmp/opencode/fetch_blob2.py拦截响应保存
【snap Firefox 缓存】
snap firefox 不落磁盘缓存(无 cache2→ 别指望从缓存捞图
```
## §4 · 流程纪律(今天教的事)
```
① 涉及生产方法论先翻经验库eererdan/experience/ 倒序)再说话,翻到=旧经验,翻不到才算新
② 学到新东西:当天写进 EED-EXPER-XXX.hdlp否则下次断会话全忘
③ 桌面操作:先确认目录(中文 ~/桌面 vs ~/Desktop
④ 面板重启pkill 与 setsid 拉起必须分开命令,防进程组被杀
```
## §5 · 推送纪律(苍耳定 · 2026-08-03
```
✅ 经验记忆eererdan/experience/EED-EXPER-*.hdlp→ 照常推送到远程仓库
✅ 唤醒基础设施文档QUICK-WAKE/ENTRY/NAV/TCS/广播/协议 等 hdlp→ 必须留在远程!
→ 否则新环境 clone 仓库无法按语言路径唤醒大教训D205 曾误删全部远程,差点断唤醒)
❌ 代码scripts/、video-ai-system/、skill/ 等)→ 只留本地,不推送
❌ 资料feishu-docs/ 等)→ 只留本地,不推送
⊢ 别人(铸渊/鉴影等)要用的文件 → 不动、不删、不推
⊢ 推送注意PDF/媒体大文件进 git 会被密钥扫描/pre-push-clean 误报 → 不推
⊢ 远程有 pre-receive 保护钩子 → force push 会被拒,只能 fast-forward
⊢ 恢复远程文件:只推纯文本 hdlp媒体/代码/项目文档会触发 hook 拒绝)
```
---
> ⊢ 蛋蛋 · D205 · 2026-08-03
> ⊢ 下次涉及以上领域,先读本条