为什么你的Agent评测总是超时:skill-up MCP服务器Mock完整指南

发布时间:2026/10/14 18:21:01
为什么你的Agent评测总是超时:skill-up MCP服务器Mock完整指南 【免费下载链接】skill-upAn evaluation and evolution tool for Agent Skills.项目地址https://gitcode.com/gh_mirrors/sk/skill-up点击查看免费下载在评测 Agent 时遇到「MCP 工具调用卡住 → 整条评测超时」是新手最常踩的坑。开源工具skill-up内置了 MCP 服务器 Mock 能力mode: mocked它会自动生成一个本地 stdio 模拟 MCP 服务器并安装进 Agent让工具调用瞬间返回固定结果从而彻底消除外部依赖带来的等待、鉴权失败和网络抖动。本文用一份完整指南带你 5 分钟搞定 MCP Mock 配置、按用例注入不同 fixture并顺手排查评测超时问题。评测为什么会超时3个真实原因跑过 skill-up 评测的人都知道cases.defaults.timeout_seconds一旦设置得不够用例就会失败。但超时往往不是「Agent 太慢」而是环境在拖后腿外部 MCP 服务器响应慢或不稳定—— 真实 MCP 服务如项目管理、搜索类 API一次调用可能耗时数秒到数十秒Agent 多轮调用后轻松击穿超时。鉴权失败或 Token 缺失—— 真实服务器需要headers里的凭证CI 环境中漏配${VAR}环境变量时连接重试会白白消耗大量时间。结果不可复现—— 外部数据每次不同即使这次没超时下次 CI 也可能因数据变化直接判错。解决思路只有一个把不可控的外部依赖替换成可控的本地 mock。skill-up 的 MCP Mock 是什么skill-up 支持两种 MCP 模式详见 docs/guide/writing-evals.md模式行为适用场景mode: real安装真实 MCP 服务器stdio 或 http到 Agent需要验证真实链路mode: mocked由 internal/mcp/ 生成一个本地stdio mock 服务器像普通 MCP 服务器一样装进 Agent日常回归、CI、稳定性评测mocked 模式的实现见 internal/mcp/mock_server.go它会注入一段 Node 脚本完整实现 MCP 的initialize/tools/list/tools/call协议并按你在config_ref里声明的tool_responses原样返回结果。也就是说零网络、零鉴权、毫秒级响应超时问题从根上消失。一键使用内置 filesystem mock最简单的用法——内置的filesystemmock 服务器开箱即用支持list_directory/read_file/write_file三个工具且做了路径越界保护mcp: servers: - name: filesystem mode: mocked自定义工具响应用 config_ref 声明 fixture想让 mock 服务器假装是「项目管理服务」在config_ref指向的 YAML 里写死每个工具的返回值即可# evals/eval.yaml mcp: servers: - name: project-mgmt mode: mocked config_ref: evals/fixtures/mcp/project-mgmt.yaml# evals/fixtures/mcp/project-mgmt.yaml tool_responses: create_publish_plan_simple: default: id: 999 name: {{params.name}} # 支持模板把入参渲染进返回值 status: ONGOING注意两个细节mock 模式只支持 stdio不要写transport: http或endpoint配置里写了自己的command/args也会被拒绝mock 会自己生成命令。{{params.xxx}}模板支持| default: xxx兜底写法Agent 传什么参数就能渲染出对应内容测试「参数是否被正确透传」非常方便。官方 e2e 示例可以直接参考e2e/testdata/mcp-mocked-marker/evals/eval.yaml 演示了自定义 fixture 注入e2e/testdata/mcp-stdio-marker/evals/eval.yaml 则展示了mode: real的 stdio 服务器写法两者对照着看能帮你判断该用哪种模式。进阶按用例注入不同 Mock 数据同一个 MCP 服务器不同用例需要不同的「项目状态」skill-up 支持case 级 MCP 覆盖提案见 proposals/0003-per-case-mocked-mcp-responses.mdeval 级配置作为默认值case 里再声明同名mcp.servers就会整体替换。官方示例 e2e/testdata/mcp-case-overrides/ 就是标准玩法默认 fixtureevals/fixtures/mcp/project-default.yaml用例project-closed覆盖为 project-closed.yamlmock 返回status: CLOSED用例断言输出必须包含CLOSED用例project-open则覆盖为 project-open.yaml返回status: OPEN。使用规则务必注意case 级覆盖目前只支持mode: mocked真实 MCP 暂不支持按用例覆盖替换是整条替换不是字段合并——需要把name、mode、config_ref写全config_ref相对Skill 目录SKILL.md所在目录解析不是 case 文件目录每个 case 各自生成并安装自己的 mock 服务器cases.parallelism 1并行跑时 fixture 天然隔离不会串数据。超时排查清单5步定位问题如果配了 mock 还是超时按下面顺序排查先看模式确认mcp.servers[].mode: mocked真实服务器会走网络超时大概率来自它。再看环境类型Skill 不碰文件系统时用environment.type: none能跳过沙箱准备速度差异显著见 docs/guide/writing-evals.md 的环境选择表。检查超时预算cases.defaults.timeout_seconds要覆盖「Agent 启动 多轮工具调用」全过程CI 上模型响应慢本地 180s 够用的配置在 CI 可能要放宽。核对引擎与模型不同引擎claude_code/codex/qodercli启动 MCP 安装流程耗时不同报告里的时长对比能帮你定位瓶颈。看报告证据skill-up 输出result.json、JUnit XML 和 HTML 报告保留transcript工件后能精确回放每一步工具调用花了多久。下面这张真实回归对比图展示了 skill-up 报告中 Duration 指标前后变化39.1s → 21.5s快 45%——优化环境和 mock 依赖后时长收益一目了然常见问题 FAQQmocked 和 real 可以同时声明多个服务器吗A可以。mcp.servers是列表每个服务器独立声明模式mock 的负责稳定性real 的负责关键链路验证混搭是 CI 的常见做法。Qmock 服务器不支持 HTTP transport那 http 类 MCP 怎么办A目前 mock 模式只覆盖 stdio 场景。若必须评测 http 链路建议保留少量mode: real用例并放宽该用例超时或用 case 级覆盖把大部分用例切到 mocked。Qfixture 数据想改怎么办A直接改config_ref指向的 YAML 里的tool_responses即可无需改代码模板变量{{params.xxx}}让同一份 fixture 适配多种入参。小结Agent 评测超时的根因绝大多数是「把不可控的外部 MCP 依赖带进了评测」。skill-up 的 MCP Mockmode: mockedconfig_reffixture case 级覆盖让你用声明式 YAML 就能✅ 毫秒级、零网络的稳定工具响应✅ 按用例注入不同项目状态覆盖更多分支✅ 并行执行时 fixture 自动隔离结果可复现✅ 配合none环境和合理超时设置彻底告别超时红灯。相关路径速查MCP 核心实现 internal/mcp/mock_server.go、provisioner.go、配置文档 docs/guide/writing-evals.md、可运行示例 e2e/testdata/mcp-case-overrides/ 与 e2e/testdata/mcp-mocked-marker/。把外部依赖 Mock 掉让评测回归到测「你的 Skill」本身——这才是评测该有的样子 赞分享【免费下载链接】skill-upAn evaluation and evolution tool for Agent Skills.项目地址https://gitcode.com/gh_mirrors/sk/skill-up点击查看免费下载相关推荐药物靶标相互作用预测实战用BioGPT从零搭建识别系统的完整教程药物靶标相互作用预测实战用BioGPT从零搭建识别系统的完整教程 一个深夜一篇摘要一份让人头疼的标注表 想象这样一个场景你在药物研发部门工作同事丢给你人工智能大模型基础模型NLP预训练微调医疗健康为什么JMAP是邮件服务器的未来Stalwart Mail Server完整指南为什么JMAP是邮件服务器的未来Stalwart Mail Server完整指南 在现代邮件服务器中JMAPJSON Meta Application P后端消息路由企业应用如何彻底解决游戏服务器卡顿Skynet通信模式深度解析与优化指南如何彻底解决游戏服务器卡顿Skynet通信模式深度解析与优化指南 为什么你的游戏服务器总是卡顿性能瓶颈往往隐藏在通信模式中。Skynet作为一个轻量级的在线后端游戏开发创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询