---
title: NeoHorse-Jev-4B
canonical_url: "https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B"
md_url: "https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B.md"
repository: TokenRhythm/NeoHorse-Jev-4B
chinese_name: NeoHorse-Jev-4B
last_updated: 2026-09-25
license: apache-2.0
pipeline_tag: text-classification
tasks:
  - text-classification
base_model:
  - TokenRhythm/NeoHorse-1-4B
base_model_relation: finetune
parameters: 4.5B
tensor_type:
  - F32
  - BF16
library_name:
  - safetensors
  - pytorch
frameworks:
  - pytorch
downloads: 87
stars: 4
tags:
  - agentic
  - decision-model
  - typed-decisions
  - structured-prediction
  - non-generative
  - multimodal
  - vision-language
---

# NeoHorse-Jev-4B

> NeoHorse-Jev-4B - TokenRhythm 在 ModelScope 开源的模型。NeoHorse-JEV decision model with bundled inference package.

TokenRhythm/NeoHorse-Jev-4B 是 ModelScope 魔搭社区上的 4.5B 参数text-classification模型，采用 apache-2.0 许可，基于 TokenRhythm/NeoHorse-1-4B 构建。

- **Repository**: TokenRhythm/NeoHorse-Jev-4B
- **License**: apache-2.0
- **Tasks**: text-classification
- **Parameters**: 4.5B
- **Base model**: TokenRhythm/NeoHorse-1-4B
- **Tags**: agentic, decision-model, typed-decisions, structured-prediction, non-generative, multimodal, vision-language
- **Downloads**: 87
- **Stars**: 4
- **Last updated**: 2026-09-25

Source: https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B

---

<div align="center">
  <h1>NeoHorse-Jev-4B</h1>
  <p><b>面向智能体工作流的 Prefill-only 决策。</b></p>
</div>

<div align="center">
  <a href="https://github.com/TokenRhythm/NeoHorse"><img alt="GitHub" src="https://img.shields.io/badge/GitHub-NeoHorse-181717?logo=github&logoColor=white"></a>
  <a href="https://huggingface.co/collections/TokenRhythm/neohorse-jev"><img alt="Hugging Face" src="https://img.shields.io/badge/Hugging%20Face-Models-FFD21E?logo=huggingface&logoColor=000000"></a>
  <a href="https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B"><img alt="ModelScope" src="https://img.shields.io/badge/ModelScope-Models-624AFF?logo=modelscope&logoColor=white"></a>
  <a href="https://tokenrhythm.ai/"><img alt="Company" src="https://img.shields.io/badge/Company-TokenRhythm-F97316?logo=homeassistant&logoColor=white"></a>
  <a href="https://x.com/opensquilla"><img alt="Twitter / X" src="https://img.shields.io/badge/Twitter%20%2F%20X-OpenSquilla-111827?logo=x&logoColor=white"></a>
  <a href="https://www.apache.org/licenses/LICENSE-2.0"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/License-Apache--2.0-64748B"></a>
</div>

<div align="center"><a href="https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B/file/view/master/DEPLOYMENT.md">部署</a></div>

## 模型介绍

我们推出 **NeoHorse-Jev-4B**，这是基元律动（TokenRhythm）基于 [NeoHorse-1-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-1-4B) 构建的 **4B 级结构化决策模型**。给定状态与应用定义的问题，模型直接预测决策及其概率，可用于请求路由、工具选择、条件判断与结果评分。

模型采用 **prefill-only 推理**，支持 **Choice、Noul 和 Score** 三种决策类型，直接对调用方定义的答案进行预测，不进行自回归文本生成。

**NeoHorse-Jev-4B 在下文六组文本评测的综合得分为 77.70，在本次结果完整的四个开源权重决策模型中最高。** 在 Nimble、VitaminC 和 MASSIVE 三项评测上，平均准确率为 **83.26%**，较 NeoHorse-1-4B 基线提升 **11.50 个百分点**。

- **决策由应用定义。** 自定义候选动作、是／否问题或有序评分等级；文本请求可包含多个问题。
- **概率直接接入应用逻辑。** 使用候选分布、是／否概率和期望评分设置路由规则与阈值。
- **支持本地部署。** 可选 vLLM、SGLang，或原生 Python、CLI 与 HTTP runtime；也支持单张图片与文本联合输入。

## 决策演示

