Technical Workflow Retrospective · 技术工作流复盘(内行向)

这项暗物质理论研究,具体是怎么算出来、推出来、查出来的

一份给同行看的工程化复盘:agent 编排与失败恢复、文献检索的查询设计与去伪、每块物理的方程/数值方法/算法、两次机制证伪与修复、以及全程的可复现实践。物理量按 measuredderiveddecision 标注。

Lu Jiang(电子科技大学)· Peng Qi(上海科技大学)· Zhiwei Wang(电子科技大学,通讯) |  输出:PRD 5pp + PRL 3pp + 13 个 Python 模块(2310 行)+ 14 份 markdown |  AI:Claude Opus 4.8 · ~84 子代理 · ~1M output token · ~1861 工具调用
目录
  1. 总体编排:主控 + 子代理(含 AI 用量统计)
  2. 文献检索:查询设计与去伪
  3. Block 1:模型与对称性(含 N_f 判定)
  4. Block 2:box loop 与有效算符
  5. Block 3:σ/m(v) 数值方法(核心)
  6. Block 4:玻尔兹曼求解与 ADM
  7. 两次机制证伪与修复
  8. 拟合算法与诚实性检验
  9. 工程实践:git、记忆、构建

1总体编排:主控当「项目经理」,重活全部下放子代理

整个研究遵循一条编排纪律:主上下文只做协调、决策、综合,不做重读写检索的重活。所有实现、检索、文件写入都交给并行子代理(Task agent),保持主上下文窗口干净、可长程推进。

主控 Orchestrator 协调 · 判断 · 综合 · 写 git/记忆 文献检索 ×4 路 → 各自递归再分裂 WebSearch + WebFetch 核验 理论推导 ×3 块 Block 2/3/4 并行 各写 .md + 可运行代码 深读 ×3 篇 2602.18753 / 2105.03429 / N_f=1 危险论文 数值复核 in-line 主控亲自跑核心拟合 (子代理死掉后接管) 关键工程教训:子代理会「递归再分裂 + 偶发空转」 ① 首批 agent 把 WebSearch 当成「deferred 工具」没加载 → 空转不写文件 ② 修复:prompt 里强制「第 0 步 ToolSearch 加载 WebSearch/WebFetch + 必须写文件」 ③ 子代理死在半路时,主控亲自接管核心计算(如 Block 3 拟合),绝不丢任务
编排拓扑与真实发生的失败-恢复。子代理的最终消息回传给主控(用户看不到),主控负责落盘与综合。
真实踩坑:第一批 4 个检索子代理因 WebSearch/WebFetch 是「延迟加载工具」(deferred),没先用 ToolSearch 把 schema 载入就直接调用,结果空转、不写文件。诊断后在每个子代理 prompt 顶部加了强制的「STEP 0:ToolSearch query="select:WebSearch,WebFetch"」+「文件必须写盘才算完成」两条硬约束,重新派发即恢复。这类失败全部如实记进了 CHANGELOG。

1.1 AI 侧用量统计(本会话真实数据)

下列数字均从本会话的子代理 transcript(93 个后台任务文件)中实测汇总 measured。说明:这些是子代理侧合计,且包含「子代理递归再分裂」出的 helper;主控自身 token 未计入。cache_read 巨大是因为每个 agent 启动时会重读被缓存的上下文(这是正常的,且大部分走缓存、单价低)。

模型 & 规模

主模型Claude Opus 4.8
后台任务文件93 个
子代理运行~84(含递归 helper)
后台 bash 任务9(拟合/编译等)

Token 合计(子代理侧)

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 都要把共享上下文读进来,这正是「多代理换上下文窗口」策略的代价与收益所在。

2文献检索:不是「搜一下」,而是查询设计 + 逐条去伪

novelty 是论文的生死线,所以 Phase 0 是硬门槛:动任何推导前先把先验工作查穷尽。策略是四路正交分解——把"可能撞车"的空间切成互不重叠的子域并行扫,再交叉三角验证。

2.1 查询设计

2.2 去伪:搜索引擎的归属经常是错的

