mcpField
A
agent-observability

agent-observability

本地服务
github.com/KryptosAI数据与分析213 周前更新

关于 agent-observability

agent-observability 是面向 AI Agent 开发与审查的本地优先观测服务。它将会话操作、成本、决策和评级记录到本地数据库,并提供仪表板与审计记录。

主要功能

  1. 01记录工具调用、状态和耗时
  2. 02统计会话 Token 与费用
  3. 03提供 A–F 会话评级
  4. 04记录带时间戳的操作与决策
  5. 05本地 SQLite 存储和仪表板

适用场景

  1. 01排查 Agent 任务失败原因
  2. 02审查工具使用和文件访问
  3. 03比较 Token 用量与会话费用

MCP 相关

MCP 服务接收 Agent 上报的工具调用、Token 用量、决策和评级,并可返回会话报告与会话列表。代理模式也可追踪 MCP 工具调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kryptosai-agent-observability": {
"command": "npx",
"args": [
"-y",
"agent-obs"
]
}
}
}
启动命令npx -y agent-obs

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmagent-obs1.0.7

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

agent-observability

CI npm license

开源 Agent 可观测性——了解 Agent 做了什么、为何失败以及花费了多少。可在本地运行,无需云服务。

快速开始

一条命令。无需手动配置。无需复制粘贴。

npx agent-obs@latest setup

此命令会自动检测你的 AI Agent(opencode、Claude Code、Cursor),并完成所有配置:

  • 将 agent-obs 添加到你的 MCP 配置中
  • 添加自我报告指令
  • 告诉你接下来该做什么

然后重启你的 Agent。之后,每项操作都会自动报告。

agent-obs dashboard    # http://localhost:9400 — see your sessions appear
你将看到的内容

在 Agent 中运行任务后,仪表板会显示:

  • 每次工具调用的耗时和状态
  • A-F 级会话评分(Agent 的效率如何?)
  • 每个会话的 Token 和美元成本
  • 完整的审计记录,显示读取、编辑和执行的内容
手动设置(如果 setup 无法检测到你的 Agent)

opencode: 添加到 opencode.json:

{
  "mcp": {
    "agent-obs": {
      "command": "npx",
      "args": ["-y", "agent-obs@latest", "server"],
      "enabled": true
    }
  }
}

Claude Code: 创建 .mcp.json:

{
  "mcpServers": {
    "agent-obs": {
      "command": "npx",
      "args": ["-y", "agent-obs@latest", "server"]
    }
  }
}

Cursor: 添加到 Cursor Settings > MCP:

{
  "mcpServers": {
    "agent-obs": {
      "command": "npx",
      "args": ["-y", "agent-obs@latest", "server"]
    }
  }
}

请参阅下文的按 Agent 类型设置,了解各平台的详细说明,包括自我报告指令。

注意: 所有数据都会写入 ~/.agent-observability/ 中的本地 SQLite 数据库。数据不会离开你的设备。

代理模式(备用方案)

对于无法自行报告的 Agent,可包装任意 MCP 服务,自动追踪每次工具调用:

agent-obs proxy --desc "fix login bug" -- npx @modelcontextprotocol/server-filesystem /tmp

代理模式仅捕获 MCP 工具调用(约占 Agent 常见操作的 30%)。建议优先使用上文的 setup / MCP 服务方式。

按 Agent 类型设置

Claude Code
  1. MCP 配置 — 在项目根目录中创建 .mcp.json:
{
  "mcpServers": {
    "agent-obs": {
      "command": "npx",
      "args": ["-y", "agent-obs@latest", "server"]
    }
  }
}
  1. 自我报告指令 — 创建 .claude/instructions.md(或引用 .claude/skills/agent-obs/SKILL.md 下现有的 SKILL.md):
After every tool call, report to agent-obs's log_tool_call.
Start each task with start_session. End with end_session.
  1. 验证 — 运行 agent-obs dashboard,打开 http://localhost:9400,并在 Agent 完成任务后查找对应的会话。
Cursor
  1. MCP 配置 — 添加到 Cursor 的 MCP 设置(~/.cursor/mcp.json,或 Settings → MCP → Add new global MCP server):
{
  "mcpServers": {
    "agent-obs": {
      "command": "npx",
      "args": ["-y", "agent-obs@latest", "server"]
    }
  }
}
  1. 自我报告指令 — 创建 .cursorrules(或 .cursor/rules/agent-obs.md):
After every tool call, you MUST call the agent-obs MCP server's log_tool_call tool.
Include toolName, status (success/error), outputSummary, and durationMs.
Start each session with start_session and end with end_session.
  1. 验证 — 运行 agent-obs dashboard,打开 http://localhost:9400,并在 Agent 完成任务后查找对应的会话。

