mcpField
B
Bench Agent Discovery

Bench Agent Discovery

远程服务
bench.virajmishratakehome.workers.devAI 与智能体011 周前更新

关于 Bench Agent Discovery

Bench 为 AI Agent 采集运行数据,并展示评估、失败模式和基准证据,适合希望检查表现并公开展示 Agent 的开发者。

主要功能

  1. 01实时运行仪表板
  2. 02公开 Agent 资料页与排行榜
  3. 03自动任务评分和失败分析
  4. 04带证据记录的基准套件
  5. 05隐私控制与授权复用

适用场景

  1. 01追踪 Agent 的成功率、成本和延迟
  2. 02查看反复出现的任务失败模式
  3. 03比较公开 Agent 和基准结果

MCP 相关

它提供公开的只读 MCP 服务,支持 search_agents、get_agent 和 list_benchmarks,用于发现公开 Agent 和基准数据。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://bench.virajmishratakehome.workers.dev/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

3
参数类型必填说明
sortenum否verified | recent | runs
limitinteger否
modelstring否
querystring否要搜索的任务或能力,例如基于资料的研究或代码审查。
licensestring否来自 Agent 清单来源信息的精确 SPDX 风格许可证 ID,例如 MIT 或 Apache-2.0。
categorystring否
reusableboolean否为 True 时,返回所有者已配置调用策略和能力清单的 Agent。
verifiedboolean否为 True 时,返回至少有一项经可信运行器验证的基准测试提交的 Agent。
frameworkstring否
liveCallableboolean否为 True 时,返回具有可复用调用策略且端点当前可访问并已由所有者验证的 Agent。
maxP50LatencyMsinteger否Agent 观测到的 p50 延迟上限,单位为毫秒。
maxCostPerRunUsdnumber否Agent 生命周期内 total_cost_usd / total_runs 的上限,即观测到的每次运行平均成本。

详细介绍

bench

看看最佳 Agent 有何不同。

一行代码。实时仪表盘、公开个人主页、README 徽章。

Live npm PyPI License Built on

Bench 仪表盘 — 实时事件流、任务历史、评测分数、README 徽章

这是什么?

你构建了一个 AI Agent,也运行过几次。但你完全不知道它是否真的运行良好——哪些任务会悄无声息地失败、每次运行的成本是多少,或者它与其他 Agent 相比表现如何。

Bench 可以解决这些问题。只需用一次函数调用包装你的 Agent,即可获得:

  • 一个公开个人主页,展示运行次数、成功率、成本和延迟
  • 每项任务的自动评分(0–1,由大模型担任评判)
  • AI 生成的失败模式摘要
  • 一个实时更新、随 Agent 运行而自动刷新的 README 徽章
  • 一个公开排行榜,让任何人都能发现你的 Agent

它就像 Agent 的 GitHub——可观测、可分享,并且默认公开。

想在注册前先体验一下?试试 /try 沙盒——无需注册。


设置(3 分钟)

使用 GitHub 登录 bench.virajmishratakehome.workers.dev。仪表盘会提供一套可复制的设置内容,包括安装命令、API 密钥和首个任务模板。它会等待你的首个事件,并在事件到达后直接链接到你的个人主页。

或者手动设置:

npm install @virajmishra1/bench-sdk
export BENCH_KEY="bk_..."
import { observe } from "@virajmishra1/bench-sdk";

const agent = observe({ apiKey: process.env.BENCH_KEY, agent: "my-agent" });

await agent.task("search", { query }, async (t) => {
  const result = await doSearch(query);
  t.log("found", result.length);
  t.cost(0.004);
  return result;
});

SDK 就是这么简单。其他一切都是可选的。

Python:

pip install bench-observe
export BENCH_KEY="bk_..."
import bench

agent = bench.observe(api_key=os.environ["BENCH_KEY"], agent="my-agent")

async with agent.task_ctx("search", {"query": query}) as task:
    result = await do_search(query)
    task.log("found", len(result))
    task.set_output(result)

已经在使用 OpenTelemetry? 将导出器指向 Bench 即可:

export OTEL_EXPORTER_OTLP_ENDPOINT=https://bench.virajmishratakehome.workers.dev
export OTEL_EXPORTER_OTLP_PROTOCOL=http/json
export OTEL_EXPORTER_OTLP_HEADERS="X-Bench-Key=bka_...,X-Bench-Agent=my-agent"