![NeoHorse-Jev-4B 六宫格决策演示](https://huggingface.co/TokenRhythm/NeoHorse-Jev-4B/resolve/main/assets/jev-six-demo-grid.gif)

**六个决策场景：** 俄罗斯方块、贪吃蛇、机器人操作、麻将、四方炸弹竞技与自动驾驶，按从左到右、从上到下排列。每个画面保留原始回放与决策展示，并独立循环播放。

## 评测

结果更新于 **2026 年 9 月 24 日**。以下为我们按所列协议开展的评测，文本准确率、图文理解与交互游戏分别报告。

### 文本决策评测

各项得分均为 0–100，越高越好。表中 NeoHorse-Jev-4B 的 JevBench、Kev 和 OpenJev 成绩采用 **vLLM** 结果；Nimble、VitaminC 和 MASSIVE 沿用原始固定子集评测结果。

| 模型 | JevBench | Kev | OpenJev 文本 | Nimble | VitaminC | MASSIVE | AVG |
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | **77.13** | 77.87 | **65.39** | <ins>80.50</ins> | 68.28 | 84.86 | <ins>75.67</ins> |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | 73.71 | <ins>81.47</ins> | 54.75 | 73.40 | 76.46 | **85.71** | 74.25 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 55.82 | 61.30 | 40.07 | 45.04 | **78.63** | 68.57 | 58.24 |
| [Laya Typed Decisions](https://huggingface.co/convaiinnovations/laya-typed-decisions) | -- | -- | -- | 48.94 | <ins>78.30</ins> | 65.43 | -- |
| **[NeoHorse-1-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-1-4B)** | -- | -- | -- | 69.15 | 63.27 | 82.86 | -- |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | <ins>75.73</ins> | **81.92** | <ins>58.74</ins> | **87.23** | 77.13 | <ins>85.43</ins> | **77.70** |

**加粗**表示表内开源权重模型的最佳结果，<ins>下划线</ins>表示次佳结果。`--` 表示暂无结果。NeoHorse-1-4B 作为基础模型参照，缺失项目不以零分或其他检查点的结果补齐。

**AVG** 是表中六组得分的等权平均值，在最终汇总后取舍小数。它不是将所有样本合并计算的准确率，也不是官方综合榜单。仅对六组结果齐全的模型比较该均分；图像与游戏结果不计入其中。

NeoHorse-Jev-4B 在本次参评的开源权重模型中取得 **Kev 81.92** 和 **Nimble 87.23** 的最高分。Open-Jev-9B 在 JevBench 和 OpenJev 静态文本任务上更高；Kev-4B 的 MASSIVE 成绩略高，Laya 系列在 VitaminC 上更高。综合优势来自跨任务的整体表现，各项任务仍有不同的强弱点。

<details>
<summary>评测范围、样本数量与汇总方式</summary>

| 基准组 | 评测范围 | 总览采用的指标 |
| --- | --- | --- |
| JevBench | 公开的 231 条样本 | 官方按任务族计算的宏平均分 |
| Kev | decision-v7、transfer-v4、transfer-v9 的开发集与测试集，共 6,436 条输入记录 | 六项 clean accuracy 的等权平均值；一条记录可能包含多个决策 |
| OpenJev 文本 | 静态文本任务：NLI、多选候选重排、固定候选 GSM8K | 19 项任务分数的等权平均值；两个 MNLI 分支先取平均 |
| Nimble | 从 324 条样本中筛选 282 条，保留完整关联案例组；包含 116 条 Choice、112 条 Noul、54 条 Score | 逐样本决策完全匹配准确率，评分任务也要求等级完全匹配 |
| VitaminC-dev | 上游 Nimble 采样流程提供的 599 条样本 | 证据与声明的三分类准确率 |
| MASSIVE-en | 上游 Nimble 采样流程提供的 350 条英文测试样本 | 18 类助手场景分类准确率；不涉及意图／槽位或多语种评测 |

Nimble、VitaminC 和 MASSIVE 的样本 ID 与记录在模型对比前已冻结，参考答案仅用于评分，不进入模型输入。上游 VitaminC／MASSIVE 采样使用随机种子 `20260918`，并保留完整案例组。本地筛选限制为 state 不超过 384 tokens、编码后的决策输入不超过 2,048 tokens、候选不超过 26 个；基础模型的选项字母 logit 提示允许 4,096 tokens。这些是三项数据集的子集筛选规则，不是所有基准或部署方式的统一限制。Nimble 经长度与整组筛选后从 324 条降至 282 条，另两项子集全部通过。

</details>

<details>
<summary>Nimble、VitaminC 与 MASSIVE 三项均分</summary>

| 模型 | 三项平均准确率（%） |
| --- | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | 77.88 |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | <ins>78.53</ins> |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 64.08 |
| [Laya Typed Decisions](https://huggingface.co/convaiinnovations/laya-typed-decisions) | 64.22 |
| **[NeoHorse-1-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-1-4B)** | 71.76 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | **83.26** |

此处对 Nimble、VitaminC 和 MASSIVE 等权平均，不将 1,231 条样本合并计算。三项均分沿用原始报告，基于未取舍小数的准确率计算；若直接对表中两位小数重新求均值，可能相差 0.01。例如，Kev 原始报告的均分为 78.53。上文 AVG 则按六组展示分数单独定义。

</details>

<details>
<summary>文本评测明细：JevBench、Kev 与 OpenJev</summary>

**JevBench。** 在公开的 231 条样本上，NeoHorse-Jev-4B 的逐样本准确率为 75.32%，输出格式有效率为 100%。总览中的 75.73 为按任务族计算的宏平均分，不是逐样本平均。

| 模型 | adequacy | adversarial | ambiguous | extraction | fact | intent |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | **83.33** | **100.00** | 42.86 | 91.67 | **100.00** | **100.00** |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | 66.67 | **100.00** | <ins>57.14</ins> | <ins>95.83</ins> | **100.00** | <ins>95.83</ins> |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 66.67 | <ins>50.00</ins> | 14.29 | 83.33 | <ins>83.33</ins> | 83.33 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | <ins>75.00</ins> | **100.00** | **71.43** | **100.00** | **100.00** | **100.00** |

| 模型 | judge_hard | long_policy | multi_hop | ordinal | policy | probability |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | **76.47** | **47.37** | **66.67** | **100.00** | **100.00** | **60.00** |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | <ins>52.94</ins> | <ins>21.05</ins> | <ins>55.56</ins> | **100.00** | <ins>91.67</ins> | <ins>50.00</ins> |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 41.18 | <ins>21.05</ins> | 33.33 | <ins>91.67</ins> | 83.33 | <ins>50.00</ins> |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | <ins>52.94</ins> | **47.37** | <ins>55.56</ins> | **100.00** | **100.00** | 40.00 |

| 模型 | routing | routing_hard | temporal_numeric | tool_selection | tradeoff | trap |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | <ins>66.67</ins> | **100.00** | <ins>20.00</ins> | **100.00** | <ins>33.33</ins> | **100.00** |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | **100.00** | **100.00** | 6.67 | **100.00** | <ins>33.33</ins> | **100.00** |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 50.00 | <ins>20.00</ins> | **33.33** | **100.00** | **100.00** | 0.00 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | **100.00** | **100.00** | 0.00 | **100.00** | <ins>33.33</ins> | <ins>87.50</ins> |

样本数： adequacy: 12; adversarial: 6; ambiguous: 7; extraction: 24; fact: 12; intent: 24; judge_hard: 17; long_policy: 19; multi_hop: 18; ordinal: 12; policy: 12; probability: 10; routing: 12; routing_hard: 5; temporal_numeric: 15; tool_selection: 12; tradeoff: 6; trap: 8.

**Kev。** 下表为各数据集的 clean accuracy（%）；输入记录数与决策数不同。

| 模型 | decision-v7 / development | decision-v7 / test | transfer-v4 / development | transfer-v4 / test | transfer-v9 / development | transfer-v9 / test |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | 80.30 | 77.00 | 77.44 | 83.54 | 72.47 | <ins>76.48</ins> |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | **87.18** | **87.08** | <ins>79.73</ins> | <ins>83.69</ins> | <ins>74.76</ins> | 76.39 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 66.22 | 65.50 | 65.09 | 65.55 | 52.39 | 53.06 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | <ins>86.23</ins> | <ins>86.58</ins> | **81.71** | **84.60** | **75.53** | **76.86** |

输入记录数： decision-v7 / development: 1,204; decision-v7 / test: 1,176; transfer-v4 / development: 764; transfer-v4 / test: 764; transfer-v9 / development: 1,264; transfer-v9 / test: 1,264.

**OpenJev 静态文本。** NLI 分类准确率（%）：

| 模型 | scitail | anli_r1 | anli_r2 | anli_r3 | wanli | control |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | 79.16 | **74.00** | **66.30** | **59.42** | **67.10** | **67.58** |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | <ins>84.81</ins> | 65.60 | 54.30 | 52.25 | 63.50 | 64.35 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 74.84 | 48.40 | 38.80 | 34.33 | 53.00 | 37.64 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | **87.02** | <ins>67.20</ins> | <ins>56.20</ins> | <ins>53.42</ins> | <ins>65.74</ins> | <ins>65.96</ins> |

| 模型 | MNLI / validation_matched | MNLI / validation_mismatched |
| --- | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | 80.64 | 80.54 |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | **89.17** | <ins>89.35</ins> |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 63.28 | 64.27 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | <ins>88.95</ins> | **89.46** |

样本数： scitail: 2,126; anli_r1: 1,000; anli_r2: 1,000; anli_r3: 1,200; wanli: 5,000; control: 805; MNLI / validation_matched: 9,815; MNLI / validation_mismatched: 9,832.

多选候选重排准确率：

| 模型 | arc_easy | arc_challenge | winogrande | gsm8k_mc4 | gsm8k_mc10 | gpqa |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | **95.71** | **87.29** | **66.30** | **52.69** | **35.71** | **37.37** |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | 75.42 | 66.89 | 58.33 | 38.59 | 20.77 | 33.84 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 40.19 | 33.36 | 49.64 | 24.26 | 8.49 | 26.77 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | <ins>88.93</ins> | <ins>78.50</ins> | <ins>60.69</ins> | <ins>41.77</ins> | <ins>21.83</ins> | <ins>34.34</ins> |

| 模型 | gpqa_fewshot | chess | hellaswag | mmlu | mmlu_fewshot |
| --- | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | **39.90** | **52.40** | **54.09** | **66.80** | **65.05** |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | <ins>34.85</ins> | 19.20 | 18.92 | 52.29 | 57.50 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 22.22 | <ins>29.60</ins> | 28.44 | 29.96 | 26.58 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | 34.34 | 22.00 | <ins>34.95</ins> | <ins>59.19</ins> | <ins>60.20</ins> |

样本数： arc_easy: 2,376; arc_challenge: 1,172; winogrande: 1,267; gsm8k_mc4: 1,319; gsm8k_mc10: 1,319; gpqa: 198; gpqa_fewshot: 198; chess: 500; hellaswag: 10,042; mmlu: 14,042; mmlu_fewshot: 14,042.

**固定候选的 GSM8K，共 200 条样本。** 主指标为 `nli_rerank@4`：

| 模型 | nli_rerank@4 | nli_rerank_margin@4 |
| --- | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | **95.00** | **95.00** |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | 89.50 | 89.50 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 91.00 | 91.50 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | <ins>94.50</ins> | <ins>94.00</ins> |

样本数： nli_rerank@4: 200; nli_rerank_margin@4: 200.

共享候选集的贪心准确率为 93.00%，多数投票准确率为 93.50%，oracle@4 上限为 97.00%。这些数值描述的是同一候选池，不是各决策模型分别生成候选的结果。19 项任务汇总采用主重排指标，不计辅助 margin 指标。

</details>

### 图文理解评测

在 **Image-NLI** 的 **8,000 条样本**上，NeoHorse-Jev-4B 使用 vLLM 的准确率为 **60.65%**，原生 runtime 为 60.66%。该任务结合图片与文本上下文判断声明是否成立。

| 模型 | 总体 | `vqa_answer` | `vqa_answer_neg` | `vqa_disagree` | `vqa_spatial` | `vqa_yesno` |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)**<br>vLLM | 60.65 | 75.94 | 68.79 | 52.88 | 59.95 | 48.53 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)**<br>原生 runtime | 60.66 | 75.94 | 68.63 | 52.98 | 60.03 | 48.37 |

样本数： 总体： 8,000; `vqa_answer`: 1376; `vqa_answer_neg`: 644; `vqa_disagree`: 1040; `vqa_spatial`: 3648; `vqa_yesno`: 1292.

对比报告没有提供 Kev-4B、Open-Jev-9B 或 Laya 的 Image-NLI 结果，因此这里只报告能力测量，不做跨模型排名。图像素材在本地重建并冻结，未声称复现上游作者未公开的原始图像素材。

<details>
<summary>Doom 图片输入：全部 11 种候选配置</summary>

| 模型 | `action` | `danger` | `pixels` | `pixels_pct` | `pixels_sym` | `precise` |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)**<br>vLLM | 1.00 | 1.40 | 9.20 | 7.40 | 8.40 | 16.00 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)**<br>原生 runtime | 1.00 | 1.40 | 11.80 | 8.80 | 10.00 | 15.60 |