架构

                   ┌──────────────────────────┐
                   │   agent-obs server       │
                   │    (self-reporting)      │
                   │                          │
                   │ Agent calls obs_record_* │
                   │ tools directly via MCP   │
                   │ • tool calls             │
                   │ • token usage            │
                   │ • decisions              │
                   │ • grades                 │
                   └──────────┬───────────────┘
                              │
                              ▼
                   ┌──────────────────────────┐
                   │     agent-obs proxy      │
                   │ (fallback — MCP-only)    │
                   │                          │
MCP Client ───────▶│ intercepts tool calls ──▶│ MCP Server
  (Claude/Cursor)   │ logs to SQLite           │  (filesystem,
                   └──────────┬───────────────┘   github, etc.)
                              │
                              ▼
                   ┌──────────────────────────┐
                   │   ~/.agent-observability │
                   │       SQLite DB          │
                   │                          │
                   │  • sessions              │
                   │  • tool_calls            │
                   │  • token_usage           │
                   │  • decisions             │
                   │  • grades                │
                   └──────────┬───────────────┘
                              │
                              ▼
                   ┌──────────────────────────┐
                   │   agent-obs dashboard    │
                   │     (port 9400)          │
                   │                          │
                   │  GET  /api/sessions      │
                   │  GET  /api/sessions/:id  │
                   │  GET  /api/search?q=     │
                   │  GET  /api/stats         │
                   │  POST /api/export        │
                   └──────────────────────────┘

API 参考

REST 端点(仪表板)
方法路径描述
GET/api/sessions列出所有会话。查询参数:?limit=20&offset=0&grade=B
GET/api/sessions/:id获取会话的完整详情,包括所有工具调用、Token、决策和评分
GET/api/sessions/:id/tool-calls列出会话的工具调用。查询参数:?status=error&server=filesystem
GET/api/sessions/:id/tokens获取会话的 Token 使用历史
GET/api/sessions/:id/decisions获取会话的决策点
GET/api/search对工具调用的输入/输出进行全文搜索。查询参数:?q=read_file
GET/api/stats汇总统计:会话总数、平均评分、Token 总数、总成本
POST/api/export将会话数据导出为 JSON。请求正文:{ "sessionIds": ["abc123"], "format": "json" }
GET/api/health健康检查。返回 { "status": "ok", "dbSize": "2.4MB", "sessionCount": 47 }
MCP 工具(服务端模式)
工具参数返回值
obs_record_tool_callsessionId、toolName、serverName、duration(毫秒)、status(success/error)、input、output{ "id": "call-uuid", "recorded": true }
obs_record_token_usagesessionId、inputTokens、outputTokens、model{ "totalTokens": 1850, "estimatedCost": "$0.023" }
obs_record_decisionsessionId、context、options、chosen、reasoning{ "id": "decision-uuid", "recorded": true }
obs_record_gradesessionId、grade(A/B/C/D/F)、reasoning{ "grade": "B", "recorded": true }
obs_get_session_reportsessionId包含所有调用、令牌、决策和评级的完整会话 JSON
obs_list_sessionslimit、offset{ id, description, grade, createdAt, tokenTotal, estimatedCost } 数组

跟踪内容

每次工具调用
  • 工具名称 — 例如 read_file、execute_command、search_code
  • 服务 — 处理调用的 MCP 服务
  • 时长 — 墙钟时间(毫秒)
  • 状态 — success 或 error
  • 输入 — 传递给工具的完整参数
  • 输出 — 返回的完整结果(存储时截断至 64KB)
令牌消耗
  • 输入令牌 — 提示词和上下文
  • 输出令牌 — 生成的响应
  • 令牌总数 — 每个会话的令牌总和
  • 每次调用明细 — 每次 LLM 往返的令牌变化量
成本估算

成本根据公布的 API 定价估算:

模型输入(每 1M 个令牌)输出(每 1M 个令牌)
Claude 3.5 Sonnet$3.00$15.00
Claude 3 Opus$15.00$75.00
GPT-4o$2.50$10.00
GPT-4 Turbo$10.00$30.00

系统会按会话跟踪成本,并在仪表板中显示。你可以通过 ~/.agent-observability/models.json 添加自定义模型定价。

会话评级

每个会话都会根据效率和正确性获得字母评级:

评级标签标准
A无瑕疵零错误、令牌浪费极少、没有不必要的工具调用
B小问题存在一些低效之处,但没有失败
C效率低下令牌使用过多、工具调用冗余、出现可恢复的错误
D有风险存在重大问题——工具调用失败、成本高昂、选错工具
F失败错误导致任务无法完成,或 Agent 放弃了会话
决策点

当 Agent 有多个可能的操作时,可以记录选择某项操作而非其他操作的原因。示例:

{
  "context": "need to read a file — it could be at src/config.ts or lib/config.ts",
  "options": ["read_file src/config.ts", "glob **/config.ts", "grep 'CONFIG' *.ts"],
  "chosen": "glob **/config.ts",
  "reasoning": "File might not exist at the expected path; glob guarantees finding it regardless of location"
}