Bench 支持标准的 gen_ai.* span,包括 invoke_agent、execute_tool、chat、retrieval 等。

更喜欢使用命令行工具? 这个可自动检测技术栈的命令行工具会自动为 OpenAI、Anthropic、Vercel AI SDK、Mastra 和 LangChain 添加监控:

npx @virajmishra1/bench-cli init --install
npx @virajmishra1/bench-cli login

你将获得

功能说明
实时仪表盘Agent 运行期间实时显示事件流。使用 WebSocket,无需轮询。
公开个人主页/u/you/your-agent — 可分享、支持 OG 图片、由服务器渲染
README 徽章实时 SVG 徽章。自动更新。兼容 GitHub 图片代理。
大模型评测使用 Llama 3.3 70B 评判模型为每项任务自动评分(0–1)。评分逻辑已开源。
失败洞察使用 k-means 聚类,并由大模型描述反复出现的问题
排行榜按运行次数、成功率、评测分数或成本浏览公开 Agent
比较/vs/@a/agent1/@b/agent2 — 并排比较质量、成本和延迟
基准测试支持重复运行和证据追踪的版本化基准测试套件。与自报告遥测数据分开。
MCP 发现公开的只读 MCP 服务 — search_agents、get_agent、list_benchmarks
嵌入式组件可直接用于 <iframe> 的迷你仪表盘,提供 3 种尺寸和深色/浅色主题
隐私控制隐藏输入/输出、将 Agent 设为私有、按密钥控制访问权限
授权复用使用默认拒绝策略和配额发布能力

框架适配器

可直接使用的包装器,可自动为现有大模型调用添加监控:

// Anthropic — wraps every messages.create() call
import { wrapAnthropic } from "@virajmishra1/bench-anthropic";
const client = wrapAnthropic(new Anthropic(), bench);

// OpenAI — wraps chat completions, responses, and embeddings
import { wrapOpenAI } from "@virajmishra1/bench-openai";
const client = wrapOpenAI(new OpenAI(), bench);

// Vercel AI SDK — wraps generateText / streamText / generateObject
import { track } from "@virajmishra1/bench-vercel-ai";
const result = await track(bench, "summarize", () =>
  generateText({ model: anthropic("claude-sonnet-4-6"), prompt: "..." })
);

// Mastra
import { wrapMastra } from "@virajmishra1/bench-mastra";

让你的 AI 发现 Agent

Bench 在 /mcp 提供公共 MCP 服务。将其连接到 Claude Code:

claude mcp add --transport http bench https://bench.virajmishratakehome.workers.dev/mcp

或连接到 Codex:

codex mcp add bench --url https://bench.virajmishratakehome.workers.dev/mcp

可用工具:search_agents、get_agent、list_benchmarks。搜索结果仅包含公开 Agent。所有者遥测数据和基准测试证据会分别标注。

完整的工具架构和隐私模型,请参阅 MCP.md。


架构

Bench 完全运行在 Cloudflare 上。每款产品各司其职:

SDK (npm: @virajmishra1/bench-sdk)
        |  batched events, X-Bench-Key
        v
POST /ingest                              <- Workers (Hono)
        |
        +-> D1 --- users, agents, tasks, events
        |
        +-> AgentDO --- one Durable Object per agent
        |           +- ring buffer (last 1k events, SQLite in DO storage)
        |           +- latency histogram (p50, p95)
        |           +- hibernating WebSocket -> live dashboards
        |
        +-> EvalWorkflow --- runs per task.end
        |           +- Workers AI (Llama 3.3 70B) -> score 0-1 + reasoning
        |              -> writes back to D1.tasks
        |              -> updates agents.avg_eval_score
        |
        +-> ClusterWorkflow --- on-demand + hourly cron
                    +- k-means on task embeddings -> cluster labels
                       -> Workers AI LLM describes each cluster
                       -> stored in agents.failure_clusters

Public surfaces:
  /u/:login/:slug          -> profile page (server-rendered, OG image)
  /badge/:login/:slug.svg  -> README badge (KV-cached 60s)
  /embed/:login/:slug      -> iframe widget (3 sizes, dark/light)
  /leaderboard             -> discovery (5 sort modes)
  /vs/:a/:b                -> compare two agents
  /try                     -> sandbox (no signup)
  /benchmarks              -> verified benchmark registry
  /mcp                     -> read-only MCP server
  /api/agents/:l/:s/insights -> failure pattern analysis (JSON)

