乐于分享
好东西不私藏

我用 AI 工具和 Codex 做了一次高考志愿填报:从“算概率”到“用官方投档表验算”

我用 AI 工具和 Codex 做了一次高考志愿填报:从“算概率”到“用官方投档表验算”

这不是一篇“AI 帮我一键报志愿”的宣传稿。

更准确地说,这是一次把 AI 当作研究助理、数据整理员和审计员的实践:它可以把大量零散数据整理得很快,也能把错误暴露得很快;但最终决定必须由人做,最终结果必须以官方数据为准。

先说结论:AI 能帮什么,不能帮什么?

这次实践让我最深的感受是:高考志愿不是让 AI 给出一个“你能上什么学校”的答案,而是让它协助完成一套可核验的决策流程。

AI 和 Codex 最有价值的地方有三个:

  1. 整理:把学校官网、历年录取数据、招生计划、个人志愿表变成可以筛选和核对的结构化数据。
  2. 发现问题:找出表格中缺年份、漏专业、专业名称不一致、地方专项和普通类混在一起等问题。
  3. 事后验算:当官方投档数据公布后,按实际规则逐个验证志愿,而不是凭感觉猜“是不是录上了”。

它做不到、也不应该做的事情同样重要:

  • 不能承诺录取;
  • 不能把“模型概率”包装成真实概率;
  • 不能用没有来源的数据填表;
  • 不能替代招生章程、体检要求、专项资格审核和官方录取查询;
  • 更不能索取或公开考生号、准考证号、身份证号、分数、位次等敏感信息。

一、起点:不是“报学校”,而是先把边界说清楚

一开始,我们并没有直接问“能上哪些大学”,而是先列清楚不能接受什么、真正看重什么。

例如:

  • 只考虑国内公办本科;
  • 不考虑中外合作办学和明显高学费项目;
  • 回避部分不想就读的专业类别;
  • 可以接受省外;
  • 兼顾学校层次、专业方向、升学机会和就业现实;
  • 如果具备资格,希望同时比较普通类和地方专项。

这一步看起来普通,却决定了后面所有筛选规则。志愿填报不是一个“分数匹配器”,而是一个多约束条件下的排序问题。


二、最费时间的部分:把“看起来有数据”变成“可用的数据”

真正开始整理后,第一个困难不是算法,而是数据质量。

不同学校公布历史录取数据的方式差别非常大:有些页面按年份展示,有些是 PDF,有些按批次分类,有些专业名称在不同年份发生变化。有的表里有最低分却没有最低位次,有的地方专项记录和普通类记录混在一起。

因此,先后建立和核对的字段包括:

字段
为什么必须保留
年份
不同年份不能直接拿分数比较
省份、批次、选科要求
同一专业在不同范围内没有可比性
院校代码、专业代码
最可靠的匹配键,避免同名/改名造成误配
普通类或专项计划
两类计划不能混用录取数据
最低位次
比单纯分数更适合做跨年比较
招生计划数
计划增减会改变录取风险
学费、校区、体检限制
决定“录上了能不能读、愿不愿意读”
数据来源
每个结论都要能回到原始出处

在这个过程中,AI 并不是永远正确。我们就发现过:

  • 某些专业只带入了部分年份;
  • 原始数据里有记录,但汇总表里漏掉了;
  • 专业名称的括号说明不同,导致看似相同、实际不同;
  • 地方专项数据误混进普通类数据;
  • 一个“专业录取概率”表,和官方原始数据对不上。

这反而是这次实践最有价值的部分:AI 不是为了让人少看数据,而是让人更快地找到应该重点看的数据。


三、关于“录取概率”:我推翻了自己一开始的想法

最开始,我们根据历年最低位次、平均位次、波动幅度等信息,给不同志愿计算过“录取概率”。后来我做了一个很简单的极端测试:把考生位次改成一个极靠前的位置,结果有些志愿的概率仍然不高。

这说明模型有问题。

问题不在于公式写错,而在于“历史位次差”本来就不等于真正的概率。它至少还会受到这些因素影响:

  • 当年招生计划是否变化;
  • 专业热度是否突然变化;
  • 新增专业、校区调整、培养方向调整;
  • 其他考生的志愿选择;
  • 专项计划资格人群的实际竞争情况;
  • 只有少量历史年份时,样本本身就不够。

所以后来我们把表述改得更克制:

原来的说法
更诚实的说法
录取概率 72%
基于历史数据的风险评分,不是统计意义上的真实概率
肯定能上
位次明显优于往年,但仍需关注计划、体检和政策条件
学校最低位次够了
只能说明达到该专业或专业组的投档门槛,不能替代最终录取结果

这件事让我意识到:好的工具不是给出一个看似精确的百分比,而是让你知道这个百分比为什么不够可靠。


四、从“冲稳保”到真正的志愿排序

有了可核对的数据后,志愿排序不再只看“学校名气”,而是同时考虑四层问题:

实践中,最容易被忽视的是“录上读什么”。

例如,不能因为学校层次不错,就忽略专业是否适合自己;不能因为专业名字听起来热门,就默认本科就业好;也不能只看学校最低线,而不核对具体专业、校区、学费、色盲色弱限制、专项资格等条件。

在最终提交前,志愿表还专门检查了:

  • 是否混入中外合作或高收费项目;
  • 是否出现原本明确回避的专业;
  • 是否有异地校区;
  • 是否存在体检限制;
  • 地方专项是否标注准确;
  • 冲、稳、保是否真的有梯度,而不是一堆相近风险的选择。

五、最关键的一步:不要拿预测“自我感动”,要拿官方数据验算

志愿提交后,真正能检验这套过程的不是模型分数,而是官方投档数据。

当省级教育考试机构公布普通类常规批投档情况后,我们做了一件很朴素但很重要的事:

按提交时的志愿顺序,用“院校代码 + 专业代码”逐条匹配官方投档表,再比较考生位次与该专业的最低投档位次。

判断规则并不复杂:

如果:考生位次 ≤ 某志愿的最低投档位次那么:该志愿达到最低投档门槛平行志愿按顺序检索:第一个达到门槛的志愿,才是本轮最值得关注的投档去向。

最终,我们没有公开任何具体学校、分数、位次或专业代码,只保留脱敏后的结论:

  • 所有已填志愿均与官方投档表完成匹配;
  • 前面一部分志愿未达到当年实际最低投档位次;
  • 随后出现了第一个满足条件的志愿;
  • 后续即使还有更多“过线”志愿,按平行志愿的检索顺序也不再继续比较;
  • 最终录取仍必须以官方查询结果为准。

六、这次实践留下的五条经验

1. 位次通常比裸分更适合做跨年判断

每年的试卷难度和分数分布不同。做历史比较时,位次往往比单纯分数更有参考价值,但也不能脱离年份、计划和专业热度。

2. 学校线不等于专业线

“能进学校”不等于“能进想读的专业”。在可以获取专业层面数据时,应优先使用专业录取或投档信息。

3. 计划数不是边角料

招生计划变化会明显影响风险判断。只看往年位次,不看当年计划,结论可能失真。

4. 概率要有边界感

没有足够历史样本和完整计划数据时,所谓精确百分比只能是辅助评分。冲、稳、保和“风险原因”往往比一个漂亮的概率数字更有用。

5. 官方数据是最后的裁判

学校官网、考试院公布的招生章程、招生计划、投档表和录取查询,优先级高于第三方平台、经验帖和模型推算。


七、如果你也想用 AI 辅助报志愿,可以这样做

可以把 AI 当作一个不怕重复、擅长整理的助理,但请把它放在正确的位置上:

  1. 先写清楚自己的边界:城市、学费、专业、升学、就业、校区、是否接受专项计划等;
  2. 让 AI 帮你把资料整理成表,但每一列保留来源;
  3. 以官方招生网、考试院、招生章程为主,第三方数据只作补充;
  4. 对每一个“概率”“排名”“保研率”追问来源和计算口径;
  5. 填报前重新检查专业代码、选科、体检、学费、校区和专项资格;
  6. 公布投档数据后,再用官方表逐项验算,不用猜。

隐私说明:这篇文章如何脱敏

本文刻意未披露或已替换以下信息:

  • 姓名、考生号、准考证号、联系方式;
  • 具体分数、具体全省位次、具体录取位次;
  • 真实志愿清单、志愿序号、院校代码、专业代码;
  • 导出志愿表和官方投档表的原始截图;
  • 任何可能通过组合信息反推个人身份的细节。

如果要配截图,请务必做到:裁掉顶部身份栏、模糊分数/位次/代码/时间,最好直接使用重新绘制的示意图。


写在最后

这次实践没有把志愿填报变成一道“输入分数、输出答案”的题。

它更像一次数据尽调:先承认信息不完整,再尽量用可靠来源补齐;先让模型给出假设,再用官方结果验证假设;发现错误,就修正,而不是为最初的判断找理由。

AI 和 Codex 的意义,不是替一个人决定去哪里读大学,而是让这次决定变得更透明、更可追溯,也更接近事实。

本文仅记录一次个人化的 AI 辅助志愿填报流程,不构成志愿填报建议或录取承诺。不同省份、批次、选科与年份的规则均可能不同,请以当地教育考试机构和高校发布的最新官方信息为准。