决策点会形成 Agent 推理的审计跟踪,不仅能了解发生了什么,还能了解为什么发生。

完整审计跟踪

每项操作都会标注时间戳并关联到一个会话。审计跟踪可以回答:

  • 谁(哪个 Agent/用户)访问了哪些数据?
  • 每次工具调用是什么时候发生的?
  • 读取或修改了哪些数据?
  • 操作是否获得授权?

评级系统

评级由 Agent 通过 obs_record_grade 手动指定,或由仪表板根据会话统计数据自动指定:

  • A = 无瑕疵 — 未检测到问题。所有工具调用均成功;相对于任务复杂度而言,令牌使用高效;会话完成了既定目标。
  • B = 小问题 — 存在一些低效之处(例如重复读取同一文件、调用工具但未返回结果后又再次尝试)。没有失败。
  • C = 效率低下 — 需要关注。工具调用冗余、令牌消耗过多,或出现最终得到解决的可恢复错误。
  • D = 有风险 — 存在重大问题。多次工具调用失败、任务成本异常高,或 Agent 选择了明显错误的工具。
  • F = 失败 — 错误导致任务无法完成,或 Agent 放弃了会话。

评级会随时间累积。/api/stats 端点会显示平均评级和评级分布。

为什么要做这个项目

AI Agent 就像一个黑箱。你让 Claude Code 或 Cursor 修复一个 bug、重构一个模块或添加一项功能——几分钟后,你就会得到一份差异。但在这期间究竟发生了什么?它调用了多少次工具?消耗了多少个 token?读取了哪些文件?它是不是尝试了三种方法才选定一种?你一无所知。

这不只是学术上的好奇。缺乏可观测性会导致:

  • 你无法估算成本。 一次看似很快的会话,可能消耗了 $5 的 API 调用费用;一次感觉很慢的会话,成本可能只有 $0.50。你只能在盲目操作。
  • 你无法调试故障。 Agent 生成了有问题的代码——是因为它读取了错误的文件?使用了已弃用的 API?还是误解了任务?没有追踪记录,你只能猜。
  • 你无法改进提示词。 Agent 是否读取了太多文件?调用了太多工具?把 token 浪费在无关上下文上?你需要数据来调整系统指令。
  • 你无法审计访问情况。 如果 Agent 读取了包含机密或 API 密钥的文件,你应该知道。如果它发起了意料之外的网络调用,你需要能够查看。

Agent Observability 会为每次 Agent 会话提供飞行记录仪。它会回答:发生了什么、为什么发生,以及花费了多少。

项目来源

本项目融合了三个先前项目的理念:

AgentShelf(Shopify AI 就绪度扫描器)

AgentShelf 会扫描 Shopify 商店的主题、应用、管理设置和自定义代码,生成 AI 就绪度评分。扫描过程中,它会构建完整的审计记录——每个读取的文件、每次发起的 API 调用、每条发现都会附上时间戳和数据来源。**本项目借鉴的模式:**带有逐项操作时间戳、数据来源归属和会话级摘要的结构化审计记录。

Veros(FHIR 临床事实依据)

Veros 会生成合成的纵向患者记录(FHIR R4),并用它们验证临床决策支持 Agent。其核心原则是:“没有追踪记录,就没有答案。” AI 生成的每一段临床推理,都必须能够追溯到支持它的具体数据元素(化验结果、药物、病症)。**本项目借鉴的模式:**决策点追踪——Agent 的每项选择都必须注明依据,使推理过程可审计、可质疑。

MCP Observatory

MCP Observatory 可保障 MCP 服务的安全——在 Agent 依赖它们之前,检测其中的漏洞、架构漂移和攻击面。每周有 850+ 名开发者使用它,并以此为 MCP 服务安全提供 CI 流水线。使用 Observatory 保障 MCP 服务的安全。使用 agent-obs 追踪依赖这些服务的 Agent。 Observatory 负责验证;agent-obs 负责观测。

**本项目借鉴的模式:**工具健康度评分、会话评级(A-F)和自动降级标记。

开源版与云端版

这个开源包(npm 上的 agent-observability)是核心引擎。它采用 MIT 许可证,并将始终免费且以本地优先:

  • CLI 工具(代理、服务、仪表板)
  • 本地 SQLite 存储
  • REST API
  • MCP 服务工具
  • 完整审计记录、成本估算和会话评级

云端版(app.agentobservability.dev)正在开发中,并将提供更多功能:

  • 共享会话历史的团队仪表板
  • 告警(Agent 评级低于 C 时通过 Slack/email 通知)
  • 历史分析(数月内的成本趋势、效率趋势)
  • 用于审计记录的基于角色的访问控制
  • 符合 SOC 2 标准的基础设施

开源包始终可以独立运行。云端版是功能扩展,而非替代品。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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