核验纪律:每个要进参考文献的 arXiv 号,都用 WebFetch 打开摘要页核对「标题+作者+年份+期刊」四项一致才采纳;否则标 [arXiv unverified]。检索中剔除了多条张冠李戴,例如:把 2412.19371 误归给 Yang Bai(实为 Rosenlyst)、把不存在的"Mohapatra-Nussinov box-diagram"当先例、把 1503.07874(其实是对撞机 EFT)误当 loop-DD。这些假归属若进了 bib,审稿人一眼能看穿。

2.3 最终 novelty 判定 + 引用树终查

四路报告综合成一页判定 lit/00-novelty-synthesis.md:核心新意(单旋钮统一)真新;box portal 与 σ/m(v) 是支撑、部分被预占,逐条技术区分。最后做 INSPIRE 引用树终查确认优先权:

最近邻论文INSPIRE recid被引结论
2602.18753(box portal 最像;第一作者本人前作31228020无后续,改为自引扩展
2410.23631(confining+loop DD)284426077 篇全为相邻但不同主题,未预占

→ 单旋钮 glueball↔暗π SIDM + SM-色 box portal + ADM 的组合未被占据decision

3Block 1:模型定义——一个被对称性逼出来的判定

定模型时第一个岔路是「几种暗夸克 N_f」。最初想 N_f=1(最简),但用 Goldstone 计数自检后否决了——这是个纯对称性论证,我现场用 sympy 算了一遍。

手征破缺与 Goldstone 计数(code/verify_block1.py)

SU(N≥3) 复表示: SU(N_f)L×SU(N_f)R → SU(N_f)V ⟹ N_f²−1 个 Goldstone N_f=2 → 3 个暗π ✓
SU(2) 赝实表示: SU(2N_f) → Sp(2N_f) ⟹ 2N_f²−N_f−1 个 N_f=2 → 5 个(含双夸克)
判定 N_f=2 decision:N_f=1 时上式给 0 个 Goldstone——唯一的赝 Goldstone 是 η′,被 U(1)A 反常顶到 ~Λ_d,没有任何参数级别轻的介子当 mediator。先验佐证:Francis-Hudspith-Lewis-Tulin (1809.09117) 的 N_f=1 暗物质正是无暗π、DM 是自旋-1 的 ρ。所以取 N_f=2、选 N≥3(复表示,干净的 3 暗π 同位旋三重态)。

谱随旋钮 r 的标度(QCD/格点标定)

m0++/√σ = 3.405(21) [SU(3)], 3.072(14) [SU(∞)] Athenodorou-Teper 2007.06422 measured
GMOR: mπ² = 2B·mq ∝ r ; MB ≈ kB·N·Λd, kB≈0.71 QCD 标定 derived

三项现场自检全过:Goldstone 计数、谱走向、SIDM 尺度自洽(取 Λ_d≈0.5 GeV → M_B≈1 GeV、m_π≈几十 MeV,落在标准 SIDM 窗口)。

4Block 2:box loop 积分 → 有效算符与标度

连接子 {ψ,Φ}(带 SM 色 × 暗色)在一圈 box 图里跑。M_ψ,M_Φ ≫ Λ_d 做重质量展开;box 是紫外有限的,手征性禁止质量插入,匹配到维度-6 矢量算符:

Obox = Cbox (q̄γμq)(Q̄γμQ), Cbox ~ yq²yQ² / (16π² M²) M=max(M_ψ,M_Φ)
⟹ σSI ∝ y⁸ / Mψ对比 2602.18753:γγ 维度-8,∝ M_ψ⁻⁸

数值(code/box_calc.py,主控复跑):M_ψ=1.5 TeV、y=1 → σ_SI ≈ 4.66×10⁻⁴⁵ cm² derived,远低于 GeV 级直接探测界。解耦论证:SIDM 强度由 (Λ_d, r) 定,核子耦合由 (y, M_ψ) 定——参数上正交。

5Block 3:σ/m(v) 数值方法(科学核心)

这块是整个工作的心脏,也是两次证伪的发生地。任务:从介子交换势出发,解出转移截面随速度的变化,做麦克斯韦平均,χ² 拟合矮星系→星系团真实数据。

5.1 为什么是「转移截面」而非总截面

约定对齐:观测端(KTY16、Sagunski21)对各向异性散射用的是动量转移加权的转移截面 σ_T = ∫(1−cosθ)(dσ/dΩ)dΩ,并以 ⟨v⟩=(4/√π)σ1D 的麦克斯韦平均给出有效 σ/m。模型曲线必须用同一种平均才能和数据比——这点从文献里逐字核出并写进 lit/02

5.2 三区制求解(CLASSICS 移植)

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)

