Virtual Embryo Challenge更新于 10-03 20:13(北京时间) / 每 5 分钟更新

← 工作原理 · 原文件 notes/reports/dev/2026-10-03_per_metric_feedback.md(Markdown 源文件已渲染;链接到其他文档的会跳转,指向源码的只显示路径)

分项反馈与评分规则简报(2026-10-02 用户决定:让 agent 优化官方分数真正奖励的东西)

1. 改了什么

  • 评分服务(agent/scoring/service.py):worker 多发 metric_skills;_clean 在原有字段(board_score、groups、metrics、runtime_s、quota_left)之外新增 metric_skills 和 score_parts。score_parts 由 agent/scoring/parts.py 计算:每项排名指标的 raw、skill、points(计入榜分,四项之和 = 榜分)、floor_points、max_points、group、weight、sense。只有聚合数字,没有任何逐基因或逐细胞的真值。T2 / T3 同样分解(多指标分组按 skill 份额分摊组分,T2 的 structure gate 已计入);未知分组布局时不加该字段。
  • 节点记录:execute_and_score 带上 metric_skills / score_parts;Controller.evaluate 的每尺子摘要(proxy_json)多存 metrics、score_parts。components(尺子 → 分数)含义不变。
  • 角色看到的地方:变化量表(Analyst、Researcher 的父节点、Engineer 的父节点、Reviewer、OpenEvolve 公共材料)多一张“排名指标分解”表;Researcher / Reviewer / OpenEvolve 父节点块多一行四项摘要;Engineer 的 vec-score 直接返回 score_parts;tune 每轮反馈按尺子给四项的种子均值;OpenEvolve native 每轮反馈多 score_parts,artifacts 多 ranking_metrics。
  • 评分规则简报 agent/prompts/scoring_rules_t1.md:默认附在 T1 的 Engineer / Researcher / Analyst 任务书后(scoring_rules: 可改路径或设 null 关闭;T2 / T3 简报见第 4 节)。scripts/check_knowledge.py 也扫描它,无需新增白名单。
  • 方向库:新增 composition_program(优先方向 1,distribution_structure 类第一位);local_ot 改写为“局部谱系 OT + 受约束的程序外推,允许基因开启”(优先方向 2,fate_branching 类第一位)。原有 10 个 id 不变;文件仍按 search_seed 0 的覆盖顺序书写。

2. 对评测规格与锁的影响(有意为之)

  • 评测规格(scoring_fingerprint)不变:评分器快照(modeling/src/common、veckit)、视图、真值、anchors、执行参数都没动;service.py 和 parts.py 不在快照里。所以分数含义不变,续跑不会因此重评。
  • 新 run 的锁会变:code_hashes / search_hashes(agent 代码、新增简报、改过的 search_spec / researcher_spec / analyst_spec、方向库)、prompt_hashes,以及锁住的配置里新增 scoring_rules、三个角色的 prompts_by_role 多一个文件;T1 带 draft: 的配置锁住的 draft.order 变成 11 个方法族。
  • 旧 run 照常加载:新字段都是可选的。没有 score_parts 的旧节点,变化量表和实验表与以前逐字相同(有单元测试);运行中的 run 用自己的代码快照,不受影响。
  • 注意:draft 覆盖顺序会按 search_seed 轮转类别内的方法族,两个优先方向只在 search_seed = 0(或轮转后恰好落在首位)时最先起草;调度算法没有改。

3. 测试

新模块 agent/search/tests/test_score_parts.py(14 项:与评分器 GROUP_SPEC / aggregate 一致、地板 = 50、无定义指标、旧响应、服务 _clean、节点记录、渲染、tune、OpenEvolve、简报接线)。test_drafts 改为 11 个方法族,并修正 ot_moscot 已准入为 exploration 后的 seeds: all 预期。在 Spark 私有测试目录逐个模块运行,全部通过。

