🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Goal Achiever: Self-Evolving Agent System

by @ldz2010326

在目标平台(goal_web)发布高质量内容的完整技能流程设计。用于:读取任务json与goal_prompt,拆解任务、执行任务引擎、开发与自检、结果回写与评分回写。触发词:修改目标、赢得目标、触发目标实现、触发{网站名称}任务实现。

Versionv1.0.1
Downloads387
TERMINAL
clawhub install goal-achiever

📖 About This Skill


name: 赢得目标 description: 在目标平台(goal_web)发布高质量内容的完整技能流程设计。用于:读取任务json与goal_prompt,拆解任务、执行任务引擎、开发与自检、结果回写与评分回写。触发词:修改目标、赢得目标、触发目标实现、触发{网站名称}任务实现。

{goal_web} 内容发布 Skill(仅流程文档,无脚本)

> 变量说明{goal_web} 是全局目标平台变量,每次运行时从 references/core_goal.jsongoal_web 字段读取,读取后注入本文档所有出现 {goal_web} 的位置。当前值由 core_goal.json 决定,本文档不硬编码任何平台名称。

目录结构(约定)

  • references/core_goal.json:固定核心目标,每次启动 Step 1 时必须从此文件读取 core_goal / core_flow / goal_web,未经用户明确修改不得更改
  • ~~references/goal_prompt.md~~:已迁移至 references/prompts/goal_prompt.md,旧路径废弃
  • references/prompts/Prompt 专属目录,所有 Prompt 文件统一存放于此
  • - references/prompts/prompt_registry.mdPrompt 注册表,Step 1 / Step 6 必须先查此表确定读取路径 - references/prompts/meta_prompt.mdLyra meta-Prompt,生产任何新 Prompt 时必须先用此 Prompt 驱动生成,再用 authoring_guide 校验字段 - references/prompts/prompt_authoring_guide.mdPrompt 撰写规范,新建任何 Prompt 前必读,定义输入/输出字段硬性约束 - references/prompts/goal_prompt.md:通用任务拆解 Prompt(fallback) - references/prompts/retro_prompt.md:通用复盘 Prompt(fallback)
  • references/technical-decision-reference.md:开发方案决策参考,Step 3.1 必须读取
  • references/external-publishing-design-reference.md:外部平台发布设计参考,涉及发布任务时必须读取
  • references/logging.md:日志记录规范,每次执行必须遵循
  • references/script_registry.json:脚本索引表(注册表),必须存在,允许写入脚本记录
  • references/step5_example.md:Step 5 结果评分示例(参考用)
  • run/{date}/{batch_seq}/compressed_log.json结构化压缩日志(V2.0 新增),Step 4 每次执行后必须生成;Step 6 的 {past_3_runs_logs} 变量改读此文件,降低 Token 消耗
  • references/cron-design-reference.mdCron 脚本设计规范,开发任何 cron 脚本前必须先读取本文件
  • references/hook_config.jsonEvent-driven 自动运行配置表,Step 0 启动时读取,控制一次触发自动跑几个 batch
  • tasks/分平台任务 JSON 统一存放目录(详见下方「任务文件命名规范」)
  • run/{date}/{batch_seq}/:批次运行日志、retro_output 存放目录(仍保留,供日志归档)

  • 任务文件命名规范(必须遵循)

    所有任务 JSON 和复盘 JSON 统一存放在 tasks/ 目录,按以下规则命名:

    | 文件类型 | 命名格式 | 示例 | |---------|---------|------| | 任务拆解 JSON | {goal_web}_tasks_{batch_seq}.json | 微博_tasks_001.json | | 复盘输出 JSON | {goal_web}_retro_{batch_seq}.json | 微博_retro_001.json |

    说明

  • {goal_web} = core_goal.jsongoal_web 字段的实际值(如 微博脉脉知乎
  • {batch_seq} = 三位数字序号(如 001002
  • 同一平台的任务和脚本隔离,不同平台之间绝对不互相读取
  • 脚本注册表(script_registry.json)已含 target_web 字段,检索时必须先过滤 target_web == goal_web,只使用本平台的脚本

  • > 硬性约束 > - 开发 cron 定时脚本前,必须先读取 references/cron-design-reference.md,按其规范开发,完成后在规范文件的「已有脚本清单」中追加记录 > - 若任务需要开发新脚本,必须先撰写"技术方案" > - 必须基于"技术方案"进行开发 > - 允许并要求开发脚本以落地任务 > - 脚本索引表允许写入脚本记录,禁止清空 > - 禁止模拟数据:所有任务结果必须来自真实执行与真实平台反馈 > - 禁止询问人工帮助,即使失败了也会记录为失败数据,对下一轮仍有极大帮助 > - 所有涉及 {goal_web} 平台的浏览器操作,必须通过 attach 谷歌浏览器实例进行(Browser Relay),不得自行启动新浏览器 > - 【核心约束·最高优先级】必须自动化完成全流程,严禁向用户要求任何形式的人工介入(包括但不限于:请你打开页面、请你点击、请你 attach Tab、请你确认、请提供数据等)。若因环境缺失(Tab 未 attach、权限不足、网络异常等)导致任务无法完成,必须将该任务回写为 task_state: "failed"task_result 中写明失败原因,继续执行后续任务,不得中断流程,不得等待人工处理。


    输入/输出规范

    输入 JSON — 首批次(batch_seq = 001)

    首次运行包含以下基础字段:
  • goal_web:目标平台(从 core_goal.json 读取)
  • core_goal:今日核心目标
  • core_flow:(可为空/null)核心过程约束,与 core_goal 同级别。非空时描述任务必须遵循的执行流程或操作顺序;为空/null 时不影响任何流程,按正常逻辑执行
  • date:今日日期(每次运行时读取)
  • batch_seq:从 001 开始
  • 输入 JSON — 续批次(batch_seq ≥ 002)

    从第二批次起,上游 JSON 是 Step 6 复盘输出,额外包含以下字段,Step 1 读取后必须透传给 Step 2 使用
  • workflow_statuscontinue_to_next_batchgoal_achieved
  • retrospective_context:上一批次的复盘摘要
  • next_batch_guidance:对下一轮拆解和开发的约束指导(含 blacklist
  • carry_over_tasks:未完成或低分任务的结转列表
  • core_flow:(可为空/null)同首批次,从上一批次 retro 或 core_goal.json 继承透传
  • > 若 workflow_status = goal_achieved,终止工作流,输出完成报告。

    Prompt 文件(通过注册表查找)

  • Step 1 / Step 6 均使用 Prompt 注册表查找机制(详见下方「Prompt 查找规则」)
  • 注册表路径:references/prompts/prompt_registry.md
  • 通用 fallback:references/prompts/goal_prompt.md(任务拆解)/ references/prompts/retro_prompt.md(复盘)
  • 输出 JSON(任务拆解结果)

    在输入字段基础上新增:
  • task_id:按优先级排序,从 1 开始
  • task:任务名
  • task_description:任务描述
  • task_reason:为什么有利于实现 core_goal
  • depends_on(V2.0 新增) 前置任务 ID 列表,空数组 [] 表示无依赖,可立即执行;非空时必须等所有前置任务 task_state = done 才能执行
  • task_statedone | pending | failed | blocked
  • - pending:尚未执行(含「就绪待调度」) - done:任务目标达成 - failed:任务目标未达成(含脚本报错、外部拦截、超时等一切失败情形,回写原因后立即进入 Step 5) - blocked(V2.0 新增) 前置任务 failed,本任务自动标记为 blocked,跳过执行,直接交由 Step 6 复盘处理
  • task_result:初始为 null
  • source(V2.0 新增) 脚本来源标记,registry(从注册表召回)或 new(本批次新开发),Step 5 OB 老化降级依赖此字段

  • 主任务文件 vs 分支任务文件

    | 概念 | 文件 | 职责 | |------|------|------| | 主任务文件 | tasks/master_task.json | 每次运行的上下文快照:runtime_goal_web、runtime_core_goal、触发来源、从分支任务合并的上下文 | | 分支任务文件 | tasks/{goal_web}_tasks_{batch_seq}.json | 某平台某批次的任务拆解与执行结果(历史档案) | | 分支复盘文件 | tasks/{goal_web}_retro_{batch_seq}.json | 某平台某批次的复盘输出,供下一批次 Step 1 读取 |

    合并优先级(高优先级覆盖低优先级):

    用户输入(当次触发)> core_goal.json > 分支任务历史数据(retro)
    


    执行总流程(必须严格遵循)

    日志记录规范(必须遵循)

  • 读取并遵循 references/logging.md
  • 每次完整执行必须生成主日志文件,命名:运行日志_{date}_{batch_seq}.md

  • 0) 触发解析(每次 Skill 启动的第一步)

    目标:从用户输入中解析出意图类型(Prompt 生产批次任务执行),分别进入对应流程。

    #### 意图识别(最优先判断)

    用户触发 Skill
        ↓
    Step 0.0:识别意图类型
        ├── 意图 = Prompt 生产
        │       触发词:「撰写/生成/写/创建 + Prompt + 平台名」
        │       或:「帮我写 {goal_web} 的复盘Prompt / 任务拆解Prompt」
        │       → 跳转至「Prompt 生产流程」(见下方独立章节),不进入批次任务流程
        │
        └── 意图 = 批次任务执行(默认)
                → 继续 Step 0.1:解析 goal_web 和 core_goal(原有逻辑不变)
    


    #### 解析流程(批次任务执行,原有逻辑不变)

    用户触发 Skill
        ↓
    Step 0.1:解析用户输入,尝试识别 goal_web 和 core_goal
        ├── 情况一:仅解析出 goal_web(无 core_goal)
        │       → 从 tasks/{goal_web}_retro_* 读取最新 core_goal
        │       → 分支任务提供全部上下文(retro/blacklist/carry_over 等)
        │
        ├── 情况二:同时解析出 goal_web + core_goal
        │       → runtime_core_goal = 用户输入值(覆盖 core_goal.json 和历史 retro)
        │       → 分支任务仅提供历史上下文(batch_seq/retro/blacklist/carry_over),不提供 core_goal
        │
        └── 情况三:解析不出 goal_web
                → 检查 tasks/ 目录下有几个平台的历史文件
                │   ├── 仅一个平台 → 提示用户:「检测到只有 {X} 的任务记录,是否触发 {X} 任务?」
                │   └── 多个平台 / 无历史 → 询问用户:「请问要对哪个平台执行任务?」
                → 等待用户确认后,重新走情况一或情况二
    

    #### goal_web 识别规则

    优先按以下顺序识别: 1. 用户明确提到平台名(微博、脉脉、知乎、Producthunt、Twitter 等) 2. 用户消息含 goal_web=xxxweb=xxx 等参数格式 3. core_goal.json 中的 goal_web 值(作为兜底默认值,非强制)

    #### core_goal 识别规则

    1. 用户明确说「目标是…」「core_goal=…」「goal=…」→ 使用用户值 2. 用户未提供 → 从 tasks/{goal_web}_retro_* 最新文件读取 3. 无历史 retro → 从 core_goal.json 读取

    #### core_flow 识别规则

    1. 用户明确说「流程是…」「core_flow=…」「必须按…流程」→ 使用用户值 2. 用户未提供 → 从 tasks/{goal_web}_retro_* 最新文件的 core_flow 字段读取(若有) 3. 无历史 retro 或字段为空 → 从 core_goal.json(或分支 core_goal_{goal_web}.json)读取 core_flow 字段 4. 以上来源均为空/null → runtime_core_flow = null,跳过所有 core_flow 相关流程约束,无任何影响

    #### Step 0.2:读取 hook_config.json,初始化 auto_run

    在生成 master_task.json 之前,必须读取 references/hook_config.json

    读取 hook_config.json
      → 查找 platforms[goal_web].auto_runs
      → 未找到则使用 default_auto_runs(默认 1)
      → 将 auto_runs 写入 master_task.json 的 auto_run 字段
    

    仅用户首次触发时初始化trigger_source = user_messagecron)。 自动触发下一批次时(trigger_source = auto_hook),auto_run.remaining 直接从上一个 master_task.json 继承并递减,不重新读取 hook_config(避免重置计数器)。

    (V2.1 新增)meta_optimization 初始化规则

  • 用户首次触发时:检查上一个 master_task.json 是否已有 branch_context.meta_optimization 字段
  • - 有 → 直接继承(batches_since_last_optprompt_iteration_seq 均继承,不重置) - 无(全新平台)→ 初始化为 {"prompt_iteration_seq": "000", "batches_since_last_opt": 0}
  • 跨平台切换时(goal_web 变更):meta_optimization 随 goal_web 独立维护,不互相干扰
  • #### 输出:master_task.json

    每次触发后,将解析结果写入 tasks/master_task.json

    {
      "trigger_time": "2026-03-17T18:53:00",
      "trigger_source": "user_message",
      "runtime_goal_web": "Producthunt",
      "runtime_core_goal": "获取Producthunt每日和近一周的核心AI产品,并介绍产品价值,输出报告。",
      "context_source": {
        "goal_web_from": "user_input",
        "core_goal_from": "branch_retro",
        "branch_retro_file": "tasks/Producthunt_retro_001.json"
      },
      "branch_context": {
        "last_batch_seq": "001",
        "next_batch_seq": "002",
        "next_batch_guidance": {},
        "carry_over_tasks": [],
        "blacklist": [],
        "meta_optimization": {
          "prompt_iteration_seq": "000",
          "batches_since_last_opt": 0
        }
      },
      "auto_run": {
        "total": 1,
        "remaining": 1,
        "current_run": 1
      }
    }
    

    > 字段说明 > - runtime_core_flow:(可为空/null)过程约束字段,从 core_goal.json 或上一批次 retro 读取后注入。非空时:Step 2 必须将其作为硬性过程约束注入任务拆解(每个 task 须注明 flow_step 对应哪一环节);Step 4 执行后校验每个 task 是否遵从流程(写入 flow_compliant: true/false);Step 6 复盘输出中必须新增 flow_violations 字段记录违反情况及归因。为空/null 时:跳过上述所有检查,不影响正常流程。 > - trigger_sourceuser_message / cron / auto_hook(自动连续运行时) > - context_source:记录每个字段的来源,便于调试 > - branch_context:从分支复盘文件提取的历史上下文,传递给 Step 1 > - auto_run.total:本次触发的总批次数(从 hook_config 读取) > - auto_run.remaining:剩余还需运行的批次数(每完成一个 batch 减 1) > - auto_run.current_run:当前是第几次自动运行(从 1 开始) > - branch_context.meta_optimization(V2.1 新增)元学习进化计时器,每个 goal_web 平台独立维护 > - prompt_iteration_seq:当前使用的 Prompt 版本号(000 = 原始版,001 = 第一次进化后,依此类推) > - batches_since_last_opt:上次进化后完成的批次数,每次 Step 6 末尾 +1;达到 10 时触发 Step 6.5 元学习进化流并清零


    1) 读取输入

    > Step 0 已完成触发解析并写入 tasks/master_task.json,Step 1 直接从该文件读取运行时上下文。

    1. 读取 tasks/master_task.json,获取: - runtime_goal_web → 本批次 goal_web(全局变量,注入所有后续步骤) - runtime_core_goal → 本批次 core_goal - runtime_core_flow → 本批次 core_flow(可为空/null;非空时作为硬性过程约束贯穿后续全部步骤) - branch_context → 历史上下文(next_batch_seq / next_batch_guidance / carry_over_tasks / blacklist) - 合并优先级再次确认:master_task.json 已按「用户输入 > core_goal.json > 分支历史」合并,Step 1 直接使用,不再重新读取 core_goal.json 2. 从 branch_context.next_batch_seq 确定本批次序号: - 有值 → 使用该值 - 无值(首批次)→ 强制 001,严禁继承其他平台序号 3. 读取 goal_prompt(通过注册表查找)

       读取 references/prompts/prompt_registry.md
         → 查找 type=任务拆解 AND web={goal_web} 的记录
         → 找到 → 读取该记录 path 指向的 Prompt 文件
         → 未找到 → fallback:读取 references/prompts/goal_prompt.md
       
    4. branch_contextnext_batch_guidance:提取约束条件和 blacklist,暂存备用(Step 2 和 Step 3 使用) 5. branch_context.workflow_status = goal_achieved:终止,输出完成报告,不再继续


    2) 任务拆解(基于 goal_prompt)

    1. 若上游 JSON 含 carry_over_tasks:优先将结转任务纳入本批次拆解(保留原 task_id,补充调整策略) 2. 若上游 JSON 含 next_batch_guidance:拆解前先读取其中 task_breakdown_advicedevelopment_constraints,将其作为硬性约束应用于本批次任务设计 3. 【core_flow 约束注入(非空时必须执行)】: - 若 runtime_core_flow 非空:将 core_flow 描述的流程步骤作为硬性过程约束注入任务拆解: - 每个 task 必须对应 core_flow 中的某个流程环节,在 task 字段中新增 "flow_step": "对应的流程环节名称" - 拆解出的任务顺序、依赖关系必须与 core_flow 描述的流程顺序严格一致,不得跳步或乱序 - 若某个 core_flow 流程环节在本批次无法执行,需显式拆解为一个 task_state: "blocked" 的占位任务,写明原因 - 若 runtime_core_flow 为空/null:跳过此步骤,按正常 core_goal 拆解逻辑执行 4. 使用上一步查找到的 goal_prompt(专属版或 fallback 通用版)对 core_goal 进行拆解,输出新的任务 JSON 5. 保持:goal_web / core_goal / core_flow / date / batch_seq 与上游一致 6. 任务描述中涉及平台操作时,用实际 goal_web 值替换 {goal_web} 7. (V2.0 新增)DAG 依赖图谱:为每个任务输出 depends_on 字段: - 无前置依赖的任务:"depends_on": [] - 有前置依赖的任务:"depends_on": [task_id_1, task_id_2] - 示例:数据采集任务(task_id=1)无依赖;报告生成任务(task_id=2)依赖采集任务 → "depends_on": [1] - 拆解时优先设计「可并发执行的任务对」,相互无依赖的任务 depends_on 均为 [] 7. 任务 JSON 保存路径tasks/{goal_web}_tasks_{batch_seq}.json(例:tasks/微博_tasks_002.json


    3) 任务执行引擎

    1. 从任务 JSON 中按顺序找到第一个 task_state = pending 的任务 2. 从 tasktask_description 中提炼搜索 query(query 中用 goal_web 实际值) 3. 在脚本注册表中检索 script_description(仅限 score >= 0.8) - 平台过滤(首要条件):只检索 target_web == goal_web 的记录,其他平台的脚本一律忽略 - 安全校验(黑名单过滤):若上游 JSON 的 next_batch_guidance.blacklist 不为空,必须排除其中的脚本路径,即使 score >= 0.8 也不得使用 - 检索结果为空或 score < 0.8 → 进入 OB 召回 4. OB 召回: - 进入 OB 召回流程,召回文档时优先检索与 {goal_web} 平台相关的文档 - 阅读文档并进行置信度评分(0-1) - 置信度 >= 0.8:可作为开发参考 - 否则:进入开发流程 5. 若无任何参考文档:直接进入开发流程


    3.2) 沙盒预检(静态检查 + 局部自愈)【V2.0 新增,在 3.1 之后、Step 4 之前执行】

    > 目标:拦截低级代码错误,避免浪费真实执行环境和复盘周期。

    触发条件:Step 3.1 新开发的脚本写入路径后,进入本步骤。从注册表直接召回的脚本(source = registry)跳过本步骤(已验证过)。

    执行流程

    Step 3.1 新脚本写入
        ↓
    Step 3.2:静态语法检查
        ├── Python 脚本 → exec: python3 -m py_compile 
        │   返回码 = 0 → 通过,写入 task_script,进入 Step 4
        │   返回码 ≠ 0 → 截获 stderr,进入局部自愈循环
        │
        └── Shell 脚本 → exec: bash -n 
            返回码 = 0 → 通过
            返回码 ≠ 0 → 进入局部自愈循环
    

    局部自愈循环(最多重试 3 次,超限则标记任务 failed): 1. 将原脚本内容 + stderr 报错信息 提交给 LLM(当前 AI 上下文)进行修复 2. 重新写入脚本文件 3. 再次执行静态检查 4. 通过 → 写入 task_script,进入 Step 4 5. 第 3 次仍失败 → 将任务 task_state = failedtask_result 写入「沙盒预检失败,3 次自愈均未通过,报错:{stderr}」,进入 Step 5 评分

    放行条件:只有通过静态检查的脚本路径,才允许写入任务 JSON 的 task_script 字段,进入 Step 4 真实执行。


    3.1) 开发流程(技术方案 → 脚本)

    1. 进入开发前必须读取references/technical-decision-reference.md 2. 若任务涉及"发布/外部平台发布",额外必须读取references/external-publishing-design-reference.md 3. 若上游含 next_batch_guidance.development_constraints必须将其作为约束条件纳入技术方案 4. 基于任务与参考内容,撰写技术方案: - 命名:技术方案_v{版本号}_{date}.md - 包含:业务目标 / 技术目标 / 约束(含 {goal_web} 平台特性)/ 三方案(A快 / B平衡 / C理想)/ 决策与取舍 - 平台约束{goal_web} 平台操作必须通过 attach 谷歌浏览器实例(Browser Relay),脚本中使用 get_relay_ws_url() 获取连接 5. 按技术方案进行开发,生成可执行脚本(Python/Bash 等) 6. 自检:确认脚本逻辑与技术方案一致 7. 将脚本写入脚本注册表,必须包含以下全部字段namepathscript_descriptionscorescore_reasontarget_web(填写当前 goal_web 实际值,不得留空) 8. 更新任务 JSON,在对应任务下新增字段: - task_script_seq:脚本序号(数组) - task_script:脚本路径(数组,与 seq 一一对应)


    4) 记录执行结果(V2.0:并发调度 + 双轨日志)

    #### 4.1 并发调度(DAG 执行器)

    扫描任务 JSON,建立就绪队列:
      就绪条件:task_state = "pending" AND(depends_on = [] OR 所有前置任务 task_state = "done")
        ↓
    将就绪队列中的任务并发执行(同一批扫描周期内同时拉起)
        ↓
    某任务执行完毕(done/failed)→ 立即回写 task_state 和 task_result
        ↓
    重新扫描就绪队列(前置任务 done 后,其后继任务解锁为就绪态)
        ↓
    重复,直到无 pending 任务
    

    blocked 标记规则:若某任务的前置任务 task_state = failed,则该任务 task_state → blockedtask_result = "前置任务 {task_id} 失败,本任务跳过执行",不进入执行队列,直接进入 Step 5 评分。

    #### 4.2 执行与回写

    1. 读取任务 JSON,按并发调度逻辑执行 2. 无论执行结果如何,立即将结果回写至 tasks/{goal_web}_tasks_{batch_seq}.jsontask_result不得留空、不得等待外部条件 2.5. 【core_flow 合规校验(非空时必须执行)】:若 runtime_core_flow 非空,每个 task 执行完毕后,额外回写字段: - flow_compliant: true:该任务的执行路径符合 core_flow 中对应流程环节的要求 - flow_compliant: false:执行路径偏离了 core_flow 约束(需在 task_result 中写明具体偏离点) - flow_compliant: nullruntime_core_flow 为空,跳过校验 3. 根据执行结果更新 task_state非此即彼,无中间态): - 任务目标达成 → done - 任务目标未达成(无论何种原因)→ failedtask_result 中写明失败现象与原因 - 前置任务 failed → blocked

    #### 4.3 双轨日志生成(V2.0 新增)

    每次 batch 所有任务执行完毕后,必须同时生成两份产物

    轨道 A:完整 Markdown 日志(人类审计/归档用,原有逻辑不变)

  • 路径:run/{date}/{batch_seq}/运行日志_{date}_{batch_seq}.md
  • 轨道 B:结构化压缩日志(Step 6 复盘专用,V2.0 新增)

  • 路径:run/{date}/{batch_seq}/compressed_log.json
  • 内容结构:
  • {
      "batch_seq": "008",
      "goal_web": "Producthunt",
      "date": "2026-03-21",
      "task_summary": [
        {
          "task_id": 1,
          "task": "任务名称",
          "task_state": "done",
          "source": "registry",
          "script_score": 0.95,
          "action_sequence": ["读取配置", "调用 API", "生成报告", "推送飞书"],
          "error_trace": null
        },
        {
          "task_id": 2,
          "task": "任务名称",
          "task_state": "failed",
          "source": "new",
          "script_score": 0.4,
          "action_sequence": ["读取配置", "调用 API"],
          "error_trace": "TypeError: NoneType has no attribute 'get' at line 42"
        }
      ],
      "batch_outcome": "partial_success",
      "top_error": "TypeError: NoneType has no attribute 'get'"
    }
    

  • 提取规则
  • - action_sequence:从完整日志中提取关键动作序列(3-8 个动作词,如「打开网页 → 定位输入框 → 点击按钮」) - error_trace:只保留最底层 Exception 类型 + 报错所在行,过滤掉环境变量打印等无关输出 - batch_outcomeall_done(全部成功)/ partial_success(部分成功)/ all_failed

    > 流程铁律 > - 失败即回写:脚本执行产生任何结果(含报错、超时、页面拦截),立即回写 task_result = failed不降级、不重试、不等待 > - 单任务 failed 不阻断流程:task_state = failed 后直接进入 Step 5 评分 > - 失败原因交由 Step 6 复盘处理,由下一批次的 carry_over_tasks 承接重试策略 > - compressed_log.json 必须在所有 task 回写完成后才生成,不得提前

    #### on_batch_complete 钩子(Step 4 所有 task 回写完成后触发)

    所有 task task_state 均已回写(done/failed/blocked)
        ↓
    【不再因 failed 停止】失败状态已在 Step 4 执行时回写至 task_result(含失败原因+操作路径),
    Step 6 复盘将统一读取所有任务状态(包含 failed)进行归因分析,生成 carry_over_tasks 和 blacklist。
        ↓
    直接读取 master_task.json 的 auto_run.remaining:
        remaining <= 0?
            → 终止,向用户输出完成摘要(含本批次 failed 任务列表)
        remaining > 0?
            → remaining -= 1,current_run += 1,写回 master_task.json
            → 自动执行 Step 5(评分)→ Step 6(复盘),生成 retro 文件
            → 更新 master_task.json:
                  trigger_source = "auto_hook"
                  batch_seq 递增(如 007 → 008)
            → 自动跳回 Step 1,开始下一个 batch
            → 不等待用户确认
    

    > 设计原则:失败是数据,不是中断信号。任何 task 失败只会在 task_result 中留下记录(失败原因、操作路径、错误信息),流程继续向前推进至 Step 6 复盘。复盘负责归因、生成修正指导,下一批次基于此重试。严禁因单个 task 失败而停止整个工作流。

    静默运行原则:自动连续 batch 期间,每完成一个 batch 发送一条简短通知(含已完成/失败任务数量),不等待用户回复,直接开始下一个 batch。

    强制停止:用户任意时刻说「停止」→ 将 master_task.jsonauto_run.remaining 设为 0,当前 batch 完成后不再继续。


    5) 结果评分 + 核心目标校验(V2.0:新增 OB 老化降级)

    1. 读取任务 JSON,遍历所有任务: - task_state = blocked:跳过,不参与评分 - task_state = failed不跳过,直接记录评分结果script_score = 0score_reason 写入失败原因摘要(从 task_result 提取),交由 Step 6 复盘处理;不因 failed 中止 Step 5 流程 - task_state = donetask_result 非空:正常评分 2. 对 done 任务打分(script_score 0~1,0.8 及格)并记录 score_reason - 绝对红线task_resultError/Exception/Traceback → score 上限 0.5 - 绝对红线task_result 为空或关键字段缺失 → score 上限 0.7 3. 注册表回写机制:若 script_score < 0.8,必须同步将该评分回写至脚本注册表,强制覆盖或降低全局 score,防止该失败脚本下一轮被误选;回写时同样必须确保 target_web 字段已填写(填写当前 goal_web 实际值) 4. (V2.0 新增)OB 脚本老化降级机制: - 触发条件:该任务的 source = registry(从注册表召回)且 script_score < 0.8 - 触发后执行以下两步: 1. 降低权重:在 script_registry.json 中找到对应记录,将 score 强制下调(基准:旧 score × 0.7,最低降至 0.3),score_reason 追加 「[{date}] 召回执行失败,权重自动降级,需人工审查」 2. 追加老化标签:在该记录中新增 "tags": ["needs_update", "deprecated_by_{date}"] 字段(若已有 tags 则追加,不覆盖) - 效果:下一轮 Step 3 检索时,该脚本因 score < 0.8 而被过滤,强制进入重新开发(Step 3.1)流程 - 不触发条件:source = new(本批次新开发的脚本失败,只做常规注册表 score 回写,不走老化流程) 5. 核心目标校验: - 评估已完成任务集合是否足以达成 core_goal - 若不足:列出欠缺任务清单,追加回任务列表(task_state = pendingtask_result = null),回到 Step 2

    > 示例见:references/step5_example.md


    6) 全局复盘与下一批次输入生成

    > 必须通过 Prompt 注册表查找复盘 Prompt,禁止自行简化或替换。

    1. 读取 retro_prompt(通过注册表查找)

       读取 references/prompts/prompt_registry.md
         → 查找 type=复盘 AND web={goal_web} 的记录
         → 找到 → 读取该记录 path 指向的 Prompt 文件
         → 未找到 → fallback:读取 references/prompts/retro_prompt.md
       
    2. 填充三个输入变量: - {current_task_json}:当前批次最终任务 JSON(含 task_state / task_result / script_score / score_reason) - {current_run_log}:当前批次完整运行日志(读取 run/{date}/{batch_seq}/运行日志_*.md) - {past_3_runs_logs}(V2.0 变更) 不再读取原生 .md 日志,改读过去 3 个批次的 compressed_log.json(路径:run/*/*/compressed_log.json,按 batch_seq 倒序取最近 3 个);若 compressed_log.json 不存在则 fallback 到原生 .md 日志 3. 执行复盘 Prompt(已通过注册表加载),按 Prompt 模板规则分析: - 现状评估:提取失败任务,定位根本原因 - 历史模式识别:检查死循环,若命中则强制要求下一轮改变技术路线 - 构建下一批次输入:步进 batch_seq,继承/细化 core_goal,生成 blacklistnext_batch_guidance,打包结转任务 4. 输出严格合法的 JSON,字段必须包含: - batch_seq / goal_web / core_goal / workflow_status - core_flow必须透传,与上游保持一致(null 时写 null,非空时原样透传,不得丢失) - retrospective_contextfailed_tasks_summary / historical_patterns / lessons_learned) - next_batch_guidancetask_breakdown_advice / development_constraints / avoid_pitfalls / blacklist) - carry_over_tasks - flow_violations【core_flow 非空时必须输出,为空/null 时省略】 记录本批次中 flow_compliant = false 的任务列表,格式:
         "flow_violations": [
           {
             "task_id": 2,
             "task": "任务名",
             "expected_flow_step": "core_flow 中要求的流程环节",
             "actual_behavior": "实际执行时偏离的具体描述",
             "root_cause": "偏离原因分析",
             "fix_suggestion": "下一批次如何修正"
           }
         ]
         
    若本批次无违反(所有 flow_compliant = true):写 "flow_violations": [] - user_feedback(详见下方规范,若本批次有用户反馈则必须写入,无则省略该字段) - 禁止输出任何 JSON 以外的文字或 Markdown

    #### user_feedback 字段规范

    触发条件:用户说「把以下反馈写入 {goal_web}」/ 「加入反馈」/ 「写入用户反馈」等。

    写入目标:当前批次的 retro 文件(tasks/{goal_web}_retro_{batch_seq}.json),只写当期,不累积

    字段格式

    "user_feedback": {
      "priority": "HIGH",
      "date": "YYYY-MM-DD",
      "feedback": [
        "用户反馈内容1",
        "用户反馈内容2"
      ]
    }
    

    字段说明

  • priority:固定为 HIGH,无论内容如何,用户反馈永远最高优先级
  • date:写入日期(当天)
  • feedback:用户反馈条目数组,逐条写入,不合并、不改写原意
  • 下一批次读取机制: Step 1 读取 branch_context 时,若上一批次 retro 文件含 user_feedback 字段,必须: 1. 提取 user_feedback.feedback 数组 2. 在 Step 2 任务拆解时,将每一条 feedback 转化为显式约束或 task,优先级高于 next_batch_guidance 3. 在 master_task.json 的 branch_context 中透传 user_feedback,直到该批次任务全部完成为止 5. 复盘 JSON 保存路径: - 主路径(Step 1 读取上游用):tasks/{goal_web}_retro_{batch_seq}.json(例:tasks/微博_retro_001.json) - 归档路径(日志用):run/{date}/{batch_seq}/retro_output.json(同时写入,保持日志完整性) 6. (V2.1 新增)元学习计数器更新:retro JSON 写入完成后,立即更新 tasks/master_task.jsonbranch_context.meta_optimization: - batches_since_last_opt += 1 - 若 batches_since_last_opt < 10:继续正常流程,进入 Step 7 → 下一 Batch - 若 batches_since_last_opt == 10冻结引擎,不进入下一 Batch,切入 Step 6.5 元学习进化流 7. 将输出 JSON 直接作为下一批次 Step 1 读取输入 的上游 JSON,自动触发下一轮工作流


    6.5) 元学习进化流(Meta-Learning Evolution)【V2.1 新增,triggered when batches_since_last_opt == 10】

    > 目标:在完成 10 个批次后,自动审视失败模式,重写底层拆解/复盘 Prompt,实现系统方法论的版本迭代。 > 事件驱动:由 Step 6 末尾的计数器检查触发,非 Cron,无竞态冲突风险。

    #### 6.5.1 提取诊断上下文(防 Token 膨胀)

    向上追溯,读取过去 5 个批次的 retro 文件(tasks/{goal_web}_retro_*.json,取最近 5 个):

    只提取以下两个字段:

  • retrospective_context.historical_patterns
  • retrospective_context.lessons_learned
  • 将提取结果合并,生成一段《平台演进与系统瓶颈诊断报告》,格式:

    【{goal_web} 平台近5批次诊断报告】
    历史死循环模式:
    
  • [来自各批次 historical_patterns 的去重合并]
  • 核心教训:

  • [来自各批次 lessons_learned 的去重合并]
  • 高频失败根因:

  • [出现 ≥ 2 次的失败类型,按频率排序]
  • #### 6.5.2 确定当前 Prompt 版本

    tasks/master_task.json 读取 branch_context.meta_optimization.prompt_iteration_seq(如 000)。

    references/prompts/prompt_registry.md 查找当前 goal_web 平台使用的 Prompt 文件路径:

  • type=任务拆解 → 当前 goal_prompt 路径
  • type=复盘 → 当前 retro_prompt 路径
  • 读取这两个文件的完整内容,作为「待升级的当前 Prompt」。

    #### 6.5.3 调用 meta_prompt 重写 Prompt(认知升级)

    读取 references/prompts/meta_prompt.md,以其为角色框架,组装以下输入:

    输入一:《平台演进与系统瓶颈诊断报告》(6.5.1 生成)
    输入二:当前 goal_prompt 全文
    输入三:当前 retro_prompt 全文
    输入四:references/prompts/prompt_authoring_guide.md 中的字段规范(Schema 约束)

    系统指令: 你是一个高级 Prompt 架构师,专为 {goal_web} 平台服务。 请审视这 5 轮的失败教训和死循环模式,找出当前拆解 Prompt 和复盘 Prompt 的思维盲区。 重写这两个 Prompt,强制加入针对上述失败模式的约束条款,提升对该平台规则变动和反爬机制的适应力。 输出格式必须完全遵循 prompt_authoring_guide.md 的字段规范,不得引入新字段或删除必填字段。

    生成两份新 Prompt 全文:new_goal_promptnew_retro_prompt

    #### 6.5.4 版本控制:另存为新版本(禁止覆盖)

    计算新版本号:new_seq = prompt_iteration_seq + 1(格式三位数字,如 001

    写入两个新文件(不覆盖旧文件):

  • references/prompts/goal_prompt_{goal_web}_v{new_seq}.md ← 新 goal_prompt 内容
  • references/prompts/retro_prompt_{goal_web}_v{new_seq}.md ← 新 retro_prompt 内容
  • 更新注册表 references/prompts/prompt_registry.md

  • 找到 type=任务拆解 AND web={goal_web} 的行 → 将 path 更新为新文件路径,在描述末尾追加 [v{new_seq} auto-evolved {date}]
  • 找到 type=复盘 AND web={goal_web} 的行 → 同上
  • 若注册表中无该平台记录(首次为该平台生成专属 Prompt)→ 追加新行。

    #### 6.5.5 重置计数器 + 进化完成通知

    更新 tasks/master_task.json

    "meta_optimization": {
      "prompt_iteration_seq": "{new_seq}",
      "batches_since_last_opt": 0
    }
    

    向用户发送一条进化完成通知(不中断后续流程):

    🧬 {goal_web} Prompt 进化完成!
    版本:v{old_seq} → v{new_seq}
    核心改进:[用1-2句话总结本次重写的主要变更点]
    旧版本保留在 references/prompts/ 可随时回滚
    

    进化完成后,自动进入 Step 7(成功经验入库),然后继续正常的下一 Batch 流程。

    #### 6.5.6 回滚机制

    若下一批次执行后发现 Prompt 进化导致任务 JSON 解析严重失败(连续 2 个批次全部 failed),在 retro 的 next_batch_guidance.development_constraints 中加入:

    Prompt 回滚指令:将 prompt_registry.md 中 {goal_web} 的 path 指针从 v{new_seq} 改回 v{old_seq},
    并将 master_task.json 的 prompt_iteration_seq 回滚为 {old_seq}。
    


    7) 成功经验入库(Knowledge Ingestion)【V2.0 新增,在 Step 6 之后执行】

    > 目标:将高分成功路径固化为标准知识写入脚本注册表,充实知识飞轮,避免未来重复开发同类脚本。

    触发条件:Step 6 复盘完成后,自动进入 Step 7(不需要用户触发)。

    #### 7.1 筛选候选任务

    从当前批次任务 JSON 中筛出满足以下全部条件的任务:

  • task_state = done
  • script_score >= 0.8
  • source = new(本批次全新开发,非从注册表召回)
  • 若无满足条件的任务 → Step 7 静默跳过,不写任何文件。

    #### 7.2 长期价值评估

    对每个候选任务,用以下微型 Prompt 判断其通用价值:

    该任务路径是否满足以下条件(Yes/No/Partial):
    1. 解法不依赖特定日期/特定数据,未来同类任务可复用?
    2. 核心逻辑对同平台({goal_web})其他批次有参考价值?
    3. 与注册表已有脚本无高度重叠(相似度 < 80%)?

    全部 Yes → 入库 任一 No → 跳过(记录原因)

    #### 7.3 写入脚本注册表

    满足条件的脚本,更新 references/script_registry.json 中对应记录,补充以下字段:

  • ingested_at:入库日期(YYYY-MM-DD
  • ingestion_reason:入库理由(1句话,为什么认为可复用)
  • tags:追加 ["verified", "batch_{batch_seq}"]
  • > 约束:Step 7 不产生任何新文件,只更新 script_registry.json 已有记录或追加新记录(若该脚本尚未注册)。注册表是唯一写入目标。

    #### 7.4 Step 7 完成日志

    在当前批次的 compressed_log.json 中追加字段:

    "step7_ingestion": {
      "candidates": 2,
      "ingested": 1,
      "skipped": 1,
      "skip_reason": "与已有脚本 auto_ph.py 重叠度 > 80%"
    }
    


    Prompt 生产流程(独立章节,不干扰批次任务流程)

    > 触发条件:Step 0.0 识别到意图 = Prompt 生产

    P1)确认生产参数

    从用户输入提取:

  • prompt_type任务拆解复盘
  • goal_web:目标平台(如 同花顺东方财富
  • 若任一字段缺失,询问用户后继续,不擅自猜测。


    P2)读取上下文(欠缺2修复)

    自动收集生产所需的上下文,不需要用户手动提供

    读取 references/prompts/prompt_authoring_guide.md
      → 提取对应 prompt_type 的输入字段规范 + 输出字段规范(作为硬性 Schema)

    读取 references/core_goal.json → 提取 goal_web 对应的 core_goal(作为业务背景)

    读取最近 3 个 tasks/{goal_web}_retro_*.json → 提取 lessons_learned / historical_patterns / 平台特有约束 → 作为「平台专属 Prompt 约束」注入 Lyra 的 USER INPUT


    P3)调用 meta_prompt 生产 Prompt 正文

    references/prompts/meta_prompt.md 作为 Lyra 角色,组装以下三段输入:

    1. User Requirement and Goal:
       「生产一个用于 {goal_web} 平台的 {prompt_type} Prompt。
        平台特有约束:[来自 P2 步骤提取的 retro 约束]
        核心目标:[来自 core_goal]」

    2. Input JSON Schema Specification: [来自 prompt_authoring_guide.md 的输入字段规范]

    3. Output JSON Schema Specification: [来自 prompt_authoring_guide.md 的输出字段规范]

    以 DETAIL MODE 执行 Lyra 4-D 方法论(DECONSTRUCT → DIAGNOSE → DEVELOP → DELIVER),输出最终 Prompt 正文。


    P4)字段校验

    对照 prompt_authoring_guide.md 校验生产出的 Prompt:

  • 输入字段名 / 类型 / 默认值是否与规范一致?
  • 输出 JSON 字段名 / 层级是否与规范一致?
  • 若有不一致 → 自动修正后继续,不需要用户介入

  • P5)命名 + 写入文件

    命名规则:

  • 任务拆解:goal_prompt_{goal_web}.md
  • 复盘:retro_prompt_{goal_web}.md
  • 写入路径:references/prompts/{文件名}


    P6)自动写入 prompt_registry.md(欠缺3修复)

    prompt_registry.md 的注册表中追加一行:

    | {文件名(不含.md)} | {prompt_type} | {goal_web} | {一句话描述,含平台专属约束关键词} | references/prompts/{文件名} | {通用版名称} |
    


    P7)完成通知

    向用户输出:

    ✅ Prompt 生产完成
    文件:references/prompts/{文件名}
    注册:prompt_registry.md 已追加记录
    下次触发 {goal_web} 批次时,Step 1/Step 6 将自动调用此 Prompt
    


    > 隔离原则:Prompt 生产流程完全独立,不写入 master_task.json,不影响任何批次任务的 batch_seq / retro / task 文件。


    输出检查清单(V2.0 已更新)

  • [ ] Step 0tasks/master_task.json 是否已生成,含 runtime_goal_web / runtime_core_goal / runtime_core_flow / trigger_source / branch_context
  • [ ] core_flow 读取:是否按优先级(用户输入 > retro > core_goal.json)读取 core_flow,为空/null 时写 null 而非省略字段
  • [ ] Step 0goal_web 来源是否记录在 context_source.goal_web_from(user_input / core_goal_json / prompted)
  • [ ] Step 0:若情况三(解析不出 web),是否已向用户询问并等待确认,而非擅自猜测
  • [ ] Step 0references/hook_config.json 是否已读取,master_task.jsonauto_run 字段是否已初始化(total / remaining / current_run
  • [ ] Step 1:是否先读取 references/prompts/prompt_registry.md,按 type=任务拆解 + web={goal_web} 查找,未找到才 fallback 到通用 goal_prompt.md
  • [ ] Step 1(core_flow)runtime_core_flow 是否已从 master_task.json 读取并准备注入 Step 2
  • [ ] Step 6:是否先读取 references/prompts/prompt_registry.md,按 type=复盘 + web={goal_web} 查找,未找到才 fallback 到通用 retro_prompt.md
  • [ ] Prompt 注册表:新增平台专属 Prompt 时,是否已同步更新 references/prompts/prompt_registry.md
  • [ ] Prompt 生产流程:Step 0.0 是否优先识别「Prompt 生产」意图,识别到后是否跳转至 Prompt 生产流程而非批次任务流程
  • [ ] Prompt 生产 P2:是否自动读取 authoring_guide(Schema)+ core_goal.json(业务背景)+ 最近3个 retro(平台约束),无需用户手动提供
  • [ ] Prompt 生产 P4:是否对照 authoring_guide 校验字段,发现不一致时自动修正
  • [ ] Prompt 生产 P6:是否自动追加 prompt_registry.md 记录(不依赖用户手动操作)
  • [ ] 隔离性:Prompt 生产流程是否未修改 master_task.json / batch_seq / retro 等批次任务文件
  • [ ] 全自动化约束:全流程是否未向用户要求任何人工介入(attach Tab / 点击 / 确认 / 提供数据)?若任务因环境缺失失败,是否已回写 task_state: "failed" + 失败原因,而非停下来等待?
  • [ ] Step 0:若 trigger_source = auto_hook,是否从上一个 master_task 继承 remaining 而非重新读取 hook_config
  • [ ] Step 4:所有 task 完成后,是否触发 on_batch_complete 钩子,检查 remaining 并决定是否继续
  • [ ] Step 4:有 task failed 时,是否不中断流程,直接继续判断 remaining 推进至 Step 5→6(失败状态已回写 task_result,复盘兜底)
  • [ ] Step 4:自动连续运行时,是否在每个 batch 完成后发送简短进度通知(含失败任务数),但不等待用户回复
  • [ ] 任务 JSON 是否包含全部字段(含 goal_web / core_flow / task_script_seq / task_script
  • [ ] goal_web / core_goal / core_flow / date / batch_seq 是否与 core_goal.json 和上游保持一致
  • [ ] Step 2(core_flow 非空):每个 task 是否含 flow_step 字段,且任务顺序是否与 core_flow 流程步骤严格一致
  • [ ] Step 2(core_flow 非空):无法执行的流程环节是否以 task_state: blocked 的占位任务显式表示
  • [ ] Step 4(core_flow 非空):每个 task 执行完毕后是否回写了 flow_compliant 字段(true/false/null)
  • [ ] Step 6(core_flow 非空):retro JSON 是否含 flow_violations 字段,列出所有 flow_compliant=false 的任务及归因
  • [ ] Step 6(core_flow 透传):retro JSON 是否含 core_flow 字段,值与上游一致(null→null,非空→原样)
  • [ ] 任务 JSON 是否保存至 tasks/{goal_web}_tasks_{batch_seq}.json
  • [ ] task_state 是否已明确设置(done / failed),不存在 pending 状态的已执行任务
  • [ ] task_result 是否已写回(非 null)
  • [ ] 若产生技术方案:是否按命名规范保存为 Markdown,且包含 {goal_web} 平台约束
  • [ ] 脚本注册表是否已写入本批次新开发脚本的 score、script_description 与 target_web(必填,值为当前 goal_web
  • [ ] 若 script_score < 0.8:注册表中对应脚本 score 是否已降级回写,且 target_web 字段是否已填写
  • [ ] Step 6 复盘 JSON 的 next_batch_guidance 是否含 blacklist 字段(结构化路径列表)
  • [ ] 运行日志是否已生成并保存
  • [ ] Step 6 复盘 JSON 是否已写入以下两个路径:
  • - tasks/{goal_web}_retro_{batch_seq}.json(Step 1 上游读取用) - run/{date}/{batch_seq}/retro_output.json(日志归档用)
  • [ ] Step 6 复盘 JSON 中是否含 goal_web 字段,确保下一批次可正确继承
  • [ ] 若本批次有用户反馈:retro JSON 中是否含 user_feedback 字段,priority 是否为 HIGHfeedback 数组是否完整写入
  • [ ] Step 1 读取上游 retro 时,若含 user_feedback:是否已将每条 feedback 转化为本批次任务约束(优先级高于 next_batch_guidance
  • [ ] Step 1 读取上游时,是否严格按 tasks/{goal_web}_retro_* 过滤,未跨平台读取
  • [ ] 若该平台在 tasks/ 下无历史文件:batch_seq 是否从 001 开始,且任务 JSON 已写入 tasks/{goal_web}_tasks_001.json
  • V2.0 新增检查项

  • [ ] Step 2(DAG):任务 JSON 中每个任务是否均有 depends_on 字段(空数组或前置 ID 列表),无缺漏
  • [ ] Step 2(DAG):是否设计了至少一对可并发执行的无依赖任务(depends_on: []),而非全链式串行
  • [ ] Step 3.2(沙盒预检):新开发脚本是否执行了 python3 -m py_compilebash -n 静态检查
  • [ ] Step 3.2(自愈):若检查失败,是否进入局部自愈循环(最多 3 次重试),超限后是否标记 failed 而非无限重试
  • [ ] Step 3.2(放行):只有通过静态检查的脚本路径,才写入 task_script 字段
  • [ ] Step 4(并发):执行引擎是否按 DAG 就绪态调度,而非按数组顺序串行执行
  • [ ] Step 4(blocked):前置任务 failed 时,后继任务是否标记为 blocked(而非 pending 或直接 failed)
  • [ ] Step 4(双轨日志):是否在所有 task 回写完成后,同时生成 运行日志_*.md(轨道A)和 compressed_log.json(轨道B)
  • [ ] Step 4(compressed_log)compressed_log.jsonaction_sequence 是否为关键动作序列(非原始 stdout),error_trace 是否只含最底层异常行
  • [ ] Step 5(source 字段):任务 JSON 中是否记录了 source 字段(registrynew
  • [ ] Step 5(OB 老化):若 source=registryscript_score < 0.8,是否执行了两步降级:①注册表 score 下调至旧值×0.7 ②追加 needs_update / deprecated_by_{date} 标签
  • [ ] Step 6(压缩日志){past_3_runs_logs} 变量是否读取的是 compressed_log.json 而非原生 .md(若无压缩日志则已 fallback)
  • [ ] Step 7(筛选):是否扫描了本批次 source=new + score>=0.8 + done 的任务
  • [ ] Step 7(评估):对候选任务是否完成了通用价值三问评估(非特例性 / 平台可复用 / 无重叠)
  • [ ] Step 7(写入):满足条件的脚本是否在 script_registry.json 中追加了 ingested_at / ingestion_reason / tags
  • [ ] Step 7(日志)compressed_log.json 中是否含 step7_ingestion 字段,记录候选数 / 入库数 / 跳过原因
  • V2.1 新增检查项(元学习进化)

  • [ ] Step 0.2(初始化):master_task.json 中是否含 branch_context.meta_optimization 字段(prompt_iteration_seq + batches_since_last_opt
  • [ ] Step 0.2(继承):续批次时 meta_optimization 是否从上一个 master_task.json 继承,而非重置为 0
  • [ ] Step 0.2(跨平台隔离):goal_web 切换时,meta_optimization 是否各自独立,不互相污染
  • [ ] Step 6(计数):每次 Step 6 retro 写入完成后,是否执行 batches_since_last_opt += 1 并写回 master_task.json
  • [ ] Step 6(触发判断):计数器更新后,是否判断 batches_since_last_opt == 10,满足则切入 Step 6.5,不满足则继续正常流程
  • [ ] Step 6.5(上下文提纯):是否只读取近 5 批次 retro 的 historical_patterns + lessons_learned 两个字段,而非全量 retro 内容
  • [ ] Step 6.5(meta_prompt):是否读取了 references/prompts/meta_prompt.md + references/prompts/prompt_authoring_guide.md 作为生成约束
  • [ ] Step 6.5(版本控制):新 Prompt 是否以 goal_prompt_{goal_web}_v{seq}.md / retro_prompt_{goal_web}_v{seq}.md 命名另存,而非覆盖旧文件
  • [ ] Step 6.5(注册表更新)prompt_registry.md 中对应平台的 path 指针是否已切换到新版本文件
  • [ ] Step 6.5(计数器重置):进化完成后,prompt_iteration_seq 是否进位,batches_since_last_opt 是否清零
  • [ ] Step 6.5(进化通知):是否向用户发送了包含版本号和核心改进点的进化完成通知
  • [ ] Step 6.5(回滚条款):若新版本导致连续 2 批次全失败,retro 的 development_constraints 中是否写入了回滚指令