Files
WorkBuddy df56c2c137 初始化提交:contentm_agent 工作区全量快照
内容分四块:
1、产品规划产出 —— MCN 短视频整合营销工作台的①段五份(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)、②段两份(2a 功能/2b 布局)、③段界面(DESIGN.md 契约与令牌表 + mcn-workbench.html 原型 + 实测/会诊/审查三份 + 23 张闸门截图)。
2、开源竞品调研 —— 5 个内容工作台项目的取证原始件与 1b 系列分析文档。
3、参考资料 —— 竞品视频抽帧 1145 张 + 2 个源视频 + 功能点截图。
4、机制侧 —— 协作脚本与状态台账、工作区记忆日志、抽帧/OCR 脚本。

.gitignore 只排运行时日志、脚本备份副本与一次性探针输出,其余按原样入库。
2026-10-08 08:13:02 +08:00

3.3 KiB
Raw Permalink Blame History

Easel Prompt Stack

OpenClaw agent 的 prompt 由多层文件组合而成,每层职责明确、互不干扰。

组合顺序

Layer 1: SOUL.md         人格 + 能力总览(搭子语气、沟通风格、对五层能力的自我认知)
Layer 2: AGENTS.md       分工规则 + 编排逻辑 + Plan Mode + 制作层执行流程
Layer 3: CONTEXT.md      项目路径信息(sync.sh 自动生成,包含 outputs/assets/profiles 路径)
Layer 4: SKILL           被触发时加载 SKILL.md + 按需读取 references/ 下的文件

画像(Profile)如何进入 prompt:不再写全局 USER.md(会有并发竞态)。CLI 与 Web 统一把画像作为消息内联传入,由 OpenClaw 按 AGENTS.md 自行读取 profiles/<X>/ 并凝练。每个请求自包含,无全局文件污染。

  • Web / skill(单轮):每条消息前缀 我当前使用的画像是「X」。(easel/persona.py:persona_prefix)。
  • CLI easel chat(多轮交互):选画像后经 openclaw chat --message "<同一前缀>" 注入为初始消息,画像随 session 历史留存供后续 turn 沿用(超长会话被压缩后可能丢,属已知取舍)。
  • 三入口的画像逻辑统一收敛到 easel/persona.py(list_personas / load_profile_text / persona_prefix)。

记忆作用域:Easel 不使用 OpenClaw 根目录的全局 MEMORY.md 承载账号知识;该文件由同步脚本保持为空。账号长期记忆只存放在 profiles/<当前画像>/memory.md,每个会话按自身绑定的画像直接读取。通用模式不读取任何画像记忆,也不通过动态改写全局文件切换画像。

各层说明

Layer 1 — SOUL.md(常驻)

定义 agent 的人格(创作者的社媒内容"搭子":懂策略、能上手、务实诚实)、沟通方式,以及一份能力总览,让 agent 心里有数、遇事先想"怎么帮他做成"而不是"我做不了"。所有 turn 都在 system prompt 中。 保持精简且类目级:能力总览按五层写"能做什么",不写具体 skill 名(避免像 weibo 那样过时)、也不写"去调某某 skill"这类操作机制(那属 AGENTS 与技能库);语气是好伙伴,不是工具说明书。

Layer 2 — AGENTS.md(常驻)

核心业务逻辑:五层分工、Plan Mode 触发规则、纵向编排原则、制作层执行全流程。 所有 turn 都在 system prompt 中。是最重要的文件。

Layer 3 — CONTEXT.md(半静态)

由 sync.sh 生成,包含项目绝对路径。换机器后重新跑 sync.sh 自动更新。 OpenClaw 跑项目脚本前从这里读取项目根路径——先 cd 到该目录再跑脚本(不支持 --cwd)。

Layer 4 — SKILL(按需)

只有当 SKILL 被触发时才加载。加载顺序:

  1. SKILL.md 主体(执行流程)
  2. references/ 下的文件(按 SKILL.md 中的引用按需读取)
  3. scripts/ 下的脚本(执行时调用,脚本本身不进 prompt)

五层 SKILL(含制作层)都完整同步进 OpenClaw workspace,OpenClaw 读进来照其流程自己执行、产出成品到 outputs/。

设计原则

  • 每层只管自己的事,不越界
  • 常驻层(1-3)保持精简,控制 token 消耗
  • SKILL 层按需加载,不用的不加载
  • references/ 里的文件只在 SKILL 执行过程中被读取,不常驻