Files
contentm_agent/.workbuddy/memory/MEMORY.md
T

16 KiB
Raw Blame History

contentm_agent · 项目长期记忆

⚠️ 本工作区现名 contentm_agent(2026-10-08 定;旧名 content_marketing_agent,再早 agent-product)。 整理纪律:同一件事只在一处写全,别处只引;细则进当日日志,跨会话有用才上提这里。 🔴 本文件按 ~9 KB 目标维护;实测注入在 19 KB 时开始截断 ⇒ 再加内容先删等量旧内容。压前全量备份:MEMORY-压前-20261011-1855.md(另存 2026-10-09 两份更老的)。 🔴🔴 注入进来的副本可能落后于本文件(2026-10-10 实测过一次,两版方向相反)⇒ 动手改机制/建计划任务/动浏览器之前,先读本文件磁盘版对时点,把注入版当缓存看。

一、仓与位置

  • 工作区仓 E:/ProgramData/AIProject/contentm_agent:远端 [email protected]:admin/contentm_agent.git(Gitea,deploy key 有写权限),分支 main;提交者=局部 WorkBuddy <[email protected]>。参考资料 231M 抽帧素材全量入库。
  • 🔴 全局技能仓 E:/ProgramData/.workbuddy/skills 是独立仓:远端 …/admin/workbuddy_skills.git,分支 master,⛔ 无 upstream ⇒ 必须 git push origin master;提交者=全局 maogeigei。⚠️ 多会话并发写 ⇒ 用前先 git log -1 校准。
  • ⚠️ 本机裸 bash 落到 WSL ⇒ 一律用 E:/ProgramData/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin/bash.exe。
  • 🔴 本机 curl 取 GitHub:raw.githubusercontent.com 连不通(rc=56)⇒ 走 api.github.com/repos/<r>/contents/<path>(base64)+ git/trees/<b>?recursive=1。
  • 🔴🔴 本机取海外域名必须挂代理 http://127.0.0.1:10800(系统 PAC 同端口):直连一律 http=000。2026-10-11 实测九条全 200 = Google Trends RSS/Reddit /r/*/hot/.rss(.json 端点 403)/YouTube 频道 RSS/HN API/Product Hunt Feed/Wikipedia Top/Google News RSS/BBC RSS/trends24。⛔ 判死:TikTok Creative Center 要授权(40101 no permission)、X 官方趋势计费、IG/FB/LinkedIn 站内榜无免费源、pullpush 429 付费墙。
  • 🔴 浏览器=「只连不起」:本机 9223 独立 Chrome,保活=本会话后台任务跑 bh_chrome_keepalive.py(用户 2026-10-10 令「只允许这一种方式」;⛔ 不建计划任务、⛔ 不复制副本)。动手前 netstat -ano | grep ":9223" 探;在跑就直连。🔴 一个页面只开一个标签。规则见 skills/browser-harness/SKILL.md。

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

  • 四段次序不可跳:①产品需求(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)→ ②产品功能 → ③界面交互 → ④原型说明文档。①段落 docs/pm/mcn-shortvideo-agent/research/(1a 汇总型);1b 在 content-workbench 项目下(跨项目引用,⛔ 不重写)。
  • 执行期产物落点:一律落 执行会话/目标-<标题前缀>-<sha1(title)[:6]>/;正式归档 docs/pm/…/{research,prd}/ 由主会话收口后统一搬。
  • 🔴 换目标三件套:带 --kpi(不带 ⇒ 旧判据原样留下 ⇒ 新目标一声明就判「全过」)+ 换 tmp/supervise-inbox/NEXT.md + --switch-goal(并同步 collabd.py --set-life)。派活排期名 [执行]-[<goal.topics>]-<具体>。
  • 🔴🔴 平台范围=全球(2026-10-11 用户令 · 适用所有方案):用户逐字「所有方案都要按照全球方案规划,不能只看国内,必须包含海外主流社媒和短视频平台(最主流的就行)」⇒ 任何平台矩阵/热点源/渠道清单/投放方案,⛔ 都不许只列国内。主会话自决的 12 平台(可推翻):海外 6 = TikTok/YouTube(含 Shorts)/Instagram(含 Reels)/Facebook/X/LinkedIn;国内 6 = 抖音/快手/小红书/视频号/B站/微博。⚠️ 现状缺口:2a/2b 几乎没有平台清单,选题细节文档(8a649c)只提国内(海外 0)⇒ 都按全球口径补。
  • 🔴 功能归属判据(2026-10-09 用户令):同一类事情放同一个页面。配套两条:资产入库不限页(资产库页=统一管理的地方,⛔ 不是唯一入库口);选题库容纳「对选题有帮助的任何信息」(随手记仍落选题库,⛔ 不新增「待整理」状态)。
  • 🔴 「复盘」=发布之后看结果:看数据 + 看收入(用户 2026-10-09 逐字「发布的目的就是为了看数据和看收入啊」)⇒「记录与对账」属复盘、是同一类事,留在复盘页,⛔ 不拆页、⛔ 不加导航项(GPT 主张拆出去的三条 G7/G10/G22 ⇒ 不采纳)。
  • 🔴 「账号」是两个概念(2026-10-10 用户定义):内容账号=管内容属性(定位/风格/受众/红线),平台不属于它;平台账号=发布的渠道三方平台账号,登录态/授权归它 ⇒「渠道」=平台账号。建模:平台账号做成内容账号下的子项清单(1→N,每项带平台+登录态+授权状态)。✅ 已落地(V4):2b P6 画像五维+平台账号块;2a Account 改「内容账号」、F7 按平台账号展开、F13「一版一路」。
  • 🔴🔴 找方案的唯一入口=docs/pm/mcn-shortvideo-agent/索引-当前权威版.md(2026-10-11 主会话手建)。起因:用户问「很多新老方案都在文件夹中,后续根据方案细化产品界面如何找得到对应的方案」——实测没有单一入口:2a-产品功能-新版.md 有 4 份(20a8ac 61 683 B/fa6e07 61 683 B 同尺寸副本/fc471a 43 328 B/071c5b 40 917 B)、2b 也有 4 份;而 docs/pm/mcn-shortvideo-agent/prd/ 里 10-10 22:24 归档的那两份是旧版(2b 只 52 256 B=V4,最新 V5 是 52 643 B)⇒ ⛔ 别把 docs/ 当权威区。🔴 断链根因:机制定的是「执行期落 执行会话/目标-*/、主会话收口后统一搬进 docs/pm/…/」,但归档只做过一次(10-10 22:24),之后 20a8ac/8a649c/0a758b/39646d 四个目标的产物全没搬 ⇒ 归档区落后、执行区堆积;research/ 与 交付物/ 都是空的。⚠️ 维护时机:每个目标收口时更新索引一次(⛔ 目前靠人记得,尚未写进机制)。
  • 🔴 本区当前目标=无(39646d 已于 2026-10-11 19:39 收口=已完成)。最近两个目标的收官(供追溯):8a649c 征询 GPT+补细节+重画图(17:22 完成,国内口径)|39646d 按全球口径重做平台矩阵与海外热点源(19:39 完成:三判据全过 —— 平台矩阵 9 229 B/海外热点源 13 986 B 实跑验通 9 条 + 没拿到 6 条如实登记/全球版框图 35 223 B 与流程图 22 198 B)。⚠️ 下一目标开工前的待拍板:要不要把 12 平台矩阵同步进 2a/2b 与原型(39646d 本轮只出方案与建议、⛔ 没动产品)。🔴 教训(沿用):判据只写「有文档/有图」⇒ 执行棒交占位图 ⇒ 判据要落到「照着能做出来」的粒度。⚠️ 遗留六条改结构项(平台热榜归属/热点事件是否独立成对象/进度 3 或 6 态/收藏热点/数据源管理落点/选题负责人与截止时间)登记在 NEED-USER.md 第 6 节。
  • 🔴 检查会话补齐状态文档=常规动作:执行棒只交付产物、不写 目标执行状态.md ⇒ 检查会话要「现跑门禁 + 补写文档 + 回写 --kpi」三件一起做(fa6e07/20a8ac/0a758b/39646d 同型)。🔴 派棒排期时间必须晚于创建时刻。🔴 派棒前必须自己 automation_update list 核一遍待执行排期(2026-10-11 第 49 棒实测:注入通报写「没有别的待执行排期」,实际有两条 ACTIVE once ⇒ ⛔ 别信通报,信了就会重复派棒)。
  • 📌 已收口的旧目标(细则在当日日志):fc471a 导航七项一层|b49e02 征询 GPT(🔴 D1 待裁定=GPT 主张拆「记录与对账」出复盘,与用户方向相反)|071c5b 四步|fa6e07 八条口径落②段+原型|547748 逆向 Easel(被换掉,其棒已收工)|20a8ac 侧栏 64px+刷新改 icon(10-10 完成)|0a758b 热点与选题逻辑+框图流程图(10-11 04:25 完成)|8a649c 征询 GPT+补细节+重画图(10-11 17:22 完成,⚠️ 属国内口径,已被 39646d 接续改造)。⚠️ --kpi 按分号切 ⇒ 依据里 ⛔ 不许写 ;。

