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

运行档案 / T2:embryo:val_interp / 10-03 04:34

G24 T2/T3 首跑 / D 组

先看终选决定,再沿节点查看方法、代码改动和对话证据。

已选出最终候选

以实际终选程序为结果;搜索中曾达到的最高分与最终交付分开记录。

与其他运行比较
终选程序?按该运行锁定的规则最终选出的程序;可能是候选节点,也可能由护栏回退到基线。
n30
本运行目标 62.62(种子 0 单次)
节点?搜索树里的每个候选程序。
33
已打分 26
官网分?官网 P2 返回的真实分数。
—
还没有提交或还没有分数
大模型调用次数?各角色(调研员、工程师、分析员、审查员)调用大模型的次数。
105
分析员 24、工程师 24、调研员 25、审查员 11、tune 21

实际结果与评分依据

搜索目标、护栏和诊断分开阅读。不同真值分片或 seed 的同名尺子保留各自记录。

尺子用途分数评分上下文
proxy搜索目标复测62.6真值 B 半 / 3 个 seed均值
X2终检诊断56.9全部真值 / 1 个 seed单次
为什么选中这个结果:逐候选护栏证据

差值来自该运行的 final_guard 事件,按当时锁定规则判断。不同尺子的分差不合并成一个结论。

候选尺子相对基线当时判定
n25proxy+12.84通过
n29proxy+12.84通过
n30proxy+13.27通过
n31proxy+12.84通过
n33proxy+13.27通过

来历?终选程序从种子程序一步步改过来的路径,每一步都写了改了什么、分数变了多少。

括号里的分差只表示变化方向,不代表统计显著性。

