账号两概念定稿:用户给定义(内容账号管内容属性/平台账号=发布渠道);建模自决=不加对象、平台账号作内容账号子项清单
This commit is contained in:
1 parent
081590aca1
commit
0d30f05857
8 files changed
+215
-35
No files matched your search
@@ -609,3 +609,44 @@
|
||||
- 产物核实:`现状说明-七页结构与操作路径.md`(8916 B)、`GPT-对页面结构与操作路径的建议.md`(55978 B,§二 逐字留痕 10562 字符、§三 逐条采纳决策 32 条)。
|
||||
- 写回:`goalctl declare --kpi`(三条 → `过|依据`,已回读);`collabd --set-life 已完成`(16:45:44,已回读);重写目标目录 `目标执行状态.md` 为第 40 棒版。
|
||||
- 未派新棒;未动域锁。副作用=常驻按设计优雅退出。遗留:D1–D5 待拍板 + 目录名空格口径分岔(本目标未受影响)。
|
||||
|
||||
## 23:0x · 执行会话 `254f554c` — 目标「分析 social-auto-upload 项目,用于投放页与发布对象的判断」(类别 开源项目调研)
|
||||
|
||||
- 产物:`执行会话/目标-分析social-auto-upload项目,用于投放页与发布对象的判断-0ec0a7/social-auto-upload 分析与对照.md`(30 045 B)。台账 `--report 254f554c … done` ✅(带**已知的**目标目录名分岔软提醒:机制口径=`目标-分析social-auto-upload-0ec0a7`,实际用派活单全称;软提醒不拒收)。域锁已 `--release-exec` 释放并复核为空。
|
||||
- **取数通道教训(新)**:本机 `raw.githubusercontent.com` **连不通**(`curl rc=56`)⇒ 取 GitHub 文件一律走 **`api.github.com/repos/<r>/contents/<path>`**(返回 base64 内容)+ `git/trees/<b>?recursive=1` 取目录树。公开接口够用,⛔ 不必起浏览器。
|
||||
- 被分析项目关键事实(可核):数据层**只有两张表**(`user_info` 账号 / `file_records` 素材,`db/createTable.py` 行 17–35),**没有发布记录表**;`/postVideo` 返回「已提交」但**不落库**且**同步阻塞**执行(`sau_backend.py` 行 408–479);发布入参=平台(**单选**)+ 账号(多选)(`PublishCenter.vue` 行 546/`sau_backend.py` 行 416–421);账号**内含平台**(`user_info.type`;CLI 账号文件名 `<platform>_<account>.json`,`sau_cli.py` 行 267–270)⇒ **它没有「渠道」对象**。
|
||||
- 「定时发布」真相:**点平台自己的「定时发布」按钮填时间**(`uploader/douyin_uploader/main.py` 行 363–375),**不是本地调度** ⇒ 由此推出硬约束「定时必须晚于现在 2 小时」(`uploader/base_video.py` 行 25)。
|
||||
- 失败处理:**无统一框架**,逐步骤零散重试;唯一有界的一处是 `wait_for_upload_complete(timeout=3600, max_retries=3)`(`uploader/tencent_uploader/main.py` 行 810–880),注释留痕了改前「无出口 while True,172MB 被反复传 20 多次、循环近 2 小时」。
|
||||
- **三条结论**:① 投放页可改 5 条(目标选择补「先平台后账号」/`Account` 补**登录态**属性/⛔ 不抄批量铺排/定时要在「平台原生 vs 本地调度」里选一条/⛔ 别削发布记录);② **不加「发布事件」对象** —— 它连发布记录都没有,样本量为零,给不出反证,我们倾向的理由**站得住**;③ 额外发现:`PublishRecord` 若一版发多渠道会分不清渠道,建议**加字段或写死「一版一路」,⛔ 不是加对象**。
|
||||
- **照出我们自己的一处内部矛盾**(本轮最实的一条):`Account` 字典**没写平台**(F9「账号标识唯一」读起来能跨平台),而 F7 守卫写「每个版本必须绑**一个账号 + 一个平台**」(两栏独立 ⇒ 能自由组合)⇒ 与它的「账号内含平台」相反。列入待拍板。
|
||||
- 待拍板 3 条(四要素齐全,见产物 §十一):账号带不带平台(倾向带)|要不要做定时及走哪条路(倾向先不做、B 记 Deferred)|`PublishRecord` 要不要带渠道字段(倾向写死「一版一路」,不加字段)。
|
||||
|
||||
## 23:2x · 部署 TrendRadar(https://github.com/SANSAN0/TRENDRADAR)到本机 Docker
|
||||
|
||||
- **源码落在工作区外**:`E:/ProgramData/AIProject/trendradar`(`git clone --depth 1`)。选工作区外的理由=它是独立第三方项目,放进 `contentm_agent` 仓会污染工作区 git;且工作区 `tmp/` 会被清 ⇒ 也不放 tmp。
|
||||
- 项目自带官方 Docker 方案(`docker/Dockerfile`、`docker-compose.yml`=拉镜像 `wantcat/trendradar` + `wantcat/trendradar-mcp`;`docker-compose-build.yml`=本地构建)。走**拉镜像**路线(最小代价)。`config/` 挂 `:ro`、`output/` 可写,`.env` 在 `docker/.env`。
|
||||
- 🔴 **本次最实的坑(跨项目可复用)**:`docker compose -f docker-compose.yml pull` **卡死** —— 两个大层各自停在 56.62MB / 57.67MB,**10 分钟字节数一动不动**,被 `timeout 600` 杀掉。对照取证:`docker pull alpine:latest` **秒成** ⇒ 仓库通、不是网络慢。✅ **解法=绕过 compose,单镜像直拉并锁架构**:`docker pull --platform linux/amd64 wantcat/trendradar:latest`(随后 mcp 镜像同法)⇒ 两三分钟内完成;之后 `docker compose up -d` 直接用本地镜像,不再拉取。⚠️ 附带:`docker manifest inspect` 走 `registry-1.docker.io` 报 Bad Gateway(它绕过 Docker Desktop 的 hubproxy),**这不算拉取失败的证据**,别拿它下结论。
|
||||
- 部署结果(进程级证据):`trendradar` Up(127.0.0.1:8080→8080)|`trendradar-mcp` Up(127.0.0.1:3333→3333)。首轮抓取已跑完 —— 11 个平台、报告落 `output/html/2026-10-09/23-23.html` 与 `output/html/latest/current.html`(148 652 B,`curl --noproxy '*' http://127.0.0.1:8080/` 回 **200**)。MCP 的 `/mcp` 端点可达(裸 GET 回 400 = 在做协议协商,非无响应)。
|
||||
- 无凭据时的默认行为(已实测):AI 分析与翻译**跳过并打印警告**(代码有 `if not api_key` 判空,`trendradar/ai/client.py` 行 114 等)⇒ 不填 key 也能跑,⛔ 不是致命错误;未配通知渠道 ⇒ 只抓取不推送。开启 AI 要改 `docker/.env` 的 `AI_API_KEY`+`AI_MODEL`+`AI_ANALYSIS_ENABLED=true` 再 `docker compose up -d`(环境变量优先级 > config.yaml)。
|
||||
- ⚠️ 本机 `env` 里有 `http_proxy=http://127.0.0.1:56210` ⇒ **探本机端口的 curl 必须带 `--noproxy '*'`**,否则走代理拿不到结果(假失败)。
|
||||
- 未启用:调度系统 `schedule.enabled: false`(默认)、S3 远程存储、任何推送渠道 —— 均按官方默认保持原样,未改 `config.yaml`。
|
||||
|
||||
## 23:3x · 目标检查会话 第 41 棒(social-auto-upload 目标)⇒ 判「判不出来」,停手
|
||||
|
||||
- 结论:本轮**既没派活也没改状态** —— 唯一验收依据《目标执行状态.md》读不到(机制名目录 `执行会话/目标-分析social-auto-upload-0ec0a7/` 与实际全称目录里**都没有这份文档**)⇒ 照检查会话规则三.4「判不出来 ⇒ 停手」。
|
||||
- 台账侧是干净的:`tmp/supervise-inbox/tasks.json` **18 条全 done**,本目标那条 `254f554c` = done,产物 `执行会话/目标-分析social-auto-upload项目,用于投放页与发布对象的判断-0ec0a7/social-auto-upload 分析与对照.md`。
|
||||
- 🔴 顺带查出四处机制缺陷(都不在本轮授权内,留主会话处理):
|
||||
· `goal.json.execution_doc` **漂移** —— 指的还是上一个目标 `…b49e02/目标执行状态.md`,⛔ 不是本目标的;
|
||||
· `goal.json.acceptance_state` 三条值写的是 **`未过`** ⇒ 不在规范取值域(`过|…`/`🔴 不过|…`)⇒ 机器分不出「没判」与「判了没过」;
|
||||
· `tmp/supervise-inbox/taskgraph.json` **文件不存在**(任务图那一路判不了);
|
||||
· 工作区根 `state.py` **不存在**(检查单第 1 项跑不通)。
|
||||
- 域锁:当前**无人持域** ⇒ 不存在孤儿锁,本轮无需解除。
|
||||
|
||||
## 23:58 [检查]-目标检查-第42棒 · 收口「分析 social-auto-upload」目标
|
||||
|
||||
- 判定:**已完成**,已跑 collabd.py --set-life 已完成(by 第42棒)。三路核对:台账 20 条全 done(无僵尸件)/任务图 taskgraph.json 不存在(该路判不了,已注明)/验收三条全**过**。
|
||||
- 依据:执行棒 254f554c 产物「social-auto-upload 分析与对照.md」(30 045 B,落本目标目录)覆盖三条判据(§二平台/§三发布抽象/§四账号与登录态/§五定时/§六失败重试/§七技术栈;§八 11 对象逐项对照;§九 投放页 5 条 + §十「发布事件不加」)。
|
||||
- ✅ 补写了本目录**此前缺失**的「目标执行状态.md」(文档合同里该文档由检查会话写)。
|
||||
- ✅ 修掉第41棒留的两处:acceptance_state 三条「未过」→ 规范值「过|依据」(走 goalctl.py declare --kpi,已回读);execution_doc 从旧目标 b49e02 那份改回本目标(原子替换 + 回读,exists=True)。
|
||||
- ⚠️ --set-life 已完成 的副作用:**常驻程序优雅退出**(pid 12784)⇒ 后续检查棒不再自动建;要恢复得主会话重起。
|
||||
- ⛔ 仍未修(不在本轮授权):taskgraph.json 不存在;工作区根 state.py 不存在(检查单第 1 项恒跑不通)。
|
||||
@@ -29,3 +29,20 @@
|
||||
**牵动面**:P6 账号页(画像六维要不要拆成人设五维+平台接入清单)/P5 投放页「目标选择」/F7 母版展开(「账号 × 平台」是不是合法输入)/`PublishRecord` 说的"渠道"指谁/登录态(现版全篇没有这个概念)。
|
||||
|
||||
**产物**:`执行会话/目标-分析social-auto-upload项目,用于投放页与发布对象的判断-0ec0a7/用户口径追加-账号是两个概念.md`。
|
||||
|
||||
## 07:47 · 用户给出两条定义(内容账号 vs 平台账号)—— 概念定了
|
||||
|
||||
**用户原话**:「内容账号管的是内容属性(主要是账号设定 内容做成什么样),平台账号应该是 发布的渠道三方平台账号 用户发布具体内容」。
|
||||
|
||||
**两条定义**:
|
||||
- **内容账号** = 管**内容属性**(主要是账号设定,"内容做成什么样")⇒ 定位/风格/受众/偏好与红线/长期记忆都属于它;**平台不属于它**。
|
||||
- **平台账号** = **发布的渠道**(三方平台上的账号,"发布具体内容"用的就是它)⇒ **登录态/授权属于它**。
|
||||
⇒ **「渠道」从此有确定含义 = 平台账号**(⛔ 不再用"账号 × 平台"的组合说法)。
|
||||
|
||||
**由此定下三件**:① `2b-界面布局-新版.md` 行 278 画像六维里的「平台」**从内容账号身上拿掉** ② **登录态归平台账号**,内容账号不带 ③ `2a-产品功能-新版.md` 行 180 的 F7 守卫"一个账号 + 一个平台"改成"一个账号 + **一个平台账号**";发布记录说的"渠道"同样指平台账号。
|
||||
|
||||
**建模方式(我自决,可推翻)**:**不加对象** —— 平台账号做成**内容账号下的子项清单**(1 个内容账号 → N 个平台账号,每个带「平台 + 登录态 + 授权状态」)。
|
||||
理由:对象数不变(仍是 11 个)、不用重定与版本/发布任务/发布记录的边界、不用重过 20 条流转;"一个人设多个平台号"照样表达得出来。改成两个独立对象则字典 11 → 12、20 条流转重过一遍,只换来概念上更整齐。
|
||||
|
||||
**产物**:`用户口径追加-账号是两个概念.md` 新增 §〇(定义 + 落法 + 建模理由)。
|
||||
**剩余待定**:定时发布(倾向不做、把"平台原生"记 `Deferred`)、`PublishRecord` 渠道字段(倾向写死"一版一路")。
|
||||
@@ -0,0 +1,67 @@
|
||||
# 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 用户令,优先于旧的"按业务对象归属")**:**同一类事情放同一个页面** —— 例:找选题、拆解选题、做选题都是"选题相关的事",就该同在选题页。配套两条已定口径:**资产入库不限页**(任何页产生资产都可就地入库,**资产库页=统一管理的地方**,⛔ 不是唯一入库口;「一个对象只有一处产生」管的是**唯一权威数据**、⛔ 不是**写入动作的地点**);**选题库容纳"对选题有帮助的任何信息"**(随手记仍落选题库,⛔ 不新增"待整理"状态,**靠分类区分**)。🔴 **「复盘」这一类事=发布之后看结果**:**看数据 + 看收入**(用户 2026-10-09 22:48 逐字「发布的目的就是为了看数据和看收入啊」)⇒「记录与对账」(发布记录/溯源/对账核对/商单与收支)**属复盘、是同一类事**,留在复盘页,⛔ 不拆页、⛔ 不加导航项、⛔ 页内也不分区(GPT 主张拆出去的三条 G7/G10/G22 ⇒ **不采纳**)。
|
||||
- 🔴 **本区当前目标**(2026-10-09 16:12 切)=「**征询 GPT 对当前七页结构与操作路径的建议**」,类别 `产品规划`。用户令:「问 gpt 对现在的 产品页面结构 操作路径 有什么建议」。判据 3 条:现状说明成可外发材料 | 建议取回并**原文留痕** | 逐条「采纳/不采纳+理由」。✅ **第 1 棒 `4de53e43` 已于 16:35 交付**:`现状说明-七页结构与操作路径.md`(可外发)+`GPT-对页面结构与操作路径的建议.md`(原文 10 562 字符逐字留痕 + 32 条处置:采纳15/部分采纳8/已在3/不采纳1/待拍板5)。落点=`执行会话/目标-征询GPT对当前七页结构与操作路径的建议-b49e02/`(⚠️ **实目录不含空格**;上报时报「不在目标目录内」=**已登记的命名分岔**,软提醒不拒收)。🔴 **最大冲突待裁定(D1)**:GPT 主张把「记录与对账」拆出复盘,与用户刚拍板的「P8 并入复盘」**方向相反** ⇒ 待用户定,⛔ 未自行改。
|
||||
- ✅ **上一目标**(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.html` 137 555 B + `DESIGN.md` 52 163 B,台账 `ab0f2d84` done)。⚠️ **遗留一条待用户裁定**:窄屏 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`。本文件只留最容易踩的三条:
|
||||
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 行不可兼得」已登记未动。
|
||||
|
||||
## 七、本区会话机制
|
||||
|
||||
- 🔴 **域锁的实体不在本工作区**(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`)。
|
||||
+37
-35
@@ -2,66 +2,68 @@
|
||||
|
||||
> ⚠️ 本工作区**现名 `contentm_agent`**(2026-10-08 定;旧名 `content_marketing_agent`,再早 `agent-product`)。
|
||||
> 整理纪律:**同一件事只在一处写全**,别处只引;细则进当日日志,跨会话有用才上提这里。
|
||||
> 🔴 **本文件 2026-10-09 压缩过一次**(原 22.5 KB,注入时被截断)。压缩前全量存同目录 `MEMORY-压前全量-20261009.md`。
|
||||
> ⚠️ 本文件按 ~9 KB 维护:**再加内容先删等量旧内容**,超过就会被截断(等于白写)。
|
||||
> 🔴 本文件按 **~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]>`(全局 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`。
|
||||
- **工作区仓** `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 是**汇总型**,不是 grill 产出);1b 在 `content-workbench` 项目下(跨项目引用,⛔ 不重写)。
|
||||
- **四段次序不可跳**:①产品需求(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-09 16:12 切)=「**征询 GPT 对当前七页结构与操作路径的建议**」,类别 `产品规划`。用户令:「问 gpt 对现在的 产品页面结构 操作路径 有什么建议」。判据 3 条:现状说明成可外发材料 | 建议取回并**原文留痕** | 逐条「采纳/不采纳+理由」。✅ **第 1 棒 `4de53e43` 已于 16:35 交付**:`现状说明-七页结构与操作路径.md`(可外发)+`GPT-对页面结构与操作路径的建议.md`(原文 10 562 字符逐字留痕 + 32 条处置:采纳15/部分采纳8/已在3/不采纳1/待拍板5)。落点=`执行会话/目标-征询GPT对当前七页结构与操作路径的建议-b49e02/`(⚠️ **实目录不含空格**;上报时报「不在目标目录内」=**已登记的命名分岔**,软提醒不拒收)。🔴 **最大冲突待裁定(D1)**:GPT 主张把「记录与对账」拆出复盘,与用户刚拍板的「P8 并入复盘」**方向相反** ⇒ 待用户定,⛔ 未自行改。
|
||||
- ✅ **上一目标**(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.html` 137 555 B + `DESIGN.md` 52 163 B,台账 `ab0f2d84` done)。⚠️ **遗留一条待用户裁定**:窄屏 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 用户令)**:**同一类事情放同一个页面**(找选题/拆解选题/做选题都属「选题相关的事」⇒ 同在选题页)。两条配套口径:**资产入库不限页**(任何页产生资产都可就地入库,**资产库页=统一管理的地方**,⛔ 不是唯一入库口;「一个对象只有一处产生」管的是**唯一权威数据**、⛔ 不是写入动作的地点);**选题库容纳「对选题有帮助的任何信息」**(随手记仍落选题库,⛔ 不新增「待整理」状态,靠分类区分)。
|
||||
- 🔴 **「复盘」=发布之后看结果**:**看数据 + 看收入**(用户 2026-10-09 22:48 逐字「发布的目的就是为了看数据和看收入啊」)⇒「记录与对账」(发布记录/溯源/对账/商单与收支)**属复盘、是同一类事**,留在复盘页,⛔ 不拆页、⛔ 不加导航项、⛔ 页内不分(GPT 主张拆出去的三条 G7/G10/G22 ⇒ **不采纳**)。
|
||||
- 🔴 **「账号」是两个概念,现行定义(2026-10-10 用户逐字「内容账号管的是内容属性(主要是账号设定 内容做成什么样),平台账号应该是 发布的渠道三方平台账号 用户发布具体内容」)**:**内容账号**=管**内容属性**(账号设定:定位/风格/受众/偏好红线/长期记忆),**平台不属于它**;**平台账号**=**发布的渠道**(三方平台账号,"发布具体内容"用的就是它),**登录态/授权归它**。⇒「**渠道**」=**平台账号**(⛔ 不再说"账号 × 平台")。**建模(主会话自决、可推翻)**:不加对象,平台账号做成**内容账号下的子项清单**(1 → N,每项带「平台 + 登录态 + 授权状态」)。⚠️ 待落地:`2b` 画像六维去掉「平台」那一维;`2a` F7 守卫"一个账号 + 一个平台"改成"+ 一个平台账号"、发布记录"渠道"同指平台账号。
|
||||
- 🔴 **本区当前目标**(2026-10-09 22:52 声明)=「**分析 social-auto-upload 项目,用于投放页与发布对象的判断**」,类别 `开源项目调研`(用户令逐字:「分析 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 个对象的字典;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 定案)|全段**零视觉词**(配色/字体/间距/组件样式/动效)。
|
||||
- 改动主线=按「**业务对象 + 数据流转**」解耦(原来「页面=功能=数据」揉在一起)。八页**不推倒**,改的是归属判据。
|
||||
- **归属判据**=这个功能主要**创建/改变哪个核心业务对象**(⛔ 不是「哪页有按钮」)。🔴 **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 变量(该用 `tt` 用了 `old`)导致「旧名提示」**恒不触发**(假绿)。
|
||||
- ⚠️ 闸门必须带 `--ws`:`python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent"` ⇒ 期望 **通过 2060|失败 0|提示 27**;⛔ 别给 `--root .`。**改包前后都要跑**。
|
||||
- 🔴 **单一可信源门禁**:`AUTHORITY` 表登记「会变的事实 → 唯一定义处」,除定义处外复述即 FAIL(现 9 条)。**改这些事实只改权威处,然后跑闸门**;⛔ 写「不复述」时别把名单抄进来(自己踩过)。
|
||||
- ⚠️ **改门禁后必须做变异对照**(注一条假病进去确认报红,再还原)。教训:曾因 stale 变量导致「旧名提示」**恒不触发**(假绿)。
|
||||
- 🔴🔴 **改包纪律**(技能仓根 `改包纪律.md`):⛔ **不许整文件覆盖**|落地前**比对时点**|改完**必跑闸门**|收到覆盖性提交先做**结构体检**。
|
||||
- 🔴 **事故留痕**:提交 `1d7d31a` 用「整文件覆盖」一步造出 12 条 FAIL(权威声明 5 处→1 处、供给口径被翻成「open-design=默认主线」)⇒ 2026-10-08 已整包回退到 `44d42b0`(技能仓提交 `8fc9a92`),闸门回 `2060|0|27`;那批「说人话」改写另存 `归档/技能包-说人话改写-被覆盖存档-20261008/`(只取措辞、⛔ 不取结构)。⛔ 修法顺序:**先恢复权威处声明,再清复述**,反了会反复。
|
||||
- 🔴 **事故留痕**:提交 `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`,**本文件不复制**。
|
||||
- ③段细目(导航判据 `§5.5.2`、`§4.9` 导航栏、`§5.6` 两条元规则、Gate-3 两条新增)⇒ 读技能包 `layouts-tooling.md` 与 `execution-runbook.md`,本文件不复制。
|
||||
|
||||
## 六、③段原型 `ui/mcn-workbench.html`(第八轮后)
|
||||
## 六、③段原型 `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. **几何一改,逐视口密度表整表重跑**,且改前先落「改前基线」—— 这个毛病犯过两次。
|
||||
- 🔴 **细则不在此复制**:口径与断点表在项目内 `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` 的计数猜的** —— **计数不是几何,包里没有的事实就回源站量**。
|
||||
- ⚠️ 教训:改前那版「纯图标栏」是**照 `library.json` 的计数猜的** —— **计数不是几何,包里没有的事实就回源站量**。
|
||||
- **遗留未清**:`3d` B-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`)。
|
||||
- 🔴 **域锁实体不在本工作区**:`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-0ec0a7` vs 实际 `…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` 被本机黑名单拦截 ⇒ 走 PowerShell `ScheduledTasks` 模块。
|
||||
@@ -0,0 +1,7 @@
|
||||
# 目标检查棒 · 执行留痕
|
||||
|
||||
- 2026-10-09 23:58(第42棒):目标「分析 social-auto-upload 项目,用于投放页与发布对象的判断」判定**已完成** —— 验收三条写回为「过」,并把生命周期改成「已完成」。
|
||||
· 依据:执行棒产物「social-auto-upload 分析与对照.md」(30 045 B)覆盖三条判据;台账 20 条全 done。
|
||||
· 补写了目标目录此前缺失的「目标执行状态.md」;顺带修正 execution_doc 指向旧目标(b49e02)的老缺陷。
|
||||
· 副作用:常驻程序随之优雅退出,后续检查棒不会自动再建(要恢复需主会话重起)。
|
||||
· 未修(超出本轮授权):taskgraph.json 与工作区根 state.py 均不存在。
|
||||
@@ -0,0 +1,10 @@
|
||||
# 自动化记忆 · [执行]-[开源项目调研]-分析social-auto-upload
|
||||
|
||||
## 2026-10-09 23:0x(第 1 次运行)
|
||||
|
||||
- **做了什么**:分析 GitHub 开源项目 `dreammis/social-auto-upload`,产出「分析 + 与现版 11 对象逐项对照 + 两条结论」的文档。
|
||||
- **产物**:`执行会话/目标-分析social-auto-upload项目,用于投放页与发布对象的判断-0ec0a7/social-auto-upload 分析与对照.md`(约 30 KB)。
|
||||
- **上报**:`collabd.py --report 254f554c-… --state done --artifact <上述路径>` = OK(带已知的目标目录名分岔软提醒)。域锁 `--release-exec "分析social-auto-upload项目"` 已释放并复核为空。
|
||||
- **关键结论**:该项目是**发布执行器**不是内容管理器 —— 数据层只有 `user_info`/`file_records` 两张表,**无发布记录**;**无「渠道」对象**(平台单选+账号多选,账号内含平台);定时=填平台自带的「定时发布」表单(非本地调度,故须晚于现在 2 小时)。⇒ 我们「不加发布事件对象」的倾向**站得住**(它样本量为零)。
|
||||
- **发现的待拍板**:① `Account` 带不带平台(我们 `2a` 字典与 F7 守卫自相矛盾)② 投放页要不要做定时 ③ `PublishRecord` 要不要带渠道字段。
|
||||
- **环境教训(下次复用)**:本机 `raw.githubusercontent.com` 连不通(curl rc=56)⇒ 取 GitHub 文件走 `api.github.com/.../contents/<path>`(base64)+ `git/trees/...?recursive=1`;⛔ 不要为取数起浏览器。
|
||||
@@ -0,0 +1,13 @@
|
||||
# 自动化执行记忆 · 目标检查会话(contentm_agent)
|
||||
|
||||
## 2026-10-09 23:3x · 第 41 棒 · 目标「分析 social-auto-upload 项目,用于投放页与发布对象的判断」
|
||||
|
||||
- **判定:判不出来 ⇒ 停手**(既未派活、也未改 `lifecycle`,仍为「进行中」)。
|
||||
- 直接原因:唯一验收依据《目标执行状态.md》读不到 —— 机制名目录
|
||||
`执行会话/目标-分析social-auto-upload-0ec0a7/` 与实际全称目录里都没有这份文档。
|
||||
- 台账干净:18 条全 `done`,本目标 `254f554c` 已 done 并带产物。
|
||||
- 域锁无人持有(非孤儿锁),无需解除。
|
||||
- 遗留(未在本轮处理):`execution_doc` 指向旧目标 b49e02;`acceptance_state` 用非规范值 `未过`;
|
||||
`taskgraph.json` 与工作区根 `state.py` 均不存在。
|
||||
- **下棒注意**:若《目标执行状态.md》仍不存在,本检查会一直落到「判不出来」的同一个结论 ——
|
||||
需要主会话先补写该文档(按文档合同,这份由**目标检查会话**写),否则检查线会空转。
|
||||
@@ -5,6 +5,29 @@
|
||||
|
||||
---
|
||||
|
||||
## 〇、用户已给的定义(2026-10-10 07:47,逐字)
|
||||
|
||||
**用户原话**:「内容账号管的是内容属性(主要是账号设定 内容做成什么样),平台账号应该是 发布的渠道三方平台账号 用户发布具体内容」。
|
||||
|
||||
拆开是两条定义:
|
||||
|
||||
- **内容账号** = 管**内容属性**的 —— 主要是**账号设定**(内容做成什么样)。⇒ 定位、风格、受众、偏好与红线、长期记忆都属于"内容属性";**平台不属于它**。
|
||||
- **平台账号** = **发布的渠道** —— 三方平台上的账号,**发布具体内容用的就是它**。⇒ 登录态、授权属于它。
|
||||
|
||||
⇒ **「渠道」这个词从此有确定含义 = 平台账号**(不再用"账号 × 平台"这种组合说法)。
|
||||
|
||||
**由此定下三件**:
|
||||
|
||||
1、`2b-界面布局-新版.md` 行 278 画像六维里那一维「**平台**」**从内容账号身上拿掉**(它不属于内容属性)。
|
||||
2、**登录态归平台账号**(能不能发出去是它的事),内容账号不带它。
|
||||
3、`2a-产品功能-新版.md` 行 180 的 F7 守卫那句「每个版本必须绑一个账号 + 一个平台」,"一个平台"改成"**一个平台账号**";发布记录里说的"渠道"同样指平台账号。
|
||||
|
||||
**建模方式(我已定,可推翻)**:**不加对象** —— 平台账号做成**内容账号下的子项清单**(一个内容账号 1 → N 个平台账号,每个带「平台 + 登录态 + 授权状态」)。
|
||||
|
||||
理由:对象数不变(仍是 11 个),不用重定与版本/发布任务/发布记录的边界,也不用重过 20 条流转;而"一个人设多个平台号"照样表达得出来。若改成两个独立对象,字典要 11 → 12、20 条流转要重过一遍,换来的只是概念上更整齐。
|
||||
|
||||
---
|
||||
|
||||
## 一、先答:现版说的是哪个?—— 两个混在一起了
|
||||
|
||||
现版 `Account` 的三处写法互相打架:
|
||||
|
||||
Reference in new issue
Block a user