# 版本演进 > 📌 **每一版都有 tag 和 GitHub Release,可以直接 checkout 到那一刻的完整代码。** > 对照表见 [TAGS.md](TAGS.md)。`main` 分支刻意保持不动。 这个目录记录每一版**当时是怎么想的**、**做了什么**、**最后测出来是什么结果**。 保留失败的版本不是为了存档,是因为这个项目里最有价值的产出恰恰来自一次失败: 第三版花了 997 次付费调用,证明了「让视觉大模型给照片打分」这条路在这个任务上等于掷硬币。 没有那 997 次,第四版就没有理由把主干挪到本地。 | 版本 | 核心思路 | 结果 | 文档 | |---|---|---|---| | v1 | 本机技术指标筛坏片 | 能判断「能不能用」,不能判断「好不好」 | [V1](V1-local-metrics.md) | | v2 | 视觉模型逐张评分 + 相似组比较 | 第一次能按画面内容出名单,但仍以排除坏片为主 | [V2](V2-vision-scoring.md) | | v3 | 六维 rubric + 双向盲比 + BT 排序 + 独立盲审 | **997 次付费调用 → AUC 0.497(= 随机)** | [V3](V3-agent-rubric.md) | | v4 | 排序主干挪回本地,大模型只做否决 | 0 次付费调用 → 交付 3/20(与 v3 打平) | [V4](V4-local-first.md) | | **v4.1** | 不要正样本,agent 问一句「要质量还是氛围」 | 人像交付 4/20;但 mood 那一档不显著,「问风格」一个单选框就能做 | [V4.1](V4.1-ask-the-style.md) | | **v4.2** | **匹配用户的选片结构** —— 不改打分,改输出的分布形状 | **人像 5/20 p=0.0056 · 风景 5/14 p=0.017 · 0 次付费调用** | [V4.2](V4.2-match-the-structure.md) | | **v4.3** | **眼部判定搬到原图** —— 最强的本地信号之前在 68% 的照片上不存在 | **眼睛读数覆盖 32% → 100% · 拦截 10→21 张 · 误杀仍为 0 · 挑50张 8→9/20** | [V4.3](V4.3-eyes-on-full-res.md) | | **v4.4** | **三阶段链路接上** —— 组内选优这一步以前从来没真正发生过 | **挑20张 5→6/20 p=0.0007 · 挑50张 9→10/20 · 先知裁判验证赛制上限 100%** | [V4.4](V4.4-three-stage-pipeline.md) | | **v4.5** | **发给视觉模型的图带上高清人脸** —— 512px 上人脸只剩 30 像素 | 91% 的照片人脸不足 48 像素,模型被要求判表情却看不见 | [V4.5](V4.5-face-crop-for-vlm.md) | | **v4.6** | **缩略图按 EXIF 方向摆正** —— 9% 的照片一直横躺且无声 | 交付未变好(10张 3→2、20张 6→6),但发给模型的图本来就是错的 | [V4.6](V4.6-exif-orientation.md) | | **v4.7** | **VLM 裁判第一次被真正测出来** —— 改一处措辞让一致率翻倍 | 一致率 23%→45%、准确率 21%→32%,但仍未过 60% 的线;三处旧结论更正 | [V4.7](V4.7-vlm-judge-measured.md) | 人像这条线把本地信号榨干之后的完整记录(含失败实验与天花板分析): [人像质量的天花板](V4.1-PORTRAIT-CEILING.md) 风景第一次实测,干净的负面结果(6 个美学模型全部等于随机): [风景:一个干净的负面结果](V4.1-SCENERY-NULL.md) agent 层完整测试(含导出路径第一次跑就抓到 agent 编造确认码): [v4.1 agent 版本测试](V4.1-AGENT-TEST-2026-08-31.md) **性价比最高的一处改动**(不改打分,改选片结构;让风景第一次过显著线): [时间段配额](V4.1-TEMPORAL-SPREAD.md) 配套记录: [在 DSH 上的真实运行](V4-DSH-RUN-2026-08-30.md)(8 次运行的过程与三次测量错误的修复)· [外部效度检验](V4-GENERALIZATION.md)(换一批照片失效的完整数据) ⚠️ **v4 没能通过外部效度检验**:换一批照片(另一趟旅行,133 张 / 6 金标)后, 指标排名完全翻转,没有任何配置在两个数据集上都显著。 详见 [V4 的外部效度检验](V4-GENERALIZATION.md) —— 这是整个项目最重要的一份记录。 ## 一句话总结这五版 v1 问「这张照片有没有毛病」,v2 问「模型觉得这张几分」, v3 把 v2 的分数用一整套审计机制包起来, v4 发现**问题出在分数本身**、于是换了产生分数的方式, v4.1 发现**连「什么算好」都得先问一句**, v4.2 发现**最强的先验是用户自己怎么挑** —— 让输出的形状去匹配他的行为, 比继续改进打分有效得多。 > v4 的文档保持原样未改,包括那些后来被推翻的主张。 > 只看结论看不出「一个看起来很有道理的想法是怎么被自己的数据否掉的」, > 而那个过程是这个项目最有价值的产出。 用户标注驱动的一次根因修复(含三处对既有结论的更正、一个被否决的方案): [眼部判定搬到原图](V4.3-eyes-on-full-res.md) 三阶段各自怎么解、走过哪些弯路、阶段 3 下一步怎么做: [三阶段完整链路](V4.4-three-stage-pipeline.md) ## 怎么读 - 想知道**这个项目在解决什么问题** → 回到 [项目 README](../../README.md) - 想**现在就用起来** → [v4 上手指南](../../ranker/README.md) - 想知道**怎么判断一个选片器好不好** → [测量方法](../MEASUREMENT.md) - 想看**一次失败是怎么被定位的** → [V3](V3-agent-rubric.md) 的「事后诊断」一节