三、②段两份的现行口径(2026-10-09 新版)

  • 改动主线=按「业务对象 + 数据流转」解耦。八页不推倒,改的是归属判据。
  • 归属判据=这个功能主要创建/改变哪个核心业务对象(⛔ 不是「哪页有按钮」)。🔴 11 个对象=Account/Benchmark/Topic/Asset/Content/ContentVersion/PublishTask/PublishRecord/Performance/Review/Campaign·Order。F7/F8 收归 P4、F14 从 P2 改 P4;F11「待验证/非主链」、F12 P2/Deferred。
  • 2b 结构:新增「页面公共框架(Page Shell)」层(不计板块数/不参与归属);③段自长的「功能入口」层已撤销;页面 7 个(P1 矩阵总览/P2 选题雷达/P3 资产库/P4 创作台/P5 发布中心/P6 账号画像/P7 复盘台),导航一层七项;流转=六要素契约共 20 条;骨架冻结升级为对象冻结。业务板块 39 块(⚠️ ①棒 §四 A1 写 38 是加总差错)。
  • ②段两条老硬约束:功能按使用场景组织(不按页面)|全段零视觉词。
  • 🔴 P5 投放页现状:5 板块=目标选择/各版本与逐版编辑/检查结果/确认发布/发布记录;主操作=确认发布。F5 硬闸管敏感信息、软闸管人设一致性(⚠️ 竞品里没有敏感词检测也没有事实检测)。

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

  • ⚠️ 闸门必须带 --ws:python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent" ⇒ 期望 通过 2060|失败 0|提示 27;⛔ 别给 --root .。改包前后都要跑。
  • 🔴 单一可信源门禁:AUTHORITY 表登记「会变的事实 → 唯一定义处」,除定义处外复述即 FAIL。改这些事实只改权威处,然后跑闸门;⛔ 修法顺序=先恢复权威处声明,再清复述。
  • ⚠️ 改门禁后必须做变异对照(注假病确认报红,再还原)。
  • 🔴🔴 改包纪律(技能仓根 改包纪律.md):⛔ 不许整文件覆盖|落地前比对时点|改完必跑闸门|收到覆盖性提交先做结构体检。
  • 🔴 事故留痕:提交 1d7d31a 整文件覆盖造出 12 条 FAIL ⇒ 2026-10-08 整包回退到 44d42b0(技能仓 8fc9a92);那批「说人话」改写另存 归档/技能包-说人话改写-被覆盖存档-20261008/(只取措辞)。
  • 🔴 说人话的处置(2026-10-08 用户选 C):两个技能不整合进 product-planning,按技能名引用 —— 模式清单取 humanizer|评分与门槛取 humanizer-zh 五维表(≥45/50)|冲突以 humanizer-zh 为准|⛔ 取不到来源时明写「无判据来源,本项未判」。落盘文字一律过说人话并在文末写评分。

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

  • 供给关系只在 references/stage-delivery/SKILL.md 的 ## 供给 块定义(6 行表);其余章节提到供给一律引 §供给·<行名>,⛔ 不许复述。改供给只改那一块,改完跑闸门。
  • 默认主线=oil-ui-pro(方法+独立评审);定调与令牌取③段自带 assets/design-systems/(当前 design-system-tiaoyue);open-design=可选件(本地裁剪 Apache-2.0,⛔ 不许改其内容)。无 open-design 时 craft/ 那 13 份工艺数值判据无供给来源 ⇒ 明说,⛔ 不编。
  • ③段细目(导航判据 §5.5.2、§4.9 导航栏、§5.6 两条元规则、Gate-3 两条新增)⇒ 读技能包 layouts-tooling.md 与 execution-runbook.md,本文件不复制。

