一份给同行看的工程化复盘:agent 编排与失败恢复、文献检索的查询设计与去伪、每块物理的方程/数值方法/算法、两次机制证伪与修复、以及全程的可复现实践。物理量按 measuredderiveddecision 标注。
整个研究遵循一条编排纪律:主上下文只做协调、决策、综合,不做重读写检索的重活。所有实现、检索、文件写入都交给并行子代理(Task agent),保持主上下文窗口干净、可长程推进。
WebSearch/WebFetch 是「延迟加载工具」(deferred),没先用 ToolSearch 把 schema 载入就直接调用,结果空转、不写文件。诊断后在每个子代理 prompt 顶部加了强制的「STEP 0:ToolSearch query="select:WebSearch,WebFetch"」+「文件必须写盘才算完成」两条硬约束,重新派发即恢复。这类失败全部如实记进了 CHANGELOG。下列数字均从本会话的子代理 transcript(93 个后台任务文件)中实测汇总 measured。说明:这些是子代理侧合计,且包含「子代理递归再分裂」出的 helper;主控自身 token 未计入。cache_read 巨大是因为每个 agent 启动时会重读被缓存的上下文(这是正常的,且大部分走缓存、单价低)。
| 主模型 | Claude Opus 4.8 |
| 后台任务文件 | 93 个 |
| 子代理运行 | ~84(含递归 helper) |
| 后台 bash 任务 | 9(拟合/编译等) |
| output | ~1.01M |
| input(新) | ~4.45M |
| cache 读取 | ~157M |
| cache 写入 | ~17M |
| 子代理工具调用 | ~1,861 次 |
| 其中 Web 检索/精读 | 数百次 WebSearch+WebFetch |
| 主控 git 提交 | 20+ 次(研究日志) |
| 产出代码 | 13 模块 / 2310 行 |
口径说明:output ~1M token 是子代理「真正生成」的内容量;input 的「新 token」~4.4M 与 cache 读取 ~157M 不应简单相加当成本——缓存读取单价远低于新 input。把 cache 读取计入是因为多代理并行时每个 agent 都要把共享上下文读进来,这正是「多代理换上下文窗口」策略的代价与收益所在。
novelty 是论文的生死线,所以 Phase 0 是硬门槛:动任何推导前先把先验工作查穷尽。策略是四路正交分解——把"可能撞车"的空间切成互不重叠的子域并行扫,再交叉三角验证。
WebFetch 精读,而非只看搜索摘要。WebFetch 打开摘要页核对「标题+作者+年份+期刊」四项一致才采纳;否则标 [arXiv unverified]。检索中剔除了多条张冠李戴,例如:把 2412.19371 误归给 Yang Bai(实为 Rosenlyst)、把不存在的"Mohapatra-Nussinov box-diagram"当先例、把 1503.07874(其实是对撞机 EFT)误当 loop-DD。这些假归属若进了 bib,审稿人一眼能看穿。四路报告综合成一页判定 lit/00-novelty-synthesis.md:核心新意(单旋钮统一)真新;box portal 与 σ/m(v) 是支撑、部分被预占,逐条技术区分。最后做 INSPIRE 引用树终查确认优先权:
| 最近邻论文 | INSPIRE recid | 被引 | 结论 |
|---|---|---|---|
| 2602.18753(box portal 最像;第一作者本人前作) | 3122802 | 0 | 无后续,改为自引扩展 |
| 2410.23631(confining+loop DD) | 2844260 | 7 | 7 篇全为相邻但不同主题,未预占 |
→ 单旋钮 glueball↔暗π SIDM + SM-色 box portal + ADM 的组合未被占据。decision
定模型时第一个岔路是「几种暗夸克 N_f」。最初想 N_f=1(最简),但用 Goldstone 计数自检后否决了——这是个纯对称性论证,我现场用 sympy 算了一遍。
三项现场自检全过:Goldstone 计数、谱走向、SIDM 尺度自洽(取 Λ_d≈0.5 GeV → M_B≈1 GeV、m_π≈几十 MeV,落在标准 SIDM 窗口)。
连接子 {ψ,Φ}(带 SM 色 × 暗色)在一圈 box 图里跑。M_ψ,M_Φ ≫ Λ_d 做重质量展开;box 是紫外有限的,手征性禁止质量插入,匹配到维度-6 矢量算符:
数值(code/box_calc.py,主控复跑):M_ψ=1.5 TeV、y=1 → σ_SI ≈ 4.66×10⁻⁴⁵ cm² derived,远低于 GeV 级直接探测界。解耦论证:SIDM 强度由 (Λ_d, r) 定,核子耦合由 (y, M_ψ) 定——参数上正交。
这块是整个工作的心脏,也是两次证伪的发生地。任务:从介子交换势出发,解出转移截面随速度的变化,做麦克斯韦平均,χ² 拟合矮星系→星系团真实数据。
lit/02。Yukawa 势的转移截面没有统一闭式,需按 (κ, β) 分区。我们把 Tulin-Yu-Zurek (1302.3898) 的 Born/经典拟合式 + Hulthén s-波(共振/量子区)逐式移植自同行评审的 CLASSICS 代码 (2011.04679),并对齐其匹配常数:
# code/sigma_v.py — 区制分类(节选自真实实现) # kappa = m_phi/(M_B * v_rel) ; beta = 2*alpha_d*m_phi/(M_B*v_rel^2) def _sigma_combined(kappa, beta, sign): if kappa > 1.0: # 经典 / Born 区 return _sigma_classical(kappa, beta, sign) elif kappa < 0.4: # Hulthén s-波(共振/量子) return _sigma_hulthen(kappa, beta, sign, eps=1.6) else: # 0.4≤κ≤1 线性插值过渡 return _interp(kappa, beta, sign)
用 96 点 Gauss-Legendre 求积(np.polynomial.legendre.leggauss(96))在麦克斯韦相对速率分布上算 ⟨σ_T v⟩/⟨v⟩,与数据论文约定一致;扫 v=10–3000 km/s。快速版供参数扫描、自适应 quad 版供单点高精度。
对称冻结用标准 Boltzmann ODE,变量 Y=n/s、x=M_B/T_SM,scipy.solve_ivp(BDF)求解,Gondolo-Gelmini 约定,并用 Steigman 2012 热遗迹基准校准(在 100 GeV 复现 Ωh²=0.121,误差 ~1%)。
暗π 是赝标量,单π交换给自旋-自旋/张量势,自旋无关中心 Yukawa 被 (m_π/2M_B)² 压低。code/ope_mediator_check.py 现场算出该因子 ≈3.4×10⁻⁷ derived ⟹ 轻暗π 单独不能当中心 mediator。
改试 s-道近阈共振(CGCM 1810.04709,sigma_v_resonant.py 实现并核验 BW 峰值到机器精度)。诚实拟合结果:单共振给 σ_T∝v⁻⁴,矮星系/星系团比 ~10³,而数据斜率仅 d ln(σ/m)/d ln v ≈ −0.70(~10 倍);最优 χ²/dof≈8、E_R 顶到网格边界。否决。
真正对的中心力是各向同性-标量道的双π交换——核力中程吸引的暗版,自旋无关、不被压低、射程 ~1/(2m_π)。我现场验证:m_π~14 MeV → 有效介子 ~28 MeV,正是 Yukawa 拟合想要的;Yukawa 形状斜率 −0.75 对上数据 −0.70。r 旋钮故事完整保留,有效 α_d 现在从暗π 耦合经 TPE 导出。
最终 TPE 拟合(code/fit_tpe.py):对有效参数 (α_d, 2m_π, M_B) 用 scipy.differential_evolution 全局优化,χ² 含 5 个双边数据点 + 星系团单边上限罚项。结果:
内建诚实性检验(写在 fit_resonant_fast.py 里):
每完成一个 block/判定就提交,commit message 记录物理结论与转折(含「resonant rejected」这种)。17 个提交串起完整路线。
TODO/CHANGELOG/ARCHITECTURE + memory 文件,保证上下文压缩或换会话后不丢线索;子代理产出由主控落盘。
13 个 Python 模块全部主控复跑验证;每个带单位的物理量标 measured/derived/estimate;格点/实验输入带 arXiv。
pdflatex && bibtex && pdflatex 链在单条 shell 里会间歇导致 .bbl 没读入、出现 [?] 断引用。诊断后写了 paper/build.sh,把四步拆成独立进程调用,并改用 pdftotext | grep '[?]' 验证(而非数累积 log)。这条教训也写进了脚本注释。