4. T2 / T3 评分规则简报(2026-10-03)

  • 文件:agent/prompts/scoring_rules_t2.md(三个 T2 榜共用一份:评分器对三榜完全相同,setting 只是记录字段,差别只在 panel、细胞数上下限、参考 / 输入阶段);agent/prompts/scoring_rules_t3.md。只写公开评分代码(veckit core_metrics / shape_metrics / T2|T3/metrics*.py)与官网任务页、参考行页的事实,加上本项目数据上的事实;不写任何阶段名、保留基因型或其表型 / 靶点。
  • T2 要点:八项排名指标与分值(表达 12.5×2、状态 12.5×2、形状 8.33×3 再乘结构门、邻域 25);结构门 = min(邻域 skill/0.5, 1),所以邻域一项最多影响 50 分;坐标只取 spatial_3D 前三列,空间项对平移旋转不变,d2_shape 看不出镜像,scale_log_ratio 是唯一看绝对尺寸的项;各项的细胞数上限;不计分的输出项。我们数据上的事实:DE 两项只看排序与符号(同一段代码);首批官网分 vs 本地尺子(插值两榜接近:59.6→62.9、61.5→60.0;外推高估:54.2→49.6);方法卡网格里“真实细胞 + 原坐标”邻域稳定 52–55,OT 插值新点使邻域掉到 23–41、门 0.46–0.61;全胚整细胞混抽的细胞状态组只有 36;照抄略低于 50。
  • T3 要点:五项与分值(响应基因 30、方向 25、强度 25、状态 10+10);三项响应指标以同阶段匹配 WT 为参考;坐标与形状不排名、没有结构门;severity_slope 的定义(响应基因上过原点斜率的 log β,β≤0 / r²≤0.01 / 无变化记 log 0.001 = 地板值,偏大偏小同样扣分,β 正但 < 约 0.001 时低于地板),它是唯一看幅度的项。我们数据上的事实:Mab21l2 留一基因尺子的结果(只把被敲基因压到 0 时强度组 67;按 WT 共表达自然符号传播使 DE 两项低于地板);这把尺子未校准,首份官网 T3 为 45.9;照抄 WT 略低于 50。
  • 接线:
    • 搜索模式(T1 / T2):沿用 load_search_config 的默认 agent/prompts/scoring_rules_<task>.md,T2 文件出现后所有 T2 搜索配置默认附上(Engineer / Researcher / Analyst,Reviewer 不附):g24_t2_t3/t2_*.yaml(含 D 组)、g24_quick/t2_*.yaml、dev/search_t2_g24_fake.yaml。不想附的配置写 scoring_rules: null。
    • Agent 模式(T3,agent/harness.py):没有 scoring_rules: 键,提示词就是配置的 prompts: 列表。g24_t2_t3/t3_spark.yaml 显式加在方法卡之后;g24_quick/t3_spark.yaml(10-02 已跑完的快速基线)不改、不附。
    • search_spec / analyst_spec / researcher_spec、控制器父节点块和 tune 反馈里的“四项排名指标”改为“各项排名指标”(T2 有八项)。
  • 知识审计:scripts/check_knowledge.py 原本就按 scoring_rules_t*.md 扫描(t2 按心脏 + 全胚窗口,t3 按基因型);现在三份简报列为必需文件,缺一份即 FAIL。结果 PASS,没有新增白名单(简报里没有任何阶段名或基因型名)。
  • 对锁的影响:评测规格(scoring_fingerprint)不变。新的 T2 搜索 run:prompts_by_role 三个角色多一个文件,锁住的配置 scoring_rules 从 null 变为 T2 简报路径,code_hashes / search_hashes / prompt_hashes 变(新简报、三份 spec、controller / tune 文案)。正在跑的 T2 run 用自己的代码快照,不受影响;用新代码续跑会因锁变化被拒(除非显式放行)。T3 完整配置的 prompt_hashes 多一个文件;T1 新 run 只因 spec / 控制器文案改动而 hash 变化。
  • 测试:test_score_parts 增加 T2 默认附上、scoring_rules: null 关闭、T3 agent 配置与 build_prompt 顺序、两份简报的事实与“无阶段名 / 基因型名”检查。