本文档给新的 AI 助手和新的开发者一个最短接手路径。
目标不是重复 README,而是明确三件事:
- 真实实现在哪里
- 改不同任务时应该落到哪些文件
- 哪些边界不能打破
如果你还没有建立仓库的整体地图,建议先看:
这份文档更适合下面两类场景:
- 你准备开始改代码,但还不确定真实实现入口在哪里
- 你需要快速判断某项改动会不会踩到 benchmark / ship / 可视化边界
仓库有两条主线:
benchmark用动态多目标标准测试问题验证 KEMMship_simulation用偏现实船舶会遇场景验证 KEMM 在物理语义问题上的表现
它是研究代码库,不是单次 demo 仓库。
优先修改这些位置:
apps/benchmark_runner.pyapps/ship_runner.pyapps/reporting/benchmark_visualization.pykemm/algorithms/*.pykemm/adapters/*.pykemm/core/*.pykemm/benchmark/*.pykemm/reporting/*.pyship_simulation/*reporting_config.py
这些文件主要是兼容层,不是新逻辑的首选落点:
run_experiments.pybenchmark_algorithms.pyvisualization.pyadaptive_operator.pycompressed_memory.pygeodesic_flow.pypareto_drift.py
kemm/algorithms/kemm.py
kemm/adapters/benchmark.py
kemm/core/adaptive.pykemm/core/memory.pykemm/core/drift.pykemm/core/transfer.pykemm/core/types.py
ship_simulation/scenario/encounter.pyship_simulation/scenario/generator.pyship_simulation/optimizer/problem.pyship_simulation/optimizer/episode.pyship_simulation/optimizer/selection.pyship_simulation/core/collision_risk.pyship_simulation/core/ship_model.py
- benchmark 图:
apps/reporting/benchmark_visualization.py - ship 图:
ship_simulation/visualization/report_plots.py - 公共风格:
reporting_config.py
ship 主线当前默认语义是:
- 偏现实场景
- 静态障碍 + 动态交通体 + 环境场
- 滚动重规划 episode
- 同一个 episode 内复用同一个 KEMM session
- 3 主目标优化
- 完整报告默认使用
full_tuned场景 solve profile - quick 报告默认回退到
legacy_uniform - 额外输出分析指标
- 核心论文图包默认开启
- 轨迹类图默认展示 representative run,统计表保留 repeated-run aggregates
关键公共接口:
EncounterScenarioPlanningStepResultPlanningEpisodeResultExperimentSeriesShipPlotConfig
benchmark 主线已经把图表层与算法层隔离:
- 图表层消费
BenchmarkFigurePayload - 机制诊断通过
KEMMChangeDiagnostics - benchmark 图表不应继续直接探测算法私有字段
这条边界要保持住。
- benchmark 图表层不直接访问算法私有属性
- ship 主线禁止依赖 benchmark-only prior
- 绘图参数优先集中在
reporting_config.py - 根目录 legacy 文件继续保持薄兼容
- 新图和新逻辑不要灌回兼容层
- ship 侧真实 KEMM 机制开关优先走
DemoConfig.kemm.runtime,不要只改包装层预算字段 - ship 报告算法顺序和集合优先走
DemoConfig.report_algorithms - 严格可比实验优先走
--strict-comparable自动注入*_matched分组,不要手工复制预算参数 - 如果动 ship 场景生成逻辑,同步保证
scenario_catalog.json还能记录 family / seed / difficulty - 如果改了统计口径,同步维护
raw/statistical_tests.*与reports/statistical_significance.md语义 - 如果改了扰动扫描口径,同步维护
raw/robustness_*与reports/robustness_sweep.md
python -m apps.benchmark_runner --quick --force-rerun --algorithms KEMM --problems FDA1
python ship_simulation/run_report.py --quick --scenarios crossing --n-runs 1 --algorithms kemm --summary-only
python -m unittest discover -s tests -v
python -m apps.benchmark_runner --quick --output-dir benchmark_outputs/smoke
python ship_simulation/run_report.py --quick --scenarios crossing --n-runs 1README.mdAGENTS.mddocs/codebase_reference.mddocs/kemm_reference.mddocs/ship_simulation_reference.mddocs/visualization_guide.md
然后再进入具体代码文件。
至少确认:
tests/通过- benchmark 主线入口还能跑
- ship 主线入口还能跑
- 默认报告图能导出
- 结构化结果对象字段没有被破坏
- README 和细分文档没有继续引用旧接口或旧图名
只要默认导出图表发生变化,至少同步更新这些文件:
README.mddocs/figure_catalog.mddocs/visualization_guide.mddocs/ship_simulation_reference.mddocs/kemm_reference.md
原则是:
README.md只保留总索引和入口说明docs/visualization_guide.md说明怎么调图docs/figure_catalog.md说明每张图表达什么、论文里怎么写- ship 或 benchmark 专题文档负责把图表映射回实验叙事