| 模型 | `should` | `thirds` | `where` | `where_closest` | `where_plain` |
| --- | ---: | ---: | ---: | ---: | ---: |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)**<br>vLLM | 1.00 | 12.80 | 1.40 | 1.40 | 6.00 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)**<br>原生 runtime | 1.00 | 10.60 | 1.40 | 1.40 | 8.40 |

每种配置运行 5 局，分数为平均击杀数。作者配置中的 `pixels`、`pixels_sym`、`precise`、`thirds`、`where_closest` 五项采用已完成的重跑结果，其余六项沿用有效结果。报告未提供其他参评模型的图片接口成绩。由于候选描述会明显影响表现，此处列出全部配置。

</details>

### 交互决策任务

9 月 24 日的结果包含已完成的游戏重跑，以及修正 Minecraft 动作执行后的评测。下表按指定候选配置分别报告；未另行标注后端时，NeoHorse-Jev-4B 均采用 vLLM。**文本状态的 Doom、Flappy 和 Minecraft 不属于图片输入评测。** 游戏分数使用各自的计量单位，不计入文本综合分。

<details>
<summary>跨模型游戏对比：Doom、Flappy 与 Minecraft</summary>

**Doom 文本状态：平均击杀数，每种配置运行 5 局。**

| 模型 | `position` （作者配置） | `position_none` （包含无敌人条件） | `aligned_state` （对齐目标与容差） |
| --- | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | 11.20 | 7.80 | 18.60 |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | 1.40 | 10.40 | 14.20 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 1.00 | 1.60 | 1.00 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | 1.40 | 10.60 | 14.40 |

