17 KiB
17 KiB
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:远端[email protected]:admin/contentm_agent.git(Gitea,deploy key 有写权限),分支main;提交者身份是局部WorkBuddy <[email protected]>(全局 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项目下(跨项目引用,⛔ 不重写)。 - 执行期产物落点:一律落
执行会话/目标-<标题前缀>-<sha1(title)[:6]>/;正式归档docs/pm/…/{research,prd}/由主会话收口后统一搬。 - 🔴 换目标三件套:带
--kpi(不带 ⇒ 旧验收判据原样留下 ⇒ 新目标一声明就判「全过」)+ 换tmp/supervise-inbox/NEXT.md(执行会话开工队列)+--switch-goal(并同步collabd.py --set-life)。派活排期名[执行]-[<goal.topics>]-<具体>。 - 🔴 本区当前目标(2026-10-09 16:12 切)=「征询 GPT 对当前七页结构与操作路径的建议」,类别
产品规划。用户令:「问 gpt 对现在的 产品页面结构 操作路径 有什么建议」。判据 3 条:现状说明成可外发材料 | 建议取回并原文留痕 | 逐条「采纳/不采纳+理由」。执行棒4de53e43(once 16:16),落点执行会话/目标-征询 GPT 对当前七页结构与操作路径的建议-b49e02/。⚠️ 外发边界已写死:只发信息架构与操作动线,⛔ 不发商业数据/账号信息/内部代号/文件路径/技能包名。 - ✅ 上一目标(2026-10-09 14:29 切)=「导航改七项一层并重排功能归属(P8 并入复盘)」,类别
产品规划。用户令:左侧导航一层七项=首页/选题/创作/投放/复盘/账号/资产(排最后);P8 记录与对账并入复盘(功能搬进复盘页当板块);所有功能与各自板块一一对应;P5 发布中心在导航里叫投放(改名+页内写清边界,⛔ 不扩功能)。执行棒852743de(once 14:32),落点执行会话/目标-导航改七项一层并重排功能归属(P8 并入复盘)-fc471a/。✅ 本目标已由执行棒4927305a于 15:0x 交付:三件改动(P8 整页并入 P7/导航压成一层七项/功能↔板块对应做成机检)+闸门全过(语法|骨架七页 39 块|自检 78/0|变异 24/24|命名 2060|0|27|逐视口 13 绿 3 红)。⚠️ 两条订正:板块总数是 39 不是 41(P8 那 4 块是搬位置、净变化 0);V2 记的窄屏红档成因「主区变窄」实测不成立(侧栏收窄 56px 后 P1 首行顶逐档不变)。✅ 已由目标检查·第 38 棒于 2026-10-09 15:48 收口(四条验收逐条「过」,本目标第一份目标执行状态.md已落真实目标目录;副作用=常驻优雅退出,设计行为)。🔴 目标目录名两种口径(未修,待裁定):机制=title[:20]去空格 ≠ 派活单全称(含空格) ⇒exec_doc_rel()/goal_dir_rel()指向不存在的目录,状态文档规范路径永远读不到(goal.json.execution_doc至今停在上一目标 071c5b);⛔ 改名会断台账artifact引用、另建目录多空壳、只改字段会被--ensure-goal-dir对齐回去。⚠️ 上一目标(四步:梳理→GPT→重做②段→重生成界面)已于 2026-10-09 08:14 四步全过收口,凭据见下一行。 - ✅ 上一目标(四步:梳理 → GPT → 重做②段 → 重生成界面,2026-10-09 08:14 四步全过收口):第④棒凭据:
ui/3b-实测记录.md+_tools/8 脚本 +_gate_shots/17 帧 +mcn-workbench.html137 555 B +DESIGN.md52 163 B,台账ab0f2d84done)。⚠️ 遗留一条待用户裁定:窄屏 3 档密度红(560×900/500×844/390×844 的 P1 一屏行数低于契约 6 行),已登记不阻断。⚠️ 总闸off而常驻在跑(2026-10-09 核实):collabctl.py ensure= 幂等收敛「on⇒补齐缺失/off⇒全停」,保活任务周期触发它 ⇒ off 下迟早被收敛停掉;开关语义是"挡自动续命",⛔ 别把 off 读成"没在跑"。四步产物索引:①产品规划/现状梳理-板块·功能·操作路线.md|②执行会话/目标-…-071c5b/GPT-规划意见与采纳决策.md|③ 同目标目录2a-产品功能-新版.md+2b-界面布局-新版.md|④ 同目录ui/(V2 原型 +3b-实测记录.md+_tools/+_gate_shots/)。
三、②段两份的现行口径(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。本文件只留最容易踩的三条:- 外壳高度链三件套:
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 行不可兼得」已登记未动。
七、本区会话机制
- 🔴 域锁的实体不在本工作区(2026-10-09 实查):
handoff-guard.sh的 ROOT 落到共享锁库D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/(本工作区没有05-交接单/,DSH_DOCS_ROOT覆盖实测无效——脚本照样打印root=D:/github/…)。⚠️ 目录名被转义成_____…-<hash>(非 ASCII 逐字变_,属既有编码怪癖)。🔴 释放要按OWNER里登记的ME原文:本次登记的是改导航七项一层并P8并入复盘(不带[执行]-[产品规划]-前缀),用全名释放会报「名下无可释放的锁」而锁其实还挂着 ⇒ 先cat <锁目录>/OWNER抄准名字再--release-exec。 - 🔴 开关
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),而会话无论怎么结束都不释放它 —— ① 被宿主终止(第一次:a257d30f遇 daemon 冷启动换代,status=terminated);② 被用户手动关(第二次:cc07347c卡死后用户关窗,status=completed,⚠️ 手动关是标completed不是terminated)⇒ 都不会跑--release-exec。而域冲突判定只比会话名、不判死活,R9 又禁 AI 删锁 ⇒ 只能用户处置。第二把已实证在 06:33 建、07:10 成孤儿。✅ 2026-10-09 已有自动解除工具:session-mechanism/scripts/lock/orphan-lock.py(用户 2026-10-09 逐字授权「可以授权 检查会话自解除孤儿锁」= R9 的唯一例外)—— 判据是查宿主库sessions.status(⛔ 不靠目测OWNER):working不动|terminated/error/archived可解|completed要过时间闸(--idle-min默认 30 分钟)|查不到 sid ⇒ fail-closed 不动;先--dry-run。本区实测已解开两把(含挂了 10 天的ai1net-dsh-anywhere ← [协作]N9复测-2248)。 - 🔴 本机浏览器实例要用「计划任务」保活,⛔ 别用后台任务(2026-10-09 实测):「后台任务」=只活到发起它的那个会话结束(07:18 起的 pid 8236,07:37 已被回收)。正解=计划任务
bh-chrome-keepalive:动作pythonw.exe "E:/ProgramData/AIProject/contentm_agent/bh_chrome_keepalive.py"(幂等:端口在听就退出),每 5 分钟触发 +MultipleInstances=IgnoreNew+ExecutionTimeLimit=0;脚本放工作区根(⛔tmp/会被清)。端口 9223,验证=netstat见 LISTENING +curl --noproxy '*' http://127.0.0.1:9223/json/version回 JSON。同型第二例:ai1net-dsh-anywhere ← [协作]N9复测-2248(09-29 建)已挂 10 天。 - ⚠️ 本目标(
…-071c5b)产物落点分岔:目标目录合同判「不在目标目录内」,而域门禁要求「只许写域目录」。①棒取域目录产品规划/(收到软提醒,非拒收);②③棒改取域目录执行会话(第一层目录 ⇒ 能盖住目标目录)+ 产物落目标目录 —— 两种都记在案,口径待用户裁定。 - ⚠️
--report <sid> --state done --artifact "<路径>":产物读不到⇒硬拒收;落点不在目标目录只给软提醒(不拒收)。sid 取法:查宿主库E:/ProgramData/.workbuddy/workbuddy.db的sessions表(按cwd+created_at desc,本区会话is_background_automation=1)。