n2 种子
seed mix
搜索目标分 57.23 · proxy 57.23 · 3 次复测均分 57.47
审查意见?审查员(Reviewer)检查程序是否越界读取、写死目标或钻评分器漏洞后的意见。 通过 seed (human-written, locked)
↓
n7 改进
mix + 型内中间态偏好选胞(b 侧)+ 组成阻尼 κ=0.65:共有型内按到 (1−t)μ_a+tμ_b 混合质心的距离取最近细胞,仅作用于晚端括号。
搜索目标分 61.76(+4.5) · proxy 61.76(+4.5) · 3 次复测均分 61.57
分析员结论?分析员(Analyst)看完分数后写下的第一条经验。:在 T2 embryo mix 插值中,降低晚端细胞占比(kappa≈0.5-0.65)可稳定给 cell_state 带来 +10~17,但代价是 shape_scale -3~-5(occupancy_dice 下降),这是组成阻尼的固有 trade-off,调 kappa 时须同时盯 shape_scale。
审查意见 通过 1 越界读取:未发现问题——run.py 仅通过 view_io.load_manifest/read_stage/panel_genes 从 --data 视图读取(run.py:153-165),导入的 src.task2_spatial.{frame,methods,sample,transport,view_io} 是任务提供的工具库而非打分器 src/common/evaluation;无绝对路径、..、/mnt、/home、
↓
n11 改进
父节点 mix+κ=0.65+side-b 中间态选胞不变;新增 b 侧坐标占据扩张:被选晚端细胞绕输出云质心做 xy 径向膨胀 γ=1.15(z 不动),补偿组成阻尼的空间占据损失。
搜索目标分 62.15(+0.4) · proxy 62.15(+0.4) · 3 次复测均分 62.13
分析员结论:条件:κ组成阻尼减少b侧细胞导致空间占据不足时,做绕输出云质心的xy径向膨胀(γ=1.05~1.2有平台)可回收shape_scale(+0.9)与local(+0.7)且不碰expr/cell_state;结果:机制净贡献落在坐标两组、方向一致,但榜分+0.39在噪声内。
审查意见 通过 1 越界读取:未发现问题——run.py 全部数据访问经 src.task2_spatial.view_io 的 load_manifest/panel_genes/read_stage(args.data, ...)(run.py:56,213-225),无绝对路径、'..'、/mnt、/home、data/raw、downloads,未 import src/common/evaluation 或打分器,无 requests/url
↓
n13 改进
按 PLAN T2EI-09 实现 a 侧(早端括号)中间态选胞(含保空间分层的变体 SEL_A_MODE=spatial);机制确实运行且 cell_state/expression_change 上升,但 local_spatial 一致下降 ~1.5,两种子均值净负(61.10 vs 父 61.38),故提交态默认关闭(SEL_SIDE=b,输出与父节点 11 逐位一致)。
搜索目标分 62.15(+0.0) · proxy 62.15(+0.0)
分析员结论:在 a 侧抽样率高(52%)时做型内中间态偏好选胞(按到混合质心距离择优),只换细胞身份不换坐标,代理上 cell_state +0.9~+1.2、expression_change +0.8,但 neighborhood_mmd 0.0531→0.0551~0.0558 使 local_spatial −1.0~−2.2,两种子均值净 −0.28,机制被证伪。
审查意见 通过 检查1 越界读取:未发现问题——run.py 只通过 --data/--out 与 src.task2_spatial 的 load_manifest/read_stage/write_t2 读写视图内数据(run.py:294-311),无绝对路径、'..'、/mnt、/home、data/raw、downloads、打分器或 src/common/evaluation 的引用,无网络访问。; 检查2 硬编码目标统计量:未发现问题——
↓
n23 改进
按 PLAN T2EI-09 实现 a 侧空间平滑表达微漂移(kNN 平滑的向混合质心漂移,DRIFT_ALPHA/DRIFT_K);机制确实运行,但 α 从 0.3 到 1.2 榜分单调下降(cell_state、local_spatial、de_direction 全恶化),代理上证伪,提交态默认 DRIFT_ALPHA=0,输出与父节点 13/11 逐位一致(seed 0/1 h5py 逐数
搜索目标分 62.15(+0.0) · proxy 62.15(+0.0)
分析员结论:在本代理上把a侧表达推向中间态已连续三种形式被证伪:离散换身份(node13,cell_state +0.9~1.2/local −1.0~2.2)、配对插值(node12,+1.2/−2.0)、连续空间平滑微漂移(本节点,α=0.3→60.94、α=0.6→60.74,cell_state/neighborhood_mmd/de_direction全恶化)——后续不要再试a侧表达中间态化。
↓
n25 改进
b 侧 xy 各向异性膨胀证伪(两轴比值差仅 2%);改为整云逐轴 σ 匹配:把输出云 z 轴匹配到括号插值 σ_ref_z(fac≈0.92)再恢复 RMS,膨胀关闭。3 种子 A 半 61.38→61.77,shape +1.6~2.7。
搜索目标分 62.26(+0.1) · proxy 62.26(+0.1) · 3 次复测均分 62.20
分析员结论:在 embryo interp 代理上,输出云的逐轴扩展缺损集中在 z 轴(σ_out_z 比括号插值参考宽 ~9%,因早端主导混合),xy 两轴比值差仅 2%:任何逐轴形状补偿应先打印 σ_ref/σ_out 逐轴比值再选轴,否则会在近各向同性的轴上空扫参数。
审查意见 通过 1 越界读取:未发现——run.py 只通过 load_manifest/read_stage 读 --data 视图内路径(run.py:410-422),imports 为 src.task2_spatial 框架库(run.py:95-99),无绝对路径/`..`/打分器路径/联网。; 2 硬编码目标统计量:未发现——σ_ref 逐轴参考扩展在运行时从对齐后的两括号输入现场计算(run.py:434 s_ref_axes;run.
↓
n29 改进
侧别条件 z 轴 σ 匹配(a 侧全压缩、b 侧 λ_b 阻尼)已实现并查分证伪:λ_b≠1 的 5 个配置榜分全部低于均匀压缩(λ_b=1),提交态 = 父节点 25(默认 ANISO_B_LAMBDA=1.0,逐位一致)。
搜索目标分 62.26(+0.0) · proxy 62.26(+0.0) · 3 次复测均分 62.20
分析员结论:在 embryo interp 的 z σ 匹配族内,任何侧别差异化缩放(A 半 seed 0,λ_b∈{0, 0.5, 1.25, 1.5} 得分 61.25/61.31/61.44/61.46 均低于 λ_b=1 的 61.50)都掉 occupancy_dice(0.786→0.774~0.780),榜分在均匀单因子处是峰,两侧单调下降——不要再扫侧别/差异化 z 缩放。
审查意见 通过 1 越界读取:未发现问题——run.py 仅通过 view_io 的 load_manifest/read_stage/panel_genes 读取 args.data 视图内数据(run.py:475-487),无绝对路径、..、/mnt、网络调用或目标阶段文件读取;src.task2_spatial.* 为框架模块而非评分器。; 2 硬编码统计量:未发现问题——σ_ref、RMS、配额、共有类型均从输入现场计算(run.py:493
↓
n30 改进 终选程序
密度感知 z 压缩:z σ 匹配因子改逐细胞 f_i=f_g(1+ε·c_i),c_i=局部 kNN 密度对数去中位数(截尾+截断),提交 ε=−0.75(密集区多压),3 种子 A 半一致 +0.3~+0.5,d2_shape 减半;DENS_EPS=0 逐位等于父。
搜索目标分 62.56(+0.3) · proxy 62.56(+0.3) · 3 次复测均分 62.62
分析员结论:在 T2 embryo 的 z 压缩族里,按局部密度调制的方向与直觉相反:ε>0(密集区少压,实际使密集簇 z 因子≈1.04 即膨胀)同时伤 occ_dice 与 nbhd_mmd(A 半 60.70 vs 父 61.50),ε<0(密集区多压)才有 −0.5~−1.0 的宽平台全胜,方向必须靠首次查分判定并预置反转预案。
审查意见 通过 1 未发现问题:数据只经 --data 与框架 view_io(run.py:142 导入 load_manifest/panel_genes/read_stage/write_t2;run.py:562-574 读入、733 写出),全文无绝对路径、'..'、/mnt、/home、data/raw、downloads、打分器或 src/common/evaluation 的引用,也无 requests/urllib/socket/su

搜索树?每个点是一个节点,连线从父节点指向子节点;颜色表示结果。

蓝色粗线是来历路径;鼠标停在点上看节点,点一下打开节点页。

n1 种子,已打分,49.131n2 种子,已打分,57.232n3 调参,没有改动3n4 改进,已打分,54.524n5 改进,已打分,60.635n6 改进,已打分,61.156n7 改进,已打分,61.767n8 改进,已打分,61.158n9 调参,没有改动9n10 草稿,已打分,61.0310n11 改进,已打分,62.1511n12 改进,已打分,61.1512n13 改进,已打分,62.1513n14 改进,已打分,61.7414n15 调参,没有改动15n16 调参,没有改动16n17 草稿,已打分,61.3917n18 草稿,已打分,61.7318n19 改进,已打分,62.1519n20 改进,已打分,61.7320n21 改进,已打分,62.1521n22 调参,没有改动22n23 改进,已打分,62.1523n24 改进,已打分,62.1524n25 改进,已打分,62.2625n26 改进,已打分,62.1526n27 调参,没有改动27n28 改进,已打分,62.1528n29 改进,已打分,62.2629n30 改进,已打分,62.5630n31 改进,已打分,62.2631n32 调参,没有改动32n33 改进,已打分,62.5633终选
已打分?程序正常跑完并拿到分数。没有改动?这次会话没有对代码做任何修改。
搜索分数的变化?横轴是从运行开始算起的分钟数,纵轴是到那时为止最好的搜索目标分。
5052.55557.56062.5050100150从开始算起的分钟数20261003-043412-search-t2-embryo-interp-g24-D-s120261003-043412-search-t2-embryo-interp-g24-D-s1:0 分钟 49.1320261003-043412-search-t2-embryo-interp-g24-D-s1:0 分钟 57.2320261003-043412-search-t2-embryo-interp-g24-D-s1:18 分钟 60.6320261003-043412-search-t2-embryo-interp-g24-D-s1:37 分钟 61.1520261003-043412-search-t2-embryo-interp-g24-D-s1:51 分钟 61.7620261003-043412-search-t2-embryo-interp-g24-D-s1:77 分钟 62.1520261003-043412-search-t2-embryo-interp-g24-D-s1:168 分钟 62.2620261003-043412-search-t2-embryo-interp-g24-D-s1:197 分钟 62.56
全部节点与对话(33)
节点父节点操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。状态搜索目标分?搜索用来比较节点的分数(各把尺子按权重合成,种子 0 单次)。比父节点?这个节点的分数减去它父节点的分数;正数是变好。proxy?替代题:用手头已知阶段造的本地考题,T1 是用 E8.5 预测 E9.5。3 次复测?换 3 个随机种子各跑一次取平均 ± 标准差,比单次分更稳。审查用时?从运行开始到结束(或到现在)的挂钟时间。方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。
n1—种子已打分49.1—49.149.4通过不到 1 分seed copy_last
n2—种子已打分57.2—57.257.5通过不到 1 分seed mix
n3n2调参没有改动————未审查1 分—
n4n1改进已打分54.5+5.454.554.7未审查21 分copy_last 细胞/组成不动 + 括号 RMS 阻尼坐标缩放 + 小幅逐细胞型表达位移(alpha=0.075*t, 基因级收缩):榜分 49.13→54.66
n5n2改进已打分60.6+3.460.660.2通过16 分mix + 组成阻尼(t_comp=κ·t,κ=0.5):晚端细胞比例减半,几何不变;PLAN 的型均值位移已实现但代理上单调有害,关闭(α=0)。
n6n5改进已打分61.1+0.561.160.6通过16 分mix+组成阻尼κ=0.5 不变;晚端细胞改为类型内径向等频分层抽样(占位+),scale_damp 0.5→0.455 使输出 RMS 对准参考(形状+)。
n7n2改进已打分61.8+4.561.861.6通过29 分mix + 型内中间态偏好选胞(b 侧)+ 组成阻尼 κ=0.65:共有型内按到 (1−t)μ_a+tμ_b 混合质心的距离取最近细胞,仅作用于晚端括号。
n8n6改进已打分61.1+0.061.1—未审查13 分在mix+κ=0.5+radial分层+damp0.455上测试PLAN的b细胞向a型均值逐细胞收缩、FPS覆盖采样、z切片分层与κ重扫;全部在代理上被否证或在噪声内,提交态=父节点配置(默认开关全关/radial)。
n9n7调参没有改动————未审查1 分—
n10—草稿已打分61.0—61.061.0未审查15 分mix(几何)+线性组成阻尼κ=0.5+damp0.455;PLAN的logit组成与型内伪批量表达插值在代理上均被证伪,默认关闭。
n11n7改进已打分62.2+0.462.262.1通过22 分父节点 mix+κ=0.65+side-b 中间态选胞不变;新增 b 侧坐标占据扩张:被选晚端细胞绕输出云质心做 xy 径向膨胀 γ=1.15(z 不动),补偿组成阻尼的空间占据损失。
n12n8改进已打分61.1+0.061.1—未审查12 分实现PLAN的型内a-b近邻配对插值生成中间态细胞(T2EI_INTERP_FRAC,含空间加权配对与坐标插值变体):cell_state一致+1.2但local_spatial一致−2.0,净效应在噪声内或为负,机制被否证;提交态默认关闭,输出与父节点node 8逐位一致(of
n13n11改进已打分62.2+0.062.2—通过15 分按 PLAN T2EI-09 实现 a 侧(早端括号)中间态选胞(含保空间分层的变体 SEL_A_MODE=spatial);机制确实运行且 cell_state/expression_change 上升,但 local_spatial 一致下降 ~1.5,两种子均值净负(61.
n14n12改进已打分61.7+0.661.761.6未审查14 分radial bin 内晚端细胞改选距型内混合质心 (1−t)μ_a+tμ_b 最近者(中间态偏好,保径向覆盖),κ 0.5→0.65 联合生效;xy 膨胀叠加被否证,off 对照=父节点。
n15n7调参没有改动————未审查2 分—
n16n10调参没有改动————未审查2 分—
n17—草稿已打分61.4—61.461.6未审查14 分mix 几何/组成(procrustes3d+RMS阻尼0.5+κ=0.65+晚端中间态选胞)为底座;PLAN 的类型内 Sinkhorn-OT 表达投影已实现并运行,但在代理上被证伪(bary 与 partner 两种解码、a/b 两侧、多个 α 全部低于 α=0),提交态 O
n18—草稿已打分61.7—61.761.6未审查13 分联合表达PCA+刚体不变几何latent内按细胞型确定性选取b侧中间态细胞(κ=0.65, procrustes3d, scale_damp=0.455),表达与坐标随真实细胞搬运。
n19n13改进已打分62.2+0.062.2—通过9 分按 PLAN T2EI-05 网格搜索组成阻尼 κ 与膨胀上限 γ(κ 0.60–0.80 × cap 1.05–1.25):cell_state 随 κ 单调降、shape 随 κ 单调升,父配置 κ=0.65/γ=1.15 已是平衡点,机制证伪,提交态保持父配置(输出与节点
n20n18改进已打分61.7+0.061.7—未审查17 分按PLAN实现b侧选胞距离分位分层(STRAT_Q/STRAT_W)与xy径向膨胀(EXPAND_GAMMA),两机制在代理上均被证伪,提交态=父节点18配置(开关默认关)。
n21n19改进已打分62.2+0.062.2—未审查13 分按 PLAN T2EI-09 实现 b 侧选入细胞的型内分级表达收缩(向混合质心 (1−t)μ_a+tμ_b 移动 δ=α·d/d_max,保坐标);代理上 cell_state 随 α 单调下降、机制证伪,提交态 SHRINK_ALPHA=0,输出与节点 11/19 逐位一致(
n22n17调参没有改动————未审查1 分—
n23n13改进已打分62.2+0.062.2—未审查12 分按 PLAN T2EI-09 实现 a 侧空间平滑表达微漂移(kNN 平滑的向混合质心漂移,DRIFT_ALPHA/DRIFT_K);机制确实运行,但 α 从 0.3 到 1.2 榜分单调下降(cell_state、local_spatial、de_direction 全恶化),
n24n21改进已打分62.2+0.062.2—未审查13 分实现 b 侧选胞后型内方差恢复(f_c=1+β(σ²_all/σ²_sel−1) 径向膨胀);mmd_u 三 seed 一致改善但 variogram 等量变差、cell_state 微降,净榜分噪声内证伪,提交 β=0 与父逐位一致。
n25n23改进已打分62.3+0.162.362.2通过23 分b 侧 xy 各向异性膨胀证伪(两轴比值差仅 2%);改为整云逐轴 σ 匹配:把输出云 z 轴匹配到括号插值 σ_ref_z(fac≈0.92)再恢复 RMS,膨胀关闭。3 种子 A 半 61.38→61.77,shape +1.6~2.7。
n26n24改进已打分62.2+0.062.2—未审查13 分实现 b 侧选胞后空间 kNN 平滑型内方差恢复(SPATVAR:沿同型空间邻域平均残差方向位移 β·r̃);variogram 在所有 β>0 下恶化 6–10%(超 PLAN 停止条款 5%)、mmd_u 无收益、cell_state 单调下降,机制证伪,提交态 SPATVA
n27n17调参没有改动————未审查2 分—
n28n26改进已打分62.2+0.062.2—未审查16 分实现 b 侧坐标各向异性占据补偿(ANISO:按轴生长比 r_ax=σ_b/σ_a 外推的逐轴缩放,含几何均值归一化的纯各向异性变体);诊断显示 E6.75→E8.0 生长近各向同性(r_x/r_y 仅差 4.2%),δ 网格上证伪,提交态 ANISO_DELTA=0 与父节点逐
n29n25改进已打分62.3+0.062.362.2通过12 分侧别条件 z 轴 σ 匹配(a 侧全压缩、b 侧 λ_b 阻尼)已实现并查分证伪:λ_b≠1 的 5 个配置榜分全部低于均匀压缩(λ_b=1),提交态 = 父节点 25(默认 ANISO_B_LAMBDA=1.0,逐位一致)。
n30n29改进已打分62.6+0.362.662.6通过13 分密度感知 z 压缩:z σ 匹配因子改逐细胞 f_i=f_g(1+ε·c_i),c_i=局部 kNN 密度对数去中位数(截尾+截断),提交 ε=−0.75(密集区多压),3 种子 A 半一致 +0.3~+0.5,d2_shape 减半;DENS_EPS=0 逐位等于父。
n31n25改进已打分62.3+0.062.362.2通过14 分按 PLAN T2EI-05 实现逐细胞型 z σ 匹配(TYPE_Z_MATCH,λ∈{1,0.85}):诊断 r_c 跨型差 0.434(机制非惰性)但代理查分证伪——local_spatial 仅回收 +0.16/+0.18(门槛 ≥+0.3),λ=0.85 另失 shap
n32n18调参没有改动————未审查3 分—
n33n30改进已打分62.6+0.062.662.6通过5 分按 PLAN T2EI-04 实现 xy 局部密度均衡位移(XY_EQ_EPS,密集区外推/稀疏区内收、cap 5% RMS_xy、后恢复全局 RMS):机制确实运行且 CV(ρ) 0.65→0.50,但预注册门槛(榜分 ≥ 父+0.5 且 nbhd_mmd ≤0.0535)在
资源消耗与失败情况

没有改动 7

角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。大模型调用次数失败总用时输入 token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。输出 token
分析员24022 分286,30446,869
工程师2404 小时 40 分1,474,503525,260
调研员2501 小时 8 分264,028149,987
审查员11024 分283,96863,946
tune21012 分139,83330,909
运行配置与来源
运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-043412-search-t2-embryo-interp-g24-D-s1
10-03 04:34 · 自动搜索 · T2:embryo:val_interp · G24 T2/T3 首跑 · D 组 · s1
题目?比赛的哪道题、哪个阶段,例如 T1:val 是第 1 题的验证阶段。T2:embryo:val_interp
方式?自动搜索:ERA 式搜索树,多个节点不断改进程序;单 Agent:一个 Agent 会话从头做到尾。自动搜索
搜索目标?这次运行用哪几把尺子、按什么权重合成分数来比较节点;目标不同的运行,最佳分不能直接比。proxy;终检 X2;护栏 proxy
状态已结束
开始 / 结束10-03 04:34 / 10-03 08:06
用时3 小时 32 分 / 预算 4 小时
所在副本?运行目录所在的代码副本(Spark 上 ~/vec 下的哪个目录)。2026_virtual_embryo

出处?这次运行用的代码、配置、数据和模型的指纹,靠它们可以原样找回并复现。

代码版本?运行锁定时代码仓库的 git 提交号;带 +dirty 表示当时有未提交的改动。e2bd93010911075060bdfd728e71fdb880af58e4
版本标签?可提交运行在锁定的提交上打的 git 标签 run/<运行编号>,以后能原样找回代码。—
配置文件/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/config_source.yaml
配置指纹 fce98f43d93b0650
锁定指纹?启动时把配置、代码、提示词等全部锁定后算出的总指纹。9bdb657795cdf342 锁定格式 v8
运行专用代码副本?启动时为这次运行单独检出的一份只读代码;运行全程只读它,不受主副本更新影响。目录存在 /home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1/code
打分口径指纹?打分器、数据视图、种子等合起来的指纹;指纹相同,分数才能直接比较。99224eb70c9ad059
数据视图指纹?程序能看到的输入数据文件的指纹,按视图汇总成一个短指纹。final:22 个文件,指纹 f22303ef65f51939
proxy:19 个文件,指纹 e0ec78408ba34231
test:19 个文件,指纹 7982bdcbdbe0a565
大模型?每个角色用的大模型;括号里是接口实际报告的模型名。分析员:alibaba-token-plan-cn/qwen3.8-max (接口报告 qwen3.8-max)
工程师:alibaba-token-plan-cn/qwen3.8-max (接口报告 qwen3.8-max)
调研员:alibaba-token-plan-cn/qwen3.8-max (接口报告 qwen3.8-max)
审查员:alibaba-token-plan-cn/qwen3.8-max (接口报告 qwen3.8-max)
运行目录/home/spark-longxinyang/vec/runs/formal/20261003-043412-search-t2-embryo-interp-g24-D-s1 主机 spark-ad3f
提交账本?notes/changelogs/submissions.tsv:每次上传官网的记录和返回的官网分。这次运行没有提交过官网
迭代报告?运行结束后自动生成的中文复盘报告(notes/reports/runs)。还没有迭代报告