73 lines
11 KiB
Markdown
73 lines
11 KiB
Markdown
# 2026-10-05
|
||||
|
|
|
|||
|
|
- 将 `session-mechanism` 技能**本地部署**到本工作区(agent-product):
|
|||
|
|
- `deploy_code.py --ws .../agent-product` 拷 7 个程序副本进 `.workbuddy/collab/`(collabd.py / goalctl.py / collabctl.py / guard.py / session-rules-check.py / init_workspace.py / supervise-launch.py,md5 与技能源一致)。
|
|||
|
|
- 新建 `collabd.config.json`:workspace=agent-product,host_db 空串(照现网 ai1net-dsh-server),wake_enable=false,含 env_check 三键(log / supervise_interval / wake_enable);建 `tmp/supervise-inbox/` 骨架。
|
|||
|
|
- 验证:env_check 0 bad、16 条钩子 0 缺失;`collabd --where` 正确认到本区配置。
|
|||
|
|
- ⛔ 未改全局 `roots.env`(现为 ai1net-dsh-server):避免劫持共享看板主视图。钩子已全局注册、靠 `payload.cwd` 定归属,agent-product 开会话即用。
|
|||
|
|
- 待拍板(跨工作区影响):agent-product 是否进共享看板可见 —— 改 roots.env 当主视图(动 ai1net-dsh-server 主区)vs 加进 ai1net-dsh-server 的 peer_workspaces(只读并列 tab)。已抛给用户。
|
|||
|
|
- 用户选「加为只读并列 tab」:把 agent-product 加进 ai1net-dsh-server 的 `collabd.config.json` 的 `peer_workspaces`(vibe-product 之后)。重启看板(触发 dsh-board-keepalive 计划任务,新实例 PID 70736,20099 HTTP=200)。
|
|||
|
|
- 看板 peer 硬过滤(`board.py::goal_files` 699-701):peer 必须有 `tmp/supervise-inbox/goal.json` 才出格;agent-product 当前无 goal.json ⇒ 不出格,符合「无目标不显示」设计,⛔ 不代设目标。设目标后即自动入榜。
|
|||
|
|
- 重启教训:手动 `Start-Process pythonw` 拉不起看板(无新进程);正确做法=`Start-ScheduledTask dsh-board-keepalive`(走生产动作)。curl 本机要 `--noproxy` 否则被代理返回 502。
|
|||
|
|
|
|||
|
|
## 加载 aigc-idea-impression 技能到本工作区
|
|||
|
|
- 用户要求「只加载技能相关文件」:从 `E:/ProgramData/AIProject/aigc-idea-impression` 拷贝 SKILL.md / POLICIES.md / 经验方法总结.md / references/ / subskill/ 到 `agent-product/.workbuddy/skills/aigc-idea-impression/`(项目级技能,自动发现)。
|
|||
|
|
- 排除非技能项:`.git/`、`AI变现日报/`(项目产物)、`.wbapp_*.genie`、源根 `.gitignore`/`.gitattributes`(git 元数据)、源自身 `.workbuddy/`。共 187 文件,1.5M;SKILL.md md5 与源一致。
|
|||
|
|
- 关键判据:以 SKILL.md 引用的文件集合为「技能相关」边界(而非整目录搬运)。
|
|||
|
|
|
|||
|
|
## 参考资料抽帧(aigc-idea-impression 抽帧 SOP 实战)
|
|||
|
|
- 建 `参考资料/`:Bilibili `BV1gsHn6AEk6`(AI工作台 3.0)与 YouTube `jVHyoCYidLM`(15万人看过的 AI工作台 2.0)。两视频各抽关键帧到各自 `frames/`。
|
|||
|
|
- 抽帧脚本 `extract_frames.py`(Python 调度 ffmpeg,双因素 scene 0.3/0.1/0.05 + 首尾帧 + >5s 补中点;字幕区=分辨率底部 15%,已自适应分辨率)。Bilibili=468 帧(1920×1080/293s),YouTube=661 帧(1280×720/371s)。
|
|||
|
|
- 🔴 **本机代理两套、别混**:
|
|||
|
|
- `HTTPS_PROXY=127.0.0.1:64313` 是 CodeBuddy 沙箱注入的「仅国内」代理——bilibili 200 通,google/youtube **502 被墙**。
|
|||
|
|
- 真·海外代理=**Shadowsocks(PID 26588)监听 `127.0.0.1:10800`(SOCKS5)** 与 **`ss_privoxy` `127.0.0.1:50410`(HTTP)**。两者 YouTube 均 200。yt-dlp 下载海外视频用 `--proxy http://127.0.0.1:50410`,且**沙箱外跑**(`dangerouslyDisableSandbox=true`),否则走 64313 被墙。
|
|||
|
|
- 🔴 **yt-dlp 缺 JS 运行时只拿到 360p**:加 `--js-runtimes "node:<managed node.exe 路径>"` 解锁 720p/1080p(实测 136+140 得 720p/49MB)。
|
|||
|
|
- 🔴 **safe-delete 钩子会打断下载**:`hlsnative` 给每个 HLS 分片建 `.part-FragN`,结尾批量删 ~48 个 ⇒ 触发 `SAFE_DELETE_BULK_CONFIRM_REQUIRED`(阈值 50/ turn 累计)并中断合并。修法=`--downloader ffmpeg`(HLS 由 ffmpeg 直写单文件、无分片临时文件),根除批量删除。
|
|||
|
|
- 残片:YouTube 目录里 3 个 `.f620.*` 是首次 360p 失败残片(共 ~112MB),safe-delete 门拦着没删;**用户 20:11 确认「可以清理」后已删除**,目录现仅余最终 .mp4 + frames/。
|
|||
|
|
|
|||
|
|
## 从关键帧 OCR 提取字幕(aigc-idea-impression 参考素材)
|
|||
|
|
- 需求:把两视频字幕分别整理成文档,「用关键帧即可」。结论:两视频都**无独立字幕轨**(YT 无字幕/自动字幕;B 站字幕需登录)→ 字幕是烧录硬字幕,只能从关键帧认字。
|
|||
|
|
- 方案(脚本留在项目根,可复用):
|
|||
|
|
- `cluster_subs.py`:每帧裁底部 15% 字幕区 → **固定阈值(160)二值掩码哈希**聚类(同句字幕跨帧掩码稳定、可合并),每簇取代表帧;另可拼字幕长图(被 Read 大文件守卫拦,弃用)。
|
|||
|
|
- `ocr_subs.py`:对代表帧字幕区 2x 放大 → `rapidocr-onnxruntime` OCR → 按时间排序、**模糊去重(相似度≥0.82 合并近重复)**、剔纯符号行 → 输出 `字幕文档.md`(含「内容概要」+ 时间戳条目)。
|
|||
|
|
- 结果:B 站 45 条 / YouTube 98 条 → `参考资料/<平台>/字幕文档.md`。
|
|||
|
|
- 🔴 **pip 装包坑**:环境 `HTTPS_PROXY=127.0.0.1:64313` 是仅国内代理,pip 装海外包(PyPI)会卡死/502 → 必须 `pip install --proxy http://127.0.0.1:50410`(Shadowsocks,沙箱外)。首装 rapidocr 因漏写代理卡 10 分钟。
|
|||
|
|
- 🔴 rapidocr 不接受 PIL Image,要 `engine(np.array(sub))`(numpy)。
|
|||
|
|
- 🔴 大尺寸 montage 长图被 Read「大文件守卫」拦截(全文进历史太贵)→ 改 OCR 而非视觉读长图。
|
|||
|
|
- OCR 仍有典型错字(ski→skill、爆数→爆款、彻作→创作、搜素→搜索),已靠模糊去重+概要缓解;要 100% 准确需人工校。
|
|||
|
|
|
|||
|
|
## 按规范重抽关键帧 + 逐帧 OCR(修复大量字幕遗漏)
|
|||
|
|
- 用户反馈「关键帧提取有问题,很多字幕都没有」;根因:v1 OCR 只对聚类代表帧 OCR,代表帧若模糊/过渡被丢弃则整句丢失,且字幕区 scene 0.1 未加低阈值安全网。
|
|||
|
|
- 严格按《视频抽帧与字幕规范》重写 `extract_frames_v2.py`:双因素 scene 0.3 + 字幕区 scene 0.1 + 全局 scene 0.05 + 首尾帧 + >5s 补中点;字幕区 crop 严格底部 15%(B 站 `1920:162:0:918`、YouTube `1280:108:0:612`);新增字幕区 scene 0.05 安全网。
|
|||
|
|
- 重写 `subtitle_ocr_v2.py`:对每帧字幕区(底部 18%,防双行截断)2x 放大后 OCR → 按时间滚动去重(相似度≥0.80 合并保留最长)→ 输出规范格式 `字幕稿_日期.md`(时间线表:时间 | 台词 | 帧文件)。
|
|||
|
|
- 结果:B 站 532 帧 → OCR 419 有效行 → 去重后 **241 条**(v1 仅 45 条);YouTube 772 帧 → OCR 640 有效行 → 去重后 **253 条**(v1 仅 98 条)。覆盖完整到片尾。
|
|||
|
|
- 旧 `frames/` 已移为 `frames_v1/` 备份;旧 `字幕文档.md` 保留以便对照。新产物为 `字幕稿_2026-10-05.md`。
|
|||
|
|
|
|||
|
|
## 优化 aigc-idea-impression 技能(规则展示不明显 → 内联)
|
|||
|
|
- 用户指出:技能对抽帧规则展示不够明显,导致执行时绕过规范。根因 = #002 同型(规则进了规范文档 ≠ 进执行上下文)。
|
|||
|
|
- 三处改动使规则"明显":
|
|||
|
|
1. `SKILL.md` §1.1:把抽帧核心铁律(双因素+首尾+补帧、crop 按分辨率、CRLF、`-ss`、逐帧 OCR)**内联成逐项勾选清单**(不再"仅引用链接")。
|
|||
|
|
2. `视频抽帧与字幕规范.md`:顶部加"⚠️ 核心铁律"速查块(6 条不可违反项);五、字幕提取明确"🔴 必须逐帧 OCR,禁只对代表帧"。
|
|||
|
|
3. `经验方法总结.md`:新增 **#010**(规则须内联进 SKILL.md + 字幕须逐帧 OCR),#006 交叉引用。
|
|||
|
|
4. `审计检查清单.md`:新增"七、抽帧/字幕产出校验"(19-23 条:字幕区 scene0.1 在场、双因素齐全、crop 按分辨率、逐帧 OCR、CRLF)。
|
|||
|
|
- 关键认知:技能里"明显"= 内联进被加载即进上下文的位置(SKILL.md 执行前强制检查),靠链接引用 = 不明显 = 等于没写。
|
|||
|
|
|
|||
|
|
## 从关键帧梳理 AI 内容工作台功能点
|
|||
|
|
- 产物:`参考资料/AI内容工作台_功能点梳理.md`(综合 B站 3.0 + YouTube 2.0 两视频关键帧的视觉分析)。
|
|||
|
|
- 平台识别:同一套个人内容工作台(Obsidian 插件形态,作者「小曾」);2.0 为升级版。
|
|||
|
|
- 主导航 10 Tab:首页 / 对标与热点 / 选题 / 拆解与沉淀 / 创作 / 发布与经营 / 计划 / 常用助手 / 画板 / 收支。
|
|||
|
|
- 功能模块:①首页(随手记录/本月之星/搜索) ②对标与热点(博主监控+爆款异常值识别+AI热点/Twitter/评论洞察) ③选题 ④拆解与沉淀(文案拆解→资产库:选题角度/结构/开场白/标题库) ⑤创作流水线(聊思路→写文案→起标题→做封面→发布检查→录制卡片) ⑥发布与经营(多平台发布/作品登记/数据复盘) ⑦计划 ⑧常用助手 ⑨画板(Excalidraw) ⑩收支。
|
|||
|
|
- 底座:Skill 调用体系 + 外部 AI(Codex/Claude) + Obsidian 知识库 + 飞书联动 + 跨平台数据聚合。
|
|||
|
|
- 方法:按抽帧规范取帧 → 逐帧视觉读取 UI → 归纳(非 OCR,是看画面 UI)。
|
|||
|
|
- ⚠️ 发现 v2 `frames/` 目录已被清掉(只剩 `frames_v1/`);截图改用 `frames_v1/` 按时间戳就近匹配(同一视频,时间戳可对齐)。
|
|||
|
|
- 整理产物:`参考资料/AI内容工作台_功能点与截图/`(README 索引 + 功能点梳理.md + `截图/` 16 张,命名 `序号_模块_功能点.jpg`)。
|
|||
|
|
|
|||
|
|
## 梳理 Easel 项目功能点 + 官方截图
|
|||
|
|
- 项目:`E:/ProgramData/AIProject/vibe-product/Easel`(浙大 ZJU-REAL/OpenDCAI Lab 开源,Apache 2.0,基于 OpenClaw Agent 的社媒内容工作台)。
|
|||
|
|
- 与上一例差异:Easel 是**源码项目**(非视频),信息源=README + `docs/skill-function-mapping.md`(114 Skill 能力地图)+ `web/frontend/src/components`(前端页面)+ CHANGELOG。
|
|||
|
|
- 五层工作流:发现→策划→创作→发布→归因。Web 主导航 6 项:工作台(含热点雷达/选题库/内容日历/发布中心子导航)/对话/技能库/内容库/账号/画像。
|
|||
|
|
- Skill 114 个分 6 层:基础6/发现9/策划16/创作51/发布20/归因11。画像六维:定位/风格/受众/平台/偏好红线/长期记忆。发布支持 7 平台。
|
|||
|
|
- 产物:`参考资料/Easel_功能点与截图/`(README + Easel_功能点梳理.md + `截图/` 6 张:品牌/海报 + 官方 4 张工作台截图 画像/热点雷达/内容日历/发布中心)。
|
|||
|
|
- ⚠️ 官方仓库**仅有 4 张工作台界面截图**(assets/readme/features),其余页面无图;已注明可从 `easel web` 运行实例补截。
|
|||
|
|
- 用户给出在线权威参照 `github.com/ZJU-REAL/Easel/blob/main/docs/skill-function-mapping.md` → 抓取核对:在线版与本地一致(114 Skill/6 层/计数相同),逐条比对**文档 0 缺失、0 多余**;已在文档头补上权威外链。
|
|||
|
|
- 追加:创作层 Skill 按「文字 11 / 视觉 16 / 音频 10 / 视频 15」四类做成明细表(合计 **52**,与在线清单逐条一致,0 重复 0 遗漏)。⚠️ 发现官方「分层总览表」写创作层 51,但其下**实际列出 52 条**(口径差 1),文档已按逐条清单标注 52 并说明差异。
|