22 KiB
content_marketing_agent · 项目长期记忆
MCN 短视频整合营销工作台(项目 slug mcn-shortvideo-agent)
-
产品规划四段流水线,次序不可跳:①产品需求(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)→ ②产品功能(功能清单+界面布局)→ ③界面交互 → ④原型说明文档。用户 2026-10-08 定:「应该要先完成 1 2步 在进行第3步」。
-
①段 1a 是汇总型需求(不是 grill 澄清产出),落
docs/pm/mcn-shortvideo-agent/research/1a-需求文档.md;1b 竞品分析在content-workbench项目下(docs/pm/content-workbench/research/1b-竞品分析.md+证据附卷/5 份独立分析体),跨项目引用、不重写。 -
🔴 ③段设计供给口径(2026-10-08 用户定):默认主线是
oil-ui-pro(方法+独立评审),定调与令牌取③段自带样式库assets/design-systems/(当前design-system-tiaoyue);不使用open-design(2026-10-08 起已由另一个会话随③段携带于references/stage-delivery/assets/open-design/,作可选件、选了才用;源nexu-io/[email protected],Apache-2.0 本地裁剪版,64 MB / 4177 文件)。 -
⚠️ 2026-10-08 用户令已改全局技能文档(不再是「通则不改」):
product-planning/SKILL.md、references/stage-delivery/SKILL.md、references/stage-delivery/references/execution-runbook.md三份共 17 处,「③段默认主线」由 open-design 翻转成 oil-ui-pro;open-design降为可选件(另一会话同期把它随段携带进assets/open-design/,故口径是「选了才用」而非「装了才有」)。三份各写一条统一读法:凡出现open-design/...路径一律按段内相对路径assets/open-design/...读。 -
🔴 逐段管理要点:
assets/open-design/是第三方件,不许改其文件内容;署名见assets/open-design/ATTRIBUTION.md。⚠️ 当前缺 Apache-2.0 的 LICENSE 全文与上游 NOTICE(2026-10-08 记账)。 -
⚠️ 全局技能包被多会话并发写:2026-10-08 02:2x 实测「本会话」与「另一个会话」同时在改
stage-delivery/SKILL.md/execution-runbook.md/layouts-tooling.md⇒ 改前先看 mtime,改后必复跑check_naming.py(该脚本只读、不写盘)。 -
🔴 ③段供给关系 = 单一可信源(2026-10-08 用户令「按照建议处理」,A 方案已落地):
references/stage-delivery/SKILL.md的## 供给块是唯一定义处 —— 6 行表:方法主线|定调与令牌|版式骨架|工艺数值判据|独立评审协议|多方向比选。③段其余章节、references/execution-runbook.md、references/layouts-tooling.md、总入口product-planning/SKILL.md,提到供给一律引§供给·<行名>(行名取表左列),⛔ 不许复述「谁是默认/路径在哪/装了才有」。改供给只改那一块,改完跑闸门。边界:各档内部篇目(如可选档craft/xxx.md)属执行细节,留在 runbook 各步里,不算复述。起因:此前这一个事实被复述约 40 处,改一次动三份文件 17 处仍漏 13 处。 -
⚠️ 闸门
check_naming.py必须带--ws:python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent"⇒ 期望通过 2060 | 失败 0 | 提示 25;⛔ 别给--root .(那是「技能根」,给了会把工作区当技能包查、满屏 FAIL)。 -
🔴 MCN 原型的两个硬口径(2026-10-08 修,别再踩): 1)外壳高度链三件套:
html,body{height:100%;overflow:hidden}只写这条 ⇒.app跟着内容长高、.view自己不滚、滚动落回<body>(body.scrollTop有值而window.scrollY恒 0),而 body 是 hidden ⇒ 整页「滚不动」而不是「不滚」,折叠线以下的内容永远拿不到。必须同时写.app{height:100vh;grid-template-rows:minmax(0,1fr)}+.main{min-height:0;overflow:hidden}+.view{flex:1 1 auto;min-height:0;overflow:auto}。 2)判据核滚动必须逐个容器核:只复位/只核对window.scrollY会给出假绿(原型自检曾在 500×844 报「一屏装得下 7 行」,真值不到 1 行)。要核window/html/body/.view四个量。 ⇒ 连带教训:改门禁后那条变异注入点也要重指 —— M9 原来注入window.scrollTo,外壳修完后 window 根本滚不动,那条变异变成「抓不到东西的假变异」,已改成注入.view.scrollTop。 -
🔴 MCN 原型密度真边界(2026-10-08 重测):≥901px 宽达标(1440/1280/1024 一屏 8 行、1000/960/920/901 七行),≤900px 不达标(900 三行、768 两行、641 一行、500×844 零行;P2 在 500×844 也掉到 5 行)。边界=两栏带
.band的收线max-width:900px。旧文档写的「边界 768px」是假数产物,已整表替换。 -
🔴 MCN 原型「外部参考版」照搬结论:
3c-GPT参考版.md那版 P1 用满宽表格顺排,照搬后账号矩阵首行顶 724px ⇒ 一屏只 2 行(契约 ≥6),把行内第二行小字拿掉仍只 4 行 ⇒ 满宽表格与「一屏 ≥6 行」不可兼得,要兼得得把每格压成一个短值(动②段定的次级信息档位)。已登记、未动。 -
🔴 学参照物=量到细节,⛔ 不是「知道有这个名字」(2026-10-08 用户点破:「MCN 工作台里面每个组件的样式 高度 ICON 都是需要学习的,比如功能入口,感觉没有学到细节」)。 教训实例:功能入口卡
.data-card—— 名字是从参照物笔记里照抄的,但图标(22px 单色)/ 内衬 16/18 / 标题 17px / 网格 200px / hover 位移全丢了,只抄了个「白底 + 标题 + 描述」。 ⇒ 定成纪律:学任何组件都要回源站量(style.css的行号 +app.js的生成函数),逐项记「参照物原值 / 我方现值 / 学没学 / 为什么」,「刻意不学」的也要写理由(⛔ 不许漏掉混过去)。 参照物位置:E:/ProgramData/AIProject/mcn-short-video/project/短视频脚本创作/V1.0/mcn-work-shop/public/(只读)。 量到的组件原值存在两处:ui/布局排版参考-mcn-work-shop.md§六(摘要)+ui/3d-审查报告.md§十一(全量对照)。三条刻意不学:它的冷灰蓝品牌色 / 8 色相图标 / 圆角 12px 体系。 -
🔴 第 5 个门禁
ui/_tools/check_js.py(2026-10-08 上线):抠<script>段跑node --check+ 多行扫描 script 区内每个<!-- … -->块里的反引号。 起因:「模板字面量里的 HTML 注释带反引号」这个坑踩了 4 次,每次都是页面在浏览器里才炸(白屏 /xxx is not defined/Unexpected identifier),而node --check整份 html 报不出来。 ⚠️ 必须多行扫 —— 反引号常在注释的续行上,单行 grep 抓不到(我自己就漏过一次)。已做变异对照(注入反引号 ⇒ FAIL 2 项、退出码 1)。 ⚠️ 另一条硬教训:几何一改(加图标、改内衬、改网格最小宽),逐视口密度表必须整表重跑 —— 第六轮只量了 1440(697px/6 行 ✅)就往下走,回头发现 640 从 5 行掉到 3 行(卡片变高 + minmax 180→200 让三张卡折成两行)。 -
🔴 顶栏口径(2026-10-08 第四轮定案):顶栏只放两项 —— 左「MCN 短视频整合营销工作台」(产品名)+ 右「随手记」。⛔ 不许再往里加东西。 依据:②段
2b§286 只把「随手记」定为全局可达(原文「随手记出现在任意页面一次点击内,F2 是 P0,不能埋在两层下」)⇒ 它必须挂全局外壳。其余一律不许挂顶栏。 ⛔ 已删的六样,逐样来源(详细排查在3d-审查报告.md§十):收起侧栏(G-11)与面包屑来自本项目参照物笔记ui/布局排版参考-mcn-work-shop.md(⚠️ 它不是规则文件,是素材);演示·账号(G-07)/演示·状态(G-09)是我造的原型件(规则只说「状态由路由 + 演示开关驱动」,路由那条已完整覆盖);顶栏全局检索(G-10)与②段 P1 的页内板块重复;假设 2 项是我自己挂在顶栏的第二处 → 改挂到「假设」徽章上(徽章可点,G-08 仍活)。 🔴 两条纪律:①别把「参照物产品的习惯」当需求搬进外壳(本轮 6 项里一半是这么来的);②撤销一个交互 ID 必须同时删掉它的 DOM,否则判据「页面上每个 data-act 都在清单里」报红。 ⚠️ 连带口径:顶栏内衬 8px ⇒ 49px、任何宽度不折行;页面身份靠页头 h1(不再有面包屑);六态由路由进入(#/p/p4/empty)。 -
🔴 导航口径(2026-10-08 第四次改定;层级与命名部分):左侧栏 只有一层=八个功能项,与②段八页一一对应;短名一律 2 个字(总览 / 选题 / 资产 / 创作 / 发布 / 画像 / 复盘 / 对账 —— 2 字是硬上限,见下面那条形态条目);页头仍写②段页面全名。形态(64px 药丸浮栏、项 56×78、图标 24 + 名字常驻、中性填充当前态)以本文件下面那条「③段侧栏=64px 药丸浮栏」为准 —— ⛔ 不要在这里复述一遍,那是两处口径打架的老毛病。 自检判据:
#nav .nav-item恰 8 个、#nav直接子元素全是.nav-item(第二层 0 个)、八项逐个点过都落到自己那页、八页一次点击可达。 ⛔ 历史弯路两条,别再走回去:①上一版写成「只有一层=四个大板块」(把「一层」读成「只剩板块、把页面藏起来」);②再上一版把八个页项塞进侧栏但带 240px 宽文字列表。 ⚠️ 形态一改,自检判据的选择器与变异注入点必须跟着改(本轮.nav-flat→.nav-item;M2/M8 注入点重指),否则判据会静默失效变恒绿 —— 这类假绿已经踩过 4 次(M7/M10 上一轮、M2/M8 本轮)。 -
🔴 左右布局:每页都有一处两栏(
.grid-main-side,宽比 1.35fr : .9fr,照3c-GPT参考版的.grid.cols2):左=上下文/列表,右=产出/动作/详情;主数据块仍满宽。≤900px落单列(与.band同步)。 -
⚠️ 改原型时的两条硬坑(都踩过):① 在 JS 模板字符串里写 HTML 注释,注释里不许出现反引号 —— 会把模板字面量提前闭合,而
node --check仍通过(`x`后接.y被解析成成员访问)⇒ 页面静默白屏;② HTML 注释必须写-->,写成*/会把后面整段吞成注释。改完先跑node --check再跑自检。 -
⚠️ 功能入口卡的高度会转嫁给密度契约:它紧贴「数据统计」下面,卡越高,下面那张「一屏 ≥6 行」的列表首行顶越低。当前靠三处收高(卡内衬
12/16、≤1000px隐描述、≤1024顶栏内衬 8px)把边界维持在 901px。 -
🔴 产品规划技能包已立「单一可信源」门禁(2026-10-08):
check_naming.py里的AUTHORITY表登记「会变的事实 → 唯一定义处」,除定义处外任何地方出现复述即 FAIL。当前 9 条:②③边界(权威=②段 §②—③ 交接口)|停线规则(全包禁写,权威=总入口 §执行规则)|可选档骨架名单(权威=layouts-tooling.md开头)|说人话门槛|对比度数值|契约十二字段展开(权威=runbook §2.1)|②③定案原话|1b 定案原话|grill A/B 节火力点。改这些事实只改权威处,然后跑闸门。 -
🔴
DEAD_PATHS检查:strategy/、ux/这类已废目录形态若出现在正文的产出/只读/必读位置 ⇒ FAIL(已废路径曾 4 处残留且无门禁报)。含废止标记(旧/已废/已改名/曾/移进/改为…)的行豁免。 -
⚠️ 反面教训:
check_naming.py曾因用 stale 变量(if old in t该用tt,前面还跑了一个只赋值的空循环)导致「旧名提示」恒不触发(假绿)。改门禁后必须做变异对照:注一条假病进去,确认它真的报红,再还原。 -
真缺口:open-design
craft/的 13 份工艺数值判据(反 AI 味/无障碍/表单校验/动效纪律)在没装 open-design 的工作区无供给来源 ⇒ 明说,⛔ 不编。 -
产物落点:执行期间一律落
执行会话/目标-<标题前缀>-<sha1(title)[:6]>/(域门禁+文档合同要求);正式归档docs/pm/mcn-shortvideo-agent/{research,prd}/由主会话收口后统一搬。 -
🔴 工作区已 git 化(2026-10-08 08:1x):远端
[email protected]:admin/contentm_agent.git(Gitea,SSH deploy key 有写权限),本地分支main,首次提交df56c2c(1773 文件 / 205 MiB pack)、第二次eee042c(10-08 22:xx,③段第八轮收口,48 文件),均已推送。.gitignore排运行时噪音(collab 日志/脚本.bak*/supervise.pid/.workbuddy/tmp//tmp/_*.txt/**/ui/_scratch//__pycache__//tmp/_bh_shots/·_figma_preview/·_gpt_dl//.workbuddy/.load-pending),参考资料 231M 抽帧素材全量入库(⛔ 不打折)。提交者身份是局部配置的WorkBuddy <[email protected]>(全局 git config 未动),可推翻。 -
🔴 全局技能仓(
E:/ProgramData/.workbuddy/skills)是独立仓:远端[email protected]:admin/workbuddy_skills.git,分支master(⛔ 无 upstream 配置,必须git push origin master显式推),提交者身份是全局maogeigei <[email protected]>(与工作区仓不同,属正常,⛔ 别"统一")。⚠️ 该仓被多会话并发写:2026-10-08 22:11 另一会话(maogeigei)的提交7a476f9把我第八轮的 5 处编辑一起带走了(已逐条验在 HEAD 里)⇒ 提交前先git status+ 查 HEAD,别只认自己会话。⚠️ 判「我的改动在不在」看git show HEAD:<文件> | grep,⛔ 不看git show --stat的行数 —— 多文件提交的 --stat 是合并统计,照它判会误报"内容缺失"。⚠️ 仓里有 9 个??第三方技能目录(AI HOT/draw-ui/dsh-* ×6/oil-motion/skills-security-check)非本项目工作,⛔ 不擅自入库。 -
🔴 本工作区现名
contentm_agent(2026-10-08 定,旧名content_marketing_agent,再早是agent-product)。机制登记已全部改成现名:collabd.config.json的workspace+collabctl.py的WORKSPACES/KEEPALIVE_TASKS(源 + 3 个区副本共 4 份,改一处要改 4 份)+ ai1net 的peer_workspaces。旧空壳目录改名content_marketing_agent.RETIRED-20261008保留(零删除)。⚠️ ai1net 改了 peer ⇒ 看板要重启才生效(配置模块级只读一次)。 -
🔴 本区协作机制当前是「停」态(2026-10-08 用户令):开关 off、旧保活任务已注销(定义备份在
tmp/_oldtask_backup.xml)⇒ 目标完成后不再每 5 分钟空转。要再起 ⇒collabctl.py on --ws E:/ProgramData/AIProject/contentm_agent。 -
⚠️
collabctl.py的off --ws曾越区(kill_all()全机扫描不认--ws,一次杀掉他区+看板共 5 个进程)⇒ 2026-10-08 已修:ONLY_WS时只杀本区心跳 pid 并提前 return,4 份同步。⛔ 改这文件记住源 + 3 区副本都要改。
机制侧(本工作区)
-
全局技能根
E:/ProgramData/.workbuddy/skills/;本工作区技能目录.workbuddy/skills/目前只有aigc-idea-impression。 -
本机裸
bash会落到 WSL(路径被吃)⇒ 一律用显式路径E:/ProgramData/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin/bash.exe。 -
派活排期名
[执行]-[<goal.topics>]-<具体>;本区当前 topic 仍是「开源项目调研」。 -
🔴 取证通道=「只连不起」(2026-10-08 用户令「为什么要重新开浏览器,先检查之前是否开过浏览能否复用」):本机 9223 上常驻一个独立浏览器实例,动手前先
netstat -ano | grep ":9223"探;在跑就直接连,⛔ 不另起。规则已写进skills/browser-harness/SKILL.md的「🔴 本机(用户明令)」段。_tools/cap.py已照此改造:走 CDPEmulation.setDeviceMetricsOverride定视口(声明式,不再是--window-size+偏移量),只连 9223;顺带解除 500px 宽度下限,390×844 现已可测。⛔ 别新建自己起 Chrome 的脚本(本轮建过_tools/measure.py,写完即删)。 -
🔴 ③段功能入口卡(
.data-card)=三段纵向(2026-10-08 第七轮定,照参照物mcn-work-shop首页逐值量):图标 22px 独占一行 → 标题--fs-18/600(行高写死 1.35)→ 描述--fs-14(行高写死 1.35);gap:6px(--mg-6)、padding:16px、--sh-L1阴影;网格minmax(200px,1fr)。实测卡高 111.19px(参照物同宽 113px)。⛔ 三个刻意不学:圆角 12px、translateY(-2px)位移、一个功能一个色。.sect-nav没有小标(参照物也没有)。 -
🔴 密度表的读法(2026-10-08 更正):P1 账号矩阵的绿/红分界是「≥820 绿;768 / 700 红;640 绿(手机外壳);560 / 500 红」。⚠️ 旧文档曾把 768 记成 7 行 ✅ —— 那是错的,真值 5 行 ❌;错因是旧通道
--window-size的视口歧义(768 恰好卡在卡片「3 列/2 列」阈值 632px 上,只差 7px)。 -
🔴 改一个组件的高度之前,先跑「改前基线」:把改动回退成一份副本(如
_scratch/base.html),同一套判据跑满逐视口表 ⇒ 才能分清哪条红是自己造成的。⚠️「改完只量主视口」这个毛病已犯两次(第六轮 640、本轮 1440),两次都是逐视口表兜住的。 -
🔴 浏览器:一个页面只开一个标签(2026-10-08 用户令「后续调试网页 一个页面开一个标签就行了不要反复开」)。定义处=
E://ProgramData//.workbuddy//skills//browser-harness//SKILL.md「🔴 本机(用户明令)」段(⛔ 不复述细则,只引一处)。⚠️ 起因:本会话调试原型时反复new_tab且忘了关,共享实例里堆出同一个页面的一串标签,用户亲眼看到。 -
🔴 ③段侧栏=64px 药丸浮栏(不是「纯图标栏」)(2026-10-08 第七轮回源站实测更正)。真值:栏 64px/内衬 3px/圆角 100px/淡底+1px 淡描边的药丸浮栏(⛔ 无右边线);项 56×78 药丸(圆角 54/内衬 16/段间距 6),图标 24 在上、2 字短名 12px/500 在下,两者都常驻;当前项=中性填充
ink 6%+ 满墨(⛔ 不用品牌紫底);非当前项--ink-faint;项间无 gap;hover 只换色。名字一律 2 字(内容宽 56−32=24px);悬停提示的内容是该页说明、⛔ 不是名字。⛔ 三处不学:填充字形图标(我方用 mcn-work-shop 那套描边图标)/真浮层(仍占一列)/逐项对齐的 162px 说明列(我方是单条浮层)。⚠️ 改前那版「纯图标栏、名字只走提示」是照library.json的计数猜的 —— 包里既没有导航几何、design-system.html里app-sidebar也是 0 处。教训:计数不是几何,包里没有的事实就回源站量。 -
🔴 ③段密度分界(2026-10-08 第八轮 · A 方案后):P1 账号矩阵绿 = 1440/1280/1024/1000/960/920/901/900/840/820/768/700/640/560;红 = 只剩 500×844。做法:
≤1000功能入口卡最小宽200→160、≤820统计条最小宽132→96(auto-fit只在真装不下时才缩 ⇒ 宽屏 10 个视口一格未动)+ 移动档标签条藏掉 16px 横向滚动轨。⚠️ 这两档阈值已写进DESIGN.md§1.1 ⑨ 断点表(原表901–1024与901–1000区间重叠,已校正成六档不重叠)。 -
🔴 ③段导航规则已改(2026-10-08 第八轮):
layouts-tooling.md§5.5.2 判据订正 —— 从「栏宽必须 240–280px」改成「每一项的名字必须常驻可读(字号 ≥12px 不截断;64px 栏的名字上限 2 个汉字)」,判的是实质不是手段;新增 §4.9「导航栏」一档(两套合规形态:64px 药丸栏 / 240–280px 宽栏;含当前项只改颜色、窄屏整段换形态、⛔ 横滚条不许画滚动轨、图标一处出口、⛔ 不许照组件清单计数反推形态)。⇒ 我们现在的「64px 药丸浮栏 + 2 字常驻短名」从"判据判不过"变成"合规"。 -
🔴 ③段两条元规则(2026-10-08 第八轮新增,
layouts-tooling.md§5.6):① 参照物原值与我方令牌刻度冲突时必须走三步(量到数值 → 差异列表 → 逐条「学/不学+理由+代价」),⛔ 不许默默"就近落位",「刻意不学」⛔ 不得用于掩盖规则违反;② 自造物料(参照物笔记、临时对照表)⛔ 不得作为判据来源 —— 证据栏只许写「技能原文的文件:小节」「源站/源文件实测读数」「用户原话」。 -
🔴 ③段 Gate-3 新增强制两条(2026-10-08 第八轮):① 「看过」必须有落盘记录(
oil-ui-pro10 分制评分写进 3d),⛔ 不许用「自检 N 项全绿」顶替;② 人工项必须给机检实现,否则写死「本条无机检」,🔴 ⛔ 不许在没有取值手段的条目上打 ✅。⚠️ 起因:3d§九 曾把「§5.5 五条逐条过完」记成✅ 自检机核,而那五条当时零覆盖。 -
⚠️ 全局技能包
check_naming.py曾带 3 条既有 FAIL(2026-10-08 第八轮修):①「停线规则」的 AUTHORITYauthority写成None(=连权威处也不许写,与本条why自相矛盾;且SKILL.md里根本没有这条规则)⇒ 已改SKILL.md并把规则补进「执行规则」;②③stage-proto-doc与usage-scenario两处仍写①段已废的strategy/路径 ⇒ 已改research/1d-产品策略.md/research/1e-使用场景.md。复跑:通过 2060 / 失败 0 / 提示 27。⛔ 改全局技能包前后都要跑这个闸门。