欢迎光临
我们一直在努力

Spark-X2.5 长输入 Agent 实测:全量读取陷阱与解释器寻找死循环复盘,附可复现任务

星火 X2.5 长输入实测:它能读完 249 行纪要,却数不清 2000 行日志

Spark-X2.5 能力实测第 7 期 · 长输入与多步流水线
机器:R9-7900 + RTX 3070 8G + 64G | 引擎:llama.cpp(XHToken fork)
第 1 期我答应过要测"长文档"。这期就来还这个账。
结论有点反直觉:读长文它不虚,真正要命的是"一边读长文一边数数"。


一、"长"这件事,拆成三种难度

很多人一说"长上下文",脑子里只有一个数字——能塞多少 token。但真拿它干活,会发现"长"至少分三档难度:

难度

干什么

例子

读长文、做摘要

把一份长会议记录提炼成要点

读长文、还要产出多个东西

提炼待办 + 给每个人各写一封提醒邮件

读长文、还要精确统计

从几千行日志里数出某个错误出现几次

这期我三档各出一道题,让 1.7B 和 4B(都用 Q4 量化版)各跑两轮。


二、三道题

题 1 · 长纪要提炼:一份 249 行的会议转写稿(自动转写、没校对,带大量口语废话和跑题),让它提炼决议、待办、风险,并把关键数字抄对。

题 2 · 纪要转待办 + 催办邮件:从纪要里提取待办写进 todo.md,再给每位负责人生成一封提醒邮件——要产出多个文件。

题 3 · 长日志根因定位:一份两千多行的应用日志,混着 5 个服务的正常与异常记录,让它定位①故障服务名 ②故障时间窗 ③最主要的错误码 ④这个错误码一共出现多少次。

第 3 题我特意强调了:"请用工具统计,不要目测。"


三、结果:两档在"最难的那题"上一起栽了

任务

难度

4B-Q4

1.7B-Q4

长纪要提炼

2/2

2/2

纪要转待办 + 催办邮件

2/2

1/2

长日志根因定位

1/2

0/2

合计

2/3

1/3


四、反直觉的第一件事:长纪要,两档都不虚

我原本以为"长"会先从长度上把 1.7B 压垮。结果完全相反——

249 行的会议转写稿,1.7B 和 4B 都是 2/2 全过。

而且1.7B 只用 2 次工具调用、97 秒就完成了:4 位负责人的待办全提取、关键数字(注册转化率 +5%、预算 65 万)全抄对,还主动写了一句"本总结仅依据原文讨论内容,未新增信息"。

反观 4B,第二轮花了550 秒(比第一轮慢 6 倍),做的活一样。

所以:长上下文理解,不是小模型的短板。只要任务是"读进来 → 写成一份东西",它的注意力是够用的。这推翻了我对"1.7B 读不了长文"的预判。


五、反直觉的第二件事:要了命的是"统计"

真正的分水岭在第三题——要在两千多行里数出某个错误码出现了多少次。

这一题:

  • 4B:1/2(一轮过,一轮崩)

  • 1.7B:0/2(两轮全崩)

为什么"读长文"没问题,"读长文 + 数数"就崩?

因为这两件事的能力要求完全不同:

  • 提炼摘要是"理解"——模型擅长;

  • 精确计数是"把长文件交给代码去数"——这要求模型主动想到"我不该用眼睛数,我该写一行命令"。

而两档模型的第一反应,都是"先把整个文件读进来看看"。


六、两种失败,都不是"算错",是"没走到算"

这期最有价值的部分,是把两轮失败的命令序列翻出来看——它们的失败方式完全不同,但都不是"算错了答案"。

失败 A(4B 第一轮):全量读取陷阱

4B 第一轮其实是这么干的:先列目录 → 试着读文件 → 然后反复用命令把整个两千行日志读进来→ 读到输出被截断 → 又去折腾字符编码 → 反复折腾……

