Token导航 LogoToken导航TokenDH.com
Partial MCP logo
AI代理stdio官方级别未说明来源级核验

Partial MCP

MCP Server

一个用于减少大型语言模型(LLM)上下文占用的工具,通过优化工具描述和调用方式提高效率。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
Python上下文管理AI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

deeppavlov

提供方

deeppavlov

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run poe --help benchmark

详细介绍

部分MCP

此存储库用于测试减少LLM上下文被占用的方法 MCP工具说明。

背景

Cloudflare首先提出了这个问题: https://blog.cloudflare.com/code-mode/

问题总结:

  1. 工具定义始终占据上下文窗口的一部分

即使不使用工具。

  1. 有时只需要将工具结果传递给另一个工具调用

作为参数,在上下文窗口中不需要。

  1. 在另一个工具调用后,通常很清楚应该调用哪个工具

在两者之间插入LLM调用会减慢执行速度并浪费令牌

建议的解决方案(称为“代码模式”)是将工具视为函数 LLM可以作为SDK的一部分使用。LLM可以编写包含工具调用的代码 (并执行所述代码),但不能直接访问工具。

然而,代码模式的实现方式各不相同。

无发现代码模式

Pydantic的CodeModeToolset是一个示例实现: https://github.com/pydantic/pydantic-ai/blob/3490542f44368d2c935d725b5bfc0f542890401b/pydantic_ai_slim/pydantic_ai/toolsets/code_mode/__初始化__.py#L89-L128

此实现没有解决占用上下文窗口的第一个问题 使用工具定义,只实现了最后两个问题的解决方案。

发现代码模式

示例实现(utcp代码模式和bitfrost代码模式): https://github.com/universal-tool-calling-protocol/code-mode https://docs.getbifrost.ai/mcp/code-mode#the-四种代码模式工具

这些工具用于工具发现。 第二个实现增加了一个 getToolDocs 进一步减少的工具 工具描述的上下文消费。 然而,这种方法有一个缺点,那就是增加了工具调用的数量 (因为模型现在必须花时间发现工具),如本文所述 博客文章: https://block.github.io/goose/blog/2025/12/21/code-mode-doesnt-replace-mcp/#the-代码模式值

此存储库

此存储库的主要重点是 背景部分.

此存储库中提供的基准的基础是 tau2 基准. 它实现了一个模拟框架,用于跨不同领域评估客户服务代理。

每个域指定:

  • 代理人必须遵守的政策
  • 代理可以使用的一组工具
  • 评估代理性能的一组任务

从该基准中,我们获取与单个域相关的数据(retail), 在该域可用的工具之上添加多个不相关的工具, 并比较代理的性能。

添加的无关工具集仅是定义。 每当代理尝试调用它们时,都会引发异常。

一些无关的工具来自pydantic工具集包,例如:

  • pydantic-ai-todo
  • pydantic-ai-filesystem-sandbox

其他人来自 MCP零点的300多套工具。

建议的解决方案

以下是解决不相关工具存在问题的可能解决方案:

  1. 外部工具选择器,仅显示带有相关工具的模型
  2. 带有工具发现的代码模式,让模型选择相关工具。
  3. 混合方法,其中代码模式没有工具发现

(pydantic的方法)和可用工具由工具选择器选择。

你的目标是实施其中一种方法并对其进行评估。

基线结果

全部:插入基准的基线结果

已知问题

这些是当前版本基准测试的已知问题,很快就会出现 固定。

存储库使用情况

运行基准

步骤0:可观察性

您可以选择首先设置Jaeger服务,以获得更好的可观察性 基准测试的内部运作。这将让你看到什么工具被调用, 代理人的背景和得分低的原因。

为此,请运行:

docker compose -f services/monitoring/compose.yaml up

运行此命令后,您可以通过以下方式访问Jaeger的UI http://localhost:16686. 这是一个非常简单的版本,具有内存后端 这意味着停止该过程将删除从中收集的所有数据 它的记忆。

第一步:环境变量

复制 .env.example 进入 .env 并对其进行修改:

  • 移除 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT 如果你没有使用Observability。
  • 填写 MODEL_NAME, API_KEY, BASE_URL.

第二步:运行基准测试

您可以通过以下方式获取帮助消息:

uv run poe --help benchmark

要在原始版本中运行基准测试,请执行:

uv run poe benchmark relevant-only

要使用不相关的工具运行基准测试,请执行以下三项之一:

uv run poe benchmark double        # 15 extra tools
uv run poe benchmark half-mcp-zero # 1334 extra tools
uv run poe benchmark mcp-zero      # 2666 extra tools

无论哪种情况,如果你愿意,你都可以限制测试的病例数量 运行快速检查(而不是运行所有40个案例):

uv run poe benchmark double --max-cases 1

实施您的解决方案版本

将解决方案的实施放在 toolset.py文件. 在那里,您可以重新定义以下方法:

  • prepare 对每个基准工具执行一次预处理
  • get_tools 更改代理可用的工具
  • call_tool 改变工具的调用方式

代码样式

首先,使用以下命令安装预提交钩子:

uv run pre-commit install

这将使它无法在不满足的情况下进行git提交 条件从 .预调试配置.yaml即:

  • 格式错误
  • 拉夫的门楣坏了
  • Pyrefly的类型检查失败

如果要手动运行检查,请执行以下命令

uv run pre-commit run --all-files

目录标签

目录标签

Python上下文管理AI代理LLM优化本地部署工具调用代码模式

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP