决策,而非 TOKEN

模型早就定了。
minojev 只是把它读出来

问聊天模型一个分流问题,它会先写出一段话,你的程序再费劲地把这段话解析回一个标签。 minojev 直接跳过这一步:一次前向传播,就返回一组带类型、经过校准的概率, 不生成任何 token

聊天模型

逐 token 生成,再解析
输出 token 0 耗时 0 ms

minojev

一次前向,直接读出分布
0.79
0.14
0.07
✓ 带类型 · 已校准 · decode_steps = 0
输出 token 0 耗时 ~12 ms

整个思路,一句话说清

模型读完你的问题,心里其实已经有答案了。让它把这个答案"写"出来,是拿到答案最绕也最贵的一条路。 minojev 直接从模型的隐藏状态里读出答案,变成一组你事先选好的选项上的概率。

0每个决策的输出 token 数
1每个问题只做一次前向
2–255候选数量,请求时定义
0.016迷宫模型的校准误差

它是怎么工作的

三步搞定,没有生成循环,也不用写解析器。

拼接候选

每个候选拼成一条输入:状态 + 问题 + 这个候选。同一个状态下的所有问题共用前缀。

跑一遍模型

所有候选一起送进模型跑一遍,决策头只读取隐藏状态,全程不生成任何 token。

读出并校准

选择、判断、打分三类问题都返回概率分布;用验证集拟合的温度让置信度保持真实。

哪里不一样

它不只是一个演示,这些是它的底气。

完全离线,从零训练

547k 参数的模型和字节分词器,在笔记本 CPU 上几分钟就能训完:不用下载模型、不用 API key、不用 GPU。

每个结论都能复查

数据集、参考分布、逐题预测、指标、回放数据,全部随仓库一起提交。

校准默认就做

温度在验证集上拟合并写进模型文件,校准前后的误差(ECE)都公开。

两种引擎

既可以自己从零训练决策头,也可以跳过训练,直接读取 Hugging Face 预训练模型的原生 logits。

多问题并行,状态复用

同一个状态下的多个问题一次算完;每个状态只预填充一次缓存,后面都是便宜的支线计算。

小到一下午读完

模型、训练、校准、演示全部加起来,一个下午就能读完。文档中英双语。

在线 Demo

都只是回放已提交的结果包——不需要任何后端模型。

留出集上的真实成绩

547k 参数,纯 CPU,用 scripts/build_results.sh 可完整复现。

83.8%迷宫准确率 · 命中参考最优 89.5%
97.7%距离评分命中率
0.016校准后迷宫误差(原 0.090)
366/秒开启状态复用后每秒的决策数
5/6智能体成功走出的迷宫数
41离线跑通的测试数

一分钟训一个模型

minojev synth  --out data/train.jsonl --count 512 --seed 17 --split train
minojev train  --train data/train.jsonl --dev data/dev.jsonl \
  --output-dir runs/synth --steps 800 --calibrate gold --device cpu
minojev score  --checkpoint runs/synth/checkpoint \
  --input examples/decisions.jsonl --output results.jsonl --mode reuse