16 KiB
16 KiB
contentm_agent · 项目长期记忆
⚠️ 本工作区现名
contentm_agent(2026-10-08 定;旧名content_marketing_agent,再早agent-product)。 整理纪律:同一件事只在一处写全,别处只引;细则进当日日志,跨会话有用才上提这里。 🔴 本文件按 ~9 KB 目标维护;实测注入在 19 KB 时开始截断(2026-10-09 只丢末尾数十字符)⇒ 本版压至 ~14 KB 留余量。再加内容先删等量旧内容。 压缩史:2026-10-09 压过两次;压前全量存MEMORY-压前全量-20261009.md与MEMORY-压前-20261009-2305.md。
一、仓与位置
- 工作区仓
E:/ProgramData/AIProject/contentm_agent:远端[email protected]:admin/contentm_agent.git(Gitea,deploy key 有写权限),分支main;提交者=局部WorkBuddy <[email protected]>(全局 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 常驻独立 Chrome(计划任务
bh-chrome-keepalive保活)。动手前netstat -ano | grep ":9223"探;在跑就直连,⛔ 不另起。🔴 一个页面只开一个标签。规则见skills/browser-harness/SKILL.md。 - ⚠️ 本机裸
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。公开接口够用,⛔ 不为取数起浏览器。
二、产品规划四段流水线(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-09 用户令):同一类事情放同一个页面(找选题/拆解选题/做选题都属「选题相关的事」⇒ 同在选题页)。两条配套口径:资产入库不限页(任何页产生资产都可就地入库,资产库页=统一管理的地方,⛔ 不是唯一入库口;「一个对象只有一处产生」管的是唯一权威数据、⛔ 不是写入动作的地点);选题库容纳「对选题有帮助的任何信息」(随手记仍落选题库,⛔ 不新增「待整理」状态,靠分类区分)。
- 🔴 「复盘」=发布之后看结果:看数据 + 看收入(用户 2026-10-09 22:48 逐字「发布的目的就是为了看数据和看收入啊」)⇒「记录与对账」(发布记录/溯源/对账/商单与收支)属复盘、是同一类事,留在复盘页,⛔ 不拆页、⛔ 不加导航项、⛔ 页内不分(GPT 主张拆出去的三条 G7/G10/G22 ⇒ 不采纳)。
- 🔴 「账号」是两个概念,现行定义(2026-10-10 用户逐字「内容账号管的是内容属性(主要是账号设定 内容做成什么样),平台账号应该是 发布的渠道三方平台账号 用户发布具体内容」):内容账号=管内容属性(账号设定:定位/风格/受众/偏好红线/长期记忆),平台不属于它;平台账号=发布的渠道(三方平台账号,"发布具体内容"用的就是它),登录态/授权归它。⇒「渠道」=平台账号(⛔ 不再说"账号 × 平台")。建模(主会话自决、可推翻):不加对象,平台账号做成内容账号下的子项清单(1 → N,每项带「平台 + 登录态 + 授权状态」)。⚠️ 待落地:
2b画像六维去掉「平台」那一维;2aF7 守卫"一个账号 + 一个平台"改成"+ 一个平台账号"、发布记录"渠道"同指平台账号。 - 🔴 本区当前目标(2026-10-09 22:52 声明)=「把八条已定口径落进②段两份与原型」,类别
开源项目调研(用户令逐字:「分析 https://github.com/dreammis/social-auto-upload 这个项目在做判断」)。✅ 执行棒254f554c已于 23:0x 交付:执行会话/目标-分析social-auto-upload项目,用于投放页与发布对象的判断-0ec0a7/social-auto-upload 分析与对照.md(30 045 B)。✅ 2026-10-09 23:58 第 42 检查棒判「已完成」(补写该目录目标执行状态.md;修掉execution_doc仍指旧目标b49e02的漂移;常驻随之优雅退出)。三条结论:① 投放页可改 5 条(目标选择补「先平台后账号」/Account补登录态属性/⛔ 不抄批量铺排/定时要在「平台原生 vs 本地调度」里选一条/⛔ 别削发布记录);② 不加「发布事件」对象(该项目连发布记录都没有 ⇒ 样本量为零,我们倾向的理由站得住);③PublishRecord若一版发多渠道会分不清渠道 ⇒ 加字段或写死「一版一路」,⛔ 不是加对象。🔴 待拍板 3 条:账号带不带平台(我们Account字典 vs F7 守卫自相矛盾;倾向带)|要不要做定时(倾向先不做)|PublishRecord带不带渠道字段(倾向写死「一版一路」)。 - 📌 已收口的旧目标(细则在当日日志):①「导航改七项一层并重排功能归属(P8 并入复盘)」(
fc471a,15:48 收口);②「征询 GPT 对当前七页结构与操作路径的建议」(b49e02,16:46 收口;GPT 原文 10 562 字符逐字留痕;🔴 D1 待裁定=GPT 主张拆「记录与对账」出复盘,与用户拍板方向相反);③ 四步(梳理→GPT→重做②段→重生成界面,071c5b,08:14 收口)。
三、②段两份的现行口径(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 复盘台),导航一层七项(首页/选题/创作/投放/复盘/账号/资产);流转=六要素契约(来源/触发/传递对象/对象ID/接收方式/落地状态)共 20 条;骨架冻结升级为对象冻结。业务板块 39 块。
- ②段两条老硬约束:功能按使用场景组织(不按页面,2026-10-06 定案)|全段零视觉词。
- ⚠️ 计数订正:①棒 §四 A1 写「八页共 38 个板块」,其加总
5+5+4+6+5+4+6+4实为 39 ⇒ 38 是加总差错。 - 🔴 P5 投放页现状(
2b§五):5 板块=目标选择/各版本与逐版编辑/检查结果/确认发布/发布记录;主操作=确认发布。F5 硬闸管敏感信息、软闸管人设一致性(⚠️ 竞品里没有「敏感词检测」也没有「事实检测」)。
四、技能包闸门与改包纪律(product-planning)
- ⚠️ 闸门必须带
--ws:python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent"⇒ 期望 通过 2060|失败 0|提示 27;⛔ 别给--root .。改包前后都要跑。 - 🔴 单一可信源门禁:
AUTHORITY表登记「会变的事实 → 唯一定义处」,除定义处外复述即 FAIL(现 9 条)。改这些事实只改权威处,然后跑闸门;⛔ 写「不复述」时别把名单抄进来(自己踩过)。 - ⚠️ 改门禁后必须做变异对照(注一条假病进去确认报红,再还原)。教训:曾因 stale 变量导致「旧名提示」恒不触发(假绿)。
- 🔴🔴 改包纪律(技能仓根
改包纪律.md):⛔ 不许整文件覆盖|落地前比对时点|改完必跑闸门|收到覆盖性提交先做结构体检。 - 🔴 事故留痕:提交
1d7d31a用「整文件覆盖」造出 12 条 FAIL ⇒ 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。最易踩三条:- 外壳高度链三件套:
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= 假绿)。 - 改原型两条硬坑:JS 模板字符串里的 HTML 注释不许出现反引号(提前闭合模板字面量 ⇒ 静默白屏,而
node --check报不出;已踩 4 次);HTML 注释必须写-->(写成*/会吞掉后面整段)。改完先node --check再跑自检。 - 几何一改,逐视口密度表整表重跑,且改前先落「改前基线」—— 犯过两次。
- 外壳高度链三件套:
- 顶栏只放两项(左标题 + 右「随手记」),⛔ 不许再加。左栏=一层八项、短名两字、形态=64px 药丸浮栏。⚠️ 形态一改,自检选择器与变异注入点必须跟着改,否则判据静默失效变恒绿(假绿已踩 4 次)。
- ⚠️ 教训:改前那版「纯图标栏」是照
library.json的计数猜的 —— 计数不是几何,包里没有的事实就回源站量。 - 遗留未清:
3dB-15(500×844 一屏 −1 行)留档待裁定;「满宽表格与一屏 ≥6 行不可兼得」已登记未动。
七、本区会话机制
- 🔴 域锁实体不在本工作区:
handoff-guard.sh的 ROOT 落到共享锁库D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/(DSH_DOCS_ROOT覆盖实测无效);目录名被转义成_____…-<hash>(非 ASCII 逐字变_)。🔴 释放要按OWNER里登记的ME原文(例:登记的是改导航七项一层并P8并入复盘,不带[执行]-[产品规划]-前缀 ⇒ 用全名释放会报「名下无可释放的锁」而锁其实还挂着)⇒ 先cat <锁目录>/OWNER抄准名字。 - 域锁规则:域目录=工作区下的第一层目录;⛔ 别套公共父目录。抢
handoff-guard.sh --claim-exec "<会话名>" --domains "<域目录>"(包在skills/session-mechanism/scripts/lock/);抢不到 ⇒ 停手报告。释放--release-exec "<会话名>"。🔴 孤儿锁成因:锁是磁盘持久物,会话无论怎么结束都不释放它(被宿主终止=terminated;被用户手动关=completed)⇒ 都成孤儿,而域冲突判定只比会话名、不判死活。✅ 2026-10-09 已有自动解除工具session-mechanism/scripts/lock/orphan-lock.py(用户逐字授权「可以授权 检查会话自解除孤儿锁」= R9 唯一例外)—— 判据查宿主库sessions.status(working不动|terminated/error/archived可解|completed过时间闸--idle-min默认 30 分钟|查不到 sid ⇒ fail-closed);先--dry-run。 - ⚠️ 开关
off≠ 没在跑:collabctl.py ensure= 幂等收敛「on⇒补齐缺失/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保留(零删除)。⚠️ 改这文件记住源+3 副本。 - 🔴 文档合同:执行棒产物落
<目标目录>/;sid 取法=查宿主库E:/ProgramData/.workbuddy/workbuddy.db的sessions表(按cwd+created_at desc,本区会话is_background_automation=1)。--report <sid> --state done --artifact "<路径>":产物读不到⇒硬拒收;落点不在目标目录只给软提醒(不拒收)。 - 🔴🔴 目标目录名两种口径(已实证 3 次):机制=
goal_dir_name()title[:20]再去空格;而派活单与实际目录一律用全称去空格 ⇒ 上报必带一条「不在目标目录内」软提醒,属既有分岔、不拒收(如本目标:机制…upload-0ec0a7vs 实际…upload项目,用于投放页与发布对象的判断-0ec0a7)。⛔ 改名会断台账artifact引用 ⇒ 未修,待裁定。 - 🔴 浏览器实例/计划任务:浏览器保活用计划任务
bh-chrome-keepalive(动作pythonw.exe "E:/ProgramData/AIProject/contentm_agent/bh_chrome_keepalive.py",幂等:端口在听就退出;每 5 分钟 +MultipleInstances=IgnoreNew+ExecutionTimeLimit=0;脚本放工作区根,⛔tmp/会被清)。验证=netstat见 LISTENING +curl --noproxy '*' http://127.0.0.1:9223/json/version回 JSON。⛔ 别用「后台任务」(只活到发起它的会话结束)。⚠️ 建计划任务一律用pythonw.exe(python.exe是控制台程序 ⇒ 每分钟弹黑窗);schtasks.exe被本机黑名单拦截 ⇒ 走 PowerShellScheduledTasks模块。