Files
contentm_agent/.workbuddy/memory/MEMORY-压前全量-20261009.md

22 KiB
Raw Permalink Blame History

content_marketing_agent · 项目长期记忆

⚠️ 本工作区现名 contentm_agent(2026-10-08 定;旧名 content_marketing_agent,再早 agent-product)。 整理纪律:同一件事只在一处写全,别处只引;新条目先进当日日志,跨会话有用才上提到这里。

一、仓库与位置

  • 🔴 工作区仓(E:/ProgramData/AIProject/contentm_agent):远端 [email protected]:admin/contentm_agent.git(Gitea,SSH deploy key 有写权限),分支 main;提交 df56c2c(首,1773 文件 / 205 MiB)+ eee042c(10-08 22:xx,③段第八轮收口)。提交者身份是局部配置 WorkBuddy <[email protected]>(全局 git config 未动,可推翻)。.gitignore 排运行时噪音(collab 日志/脚本 .bak*/supervise.pid/.workbuddy/tmp//tmp/_*.txt/**/ui/_scratch//__pycache__//tmp/_bh_shots/·_figma_preview/·_gpt_dl//.workbuddy/.load-pending);参考资料 231M 抽帧素材全量入库(⛔ 不打折)。
  • 🔴 全局技能仓(E:/ProgramData/.workbuddy/skills)是独立仓:远端 …/admin/workbuddy_skills.git,分支 master(⛔ 无 upstream ⇒ 必须 git push origin master 显式推,git status -sb 不显示 ahead,别拿它判断同步),提交者身份是全局 maogeigei <[email protected]>(与工作区仓的局部身份不同,属正常,⛔ 别"统一")。⚠️ 该仓被多会话并发写、推进以分钟计 ⇒ 任何结论都带时效,用前先 git log -1 校准。此前 9 个"未纳管"目录(AI HOT/draw-ui/dsh-* ×6/oil-motion/skills-security-check)已于 e03465c 入库。
  • 🔴 取证通道=「只连不起」:本机 9223 上常驻一个独立浏览器实例,动手前 netstat -ano | grep ":9223" 探;在跑就直接连,⛔ 不另起。规则在 skills/browser-harness/SKILL.md「🔴 本机(用户明令)」段;_tools/cap.py 已走 CDP Emulation.setDeviceMetricsOverride 定视口(声明式,390×844 可测)。🔴 一个页面只开一个标签(用户令),定义处同上(⛔ 不复述细则)。
  • ⚠️ 本机:裸 bash 会落到 WSL(路径被吃)⇒ 一律用 E:/ProgramData/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin/bash.exe。
  • 全局技能根 E:/ProgramData/.workbuddy/skills/;本工作区 .workbuddy/skills/ 只有 aigc-idea-impression。

二、产品规划四段流水线(MCN 项目 slug mcn-shortvideo-agent)

  • 四段次序不可跳:①产品需求(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)→ ②产品功能 → ③界面交互 → ④原型说明文档。用户 2026-10-08 定:「应该要先完成 1 2步 在进行第3步」。
  • ①段 1a 落 docs/pm/mcn-shortvideo-agent/research/1a-需求文档.md(汇总型,不是 grill 产出);1b 在 content-workbench 项目下(跨项目引用,⛔ 不重写)。
  • 产物落点:执行期间一律落 执行会话/目标-<标题前缀>-<sha1(title)[:6]>/(域门禁+文档合同要求);正式归档 docs/pm/mcn-shortvideo-agent/{research,prd}/ 由主会话收口后统一搬。
  • 🔴 本区当前目标(tmp/supervise-inbox/goal.json,2026-10-08 23:29 切)=「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」,类别 产品规划。旧目标「根据 1a 需求文档生成 MCN…产品界面」已归档进 goals/。
    • 🔴 换目标必须带 --kpi —— 不带 ⇒ 旧验收判据原样留下 ⇒ 新目标一声明就被判「全过」、机制不派活(已踩)。
    • 🔴 换目标还要换 tmp/supervise-inbox/NEXT.md —— 那是执行会话的开工队列,不换 ⇒ 新派出的会话去做旧目标的活。
    • 派活排期名 [执行]-[<goal.topics>]-<具体>。
  • 四步目标(现行队列 NEXT.md):①梳理现有板块/功能划分/操作路线 → ②问 GPT 如何规划最合理 → ③重做②段两份(产品功能/界面布局)→ ④重生成界面。⛔ 按序、不跳步、不给改法抢跑。
    • ✅ 第①棒已完成(2026-10-08 23:4x):产物 产品规划/现状梳理-板块·功能·操作路线.md(域目录 产品规划/ 由此建立)。该稿口径:只摆现状与问题点(A ③段新增层/B 跨页不落地/C 流转归属/D ②③口径不一致/E 已登记未清),⛔ 不给改法。

三、③段设计供给(单一可信源)

  • 🔴 供给关系只在 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 处。
  • 🔴 默认主线 = 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 文件)。三份技能文档共 17 处已翻转,并统一读法:凡出现 open-design/... 路径一律按段内相对路径 assets/open-design/... 读。
  • ⚠️ assets/open-design/ 是第三方件,⛔ 不许改其文件内容;署名见其 ATTRIBUTION.md。⚠️ 当前缺 Apache-2.0 的 LICENSE 全文与上游 NOTICE(2026-10-08 记账)。
  • ⚠️ 真缺口:open-design craft/ 的 13 份工艺数值判据(反 AI 味/无障碍/表单校验/动效纪律)在没装 open-design 的工作区无供给来源 ⇒ 明说,⛔ 不编。
  • 🔴 说人话的处置(2026-10-08 用户选 C):⛔ 两个技能的内容不整合进 product-planning,保持按技能名引用(整合会造第二处定义)。分工写在总入口「执行规则」内容准则条:模式清单取 humanizer(含 references/patterns.zh.md,中文产出读它)|评分与门槛取 humanizer-zh 五维表(≥45/50)|冲突以 humanizer-zh 为准|⛔ 取不到来源时明写「无判据来源,本项未判」,不许凭感觉放行。落盘文字一律过说人话并在文末写评分。

四、技能包闸门与改包纪律(product-planning)

  • ⚠️ 闸门 check_naming.py 必须带 --ws:python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent" ⇒ 期望 通过 2060 | 失败 0 | 提示 27;⛔ 别给 --root .(那是「技能根」,会把工作区当技能包查、满屏 FAIL)。改全局技能包前后都要跑它。
  • 🔴 「单一可信源」门禁:check_naming.py 的 AUTHORITY 表登记「会变的事实 → 唯一定义处」,除定义处外任何地方复述即 FAIL。当前 9 条:②③边界(权威=②段 §②—③ 交接口)|停线规则(全包禁写,权威=总入口 §执行规则)|可选档骨架名单(权威=layouts-tooling.md 开头)|说人话门槛|对比度数值|契约十二字段展开(权威=runbook §2.1)|②③定案原话|1b 定案原话|grill A/B 节火力点。改这些事实只改权威处,然后跑闸门。 ⚠️ 写"不复述"时⛔ 别把名单抄进来(我自己踩过)。
  • 🔴 DEAD_PATHS 检查:strategy/、ux/ 这类已废目录形态若出现在正文的产出/只读/必读位置 ⇒ FAIL;含废止标记(旧/已废/已改名/曾/移进/改为…)的行豁免。
  • ⚠️ 改门禁后必须做变异对照(注一条假病进去,确认报红,再还原)。反面教训:check_naming.py 曾因用 stale 变量(if old in t 该用 tt)导致「旧名提示」恒不触发(假绿)。
  • ✅ 2026-10-08 第八轮修掉 3 条既有 FAIL:①「停线规则」在 AUTHORITY 表里的 authority 写成 None(自相矛盾且 SKILL.md 里没有这条规则)⇒ 已补进「执行规则」;②③ stage-proto-doc 与 usage-scenario 仍写①段已废的 strategy/ 路径 ⇒ 已改 research/1d-产品策略.md / research/1e-使用场景.md。
  • 🔴🔴 改包纪律(技能仓根 改包纪律.md,技能仓提交 0011050,谁来这个仓干活先读它):⛔ 不许整文件覆盖|落地前比对时点|改完必跑闸门|收到覆盖性提交先做结构体检。+出事后的标准修法。
  • 🔴🔴 事故留痕:全局技能包曾不是最新调整版(2026-10-08 22:5x 查明):提交 1d7d31a 提交信息写「按合并落地」,实际是整文件覆盖 product-planning 下 7 个文件,新稿编写时点早于被覆盖文件的修改时点 ⇒ 必丢中间调整。硬指标:「单一可信源」类声明 5 处 → 1 处(丢的是 stage-delivery/SKILL.md 的 ## 供给 整节标题+六行表、layouts-tooling.md 开头的名单权威声明、stage-requirements/SKILL.md 的②—③交接口声明),供给口径被翻转成「open-design = 默认主线」。✅ 2026-10-08 23:0x 已整包回退到 44d42b0(技能仓提交 8fc9a92),闸门回 2060 | 0 | 27;那批「说人话」改写另存 归档/技能包-说人话改写-被覆盖存档-20261008/(将来只取措辞、⛔ 不取结构改动)。
  • 🔴 闸门 12 条 FAIL 的归因(已坐实):由 1d7d31a(10-08 22:22,作者 maogeigei)一步引入。验证法(可复现):git archive <版本> product-planning 抽出来各跑一次闸门 —— 44d42b0 ⇒ 全过、1d7d31a ⇒ 失败 12;且 git diff --stat 44d42b0..HEAD -- product-planning/scripts/check_naming.py 为空(判据零改动,排除"判据变严翻旧账")。性质像回退:把权威声明整段删掉 ⇒ 权威处一弱化,复述就长回来。⛔ 修法顺序:先恢复权威处声明,再清复述,反了会反复。⛔ 别默认是"自己上次的债"。
  • 🔴 并发覆盖实录与 B 方案补落:我第八轮在 stage-delivery/SKILL.md 供给块的三处被另一会话那轮重写覆盖。用户选 B 方案后由其转告「另一会话已完成」,核实现场不符(HEAD 与 mtime 都没动、远端无新提交)⇒ 本会话 22:4x 补落(提交 46bee95)。⛔ 判"改动是否还在"一律 git show HEAD:<文件> | grep,⛔ 别看 --stat 行数。
  • ⚠️ 全局技能包被多会话并发写:改前先看 mtime,改后必复跑 check_naming.py(该脚本只读、不写盘)。
  • 🔴 ③段导航规则已改(第八轮):layouts-tooling.md §5.5.2 判据订正 —— 从「栏宽必须 240–280px」改成「每一项的名字必须常驻可读(字号 ≥12px 不截断;64px 栏的名字上限 2 个汉字)」,判实质不判手段;新增 §4.9「导航栏」一档(两套合规形态:64px 药丸栏 / 240–280px 宽栏;含当前项只改颜色、窄屏整段换形态、⛔ 横滚条不许画滚动轨、图标一处出口、⛔ 不许照组件清单计数反推形态)。
  • 🔴 ③段两条元规则(第八轮新增,layouts-tooling.md §5.6):① 参照物原值与我方令牌刻度冲突时必须走三步(量到数值 → 差异列表 → 逐条「学/不学+理由+代价」),⛔ 不许默默"就近落位",「刻意不学」⛔ 不得用于掩盖规则违反;② 自造物料(参照物笔记、临时对照表)⛔ 不得作为判据来源 —— 证据栏只许写「技能原文的文件:小节」「源站/源文件实测读数」「用户原话」。
  • 🔴 ③段 Gate-3 新增强制两条(第八轮):① 「看过」必须有落盘记录(oil-ui-pro 10 分制评分写进 3d),⛔ 不许用「自检 N 项全绿」顶替;② 人工项必须给机检实现,否则写死「本条无机检」,⛔ 不许在没有取值手段的条目上打 ✅(起因:3d §九 曾把「§5.5 五条逐条过完」记成 ✅ 自检机核,而那五条当时零覆盖)。

五、③段原型(ui/mcn-workbench.html)硬口径

  • 🔴 外壳高度链三件套:只写 html,body{height:100%;overflow:hidden} ⇒ .app 跟着内容长高、.view 自己不滚、滚动落回 <body>,而 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}。
  • 🔴 判据核滚动必须四个容器都核:window / html / body / .view。只核 window.scrollY 会给假绿(原型自检曾在 500×844 报「一屏 7 行」,真值不到 1 行)。⇒ 连带:改门禁后变异注入点也要重指(M9 原注入 window.scrollTo,外壳修完后 window 根本滚不动 ⇒ 假变异,已改成注入 .view.scrollTop)。
  • 🔴 顶栏只放两项:左「MCN 短视频整合营销工作台」+ 右「随手记」。⛔ 不许再加。依据:②段 2b §286 只把「随手记」定为全局可达(「任意页面一次点击内,F2 是 P0,不能埋在两层下」)⇒ 必须挂全局外壳,其余一律不许挂。
    • ⛔ 已删六样,逐样来源(详查在 3d §十):收起侧栏(G-11) 与面包屑来自本项目参照物笔记 ui/布局排版参考-mcn-work-shop.md(⚠️ 那是素材,不是规则文件);演示·账号(G-07)/演示·状态(G-09) 是造的原型件;顶栏全局检索(G-10) 与②段 P1 的页内板块重复(已改挂到 P1 页内);假设 2 项改挂到「假设」徽章(G-08)。
    • 🔴 两条纪律:①别把「参照物产品的习惯」当需求搬进外壳;②撤销一个交互 ID 必须同时删它的 DOM,否则判据「每个 data-act 都在清单里」报红。
    • ⚠️ 连带:顶栏内衬 8px ⇒ 49px、任何宽度不折行;页面身份靠页头 h1(不再有面包屑);六态由路由进入(#/p/p4/empty)。
  • 🔴 左侧栏=一层八个功能项,与②段八页一一对应;短名一律 2 个字(总览/选题/资产/创作/发布/画像/复盘/对账)。形态=64px 药丸浮栏:栏 64px/内衬 3px/圆角 100px/淡底+1px 淡描边(⛔ 无右边线);项 56×78 药丸(圆角 54/内衬 16/段间距 6),图标 24 在上、2 字短名 12px/500 在下,两者都常驻;当前项=中性填充 ink 6% + 满墨(⛔ 不用品牌紫底);非当前项 --ink-faint;hover 只换色。悬停提示的内容是该页说明、⛔ 不是名字。⛔ 三处不学:填充字形图标/真浮层/逐项对齐的 162px 说明列。
    • 自检判据:#nav .nav-item 恰 8 个、#nav 直接子元素全是 .nav-item(第二层 0 个)、八项逐个点过都落到自己那页。
    • ⛔ 历史弯路两条:①写成「只有一层=四个大板块」;②塞八页项但带 240px 宽文字列表。⚠️ 形态一改,自检判据的选择器与变异注入点必须跟着改(本轮 .nav-flat→.nav-item,M2/M8 重指),否则判据静默失效变恒绿 —— 假绿已踩过 4 次。
    • ⚠️ 教训:改前那版「纯图标栏、名字只走提示」是照 library.json 的计数猜的 —— 计数不是几何,包里没有的事实就回源站量。
  • 🔴 左右布局:每页都有一处两栏 .grid-main-side(宽比 1.35fr : .9fr):左=上下文/列表,右=产出/动作/详情;主数据块仍满宽。≤900px 落单列。
  • 🔴 功能入口卡 .data-card=三段纵向(照参照物 mcn-work-shop 首页逐值量):图标 22px 独占一行 → 标题 --fs-18/600(行高写死 1.35)→ 描述 --fs-14(行高 1.35);gap:6px、padding:16px、--sh-L1 阴影;网格 minmax(200px,1fr)。实测卡高 111.19px。⛔ 三个刻意不学:圆角 12px、translateY(-2px) 位移、一个功能一个色。.sect-nav 没有小标。⚠️ 这张卡的高度会转嫁给密度契约(它紧贴「数据统计」下面)—— 当前靠三处收高(卡内衬 12/16、≤1000px 隐描述、≤1024 顶栏内衬 8px)维持边界。
  • 🔴 学参照物=量到细节,⛔ 不是「知道有这个名字」(用户点破:「每个组件的样式 高度 ICON 都是需要学习的,比如功能入口,感觉没有学到细节」)。纪律:学任何组件都要回源站量(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 体系。
  • 🔴 密度分界(第八轮 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 只在真装不下时才缩 ⇒ 宽屏一格未动)+ 移动档藏掉 16px 横向滚动轨。⚠️ 两档阈值已写进 DESIGN.md §1.1 ⑨ 断点表(原表 901–1024 与 901–1000 区间重叠,已校正成六档不重叠)。遗留未清:3d B-15(500×844 一屏 −1 行)留档待裁定,给了 A/B/C 三条路与代价,⛔ 判据一个字没改。旧文档写的「边界 768px」是假数,已整表替换。
  • 🔴 改一个组件高度之前,先跑「改前基线」(改动回退成 _scratch/base.html,同一套判据跑满逐视口表)⇒ 才能分清哪条红是自己造成的。⚠️ 几何一改(加图标、改内衬、改网格最小宽),逐视口密度表必须整表重跑 —— 这个毛病犯过两次(第六轮只量 1440、本轮 640 从 5 行掉到 3 行)。
  • 🔴 第 5 个门禁 ui/_tools/check_js.py:抠 <script> 段跑 node --check + 多行扫 script 区内每个 <!-- … --> 块里的反引号(反引号常在注释续行上,⛔ 单行扫会漏;已做变异对照)。改原型两条硬坑:① JS 模板字符串里的 HTML 注释不许出现反引号 —— 会提前闭合模板字面量,而 node --check 整份 html 报不出来,页面静默白屏/xxx is not defined(踩了 4 次);② HTML 注释必须写 -->,写成 */ 会吞掉后面整段。⇒ 改完先 node --check 再跑自检。
  • 🔴 MCN 原型「外部参考版」照搬结论:3c-GPT参考版.md 那版 P1 用满宽表格顺排,照搬后账号矩阵首行顶 724px ⇒ 一屏只 2 行(契约 ≥6),把行内第二行小字拿掉仍只 4 行 ⇒ 满宽表格与「一屏 ≥6 行」不可兼得,要兼得得把每格压成一个短值(动②段定的次级信息档位)。已登记、未动。

六、本区会话机制

  • 🔴 本区机制:开关 off,但常驻仍在跑(2026-10-08 23:4x 实测订正本节旧说法):collabctl.py status 读数=开关 off | 常驻 ✅ 活 pid 40016 · 心跳 2 秒前 | 看板在听 20099 | 保活任务 collabd-keepalive-contentm_agent = Ready(旧区名的 collabd-supervise-agent-product 等仍是 Disabled)。⇒ ⛔ 别把 off 读成「没在跑」(开关只挡「自动续命」);有活动目标时不必另起常驻。要真起/真停 ⇒ collabctl.py on|off --ws E:/ProgramData/AIProject/contentm_agent。
  • 🔴 机制登记已全部改成现名 contentm_agent:collabd.config.json 的 workspace + collabctl.py 的 WORKSPACES/KEEPALIVE_TASKS(源 + 3 个区副本共 4 份,改一处要改 4 份)+ ai1net 的 peer_workspaces。旧空壳目录改名 content_marketing_agent.RETIRED-20261008 保留(零删除)。⚠️ ai1net 改了 peer ⇒ 看板要重启才生效(配置模块级只读一次)。
  • ⚠️ collabctl.py 的 off --ws 曾越区(kill_all() 全机扫描不认 --ws,一次杀掉他区+看板共 5 个进程)⇒ 已修:ONLY_WS 时只杀本区心跳 pid 并提前 return。⛔ 改这文件记住源 + 3 区副本都要改。
  • 域锁:域目录=工作区下的第一层目录(本次建立的域目录是 产品规划/,域键 contentm_agent/产品规划);⛔ 别在域目录外套公共父目录(所有子目录会算成同一个域键 ⇒ 域锁失效)。抢锁 handoff-guard.sh --claim-exec "<会话名>" --domains "<域目录>"(包在 skills/session-mechanism/scripts/lock/);抢不到 ⇒ 停手报告,⛔ 不许硬写。释放:--release → --release-exec "<会话名>"。
  • ⚠️ 本目标(…-071c5b)的产物落点分岔:目标目录合同(collabd.artifact_dir_ok)判「不在目标目录内」,而域门禁要求「只许写域目录」。第①棒取域目录 产品规划/(收到软提醒,非拒收);第②棒改取域目录 执行会话(第一层目录 ⇒ 能盖住目标目录)+ 产物落目标目录 —— 两种都记在案,口径等用户裁定。
  • ⚠️ --report <sid> --state done --artifact "<路径>" 对不在目标目录内的产物会给一条软提醒(不是拒收)—— 域门禁要求写域目录时,这是预期行为,如实记下即可。