# contentm_agent · 项目长期记忆 > ⚠️ 本工作区**现名 `contentm_agent`**(2026-10-08 定;旧名 `content_marketing_agent`,再早 `agent-product`)。 > 整理纪律:**同一件事只在一处写全**,别处只引;细则进当日日志,跨会话有用才上提这里。 > 🔴 **本文件 2026-10-09 压缩过一次**(原 22.5 KB,注入时被截断)。压缩前全量存同目录 `MEMORY-压前全量-20261009.md`。 > ⚠️ 本文件按 ~9 KB 维护:**再加内容先删等量旧内容**,超过就会被截断(等于白写)。 ## 一、仓与位置 - **工作区仓** `E:/ProgramData/AIProject/contentm_agent`:远端 `git@ssh.alotbuy.com:admin/contentm_agent.git`(Gitea,deploy key **有写权限**),分支 `main`;提交者身份是**局部** `WorkBuddy `(全局 git config 未动,可推翻)。参考资料 231M 抽帧素材**全量入库**(⛔ 不打折);`.gitignore` 排运行时噪音。 - 🔴 **全局技能仓** `E:/ProgramData/.workbuddy/skills` 是**独立仓**:远端 `…/admin/workbuddy_skills.git`,分支 `master`,⛔ **无 upstream** ⇒ 必须 `git push origin master` 显式推(`git status -sb` 不显示 ahead);提交者=**全局** `maogeigei`(与工作区仓不同,属正常)。⚠️ 被多会话并发写、分钟级推进 ⇒ **用前先 `git log -1` 校准**。 - 🔴 **取证通道=「只连不起」**:本机 **9223 常驻一个独立浏览器实例**,动手前 `netstat -ano | grep ":9223"` 探;在跑就直连,⛔ 不另起。规则在 `skills/browser-harness/SKILL.md`「本机(用户明令)」段。🔴 **一个页面只开一个标签**(用户令)。 - ⚠️ **本机裸 `bash` 会落到 WSL**(路径被吃)⇒ 一律用 `E:/ProgramData/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin/bash.exe`。 ## 二、产品规划四段流水线(slug `mcn-shortvideo-agent`) - **四段次序不可跳**:①产品需求(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)→ ②产品功能 → ③界面交互 → ④原型说明文档。①段落 `docs/pm/mcn-shortvideo-agent/research/`(1a 是**汇总型**,不是 grill 产出);1b 在 `content-workbench` 项目下(跨项目引用,⛔ 不重写)。 - **执行期产物落点**:一律落 `执行会话/目标-<标题前缀>-/`;正式归档 `docs/pm/…/{research,prd}/` 由主会话收口后统一搬。 - 🔴 **换目标三件套**:带 `--kpi`(不带 ⇒ 旧验收判据原样留下 ⇒ 新目标一声明就判「全过」)+ 换 `tmp/supervise-inbox/NEXT.md`(执行会话开工队列)+ `--switch-goal`(并同步 `collabd.py --set-life`)。派活排期名 `[执行]-[]-<具体>`。 - 🔴 **本区当前目标**(2026-10-08 23:29 切)=「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」,类别 `产品规划`。**四步**:①现状梳理 ✅(`产品规划/现状梳理-板块·功能·操作路线.md`,域目录 `产品规划/` 由此建立)|②GPT 规划意见 ✅(`执行会话/目标-…-071c5b/GPT-规划意见与采纳决策.md`)|③重做②段两份 ✅(同目标目录 `2a-产品功能-新版.md`+`2b-界面布局-新版.md`)|④重生成界面 **产物已在盘**(`ui/mcn-workbench.html` **V2** 1 661 行/133 459 B + `ui/DESIGN.md`;00:53 刚写完就遇 daemon 重启被终止,⛔ 非半成品、⛔ 不是变小=被截断)⇒ 只欠**闸门取证 + 上报**;孤儿锁已于 2026-10-09 06:2x 释放,已重派第二棒(排期 `58855437`,once 06:32)。 ## 三、②段两份的现行口径(2026-10-09 新版) - 改动主线=按「**业务对象 + 数据流转**」解耦(原来「页面=功能=数据」三层揉在一起)。八页**不推倒**,改的是归属判据。 - **归属判据**=这个功能主要**创建/改变哪个核心业务对象**(⛔ 不是「哪页有按钮」)。新增 11 个对象的字典;F7/F8 收归 **P4**、F14 从 P2 改 **P4**;F11 标「待验证/非主链」、F12 标 `P2/Deferred`。 - **2b 结构改动**:新增「**页面公共框架(Page Shell)**」层(不计板块数/不参与功能归属/不占冻结计数);③段自己长出来的那层「功能入口」**撤销**;导航回**三组+跨组**(找选题/走创作流水线/看矩阵复盘 + 跨组账号画像);流转改成**六要素契约**(来源/触发/传递对象/对象ID/接收方式/落地状态)共 **20 条**(18 条原有 + 2 条新增、标「待确认」);**骨架冻结升级为「对象冻结」**(新增业务能力必须先进 2a 功能清单并完成对象归属)。业务板块 **39 块**。 - 🔴 **第③棒的三类待确认**(已单列进两份文末):②段要不要并成一份九节架构基线|T1–T6 六型要不要进正文|两条新增流转(P7→P1、P7→P2)。另 GPT 建议的组名改名**未采纳**(组名沿用②段现成三个)。 - ⚠️ 一处计数订正:①棒 §四 A1 写「八页共 38 个板块」,其自给的加总 `5+5+4+6+5+4+6+4` 实为 **39** ⇒ 本版重数为 39,38 是加总差错。 - ②段两条老硬约束:功能**按使用场景组织**(不按页面,2026-10-06 定案)|全段**零视觉词**(配色/字体/间距/组件样式/动效)。 ## 四、技能包闸门与改包纪律(`product-planning`) - ⚠️ 闸门必须带 `--ws`:`python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent"` ⇒ 期望 **通过 2060|失败 0|提示 27**;⛔ 别给 `--root .`(会把工作区当技能包查)。**改包前后都要跑**。 - 🔴 **「单一可信源」门禁**:`AUTHORITY` 表登记「会变的事实 → 唯一定义处」,除定义处外复述即 FAIL(现 9 条)。**改这些事实只改权威处,然后跑闸门**;⛔ 写「不复述」时别把名单抄进来(自己踩过)。 - ⚠️ **改门禁后必须做变异对照**(注一条假病进去确认报红,再还原)。教训:曾因 stale 变量(该用 `tt` 用了 `old`)导致「旧名提示」**恒不触发**(假绿)。 - 🔴🔴 **改包纪律**(技能仓根 `改包纪律.md`):⛔ **不许整文件覆盖**|落地前**比对时点**|改完**必跑闸门**|收到覆盖性提交先做**结构体检**。 - 🔴 **事故留痕**:提交 `1d7d31a` 用「整文件覆盖」一步造出 12 条 FAIL(权威声明 5 处→1 处、供给口径被翻成「open-design=默认主线」)⇒ 2026-10-08 已整包回退到 `44d42b0`(技能仓提交 `8fc9a92`),闸门回 `2060|0|27`;那批「说人话」改写另存 `归档/技能包-说人话改写-被覆盖存档-20261008/`(只取措辞、⛔ 不取结构)。⛔ 修法顺序:**先恢复权威处声明,再清复述**,反了会反复。 - 🔴 **说人话的处置**(2026-10-08 用户选 C):两个技能**不整合进 product-planning**,按技能名引用 —— 模式清单取 `humanizer`|**评分与门槛取 `humanizer-zh` 五维表(≥45/50)**|冲突以 `humanizer-zh` 为准|⛔ 取不到来源时明写「无判据来源,本项未判」。落盘文字一律过说人话并在文末写评分。 ## 五、③段设计供给(单一可信源) - 供给关系**只在** `references/stage-delivery/SKILL.md` 的 `## 供给` 块定义(6 行表);③段其余章节与 runbook/layouts-tooling/总入口提到供给一律引 `§供给·<行名>`,⛔ 不许复述。**改供给只改那一块**,改完跑闸门。 - **默认主线=`oil-ui-pro`**(方法+独立评审);定调与令牌取③段自带 `assets/design-systems/`(当前 `design-system-tiaoyue`);**`open-design`=可选件**(本地裁剪 Apache-2.0,⛔ 不许改其内容;缺 LICENSE 全文与上游 NOTICE)。无 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`/`html`/`body`/`.view`,只核 `window.scrollY` = 假绿)。 2. **改原型两条硬坑**:JS 模板字符串里的 HTML 注释**不许出现反引号**(会提前闭合模板字面量 ⇒ 页面静默白屏,而 `node --check` **报不出来**;已踩 4 次);HTML 注释**必须写 `-->`**(写成 `*/` 会吞掉后面整段)。改完先 `node --check` 再跑自检。 3. **几何一改,逐视口密度表整表重跑**,且改前先落「改前基线」—— 这个毛病犯过两次。 - **顶栏只放两项**(左标题 + 右「随手记」),⛔ 不许再加。**左栏=一层八项**、短名**两字**、形态=64px 药丸浮栏。⚠️ **形态一改,自检选择器与变异注入点必须跟着改**,否则判据静默失效变恒绿(假绿已踩 4 次)。 - ⚠️ 教训:改前那版「纯图标栏、名字只走提示」是**照 `library.json` 的计数猜的** —— **计数不是几何,包里没有的事实就回源站量**。 - **遗留未清**:`3d` B-15(500×844 一屏 −1 行)留档待裁定;「满宽表格与一屏 ≥6 行不可兼得」已登记未动。 ## 七、本区会话机制 - 🔴 **开关 `off`,但常驻仍在跑**(开关只挡「自动续命」,⛔ 别把 off 读成「没在跑」)。2026-10-08 23:4x 实测:常驻 ✅ 活 pid 40016/心跳 2 秒前 | 看板在听 20099 | 保活任务 `collabd-keepalive-contentm_agent` = Ready。要真起/真停 ⇒ `collabctl.py on|off --ws E:/ProgramData/AIProject/contentm_agent`。 - 🔴 机制登记**已全改现名** `contentm_agent`:`collabd.config.json` + `collabctl.py` 的 `WORKSPACES`/`KEEPALIVE_TASKS`(**源 + 3 个区副本共 4 份**)+ ai1net 的 `peer_workspaces`(改完**看板要重启**)。旧空壳目录 `content_marketing_agent.RETIRED-20261008` 保留(零删除)。⚠️ `collabctl.py off --ws` 曾越区(`kill_all()` 全机扫描杀到他区+看板),已修;⛔ 改这文件记住源+3 副本。 - **域锁**:域目录=**工作区下的第一层目录**;⛔ 别在域目录外套公共父目录(所有子目录会算成同一个域键 ⇒ 域锁失效)。抢锁 `handoff-guard.sh --claim-exec "<会话名>" --domains "<域目录>"`(包在 `skills/session-mechanism/scripts/lock/`);抢不到 ⇒ **停手报告**。释放 `--release-exec "<会话名>"`(或 `ME=<名>`;⛔ 取不到名 fail-closed,不静默清空)。🔴 **孤儿锁怎么来的(2026-10-09 查实)**:锁是**磁盘持久物**(`.locks/<域目录转义>/OWNER`),脚本 `trap _cleanup_guard EXIT INT TERM HUP` **只清临时文件与 `.gate`、不碰域锁** ⇒ 会话被强杀就没人释放(实测成因:宿主 **daemon 冷启动重启** 把 `a257d30f` 标 terminated —— 不是超时、不是用户点的);而域冲突判定**只比会话名、不判死活**,R9 又禁 AI 删锁 ⇒ 只能用户处置。**同型第二例**:`ai1net-dsh-anywhere ← [协作]N9复测-2248`(09-29 建)已挂 10 天。 - ⚠️ **本目标(`…-071c5b`)产物落点分岔**:目标目录合同判「不在目标目录内」,而域门禁要求「只许写域目录」。①棒取域目录 `产品规划/`(收到软提醒,非拒收);②③棒改取**域目录 `执行会话`**(第一层目录 ⇒ 能盖住目标目录)+ 产物落目标目录 —— 两种都记在案,口径待用户裁定。 - ⚠️ `--report --state done --artifact "<路径>"`:产物**读不到**⇒硬拒收;**落点不在目标目录**只给软提醒(不拒收)。**sid 取法**:查宿主库 `E:/ProgramData/.workbuddy/workbuddy.db` 的 `sessions` 表(按 `cwd` + `created_at desc`,本区会话 `is_background_automation=1`)。