它把全部时间花在"怎么把这份大文件完整读进来"上,从没想过"我只需要把 E5032 筛出来数一下"。结果 600 秒用尽,一个交付文件都没写出来。

同一个模型、同一道题,第二轮换了个思路:不去全量读,直接用命令过滤 + 计数(把符合条件的行筛出来数)——115 秒,过了。

同一颗脑子,一次崩一次过,差别只在它当轮选了哪条路。

失败 B(1.7B 第二轮):解释器寻找死循环

1.7B 这一轮更极端:25 次工具调用、949 秒,从头到尾没有做出一次有效的日志分析。

它的命令序列是这样的:

试 python –version → 失败
看 node –version / 找 python → 失败
写一个 Node 脚本去分析日志 → 跑不起来,失败
翻遍安装目录找解释器 → 继续失败

它自己给出的旁白很说明问题:

"Node is available (no Python). I'll write a Node.js analysis script to…"

——它先试 Python,命令失败,就判定"这台机器没有 Python",转而写了 Node 脚本;结果 Node 实际也调不通;于是它掉进了"找解释器 → 写脚本 → 跑失败 → 再找解释器"的死循环,二十多次调用全部消耗在"找工具"上,一次日志分析都还没开始。

对比 4B:4B 全程用系统自带的命令行工具完成统计,压根没依赖 Python/Node,所以绕开了这个坑。


七、这期最该知道的一件事:可用性是概率

把上面两个失败放一起,会得到一个很朴素的结论:

同一个模型、同一道题,两轮结果可以完全相反。

  • 4B:第一轮崩(600 秒超时),第二轮过(115 秒);

  • 1.7B 的"纪要转待办":第一轮过,第二轮崩(把题目里的格式模板 <负责人>:<事项> 原样抄了三遍,一个字都没填)。

所以"我试了一次能用"这句话,在端侧小模型上基本没有信息量。它的稳定边界是模糊的——成败有时取决于它当轮"摸到"的第一条路是不是对的那条。

对你有两个直接含义:

  • 要它干关键活,多跑几遍,取多数(我这边定的是"多次里至少过半")。

  • 能预先告诉它"该怎么干",就别让它自己摸索——比如明确写"用命令过滤和计数,不要整份读取"。


  • 八、那到底怎么用它读长文件

    能干的:把长文档读进来、理解、写成一份摘要或待办——这个两档都能做,1.7B 甚至更快。

    要留意的:一旦任务里出现"从长文件里精确数出某个东西",两档都会开始摇。这不是它们算得不准,是它们很可能会选错工具路线(要么整份读,要么找脚本环境找到死)。

    给你的四条建议:

  • 读长文、写摘要,1.7B 够用且更快——别被"长"字吓到。

  • "统计长文件"的活,在提示词里直接指定方法:"用 grep / 过滤命令计数,不要读取整个文件"。

  • 它的第一个瓶颈往往是"环境",不是"智力"——这类活要么提前把可用的解释器/命令准备好,要么让它用系统自带命令。

  • 一题多跑几遍。 同一道题崩一次过一次,太常见了。


  • 九、下期预告

    第 6 期里,"配置差异对比"那道题,1.7B 反超了 4B——当时我说"留到下一期解释"。

    下期就是它:我做一个对照实验——同一道题、同一个模型,只换一个变量(精度),看它到底伤了什么。结论我先放一半:量化伤的不是脑子,是手。


    测试环境:R9-7900 12C/24T · RTX 3070 8G · 64G · Windows · CUDA 13.3.1 · llama.cpp XHToken fork素材说明:长纪要 / 长日志为程序化生成的合成语料(含真实噪声特征:口语插入语、跑题、多服务混合日志、干扰数字),任务结构与真实业务一致。判分口径:读模型落盘产物与真值比对;多数决(两轮需两轮全过)。全部数据来自本机运行日志,可复现。

    赞(0)
    未经允许不得转载:171主机测评 » Spark-X2.5 长输入 Agent 实测:全量读取陷阱与解释器寻找死循环复盘,附可复现任务
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址