关于 Bench Agent Discovery
Bench 为 AI Agent 采集运行数据,并展示评估、失败模式和基准证据,适合希望检查表现并公开展示 Agent 的开发者。
主要功能
- 01实时运行仪表板
- 02公开 Agent 资料页与排行榜
- 03自动任务评分和失败分析
- 04带证据记录的基准套件
- 05隐私控制与授权复用
适用场景
- 01追踪 Agent 的成功率、成本和延迟
- 02查看反复出现的任务失败模式
- 03比较公开 Agent 和基准结果
MCP 相关
它提供公开的只读 MCP 服务,支持 search_agents、get_agent 和 list_benchmarks,用于发现公开 Agent 和基准数据。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://bench.virajmishratakehome.workers.dev/mcpclaude mcp add --transport http virajmishra1-bench https://bench.virajmishratakehome.workers.dev/mcp{"mcpServers":{"virajmishra1-bench":{"type":"http","url":"https://bench.virajmishratakehome.workers.dev/mcp"}}}在 Cursor 中打开{"servers":{"virajmishra1-bench":{"type":"http","url":"https://bench.virajmishratakehome.workers.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"virajmishra1-bench":{"type":"http","url":"https://bench.virajmishratakehome.workers.dev/mcp"}}}{"mcpServers":{"virajmishra1-bench":{"serverUrl":"https://bench.virajmishratakehome.workers.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
3| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sort | enum | 否 | verified | recent | runs |
| limit | integer | 否 | |
| model | string | 否 | |
| query | string | 否 | 要搜索的任务或能力,例如基于资料的研究或代码审查。 |
| license | string | 否 | 来自 Agent 清单来源信息的精确 SPDX 风格许可证 ID,例如 MIT 或 Apache-2.0。 |
| category | string | 否 | |
| reusable | boolean | 否 | 为 True 时,返回所有者已配置调用策略和能力清单的 Agent。 |
| verified | boolean | 否 | 为 True 时,返回至少有一项经可信运行器验证的基准测试提交的 Agent。 |
| framework | string | 否 | |
| liveCallable | boolean | 否 | 为 True 时,返回具有可复用调用策略且端点当前可访问并已由所有者验证的 Agent。 |
| maxP50LatencyMs | integer | 否 | Agent 观测到的 p50 延迟上限,单位为毫秒。 |
| maxCostPerRunUsd | number | 否 | Agent 生命周期内 total_cost_usd / total_runs 的上限,即观测到的每次运行平均成本。 |
详细介绍
这是什么?
你构建了一个 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 产品
| 产品 | 角色 |
|---|---|
| Workers | API、个人资料渲染、徽章生成 |
| Durable Objects | 每个 Agent 一个——环形缓冲区、延迟直方图、休眠的 WebSocket |
| D1 | 用户、Agent、任务、事件 |
| KV | Token 查询缓存、徽章 SVG 缓存、OG 图片缓存 |
| Workers AI | Llama 3.3 70B——大模型评判器 + 失败模式描述 |
| Workflows | 为 EvalWorkflow 和 ClusterWorkflow 提供持久化重试 |
| Browser Rendering | OG 分享图片(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 上构建。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。