跳转到内容
M6第 2 课 · 内容运营M6-L2.2M6-L2.3

Technical Design:Marketing Studio

一句话: 一份多 agent 内容工作室的参考设计:事实放在有负责人的文件里,文案和设计是类型化的交接,基于模板构建的 HTML 是唯一母版,独立审核者的批准绑定到具体产物,而联锁由代码执行,而不是靠 agent 记住。

教学参考。 这份设计遵循 handbook 的九节骨架,并满足 Marketing Studio PRD。第 9 节说明当前构建与它的关系。

文件掌管事实,模板掌管版式,代码掌管 gate;模型负责写、判断和选择。 agent 可以提议任何东西。在代码检查过证明每一步已完成的文件之前,没有任何东西会到达营销人员手中。

营销人员 ──#requests──► Lead ──#studio-floor──► Copywriter → Reviewer → Designer
│ │
私信(上报) job 命令:advance
▼ ▼
Operator outputs/<job-id>/(任务存储)
│
营销人员 ◄── 经验证的链接 ◄── 链接签发器 ◄── 编辑器服务 ◄── 组装器 + 审计
│
headless 浏览器 → PNG(导出 gate)
组件负责
事实文件(_meta/)每个课程和营销事实,每个事实一个负责人、一个位置,附变更日志
Skills每类文案怎么写、怎么检查
Agent brief每个 agent 的职责、边界和写入范围
Job 命令状态机:转换、前置条件、事件
组装器把模板和 content.json 变成 material.html;用版式原型库组装幻灯片
审计在真实浏览器中测量溢出、重叠和预算
编辑器服务锁、自动保存、上传、导出;营销人员唯一接触的界面
链接签发器只为已批准、已构建、已审计、服务在线的任务打印链接
审批日志每个 operator 决定,只追加
  • 联锁是代码。 链接签发器只在以下条件都满足时才签发:审核记录为 PASS、其中的哈希与当前 content.json 和 material.html 的文字一致、审计通过、编辑器响应健康检查。拦截次数记在任务状态里;第三次拦截自动上报。
  • 批准绑定到产物。 审核者写入 {verdict, content_hash, html_text_hash, channel, reviewer, time}。之后任一文件的改动都会让结论作废,任务退回审核。
  • 导出 gate 在人工编辑后再检查一次。 生成 PNG 之前,代码对当前文字运行硬性禁用语词表,并把承载事实的区域(价格、日期、CTA)与已审核的值比对;有改动就标记为需要重新审核,而不是直接导出。
  • 每个 agent 最小权限。 写入通过窄工具进行:文案 agent 只能写 content.json 和说明,审核者只能写审核记录,设计 agent 只能写素材文件,Lead 只能写简报、状态和审批日志。没有 agent 跳过权限检查,也没有 agent 拥有完整的文件系统访问权。
  • operator gate。 缺失事实、反复拦截、要求推翻硬性拦截、服务故障和范围变更,以一条带字母选项的简短消息交给 operator;决定记入日志。
  • 任务状态只向前推进:intake、briefed、copy-draft、review、design、ready、editing、complete、archived,BLOCKED 退回 copy-draft。Job 命令在写入每次转换之前,先检查证明这一步的文件,并追加事件。
  • 唯一母版。 material.html 是唯一可编辑文件;state.json 只存锁、状态、修订号和令牌,从不存内容副本。快照只在 AI 初稿和人工完成时生成。
  • 事实只在一处修改。 修改事实时同时更新文件和变更日志,日志写明哪些产出因此过期。
  • 任务文件夹不提交进仓库; 已发布的素材收录到样例库。
  • 审核者使用比生产者更强的模型,读文件而不读任何总结,逐字比对每个事实与其来源文件。
  • 审核者之前先运行一遍确定性词表,所以硬性禁用语从不依赖模型判断。
  • 审核者从不修改;它列出必改项和结论,由文案 agent 修改。
  • 审核者的输入不包含文案 agent 的理由,所以它评判的是素材,而不是为素材辩护的论证。
失败行为
事实在任何文件中都没有字段标为 [NEEDS CONFIRMATION];只问 operator 一次;答复记入简报,随后补改文件
编辑器宕机不签发链接;Lead 报告服务状态和恢复步骤
导出失败保留 HTML 草稿;重试;第二次失败则上报
锁失效超时后释放;等待中的会话变为可编辑
重复唤醒或重复请求Job ID 只生成一次;状态转换幂等
用量上限或登录过期停止工作并给出可操作的提示;没有虚假的成功
  • 模板审计:每次模板改动和每个构建好的素材都在真实浏览器中审计。
  • 编辑器自检:对运行中的服务检查令牌、锁、保存、上传、导出保真度。
  • 审核者评测:埋入错误的价格、日期和禁用语,加上干净用例,按分级衡量识别率和误报率。
  • 验收测试:与 PRD 的 12 条标准一一对应,包括必须被拦截的错误事实和必须只读的第二个会话。
  • 用配置实现隔离: 每个角色组在自己的 space;就绪检查核实每个 agent 的 space 和频道成员关系,并用哈希确认每份运行时 profile 与其 brief 一致。
  • 成本: 生产者用中档模型,审核者用最强模型;限制每次唤醒的轮数和每个任务的拦截次数。
  • 可观测性: 每个任务的事件日志、审批日志,以及按状态汇总的每日概览。
  • 规则一致性: agent 读到的每个文件都视为 prompt;任何一个文件与架构决策冲突时,检查直接失败。

当前构建已有 Puffo 上的四个 agent、模板库和组装器、真实浏览器审计、带自检的本地编辑器,以及只追加的审批日志。它的联锁和状态机写在 agent 的 brief 里,而不是在 job 命令中;批准尚未绑定内容哈希;人工编辑后没有导出 gate;agent 以较宽的文件权限运行。第 3 至 5 节描述的正是补上这些缺口的设计。

"没有 PASS 就没有链接"这条规则应该放在哪里?为什么?

放在链接签发器里,作为每次请求链接时都会运行的检查。写在 agent brief 里的规则只在模型遵守时成立;写在代码里的检查每次都成立。再把它绑定到已审核文件的哈希,这样”PASS”的意思就是”对这份素材的 PASS”。

营销人员在审核之后在编辑器里改了价格,会发生什么?

导出 gate 把承载事实的区域与已审核的值比对,发现改动,在审核者重新看过之前拒绝导出。营销人员会看到哪个区域被改了、为什么需要重新审核。

Syllabus 行:M6-L2.2、M6-L2.3