`aligned_state` 修改了目标定义与容差描述，因此与作者的 `position` 配置属于不同决策策略。环境对照结果为 random 平均击杀 1.00、oracle 平均击杀 16.60；仅 5 局的结果不宜理解为精确排名。

**Flappy：平均通过管道数。** 实时结果受部署路径影响，因此同时列出 NeoHorse-Jev 的两种后端。此表对时序敏感，不标注最佳／次佳。

| 模型 | sign （作者配置） | position （作者配置） | action （实时） | action （等待模型） | position_v （实时） | position_v （等待模型） |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | 28.00 | 23.50 | 0.60 | 0.70 | 8.95 | 48.00 |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | 28.00 | 2.67 | 0.00 | 0.10 | 26.80 | 48.00 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 19.00 | 0.50 | 0.00 | 0.00 | 0.00 | 0.00 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)**<br>vLLM | 27.67 | 27.67 | 0.05 | 0.05 | 15.35 | 48.00 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)**<br>原生 runtime | 28.00 | 27.83 | 0.00 | 0.05 | 42.00 | 48.00 |

配置：sign（作者配置）与 position（作者配置）为 6 局、最多 900 帧、15 FPS；action（实时）与 position_v（实时）为 20 局、最多 1500 帧、30 FPS；action（等待模型）与 position_v（等待模型）为 20 局、最多 1500 帧、0 FPS。