关键设计决策是 actor 模型:每个 Agent 都有自己的 Durable Object。该 DO 在 SQLite 中保存最近 1,000 条事件、一个延迟直方图,以及一个休眠的 WebSocket 连接——闲置时零成本,无需轮询。

使用的 Cloudflare 产品
产品角色
WorkersAPI、个人资料渲染、徽章生成
Durable Objects每个 Agent 一个——环形缓冲区、延迟直方图、休眠的 WebSocket
D1用户、Agent、任务、事件
KVToken 查询缓存、徽章 SVG 缓存、OG 图片缓存
Workers AILlama 3.3 70B——大模型评判器 + 失败模式描述
Workflows为 EvalWorkflow 和 ClusterWorkflow 提供持久化重试
Browser RenderingOG 分享图片(SVG → PNG)
Assets静态前端(着陆页、仪表板、JS、CSS)

SDK 参考

const agent = observe({
  apiKey: string;           // bk_xxx — from your dashboard
  agent: string;            // slug, e.g. "my-agent"
  displayName?: string;
  endpoint?: string;        // default: bench.virajmishratakehome.workers.dev
  flushIntervalMs?: number; // default: 2000
  maxBatchSize?: number;    // default: 50
});

// Wrap a task — records start/end/duration/status/eval automatically
await agent.task("name", input, async (task) => {
  task.log("label", value);    // attach a log event
  task.cost(0.003);            // report LLM spend (owner-reported)
  return result;               // returned value becomes the task output
});

// Fire a custom event
agent.event("custom", { key: "value" });

// Flush immediately (auto-runs on batch full or interval)
await agent.flush();

task.cost() 调用会在 UI 中标记为“所有者报告”。框架适配器会附加提供商和 Token 证据,并单独标注。

错误会被静默吞掉——可观测性绝不能导致你的 Agent 崩溃。


自托管

git clone https://github.com/VirajMishra1/bench
cd bench && npm install

cd packages/worker
npx wrangler login

# Create infrastructure
npx wrangler d1 create bench-db
npx wrangler kv namespace create CACHE
npx wrangler kv namespace create SESSIONS

# Paste the returned IDs into wrangler.jsonc, then:
npx wrangler secret put SESSION_SECRET             # any random 32+ char string
npx wrangler secret put GITHUB_OAUTH_CLIENT_SECRET # from github.com/settings/developers

# Apply schema and deploy
npm run db:remote
npm run deploy

文件布局

bench/
+-- packages/
|   +-- sdk/                   <- @virajmishra1/bench-sdk
|   +-- adapters/
|   |   +-- anthropic/         <- @virajmishra1/bench-anthropic
|   |   +-- openai/            <- @virajmishra1/bench-openai
|   |   +-- vercel-ai/         <- @virajmishra1/bench-vercel-ai
|   |   +-- mastra/            <- @virajmishra1/bench-mastra
|   |   +-- langchain/         <- bench-langchain
|   +-- worker/                <- Cloudflare Worker (all backend + frontend)
|       +-- src/
|       |   +-- index.ts       <- Hono routes
|       |   +-- ingest.ts      <- POST /ingest
|       |   +-- profile.ts     <- public profile page
|       |   +-- badge.ts       <- SVG README badge
|       |   +-- embed.ts       <- iframe widget
|       |   +-- leaderboard.ts <- discovery page
|       |   +-- compare.ts     <- /vs/:a/:b
|       |   +-- do/agent.ts    <- AgentDO (actor per agent)
|       |   +-- workflows/
|       |       +-- eval.ts    <- LLM judge per task
|       |       +-- cluster.ts <- failure clustering
|       +-- public/            <- landing, dashboard, styles
|       +-- migrations/        <- D1 schema history
+-- benchmarks/
|   +-- grounded-research-v1/  <- example benchmark suite + cases
|   +-- eval-prompts.md        <- open-source judge prompts
+-- examples/                  <- runnable example agents

许可证

MIT——参见 LICENSE

由 @virajm1shra 在 Cloudflare 上构建。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。