六、③段原型 ui/mcn-workbench.html

  • 🔴 细则不在此复制:口径与断点表在 ui/DESIGN.md,全量实测值在 ui/3d-审查报告.md。最易踩两条:
    1. 外壳高度链三件套:html,body + .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.scrollY = 假绿)。
    2. 改原型两条硬坑:JS 模板字符串里的 HTML 注释不许出现反引号(⇒ 静默白屏,node --check 报不出;已踩 4 次);HTML 注释必须写 -->(写 */ 会吞掉后面整段)。
  • 顶栏只放两项(左标题 + 右「随手记」)。左栏=一层八项、短名两字、形态=64px 药丸浮栏。⚠️ 形态一改,自检选择器与变异注入点必须跟着改,否则判据静默失效变恒绿(假绿已踩 4 次)。
  • ⚠️ 教训:计数不是几何(改前那版纯图标栏是照 library.json 计数猜的)⇒ 包里没有的事实就回源站量。
  • 遗留未清:3d B-15(500×844 一屏 −1 行);「满宽表格与一屏 ≥6 行不可兼得」。

七、本区会话机制

  • 🔴 域锁实体不在本工作区:handoff-guard.sh 的 ROOT 落到共享锁库 D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/(DSH_DOCS_ROOT 覆盖实测无效);目录名被转义成 _____…-<hash>。🔴 释放要按 OWNER 里登记的 ME 原文(常不带 [执行]-[产品规划]- 前缀 ⇒ 用全名释放会报「名下无可释放的锁」而锁还挂着)⇒ 先 cat <锁目录>/OWNER 抄准名字。
  • 域锁规则:域目录=工作区下的第一层目录;⛔ 别套公共父目录(那样所有子域算出同一个键 ⇒ 并行失效)。抢不到 ⇒ 停手报告。🔴 孤儿锁:锁是磁盘持久物,会话怎么结束都不释放它 ⇒ 都成孤儿;域冲突判定只比会话名、不判死活。✅ 检查会话可自解除(用户 2026-10-09 逐字授权=R9 唯一例外):session-mechanism/scripts/lock/orphan-lock.py,判据查宿主库 sessions.status(working 不动),先 --dry-run。
  • ⚠️ 开关 off ≠ 没在跑:collabctl.py ensure 幂等收敛(off⇒全停),保活任务周期触发它 ⇒ off 下迟早被停。要真起/真停 ⇒ collabctl.py on|off --ws …。
  • 🔴 机制登记已全改现名 contentm_agent:collabd.config.json + collabctl.py 的 WORKSPACES/KEEPALIVE_TASKS(源 + 3 个区副本共 4 份)+ ai1net 的 peer_workspaces(改完看板要重启)。旧空壳 content_marketing_agent.RETIRED-20261008 保留(零删除)。
  • 🔴 文档合同:执行棒产物落 <目标目录>/;sid 取法=查宿主库 E:/ProgramData/.workbuddy/workbuddy.db 的 sessions 表(按 cwd + created_at desc)。--report <sid> --state done --artifact "<路径>":产物读不到⇒硬拒收;落点不在目标目录只给软提醒。
  • 🔴🔴 目标目录名:新目标一律按机制口径(回源码 goal_dir_name()):取 short or title → 去掉 \/:*?"<>| → 去空格 → [:20] → 后缀 sha1(title)[:6]。⚠️ 存量全称口径的旧目录保持原样、⛔ 不改名(改名会断台账 artifact 引用)。⇒ 开新目标时先按上式算准;goal.json.execution_doc 是同一套口径,必须与它一致(切目标后若没跑 --ensure-goal-dir,它会仍指着上一个目录 ⇒ 检查会话会拿旧目标文档判新目标,须手工对齐)。
  • ⚠️ 检查棒模板与现场的两处不符(2026-10-11 实测):工作区根没有 state.py(模板第 1 项跑不出来,用 goalctl.py 默认输出顶替);taskgraph.json 不存在(模板第 3 项)⇒ 三路判定实际只跑两路,靠状态文档补齐。