1. 先纠正一个认知:DeepSeek Harness 不是测试工具
先聊个现象:最近社区里好多人把 DeepSeek Harness 当成“又一个 AI 测试工具”来用,装上之后第一件事就是问“怎么对它做断言”“能不能跑接口回归”。我一开始也是这么理解的,结果用了两三天就发现不对劲——这玩意儿的核心思路压根不是“对答案”,而是“看过程”。
它的目标对象是 DeepSeek 系列模型以及基于这些模型构建的应用,但它解决的问题不是“模型输出对不对”,而是“模型是怎么走到这个输出结果的”。这个概念往深了想,才是真正会改变 AI 测试方式的东西。我把它叫做“验轨迹”,也就是验证模型从输入到输出的整条推理路径,而不是只盯着终点打个勾。
这篇文章不打算写得像说明书,我就按自己从安装、配置到实际跑通一个完整验证场景的经历,把这个工具到底是什么、为什么它不是测试工具、以及“验轨迹”这个阶段该怎么理解,一次讲清楚。如果你正在做大模型应用的质量保障、测试开发,或者你只是好奇 AI 测试能做到什么程度,这篇内容应该能给你一个不一样的视角。
1.1 AI 测试的困境:传统工具为什么失效
先说我踩过的坑。之前我用传统自动化测试工具去测一个基于大模型的问答应用,接口层我做了很完整的断言:状态码、响应时间、关键字段是否为空、返回格式是否符合 schema。执行结果也好看,几百条用例全绿。但真正上到灰度环境,用户反馈的问题依然千奇百怪——有的说“回答前半段对、后半段在胡扯”,有的说“同样的题换个人问,结论就反了”。
这就是传统测试工具在大模型场景下的核心困境:它只能验证“表面规格”,验证不了“行为质量”。大模型的输出不是穷举出来的固定值,而是每次生成都带有随机性的概率分布。同一个 prompt,温度调到 0 时可能还有微妙的波动,调到 0.7 以上那真是每次都不一样。你没法用“期望值等于 XXX”这种断言方式去覆盖这类行为,因为期望值本身就不存在。
更麻烦的是,结果对不代表过程对。模型可能通过一个错误的推理链条,最后误打误撞走到一个正确答案上。这种情况在数学题、逻辑推理、多步任务里特别常见。如果只测结果,这类 case 永远测不出来。而这恰恰是 AI 应用和传统软件最本质的差别:传统软件的逻辑是确定性的,输入相同,过程相同,输出必然相同;大模型不是,它的逻辑是概率性的,输入相同,过程可能完全不同,输出自然也跟着变。
所以 AI 测试真正要测的东西,不是“输出”,而是“输出背后的轨迹”。传统工具没有这个概念,自然也就无力应对。
1.2 不要把 DeepSeek Harness 理解成“断言工具”
我第一次打开 DeepSeek Harness 的配置文档时,下意识去找“assert”“断言”这类关键词,结果发现它给出的概念是“checkpoint”“trace point”“trajectory validator”。那一刻我就明白了,它走的完全不是传统测试工具的路子。
DeepSeek Harness 的定位更准确地说,是一套“推理轨迹的采集与验证框架”。它做的事情可以拆成三层:
第一层是采集轨迹。它会把一次完整的模型调用过程记录下来,包括输入 prompt、每一步中间推理、上下文窗口的变化、工具调用的参数和返回结果、最终输出。这些信息合在一起,就是一次推理的“完整行车记录仪”。
第二层是定义轨迹验证规则。你可以设定“在到达最终答案之前,必须经过某个关键推理节点”“某个工具调用的参数必须在某个枚举范围内”“某个中间步骤的置信度不得低于阈值”,诸如此类。这些规则不是对最终输出做断言,而是对过程做约束。
第三层是差异分析。同一道题跑多次,每次的轨迹都会被记录下来,然后横向对比,看从哪一步开始分叉,分叉之后的路径是否仍然合理。这个能力对于排查随机性问题,简直是刚需。
传统测试工具是“裁判”,只宣布结果合不合格;DeepSeek Harness 更像“教练”,它盯着你每一步动作,告诉你问题出在哪个环节。所以我说它不是测试工具——它的核心能力体系已经超出了“测试”这个词原本能覆盖的范围。如果你还拿它当断言工具用,等于买了个显微镜去看星星,方向全错了。
2. “验轨迹”到底在验什么:核心概念拆解
“验轨迹”这个概念是我自己总结的,但用它来形容 DeepSeek Harness 的工作方式非常贴切。它要验证的东西,可以拆成四个维度来看:推理链路完整性、中间状态合理性、工具调用正确性、异常边界行为。这四个维度合起来,才是一次完整的轨迹验证。
2.1 什么是“轨迹”:一次推理的完整行车记录仪
我打个比方。你叫了一辆网约车,传统测试工具只关心你有没有到目的地,到了就 PASS,没到就 FAIL。但 DeepSeek Harness 关心的是:司机走的是不是规划的路线?有没有绕路?中途有没有停下来办私事?有没有在某个路口做出了危险的变道?这些过程信息,就是你这次出行的“轨迹”。
放在 AI 场景里,“轨迹”就是模型从收到输入到给出输出之间,所有可记录、可追踪的状态变化。它至少包含这么几类信息:
- 模型输入的原始 prompt,以及系统提示词、历史会话等上下文内容;
- 模型内部生成的中间推理步骤。对于支持思维链的模型,这一步尤其重要,你能看到它是先分析了问题、再列出方案、最后才给出结论,还是一上来就胡说;
- 每一次工具调用的触发条件、传入参数、返回结果,以及模型对返回结果的处理方式;
- 生成过程中的 token 级信息,比如每一步的置信度、采样温度、生成长度等;
- 最终输出以及输出和前面推理步骤之间的对应关系。
这些信息传统测试工具几乎完全拿不到。接口层测试只能看到输入 payload 和输出 response,中间过程对测试人员来说是个黑盒。DeepSeek Harness 做的事情,就是把这个黑盒的盖子掀开,让“过程”变成“可断言的对象”。
有了轨迹数据之后,验证逻辑就跟着变了。我们不再问“答案对不对”,而是问“到达这个答案的路径是否合理、是否可解释、是否稳定”。
2.2 轨迹验证的四层内容
我把轨迹验证拆成四个层面,每个层面都有不同的验证重点和手段,你实际用的时候可以按需取舍。
第一层:推理链路完整性。链路完整性指的是模型有没有走完一个合理的推理闭环。比如你让它做一道多步数学题,正常的链路至少要有“理解题干 → 提取条件 → 建立方程 → 求解 → 验证”这几步。如果轨迹显示它直接跳到了“求解”,中间的条件提取是空的,哪怕答案碰巧对了,这条轨迹也是不合格的。在 DeepSeek Harness 里,你可以用 checkpoint 来标记“必须经过的节点”。跑完一次之后,harness 会检查轨迹是否依次经过了这些节点,没经过的直接判 FAIL。
第二层:中间状态合理性。中间状态可以理解成模型在每一步产生的临时结果。还是拿数学题举例,提取出来的条件是不是原题里的真实条件?建立的方程是否符合逻辑?中间结果有没有出现“越算越离谱”的数值漂移?这一层的验证逻辑比较像代码审查里的“不变量检查”——你不需要知道每一步的精确值,但你要保证每一步的状态满足某些不变量。
第三层:工具调用正确性。现在的 AI 应用几乎都会接工具,查天气、搜资料、调数据库、执行代码。工具调用是轨迹里最容易出问题也最有验证价值的部分。你要验证的包括:工具是不是在恰当的时机被触发的?传入的参数格式对不对、内容合不合理?工具返回异常时,模型有没有正确处理而不是直接把错误信息拼进回答里?这些都可以通过轨迹验证规则来约束。
第四层:异常边界行为。这一层是传统测试容易忽略的。你需要验证模型在遇到超出能力边界的情况时,轨迹是否会表现出符合预期的行为模式。比如:面对一个自己不确定的问题时,它是生成了“我不知道”的合理轨迹,还是强行编造一个看起来自信十足的答案?当上下文长度超过限制时,它是主动截断、提示用户,还是静默丢失信息?这些行为特征在最终输出上可能差别不大,但在轨迹层面的差异非常明显。
2.3 和传统断言的本质区别
传统断言是“点状验证”,它对最终结果打一个标签。DeepSeek Harness 的轨迹验证是“线状验证”,它把整个推理过程串成一条线,然后对这条线上的关键点做检查。
这个区别带来一个很重要的转变:从“评判”变成“诊断”。传统断言只能告诉你“坏了”,轨迹验证能告诉你“坏在哪一步、为什么坏、是模型本身的问题还是工具链的问题”。这个信息量完全不是一个量级的。
另外,轨迹验证还能做一件事——验证“合理的多样性”。大模型的输出有随机性,但如果随机性只体现在措辞层面,核心推理路径是稳定的,这在业务上是可以接受的。DeepSeek Harness 可以把多次运行的轨迹做对比,计算关键路径的重合度。如果同一个问题跑十次,十条轨迹在根因分析环节分成了三派,那就说明模型的推理稳定性有问题。这个能力传统测试工具做梦都想不到。
3. 从零装好 DeepSeek Harness:安装、配置与最常踩的坑
概念聊完了,接下来讲点实操的东西。这一章我不会只是罗列命令,而是把安装过程中容易踩的坑一并说清楚。毕竟工具再好,装不上、跑不起来,一切白搭。
3.1 环境准备:别忽略 Python 版本和依赖冲突
DeepSeek Harness 目前主流的安装方式还是通过 Python 生态。以社区常用的版本为例,建议使用 Python 3.10 或 3.11,低于 3.9 基本跑不起来,高于 3.12 有些第三方依赖可能还没适配完。我自己先在 Python 3.12 上装过一次,结果某个数值计算库直接编译失败,后来降级到 3.11 才顺利通过。
安装命令本身不算复杂,核心是:
pip install deepseek-harness但这里要注意两个问题。第一个是虚拟环境。我强烈建议你创建一个独立的虚拟环境来装,不要直接往全局环境里怼。原因很简单,deepseek-harness 会依赖不少 AI 生态的库,比如 transformers、torch、tokenizers 这些,它们对版本的要求非常敏感。跟你的主项目或者其他测试框架发生依赖冲突是大概率事件。
python3.11 -m venv harness_env source harness_env/bin/activate pip install --upgrade pip pip install deepseek-harness第二个是网络问题。如果你在国内网络环境下安装,pip 源可能要换成国内镜像站,直接装经常超时。这个属于基本操作,不再展开。
装完之后可以验证一下版本:
harness --version能正常输出版本号,说明核心装好了。如果你只在本机跑单次测试,装到这里就够用了。如果你想让团队协同,或者跑一些比较重的批量场景,再往下看桌面版和服务版的区别。
3.2 三种使用形态怎么选:CLI、桌面版、Ubuntu 服务版
DeepSeek Harness 有三种常见的使用形态,很多人在这一步就开始纠结了。我直接给出我的建议:
CLI 命令行版适合自动化执行、CI/CD 集成、批量回归。它没有图形界面,但灵活性最高,所有的验证规则、场景定义都可以用配置文件管理,跑完直接输出结构化报告,方便接着做数据处理。
桌面版(Desktop)适合本地调试、用例开发、轨迹可视化。你在写规则的时候,如果只靠命令行一条一条看 JSON 日志,眼睛会瞎。桌面版能把轨迹渲染成流程图的形式,中间步骤、工具调用点、分叉情况一目了然。我个人习惯是:开发验证规则时用桌面版,正式回归时用 CLI。
Ubuntu 服务版适合部署在服务器上,做成常驻服务,供团队多个人通过局域网访问。这种情况下,验证规则、测试资产、报告都集中在服务端管理,避免每个人本地一套环境、结果对不上。
三种形态的底层验证引擎是同一个,区别只在交互形态和部署范围。你完全可以本地装着桌面版开发,生产环境用服务版跑回归。刚开始接触的话,从桌面版入手是最容易上手的。
3.3 核心配置项:不要让默认配置坑了你
装好之后,先别急着跑用例,花几分钟整理一下配置。DeepSeek Harness 的配置采用 YAML 格式,核心配置块包括模型接入、轨迹采集开关、验证规则引入、报告输出方式。
一个最简配置大概是这样的:
model: provider: deepseek model_name: deepseek-chat temperature: 0.2 max_tokens: 2048 harness: trace_enabled: true trace_dir: ./traces checkpoint_dir: ./checkpoints validation: rules_dir: ./rules report_path: ./reports/latest.html这里有几个我实际用下来特别值得注意的点:
第一个是 temperature。如果你是做验证性测试,建议把温度调低,比如 0.1 到 0.3。温度越低,模型的输出越稳定,轨迹的可复现性就越高。如果你测的是创造性内容,温度高一点没问题,但你在分析轨迹差异时就要接受更大的随机波动,否则会排查到怀疑人生。
第二个是 trace_enabled 必须打开。这个听起来像废话,但真有人装完之后没开 trace,跑完一堆用例想分析轨迹时发现啥都没记录,白跑一趟。这个配置默认可能是关的,因为开着会额外增加一些性能开销和存储占用。
第三个是 rules_dir 和 checkpoint_dir 建议分开管理。规则文件是你自己写的验证逻辑,checkpoint 是跑完的轨迹存档。放一起的话,时间一长文件一多,你会分不清哪些是“标准”哪些是“结果”。
3.4 局域网访问和桌面版的几个细节
如果你用的是服务版,想让大家通过局域网访问,这里有个很常见的坑:服务默认只绑定 127.0.0.1。同一个办公室的同事访问你机器 IP 的端口,是连不上的。你得手动修改服务的监听地址,把它改成 0.0.0.0,同时确认防火墙没有挡住对应端口。端口建议避开常见的 8080、8000,选一个不那么容易冲突的高位端口。
桌面版方面,如果你把它安装在 Windows 的 D 盘,有些版本会把工作目录默认设在 C 盘的用户目录下。如果你在 D 盘建了测试项目,跑的时候发现找不到文件,多半是路径解析的问题。这时候需要去设置里把工作目录改到你的项目目录,或者在项目根目录放一个配置文件来指定路径。这个问题看起来小,但能卡住你半小时。
另外,桌面版的插件市场里有些社区插件。我的建议是:先装官方推荐的、和 DeepSeek 模型适配度高的插件,社区插件尽量看清楚支持版本再装,别一口气装十个。插件本质上就是在你的验证链路里插一段自定义逻辑,装多了之后出问题,排查成本会比收益还高。
4. 第一次“验轨迹”实战:写场景、跑采集、看报告
理论说得再多,都不如亲手跑一次。这一章我带你把一个完整的轨迹验证流程走一遍:准备测试用例、定义验证规则、执行运行、解读报告。
4.1 准备测试用例:Markdown 文件怎么组织
DeepSeek Harness 的测试场景支持用 Markdown 文件来组织。为什么是 Markdown?因为它本来就是为了让人阅读方便,而大模型的测试场景里,很容易出现“长文本上下文、多轮对话、复杂指令”这类内容,用 Markdown 组织起来非常自然,格式清晰,Git 跟踪 diff 也友好。
我自己习惯一个场景一个文件,文件名就是场景名。比如我要测一个“数学应用题多步求解”的场景,我就建一个math_multistep.md,内容结构大致是这样:
# 场景: 数学应用题多步求解 ## 系统提示词 你是一个严谨的数学解题助手。 请一步一步思考问题,给出推导过程和最终答案。 ## 用户输入 一个农场有鸡和兔子共35只,脚的总数是94只。 请问鸡和兔子各有多少只? ## 期望轨迹要求 - 必须提取鸡兔同笼的条件 - 必须建立包含两个未知数的方程 - 必须解出方程组并验证解得合理注意最后一段“期望轨迹要求”,这是 DeepSeek Harness 读取 Markdown 文件时最核心的部分。它不是让模型读的,是给 harness 的验证器读的。harness 会解析这个文件,把“用户输入”作为模型的输入,把“期望轨迹要求”翻译成轨迹验证规则。
刚开始用的时候很容易忽略一个细节:Markdown 文件必须用 UTF-8 编码保存。我在 Windows 上遇到过一次,文件是 GBK 编码的,结果 harness 读取时中文全部乱码,场景名都识别错了。所以如果你的 Markdown 是从旧文档里复制过来的,先确认一下编码格式,这个坑非常隐蔽。
4.2 定义轨迹验证规则:不盯结果,盯过程
上面的 Markdown 文件里写了“期望轨迹要求”,但那是给场景文件用的“轨迹约束”,实际执行验证时,还需要一套更细粒度的规则文件。我建一个rules/math_check.yaml,内容如下:
validators: - name: must_extract_conditions type: checkpoint must_include: - "鸡" - "兔" - "35" - "94" error_msg: "轨迹未包含关键题目条件" - name: must_build_equation type: checkpoint must_include: - "x + y = 35" - "2x + 4y = 94" error_msg: "轨迹未包含正确的方程组" - name: intermediate_step_check type: invariant rule: "每一步方程变换后,等式两边的值必须相等" error_msg: "中间步骤计算出现不守恒" - name: tool_call_check type: tool_validator allowed_tools: ["math_calculator"] max_tool_calls: 3 error_msg: "工具调用异常"这套规则定义了四类检查:
第一类 checkpoint(节点检查),要求轨迹里必须出现某些中间内容。这里我写的比较严格,把具体方程字符串都写进去了。实际项目中,如果模型生成的方程写法有变化,“x + y = 35”可能写成“x+y=35”,空格不一致就会导致匹配失败。更稳的做法是用正则表达式或者语义相似度匹配。但第一次跑通流程,先用精确匹配比较好,报错更直观。
第二类 invariant(不变量检查),检查轨迹里每一步状态是否满足一个守恒条件。上面的例子是个示意,真实场景里可以用更复杂的表达式。这一类检查的难点在于你需要定义清楚“什么是合理的不变量”,定义得好,它能抓住非常多隐藏问题。
第三类 tool_validator(工具调用检查),约束工具调用的次数和白名单。DeepSeek Harness 在你通过它发起工具调用时,会记录每次调用的参数和结果,这类验证器就是针对这些记录做约束。
写好这些规则之后,把规则文件路径和场景文件路径关联起来,就可以执行了。这也是我想强调的:整个验证的“断言对象”是轨迹本身,而不是最终答案。我们有机会提前发现模型在中间步骤出错的风险,而不是等它给出错误答案之后再去倒查原因。
4.3 执行一次运行:命令怎么敲,结果怎么看
命令行模式下,一次完整运行大概是这样的:
harness run \ --scenario ./scenarios/math_multistep.md \ --rules ./rules/math_check.yaml \ --model deepseek-chat \ --output ./reports/math_multistep_latest.html跑起来之后,harness 会调用 DeepSeek 模型执行这个场景,同时把轨迹数据流式地记录下来。执行完成后,会在你指定的目录下生成报告,同时在终端打印出简化的验证结论,类似“2 passed, 1 warning, 0 failed”这样的信息。
如果你开启了 trace_dir,每一次运行的原始轨迹也会被压缩存档。这个原始轨迹文件是 JSON 格式的,里面按时间顺序记录了从输入到输出的每一个事件。默认情况下,指令的具体内容、推理文本、工具调用细节都在里面。这里有一个安全性的点要特别注意:如果你们的业务 prompt 里带着敏感信息,轨迹存档务必加密或者严格控制访问权限,别让原始轨迹文件泄露出去。
4.4 轨迹报告怎么读:先看路径再看节点
生成的 HTML 报告里,最有价值的是三块内容。
第一块是轨迹总览。它把整次推理渲染成一张流程图,起点是输入,终点是输出,中间每一个节点代表一次关键事件。如果中间有工具调用,会单独用不同样式的节点标出来。你一眼就能看到模型的思考路径:先做了什么,再做了什么,最后怎么收尾。
第二块是检查结果列表。每个你定义的验证规则对应的检查结果,是 PASS、WARNING 还是 FAIL,都会列出来。点击进去可以看具体是轨迹里哪一段触发的问题。这个功能是定位 bug 的核心:不用再对着日志瞎猜了。
第三块是差异对比。如果你同一个场景跑了多次,报告里可以看到多次轨迹的路径重叠情况。哪几次在同一个节点之前完全相同、之后开始分叉,都会被高亮标出来。我拿这个功能排查过“同一个问题为什么回答时好时坏”的诡异 bug,最终发现是模型在一个中间判断节点上对措辞的微小变化过度敏感,导致后续推理倒向了不同分支。这个结论如果没有轨迹对比,靠人工看日志根本不可能高效得到。
看完报告之后还有一步容易被忽略:把 FAIL 的用例链接回它的原始轨迹文件,做二次确认。报告是汇总视角,原始轨迹是细节视角。有些问题是报告上显示的规则边界问题,不一定是模型问题。养成“报告定位、原始轨迹确认”的习惯,你会少误报很多 case。
5. 我在实操中遇到的典型问题与排查方法
这一章全是真实经验。不夸张地说,我在跑 DeepSeek Harness 的前两周,有一半时间在装环境,另一半时间在处理各种莫名其妙的报错。下面这些问题,我按出现频率排个序,你遇到了可以直接照着排查。
5.1 常见问题速查表
| 症状 | 常见原因 | 解决办法 |
|---|---|---|
| 安装时报依赖冲突 | 全局环境已存在同名字段的不同版本 | 新建独立的 Python 虚拟环境,不要用全局环境 |
| 中文乱码 | Markdown 文件不是 UTF-8 编码 | 把编码统一改成 UTF-8 保存 |
| 版本输出正常但 run 命令找不到 | 安装到 Server 版,命令行入口没配好 | 检查 PATH 环境变量,或改用桌面版执行 |
| 服务版局域网访问被拒 | 服务绑定在 127.0.0.1 | 修改监听地址为 0.0.0.0,放行指定端口 |
| 跑完用例没有任何 trace 数据 | trace_enabled 没有开启 | 检查配置文件里 trace_enabled 是否为 true |
| 规则里写的中文关键词匹配不到 | 精确匹配遇到空格、标点差异 | 改用正则表达式或加入文本归一化处理 |
| 桌面版读取不到 D 盘项目文件 | 工作目录还在 C 盘默认位置 | 修改工作目录指向项目根目录 |
| 插件装了之后版本号不兼容 | 社区插件版本与主程序不匹配 | 卸载插件,改装官方推荐版本 |
5.2 几个容易被忽略的细节
除了上面的表格,再补充几个我反复踩的坑。
第一个是关于模型温度设置的。我一开始用默认配置跑验证,结果同一个场景跑五次,轨迹分析结果花花绿绿,没两条路径是重叠的。当时第一反应是规则写错了,排查了半天,最后发现是 temperature 设成了 0.7。如果你要做轨迹对比,务必先把温度降到 0.2 以下,让模型的推理路径保持相对稳定,然后再分析“哪些差异是模型本身的随机性”“哪些差异是输入变化导致的”。不要一上来就带着高随机性去分析问题,否则你分析出来的“问题”可能只是正常波动。
第二个是 Markdown 里“期望轨迹要求”的措辞格式。harness 解析这部分内容时,是按自然语言提取关键词的。你写成“必须提取鸡兔同笼的条件”这种长句,它可能只会识别“提取”和“条件”。我后面全部改成短词加逗号分隔,比如“条件: 鸡, 兔, 35, 94”,识别准确率明显提升。另外,不要用“不要”“禁止”这类否定词来写要求,harness 的 checkpoint 校验默认是“包含即通过”,否定语义的处理效果不稳定。如果你要验证“不包含某内容”,用专门的 exclude 类型规则,别写在自然语言描述里。
第三个是工具调用的超时处理。如果应用的某个工具响应特别慢,会拉长整个轨迹,影响后续节点的时间戳对比。我实际遇到过工具返回了正确结果,但因为耗时超过预期,模型在处理结果时产生了误判,直接说“该工具不可用”。这种情况在轨迹里看,你会看到一个“超长间隔 → 工具返回 → 模型错误解释”的结构。排查到最后不是模型问题,是上游接口性能问题。这个案例恰恰说明了轨迹验证的价值:把性能问题对模型行为的影响量化出来了。
第四个是规则执行的顺序。deepseek-harness 的验证器不一定按你定义的顺序执行,如果规则之间存在依赖关系,比如“节点A通过之后才检查节点B”,你需要在规则里显式声明依赖,而不是指望它按 yaml 文件里的顺序跑。我有一个场景因为没注意这个问题,出现过“先报工具调用异常,再报节点缺失”的反逻辑结果,看起来特别困惑。
6. 说点个人体会
从一开始把 DeepSeek Harness 当成普通测试工具,到后来理解它的定位是“轨迹验证框架”,这个过程对我的测试思路影响很大。以前我总在想“怎么写出更全面的断言来覆盖更多情况”,现在我想的是“怎么定义一条合理的轨迹,然后验证模型有没有走在上面”。前者是在给答案打分,后者是在给思维路径做体检。这两个方向,难度和深度完全不一样。
如果你正准备尝试 DeepSeek Harness,我最后再给一条建议:不要急着把现有的所有测试用例都迁移过来。先拿出两三个你最头疼的、传统测试手段很难覆盖的场景,比如“多步推理任务”“带工具调用的任务”“对输出稳定性有要求的任务”,用这套轨迹验证的思路重新设计一遍。跑通之后,对比一下原来和现在的排查效率,你会直观地感受到“验轨迹”这个阶段带来的差异。
工具会迭代,配置项会变,但“验证推理过程而不是只验证输出结果”这个思路,我觉得会是 AI 测试往后绕不开的方向。