5.3 麦克斯韦速度平均

96 点 Gauss-Legendre 求积(np.polynomial.legendre.leggauss(96))在麦克斯韦相对速率分布上算 ⟨σ_T v⟩/⟨v⟩,与数据论文约定一致;扫 v=10–3000 km/s。快速版供参数扫描、自适应 quad 版供单点高精度。

6Block 4:玻尔兹曼数值求解 → 暗物质必须非对称

对称冻结用标准 Boltzmann ODE,变量 Y=n/s、x=M_B/T_SM,scipy.solve_ivp(BDF)求解,Gondolo-Gelmini 约定,并用 Steigman 2012 热遗迹基准校准(在 100 GeV 复现 Ωh²=0.121,误差 ~1%)。

dY/dx = −(1/2)·λ·(Y²−Yeq²), λ = ⟨σv⟩·s/(H·x) Kolb & Turner 5.26
关键结果(诚实) derived:在 SIDM 尺度 ⟨σv⟩~π/Λ_d²≈12.6 GeV⁻²(几何值),比热遗迹值大 ~10⁹。对称冻结欠丰 ~10⁹;要对称给对需 Λ_d≈27 TeV(偏离 SIDM 尺度 5×10⁴)。⟹ 强相互作用逼出非对称暗物质(ADM):精确 U(1)B 支持暗重子不对称,Y_DM≈4×10⁻¹⁰(约可见重子的 5 倍)自动给出 Ω_DM≈5Ω_b。N_eff 要求冷暗扇区 ξ<0.46,与之同一角落,自洽。

7两次机制证伪与修复(最能体现方法论)

证伪一 · 解析

赝标量单π交换的中心力被压低 ~3×10⁻⁷

暗π 是赝标量,单π交换给自旋-自旋/张量势,自旋无关中心 Yukawa 被 (m_π/2M_B)² 压低。code/ope_mediator_check.py 现场算出该因子 ≈3.4×10⁻⁷ derived ⟹ 轻暗π 单独不能当中心 mediator。

证伪二 · 数值拟合

共振 SIDM 拟合后否决:曲线太陡

改试 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 导出。

方法论要点:两次「难看的中间结果」全部留在仓库(含被否决的共振代码与对比表)。一个会自我证伪、把弯路如实记录的工作流,比一路顺风的更可信。

8拟合算法与诚实性检验

最终 TPE 拟合(code/fit_tpe.py):对有效参数 (α_d, 2m_π, M_B) 用 scipy.differential_evolution 全局优化,χ² 含 5 个双边数据点 + 星系团单边上限罚项。结果:

α_d ≈ 0.34, 2m_π ≈ 56 MeV, M_B ≈ 38 GeV, χ²/dof ≈ 2.8 derived

内建诚实性检验(写在 fit_resonant_fast.py 里):

9工程实践:让研究可追溯、可复现

Git 作为研究日志

每完成一个 block/判定就提交,commit message 记录物理结论与转折(含「resonant rejected」这种)。17 个提交串起完整路线。

跨会话记忆 + 续航文件

TODO/CHANGELOG/ARCHITECTURE + memory 文件,保证上下文压缩或换会话后不丢线索;子代理产出由主控落盘。

可复现 + 来源标注

13 个 Python 模块全部主控复跑验证;每个带单位的物理量标 measured/derived/estimate;格点/实验输入带 arXiv。

一句话总结技术工作流:正交分解的并行检索 + 逐条 arXiv 去伪 → 对称性逼出 N_f=2 → 三块物理并行(box 重质量展开 / CLASSICS 三区制 σ_T + GL96 速度平均 / solve_ivp 玻尔兹曼)→ 在核心处两次数值证伪、用核物理 TPE 洞察修复 → differential_evolution 拟合 + 内建造假检测 → 全程 git/记忆/复跑闭环。