`FPS = 0` 表示每一步都等待模型响应。Flappy 的游戏结果不是控制变量后的跨模型速度基准。

**真实 Minecraft：成功率（%），每种策略运行 10 局，每局最多 60 个决策步骤。**

| 模型 | flat/action | flat/state | chain |
| --- | ---: | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | 0.00 | 80.00 | 100.00 |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | 0.00 | 60.00 | 90.00 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 0.00 | 0.00 | 20.00 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | 20.00 | 50.00 | 90.00 |

评测已修正动作取消与寻路失败处理，动作超时为 240 秒。`flat/action` 为单独运行的 10 局；`flat/state` 与 `chain` 使用相同的修正后执行设置。NeoHorse-Jev 原生 runtime 的对应结果为 30.00%、40.00% 和 90.00%。环境 oracle 在不同模型运行批次中的成功率也在 70–100% 之间，random 为 0%，因此环境波动仍需考虑。

**模拟 Minecraft：成功率（%），每种策略运行 10 局，每局最多 60 个决策步骤。**

| 模型 | flat/action | chain |
| --- | ---: | ---: |
| [Open-Jev-9B](https://huggingface.co/ZefanCai/Open-Jev-9B) | 0.00 | 100.00 |
| [Kev-4B](https://huggingface.co/jaredpalmer/kev-4b) | 0.00 | 100.00 |
| [Laya English](https://huggingface.co/convaiinnovations/laya) | 0.00 | 0.00 |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | 0.00 | 100.00 |

模拟环境的 oracle 成功率为 100%，random 为 0%。模拟与真实 Minecraft 属于不同设置，不合并求均值。

</details>

## 模型下载

| 模型 | 下载地址 | 参数规模 | 基础模型 |
| --- | --- | --- | --- |
| **[NeoHorse-Jev-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)** | [🤖 ModelScope](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B)<br>[🤗 Hugging Face](https://huggingface.co/TokenRhythm/NeoHorse-Jev-4B) | 约 4B | [NeoHorse-1-4B](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-1-4B) |

请下载完整模型包，包括 backbone、tokenizer、独立决策头与配套 runtime wheel。[GitHub 源码仓库](https://github.com/TokenRhythm/NeoHorse/tree/main/jev) 提供推理源码、后端适配脚本与示例。

<details>
<summary>模型详情</summary>

| 项目 | 内容 |
| --- | --- |
| 参数规模 | 约 4B |
| 基础模型 | NeoHorse-1-4B |
| 输入 | 文本，或单张图片与文本联合输入 |
| 决策类型 | Choice、Noul、Score |
| 推理方式 | Prefill-only |
| 许可证 | Apache-2.0 |

</details>

## 部署

可选择 [vLLM](#vllm)、[SGLang](#sglang) 或[原生 runtime](#原生-runtime)。三种方式都需要从 ModelScope 或 Hugging Face 下载完整模型包。

每种后端使用各自已有的独立环境。适配脚本与请求示例维护在 [GitHub 源码仓库](https://github.com/TokenRhythm/NeoHorse/tree/main/jev) 中；如果只下载了模型包，先获取源码：

```bash
git clone https://github.com/TokenRhythm/NeoHorse.git
cd NeoHorse/jev
```

以下命令在克隆后的 NeoHorse 源码仓库的 `jev/` 目录执行，将 `/path/to/model` 替换为从 ModelScope 或 Hugging Face 下载的完整模型目录。

### vLLM

使用已有的 **vLLM 0.28.0** 环境。

```bash
# 启动服务，保持此终端运行
CUDA_VISIBLE_DEVICES=0 python infer/vllm/launch.py \
  --bundle /path/to/model --port 30000

# 服务就绪后，在另一个终端执行推理
python infer/vllm/infer.py \
  --bundle /path/to/model \
  --url http://127.0.0.1:30000 \
  --request infer/request.json
```

### SGLang

使用已有的 **SGLang 0.5.17** 环境。

```bash
# 启动服务，保持此终端运行
CUDA_VISIBLE_DEVICES=0 python infer/sglang/launch.py \
  --bundle /path/to/model --port 30000

# 服务就绪后，在另一个终端执行推理
python infer/sglang/infer.py \
  --bundle /path/to/model \
  --url http://127.0.0.1:30000 \
  --request infer/request.json
```

示例请求随包提供，结果打印到终端，读取 `answers.move.choice` 和 `answers.move.probabilities`。两种后端也支持文本与单张图片联合输入；文本及图片请求示例、依赖安装和输入限制见 [infer/README.md](https://github.com/TokenRhythm/NeoHorse/blob/main/jev/infer/README.md)。

### 原生 runtime

`neohorse_decision` 提供本地 Python、CLI 推理，以及文本和图片决策的 HTTP 服务。展开下文查看安装步骤与三种决策类型的示例，完整 API 说明见[部署文档](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B/file/view/master/DEPLOYMENT.md)。

<details>
<summary>安装与调用示例</summary>

#### 1. 获取完整发布包

通过 [ModelScope](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B/files) 或 [Hugging Face](https://huggingface.co/TokenRhythm/NeoHorse-Jev-4B/tree/main) 获取完整发布包，并设置本地目录：

```bash
export MODEL_DIR="/path/to/NeoHorse-Jev-4B"
cd "$MODEL_DIR"
```

主要文件如下：

| 文件或目录 | 用途 |
| --- | --- |
| `backbone/` | 统一多模态主干，语言与视觉参数共用 safetensors 分片及索引 |
| `tokenizer/` | 对应 tokenizer |
| `pointer_head.safetensors` | 独立决策头 |
| `model_manifest.json` | 模型组成与来源记录 |
| `dist/`、`package/` | 推理包 wheel 与源码 |
| `example_request.json` | 三类问题的调用示例 |
| `vision/` | 本地图片调用和 HTTP 图片客户端示例 |

原生推理使用配套 `neohorse_decision` 包；vLLM 与 SGLang 适配脚本位于 [GitHub 源码仓库](https://github.com/TokenRhythm/NeoHorse/tree/main/jev/infer)，见上文[后端部署](#vllm)。三种方式都需要包含独立决策头的完整模型目录。

#### 2. 安装推理包

已记录的测试环境为 **Linux、Python 3.12、PyTorch 2.8.0、Transformers 5.17.0、Triton 3.7.1、flash-linear-attention 0.5.2**，使用支持 BF16 的 CUDA GPU。完整环境见 [environment.json](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B/file/view/master/environment.json) 和 [DEPLOYMENT.md](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B/file/view/master/DEPLOYMENT.md)。

以下命令假定上述 ML 依赖已在隔离环境中准备好，并以已分配的 GPU 0 为例：

```bash
python -m pip install --no-deps dist/neohorse_decision-1.0.0-py3-none-any.whl
python -m pip install 'fastapi==0.141.1' 'uvicorn==0.53.0' 'starlette==1.6.0' 'httpx==0.28.1' 'pillow==12.3.0'

CUDA_VISIBLE_DEVICES=0 neohorse-decision predict --model-dir . --request example_request.json
```

`--no-deps` 用于在已准备的环境中安装随模型提供的 wheel，不会安装上述全部 ML 依赖。统一主干权重约占 9.08 GB，实际显存需求还取决于输入和运行配置。**请下载完整模型仓库，并安装仓库内配套的推理包。**

#### 决策类型

| 类型 | 输入约定 | 输出含义 | 典型用途 |
| --- | --- | --- | --- |
| **Choice** | 以有序字典给出候选 key 和描述 | 选中候选及完整候选概率分布 | 请求路由、工具选择、候选动作选择 |
| **Noul** | 给出一个是／否问题 | 语句成立的概率 `P(true)` | 条件检查、过滤、工作流门控 |
| **Score** | 按低到高排列评分等级 | 等级概率分布与期望等级 | 质量评估、严重程度、优先级判断 |

Score 的等级从 `0` 开始编号，期望等级可以是小数。以上场景说明接口用途，具体任务效果需结合目标领域验证。

#### 3. Python 调用

**给一段状态，直接得到是非概率、候选选择或等级分数。** 下面用同一条用户消息，分别演示三个快速决策模式。

模型只需加载一次，后续例子复用 `engine` 和 `state`：

```python
import os

from neohorse_decision import DecisionEngine

engine = DecisionEngine(os.environ["MODEL_DIR"])
state = "同一笔订单扣了两次钱，请今天把多扣的那笔退给我。"
```

以下输出数字仅作格式示意，不是实测结果；实际值以模型运行为准。

##### Noul：判断“是不是”

**用户是否要求退款？** 返回“是”的概率 `P(true)`。

```python
result = engine.predict({
    "state": state,
    "questions": {
        "refund": {
            "type": "noul",
            "instructions": "用户是否要求退款？",
        },
    },
})
print(result["answers"]["refund"]["noul"])
```

示意输出：`0.97` → 模型判断“用户要求退款”的概率为 97%，应用可据此进入退款处理流程。

##### Choice：选择“哪一个”

**应该交给哪个团队？** 从给定候选中选一个，同时返回各候选的概率。

```python
result = engine.predict({
    "state": state,
    "questions": {
        "team": {
            "type": "choice",
            "instructions": "应该由哪个团队处理这条消息？",
            "criteria": {
                "billing": "账单、扣款或退款",
                "technical": "产品故障或技术问题",
                "other": "其他事项",
            },
        },
    },
})
print(result["answers"]["team"]["choice"])
print(result["answers"]["team"]["probabilities"])
```

示意输出：

```text
billing
{'billing': 0.96, 'technical': 0.03, 'other': 0.01}
```

应用读取 `billing`，将消息分派到账单团队。

##### Score：评价“多大程度”

**这件事有多紧急？** 按调用方给定的等级评分；等级从 `0` 开始，返回概率加权的期望分值。

```python
result = engine.predict({
    "state": state,
    "questions": {
        "urgency": {
            "type": "score",
            "instructions": "用户希望多快得到处理？",
            "criteria": ["可稍后处理", "本周处理", "今天处理"],
        },
    },
})
print(result["answers"]["urgency"]["score"])
```

示意输出：`1.9` → 接近等级 `2`（今天处理），应用可据此提高处理优先级。

将以上四个 Python 代码块按顺序保存为 `quickstart.py`，运行：

```bash
CUDA_VISIBLE_DEVICES=0 python quickstart.py
```

文本请求需要同时做三个判断时，把 `refund`、`team`、`urgency` 放进同一个 `questions` 字典即可，一次请求返回三个答案。决策阈值应根据自己的任务数据设置。

#### 4. 图片与文本联合决策

将页面截图保存为 `screenshot.png`，下面用 Choice 判断页面当前状态：

```python
import os

from PIL import Image
from neohorse_decision.vision import VisionDecisionEngine

vision_engine = VisionDecisionEngine(os.environ["MODEL_DIR"])
with Image.open("screenshot.png") as source:
    screenshot = source.convert("RGB")

result = vision_engine.predict({
    "model": "NeoHorse-Jev-4B",
    "state": "目标：提交表单。请根据当前页面截图判断。",
    "questions": {
        "page_status": {
            "type": "choice",
            "instructions": "截图显示的页面状态是哪一种？",
            "criteria": {
                "success": "已显示提交成功",
                "error": "已显示提交失败或错误",
                "processing": "正在提交或加载中",
                "unknown": "无法从截图确定提交状态",
            },
        },
    },
}, screenshot)
print(result["answers"]["page_status"]["choice"])
print(result["answers"]["page_status"]["probabilities"])
```

图片也支持 Noul 和 Score，每次请求限一张图、一个问题。完整三种模式及 HTTP 图片示例见 [图片调用说明](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B/file/view/master/DEPLOYMENT.md#6-图片调用)。

#### 5. HTTP 服务

启动服务：

```bash
CUDA_VISIBLE_DEVICES=0 neohorse-decision serve --model-dir "$MODEL_DIR" --port 8080
```

在另一个终端调用同样的 Noul 判断：

```bash
curl -sS http://127.0.0.1:8080/v1/systemone \
  -H 'Content-Type: application/json' \
  -d '{"model":"NeoHorse-Jev-4B","state":"同一笔订单扣了两次钱，请今天把多扣的那笔退给我。","questions":{"refund":{"type":"noul","instructions":"用户是否要求退款？"}}}'
```

服务默认绑定 `127.0.0.1`；对外访问时通过 `NEOHORSE_API_KEY` 启用 Bearer 认证，并使用 TLS 网关。原生接口为 `/v1/decision`，System One 风格接口为 `/v1/systemone`，`/health` 用于检查就绪状态。

完整请求格式、返回字段、默认限制及错误处理见 [部署与调用说明](https://www.modelscope.cn/models/TokenRhythm/NeoHorse-Jev-4B/file/view/master/DEPLOYMENT.md)。

#### 从源码安装

在已准备好上述 ML 依赖的环境中，于下载后的模型包根目录执行：

```bash
python -m pip install --no-deps ./package
```

`MODEL_DIR` 仍指向从 ModelScope 或 Hugging Face 下载的完整模型目录。推理源码位于 `package/src/neohorse_decision/`，图片客户端与本地调用示例位于 `vision/`。

</details>

## 使用边界

- **决策可能出错。** 合法结构和归一化概率不保证判断正确；证据缺失、候选描述、候选顺序及领域变化均可能影响结果。
- **概率需按场景验证。** 当前未报告 NLL、Brier、ECE 等校准结果，阈值应在独立数据上设定。
- **能力声明以实测为准。** 当前材料尚未建立多语种、长输入及多问题计算隔离的完整评测；一个请求包含多个问题，也不意味着只做一次共享前向。
- **应用负责执行约束。** 工具权限、业务规则与实际动作校验由调用方实现。现有资料未提供统一计时范围的延迟、显存和成本对比。

## 许可证与致谢

NeoHorse-Jev-4B 按 **Apache License 2.0** 发布。模型继承自 NeoHorse-1-4B，上游基础模型为 Qwen3.5-4B；随包提供的第三方 runtime 组件保留其许可证与归属声明。再分发时请保留相应版权、许可证和修改声明。

感谢 Jared Palmer 开源 [Kev](https://github.com/jaredpalmer/kev)，本项目的部分决策推理代码基于 Kev 适配。

如有疑问或需报告问题，请使用 [NeoHorse 问题反馈](https://github.com/TokenRhythm/NeoHorse/issues)。
