第十篇:AI Agent 可观测性建设:用 Trace 串联模型、MCP、A2A 与业务系统

多智能体协作落地指南:从MCP与A2A协议到自动Code Review实践 AI Agent正在从单点问答走向多智能体协同,这背后是工程架构的深刻变革。理解Agent如何感知环境、决策并调用工具,是构建复杂AI应用的基础。当多个Agent需要分工协作时,标准化的通信与工具接入成为关键,MCP协议解决了Agent与工具间的标准化对接,而A2A协议则定义了Agent之间的任务传递与状态同步,二者共同构成了多智能体协作的技术底座。这种协作模式适用于代码审查、内容生成等可拆分任务,但同时也带来了权限扩散、Prompt注入等新的安全挑战。开发者的角色正从编写Prompt转向设计系统,通过合理 阅读详情

第十篇:AI Agent 可观测性建设:用 Trace 串联模型、MCP、A2A 与业务系统

系列:《2026 可验证企业级 AI Agent 工程》
本文关键词:AI Observability、OpenTelemetry、Trace、Spring AI、MCP、A2A

文章目录

前言

某天,用户反馈:

AI 分析一个简单的能耗问题,为什么用了 45 秒?

传统日志可能只记录:

2026-09-22 10:20:45 INFO 分析完成

但真正的执行过程可能是:

意图识别:800ms
→ RAG检索:1.2s
→ 第一次模型调用:4.5s
→ MCP能耗查询:18s
→ 第二次模型调用:5s
→ A2A设备诊断:12s
→ 生成最终回答:3.5s

也可能是 Agent 陷入了循环:

查询能耗
→ 查询告警
→ 再次查询相同能耗
→ 再次查询相同告警
→ 重新规划

如果没有完整可观测性,开发者只能猜测:

  • 是模型响应慢?
  • 数据库查询慢?
  • MCP Server 超时?
  • A2A 子 Agent 阻塞?
  • RAG 检索内容过多?
  • Agent 重复调用工具?
  • Token 数量突然增加?

因此,生产级 AI Agent 必须建立覆盖模型、工具、检索、任务与业务结果的可观测体系。


一、传统微服务监控为什么不够?

传统微服务主要关注四类指标:

请求量
错误率
响应时间
资源使用率

这些指标仍然重要,但无法回答 Agent 特有的问题:

模型为什么选择这个工具?
Prompt使用了多少Token?
RAG检索到了哪些文档?
工具参数是否正确?
Agent执行了多少步骤?
是否发生重新规划?
子Agent完成了哪些任务?
答案是否有证据支持?
本次任务花费了多少成本?

Agent 系统需要同时观察两个世界。

确定性世界

包括:

  • HTTP 请求;
  • 数据库;
  • Redis;
  • 消息队列;
  • MCP Server;
  • 微服务;
  • JVM。

概率性世界

包括:

  • Prompt;
  • 模型响应;
  • Tool Calling;
  • Agent 规划;
  • RAG 结果;
  • Memory 召回;
  • 多 Agent 委派;
  • LLM Judge。

完整可观测性必须把二者连接起来。


二、Agent 可观测性的三大支柱

1. Trace:这次任务经历了什么?

Trace 记录一次任务的完整调用链:

用户请求
→ Agent规划
→ 模型调用
→ RAG检索
→ MCP工具
→ 数据库
→ A2A子Agent
→ 最终回答

它最适合回答:

哪里慢?
哪里失败?
为什么重复调用?
错误从哪个服务开始?

2. Metrics:系统整体表现如何?

Metrics 用于聚合趋势:

任务成功率
P95响应时间
模型Token消耗
工具失败率
Agent平均执行步数
单任务平均成本

它最适合告警和趋势分析。

3. Logs:具体发生了什么?

Logs 用于记录离散事件:

用户确认创建工单
工具参数校验失败
Agent重新规划
MCP Server返回权限不足
A2A任务进入input-required

三者通过 traceId 关联:

Metrics发现异常
→ Trace定位链路
→ Logs查看细节

三、一个完整的 Agent Trace 应该是什么样?

能源诊断任务的理想 Span Tree:

ai.agent.invoke
├── ai.agent.plan
│   └── gen_ai.client.operation
├── ai.rag.retrieve
│   ├── gen_ai.client.operation        Embedding
│   └── db.vector.client.operation
├── ai.agent.execute_step
│   ├── gen_ai.client.operation
│   └── ai.mcp.tools_call
│       └── db.clickhouse.query
├── ai.a2a.send_message
│   └── device-diagnosis-agent
│       ├── gen_ai.client.operation
│       └── ai.mcp.tools_call
│           └── db.alarm.query
├── ai.human.confirmation
├── ai.mcp.tools_call
│   └── business.create_order
└── ai.agent.finalize
    └── gen_ai.client.operation

看到这棵树,就可以迅速判断:

  • 总耗时是多少;
  • 哪个 Span 最慢;
  • 调用了多少次模型;
  • 使用了哪些工具;
  • 是否发生跨 Agent 委派;
  • 工单是否真正创建;
  • 哪个环节发生异常。

四、引入 OpenTelemetry

OpenTelemetry 提供统一的:

Trace API
Metrics API
Logs关联
上下文传播
OTLP导出协议

数据可以发送到:

  • Jaeger;
  • Zipkin;
  • Grafana Tempo;
  • Prometheus;
  • Langfuse;
  • Arize Phoenix;
  • Elastic APM;
  • 商业可观测平台。

推荐架构:

Spring Boot Agent

OpenTelemetry Collector

MCP Server

A2A Agent

Trace Backend

Prometheus

Log Backend

Grafana

应用不应该直接绑定某一个观测平台,而应优先通过 OTLP 输出。


五、Spring Boot 接入可观测性

Maven 依赖示例:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-otel</artifactId>
</dependency>

<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-exporter-otlp</artifactId>
</dependency>

<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

配置示例:

management:
  endpoints:
    web:
      exposure:
        include:
          - health
          - info
          - prometheus

  tracing:
    sampling:
      probability: 1.0

  otlp:
    tracing:
      endpoint: http://otel-collector:4318/v1/traces

生产环境不建议长期使用 1.0 全量采样,应结合流量、成本和故障率配置采样策略。


六、Spring AI 已经提供哪些观测能力?

Spring AI 基于 Micrometer Observation 为以下组件提供观测支持:

ChatClient
Advisor
ChatModel
EmbeddingModel
ImageModel
VectorStore
Tool Calling

典型 Observation 包括:

Observation作用
spring.ai.chat.clientChatClient 整体调用
spring.ai.advisorAdvisor 执行
gen_ai.client.operation模型调用
spring.ai.toolTool Calling
db.vector.client.operation向量数据库操作

模型 Span 可以包含:

gen_ai.request.model
gen_ai.response.model
gen_ai.response.finish_reasons
gen_ai.usage.input_tokens
gen_ai.usage.output_tokens
gen_ai.usage.total_tokens

工具 Span 可以包含:

spring.ai.tool.definition.name
spring.ai.tool.type
spring.ai.tool.call.id

这意味着接入 Spring Boot Observability 后,许多基础模型和工具调用能够自动进入 Trace。


七、自定义 Agent 顶层 Observation

Spring AI 能够观察模型调用,但业务仍需要一个顶层 Agent Span。

@Service
public class ObservableEnergyAgent {

    private final ObservationRegistry registry;
    private final EnergyAgent delegate;

    public ObservableEnergyAgent(
            ObservationRegistry registry,
            EnergyAgent delegate) {
        this.registry = registry;
        this.delegate = delegate;
    }

    public AgentResult execute(AgentRequest request) {
        return Observation
                .createNotStarted(
                        "ai.agent.invoke",
                        registry
                )
                .lowCardinalityKeyValue(
                        "agent.name",
                        "energy-agent"
                )
                .lowCardinalityKeyValue(
                        "agent.operation",
                        "energy-diagnosis"
                )
                .highCardinalityKeyValue(
                        "agent.task.id",
                        request.taskId()
                )
                .highCardinalityKeyValue(
                        "tenant.id",
                        request.tenantId()
                )
                .observe(() -> delegate.execute(request));
    }
}

这里必须区分低基数和高基数标签。

低基数

适合 Metrics 和 Trace:

agent.name
agent.operation
tool.name
result.status
model.name

高基数

只适合 Trace,不能作为 Prometheus 标签:

taskId
userId
conversationId
deviceId
requestId

如果把 userId 或 taskId 放进指标标签,会产生海量时间序列,导致监控系统性能和成本失控。


八、记录 Agent 规划过程

public AgentPlan plan(
        AgentRequest request) {

    return Observation
            .createNotStarted(
                    "ai.agent.plan",
                    observationRegistry
            )
            .lowCardinalityKeyValue(
                    "agent.name",
                    "energy-agent"
            )
            .lowCardinalityKeyValue(
                    "planner.result",
                    "pending"
            )
            .observe(() ->
                    agentPlanner.createPlan(request)
            );
}

建议记录:

计划步骤数量
使用的Planner模型
计划耗时
是否通过校验
是否包含写操作
是否发生重新规划

不建议默认记录完整规划 Prompt 和模型内部推理文本。

更安全的记录方式:

{
  "stepCount": 5,
  "toolNames": [
    "queryDeviceEnergy",
    "queryAlarmHistory"
  ],
  "containsWriteAction": false,
  "validationResult": "PASSED"
}

九、为 MCP 工具调用创建 Span

MCP Client 调用:

@Component
public class ObservableMcpClient {

    private final ObservationRegistry registry;
    private final McpClient delegate;

    public Object callTool(
            String serverName,
            String toolName,
            Map<String, Object> arguments) {

        return Observation
                .createNotStarted(
                        "ai.mcp.tools_call",
                        registry
                )
                .lowCardinalityKeyValue(
                        "mcp.server.name",
                        serverName
                )
                .lowCardinalityKeyValue(
                        "mcp.method",
                        "tools/call"
                )
                .lowCardinalityKeyValue(
                        "mcp.tool.name",
                        toolName
                )
                .observe(() ->
                        delegate.callTool(
                                toolName,
                                arguments
                        )
                );
    }
}

MCP Span 建议记录:

server.name
protocol.version
transport
method
tool.name
result.status
retry.count
result.size

工具参数和结果可能包含敏感信息,默认不要写入 Span。

可以只记录摘要:

{
  "deviceCount": 1,
  "timeRangeHours": 24,
  "resultRows": 24
}

而不是记录完整设备数据。


十、为 A2A 委派传播 Trace Context

跨 Agent 调用最容易出现 Trace 断裂:

调度Agent:Trace A
设备诊断Agent:Trace B

此时看不到它们属于同一次业务请求。

应使用 W3C Trace Context,通过 HTTP Header 传播:

traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
tracestate: ...

在 A2A 调用中还可以传递业务关联字段:

{
  "metadata": {
    "taskId": "TASK-001",
    "contextId": "CTX-001"
  }
}

其中:

traceId:连接分布式技术链路
taskId:标识具体任务
contextId:关联多轮A2A协作

不要自行生成新的 traceId 覆盖上游 Trace Context。


十一、记录 A2A Task 生命周期

A2A Task 可能经历:

submitted
→ working
→ input-required
→ working
→ completed

每次状态变化都应记录 Event:

public void recordTaskTransition(
        String taskId,
        TaskState from,
        TaskState to) {

    Observation observation =
            registry.getCurrentObservation();

    if (observation != null) {
        observation.event(
                Observation.Event.of(
                        "a2a.task."
                                + from.name().toLowerCase()
                                + ".to."
                                + to.name().toLowerCase()
                )
        );
    }
}

同时记录:

远程Agent名称
Skill ID
A2A Task ID
状态
委派耗时
等待用户时间
Artifact数量
失败原因

用户思考和确认所消耗的时间,应与 Agent 计算时间分开统计。


十二、日志如何关联 Trace?

日志格式中加入:

traceId
spanId
taskId
tenantId
agentName

示例:

INFO traceId=4bf92f... spanId=00f067...
taskId=TASK-001 agent=energy-agent
tool=queryDeviceEnergy result=success duration=823ms

查错流程:

告警发现P95延迟上升
→ 打开对应慢Trace
→ 找到慢Span
→ 使用traceId查询日志
→ 查看具体错误和业务上下文

日志应使用结构化 JSON,而不是拼接大段文本:

{
  "level": "INFO",
  "traceId": "4bf92f...",
  "taskId": "TASK-001",
  "event": "mcp_tool_completed",
  "toolName": "queryDeviceEnergy",
  "durationMs": 823,
  "resultRows": 24
}

十三、Prompt 和 Completion 应该记录吗?

Spring AI 默认不会导出 Prompt、Completion、工具参数和工具结果,因为其中可能包含敏感数据。

相关配置包括:

spring:
  ai:
    chat:
      observations:
        log-prompt: false
        log-completion: false

    tools:
      observations:
        include-content: false

    vectorstore:
      observations:
        log-query-response: false

生产环境应保持默认关闭。

如果排查问题必须记录内容,建议:

只在隔离测试环境开启
只针对白名单请求开启
记录前执行脱敏
设置较短保留周期
限制查看权限
记录访问审计

需要脱敏的信息包括:

  • 身份证号;
  • 手机号;
  • 用户姓名;
  • 设备敏感参数;
  • 数据库地址;
  • 密码和 Token;
  • 内部系统信息;
  • 租户业务数据。

任何密码、密钥和认证 Token 都不应进入 Trace。


十四、Token 与成本监控

Spring AI 可以提供:

gen_ai.usage.input_tokens
gen_ai.usage.output_tokens
gen_ai.usage.total_tokens

Prometheus 指标通常包括:

gen_ai_client_token_usage_total

可以计算单次调用成本:

public BigDecimal calculateCost(
        String model,
        long inputTokens,
        long outputTokens) {

    ModelPrice price =
            modelPriceRegistry.get(model);

    BigDecimal inputCost =
            price.inputPrice()
                    .multiply(
                            BigDecimal.valueOf(inputTokens)
                    )
                    .divide(BigDecimal.valueOf(1_000_000));

    BigDecimal outputCost =
            price.outputPrice()
                    .multiply(
                            BigDecimal.valueOf(outputTokens)
                    )
                    .divide(BigDecimal.valueOf(1_000_000));

    return inputCost.add(outputCost);
}

任务总成本包括:

Planner模型调用
+ Executor模型调用
+ Embedding
+ Reranker
+ LLM Judge
+ 子Agent调用
+ 第三方工具费用

建议关注:

每个成功任务平均成本
每种Agent平均成本
每个租户成本
失败任务浪费成本
重复调用造成的成本

十五、核心 Metrics 设计

1. 任务指标

ai_agent_task_total
ai_agent_task_duration_seconds
ai_agent_task_success_total
ai_agent_task_failure_total
ai_agent_task_active

推荐标签:

agent_name
operation
status
failure_type

2. 规划指标

ai_agent_plan_steps
ai_agent_replan_total
ai_agent_loop_detected_total
ai_agent_budget_exhausted_total

3. 工具指标

ai_agent_tool_call_total
ai_agent_tool_call_duration_seconds
ai_agent_tool_error_total
ai_agent_tool_retry_total

4. MCP 指标

ai_mcp_request_total
ai_mcp_request_duration_seconds
ai_mcp_error_total
ai_mcp_result_size

5. A2A 指标

ai_a2a_delegation_total
ai_a2a_task_duration_seconds
ai_a2a_task_failure_total
ai_a2a_input_required_total

6. 质量指标

ai_agent_groundedness_score
ai_agent_task_completion_score
ai_agent_user_feedback_total
ai_agent_unsupported_claim_total

质量分数通常通过异步评测生成,不应阻塞用户主请求。


十六、使用 Micrometer 创建自定义指标

@Component
public class AgentMetrics {

    private final MeterRegistry registry;

    public AgentMetrics(MeterRegistry registry) {
        this.registry = registry;
    }

    public void recordTask(
            String agentName,
            String operation,
            String status,
            Duration duration) {

        registry.counter(
                "ai.agent.task",
                "agent.name", agentName,
                "operation", operation,
                "status", status
        ).increment();

        registry.timer(
                "ai.agent.task.duration",
                "agent.name", agentName,
                "operation", operation,
                "status", status
        ).record(duration);
    }

    public void recordToolCall(
            String toolName,
            String status) {

        registry.counter(
                "ai.agent.tool.call",
                "tool.name", toolName,
                "status", status
        ).increment();
    }
}

禁止这样做:

registry.counter(
    "ai.agent.task",
    "userId", userId,
    "taskId", taskId
);

因为用户和任务数量会不断增长,造成指标高基数问题。


十七、如何定位一个慢请求?

假设监控显示:

ai_agent_task_duration_seconds P95 > 30秒

排查顺序:

第一步:查看顶层 Trace

确认慢请求集中在哪个 Agent。

第二步:展开模型 Span

查看:

gen_ai.request.model
输入Token
输出Token
模型响应时间
finish_reason

如果输入 Token 突然增大,可能是上下文没有压缩。

第三步:展开工具 Span

查看:

哪个工具最慢
是否发生重试
结果集是否过大

第四步:检查 Agent 循环

查看:

是否重复调用相同工具
是否多次重新规划
是否没有明确终止条件

第五步:检查跨服务链路

确认 MCP、A2A、数据库是否在同一条 Trace 中。

最终可能定位到:

queryDeviceEnergy查询了30天秒级原始数据,
返回180万条记录,耗时18秒,并产生大量上下文。

修复方式应该是调整查询聚合,而不是更换大模型。


十八、错误分类比错误数量更重要

定义统一错误类型:

public enum AgentErrorType {
    MODEL_TIMEOUT,
    MODEL_RATE_LIMIT,
    CONTEXT_OVERFLOW,
    PLAN_INVALID,
    LOOP_DETECTED,
    TOOL_NOT_FOUND,
    TOOL_ARGUMENT_INVALID,
    TOOL_TIMEOUT,
    MCP_CONNECTION_ERROR,
    A2A_TASK_FAILED,
    RETRIEVAL_EMPTY,
    PERMISSION_DENIED,
    USER_CONFIRMATION_TIMEOUT,
    BUSINESS_CONFLICT,
    BUDGET_EXHAUSTED
}

记录错误时,应区分:

系统错误:网络、服务、数据库
模型错误:规划、工具选择、参数生成
业务错误:设备不存在、工单冲突
安全错误:越权、恶意输入
用户流程:拒绝确认、补充信息超时

否则所有失败都显示为 Agent execution failed,无法进行治理。


十九、采样策略

全量保存 Trace 成本较高,而且可能扩大数据风险。

推荐分层采样:

普通成功请求:5%
慢请求:100%
错误请求:100%
高风险操作:100%
写操作:100%
安全事件:100%
用户投诉关联请求:100%

这种策略通常需要 OpenTelemetry Collector 的 Tail Sampling:

请求执行完成
→ Collector判断状态、延迟和风险
→ 决定是否保留完整Trace

Metrics 应持续全量统计,Trace 可以按策略采样。


二十、告警规则设计

可靠性告警

Agent任务失败率 > 5%
MCP工具错误率 > 3%
A2A任务超时率 > 2%
模型限流错误持续增加

性能告警

Agent P95延迟 > 30秒
模型P95延迟 > 10秒
工具P95延迟 > 5秒
向量检索P95延迟 > 2秒

成本告警

单任务Token较昨日增长50%
单任务平均成本超过预算
失败任务Token消耗持续增长
某个租户调用量异常增加

行为告警

重复工具调用率升高
重新规划次数异常
Agent步骤达到上限
input-required比例突然上升

安全告警

越权访问
敏感工具调用
确认凭证校验失败
Prompt Injection命中
跨租户访问尝试

安全告警不能依赖采样 Trace,必须完整记录。


二十一、Agent 可观测性看板

建议建立四个 Dashboard。

1. 业务总览

任务总量
任务成功率
平均完成时间
异常发现数量
工单创建数量
用户确认率

2. 模型看板

不同模型调用量
输入输出Token
P95延迟
错误率
缓存命中率
单次调用成本

3. 工具看板

工具调用排行
工具失败率
工具P95延迟
重复调用率
结果集大小

4. Agent 行为看板

平均执行步骤
重新规划次数
循环检测次数
预算耗尽次数
A2A委派数量
人工介入比例

二十二、可观测性与评测如何结合?

Observability 关注:

生产环境中真实发生了什么?

Evaluation 关注:

Agent 的行为是否满足预期?

二者结合:

生产Trace
→ 发现失败模式
→ 转换为Eval测试用例
→ 修复Agent
→ 运行回归评测
→ 灰度发布
→ 继续观察生产指标

例如监控发现:

Agent在设备不存在时平均调用了7次查询工具。

将该 Trace 转换为测试用例:

id: device-not-found-loop-regression
expected:
  maxToolCalls: 2
  finalStatus: FAILED
  errorCode: DEVICE_NOT_FOUND

这样,同类问题就不会在下一次升级后重新出现。


二十三、常见反模式

1. 只记录模型请求耗时

这无法区分 MCP、A2A、RAG 和数据库耗时。

2. 把 Prompt 全部写进日志

容易造成隐私、密钥和业务数据泄露。

3. 每个服务生成独立 Trace

跨 Agent 调用链会断裂,无法进行端到端分析。

4. 把用户 ID 作为 Metrics 标签

会制造高基数时间序列。

5. 只有技术指标,没有业务结果

模型调用成功,不代表工单真的创建成功。

6. 只收集数据,不设置告警

没有 SLO、阈值和负责人,可观测数据就难以产生价值。


总结

AI Agent 可观测性的核心不是记录更多日志,而是建立一条完整、可关联的执行链:

用户请求
→ Agent规划
→ 模型调用
→ RAG检索
→ MCP工具
→ A2A协作
→ 业务系统
→ 最终结果

生产级体系需要同时具备:

Trace定位单次问题
Metrics发现整体趋势
Logs解释具体事件
Evaluation判断行为质量

同时必须坚持:

  • 默认不记录 Prompt 和工具完整内容;
  • 使用 W3C Trace Context 传播链路;
  • 控制 Metrics 标签基数;
  • 错误和高风险操作全量保留;
  • 将生产失败持续转化为回归用例。

真正的 Agent 可观测性,不只是知道“系统是否报错”,而是能够回答:

Agent 为什么做出这个决定、调用了什么、花费了多少、产生了什么真实结果。

下一篇:

《AI Agent 安全攻防:Prompt Injection、越权工具调用与数据泄露防护》

参考资料:

企业级AI工程化实战:基于Agent、RAG与MCP构建高可用AI能力中台 上周,一个在头部大厂做架构的朋友深夜找我吐槽。他们团队去年就立项了一个AI辅助决策项目,初期用RAG(检索增强生成)快速搭建了一个知识库问答原型,效果惊艳,领导很满意。但今年想把原型推广到核心业务线,接入十几个不同数据源、几十个业务流程时,整个系统立刻变得摇摇欲坠。RAG检索时灵时不灵,Agent(智能体)调用外部API经常超时或返回乱码,不同团队开发的AI模块像一堆方言不通的“信息孤岛”,联调成本高到令人崩溃。 他的原话是:“单点Demo跑得飞起,一上规模就四处漏风。我们现在不缺AI概念,缺的是能把AI能 阅读详情

相关推荐

构建现代AI Agent:LangGraph、MCP与Workflow三大核心架构形态解析

在AI应用开发领域,智能体(Agent)已从简单的API调用演变为需要管理复杂状态与业务流程的系统。其核心原理在于通过模块化设计,将任务分解为可复用的技能(Skill)与工具(Tool),并借助状态机和工作流引擎协调执行。这种架构的技术价值在于实现了高度的可维护性与扩展性,使开发者能够构建适应复杂场景的自治系统。典型的应用场景包括智能客服、自动化数据分析、以及跨系统任务编排等。本文聚焦于现代AI Agent开发的三大关键技术形态:LangGraph用于有状态的工作流编排,MCP(模型上下文协议)实现工具的统

weixin_33696822的博客 478

Phoenix CLI Agent Starter Kit 可观测性实战:用 phoenix-cli 逐层调试 AI Agent 的 Trace 数据

本指南以仓库中 [CLI Agent Starter Kit](https://link.gitcode.com/i/d7d91bc27f32274c1b854435f4590800) 的 CLAUDE.md 文档为核心,讲解如何为一个基于 AI SDK(Vercel AI SDK)与 Anthropic Claude 构建的 TypeScript CLI Agent 接入 Phoenix 可观测

gitblog_00153的博客 369

WorkBuddy实战指南:可编排AI Agent与MCP协议落地实践

AI Agent正从概念走向企业级生产环境,其核心在于可编程、可验证、可追溯的执行模型。区别于对话式AI,真正的Agent需具备任务分解、技能编排、状态可观测等能力,而Skills作为原子化动作单元,依赖严格的输入输出契约保障可靠性;MCP协议则提供跨系统集成的标准化通信范式,实现‘即插即用’式对接。这类技术显著提升办公自动化、数据协同与流程治理效率,广泛应用于销售运营、HR入职、法务审核等高确定性场景。本文基于WorkBuddy平台3个月真实业务交付经验,深入解析Skills设计、Agent编排、MCP适

weixin_28223453的博客 211

深入理解 AI Agent:从黑盒到全链路——生产级 Agent 的可观测性体系怎么建

<think>用户要求我根据提供的内容生成一篇150字以内的摘要。这是关于构建生产级AI Agent可观测性系统的文章。让我写一篇简洁的中文摘要,捕捉核心要点。 让我提炼关键点: 传统日志和APM在AI Agent面前失效,因为Agent调用是树状而非链状 核心方案:Trace/Span两级模型+parentSpanId自组织树 零侵入:AOP注解+切面统一管理埋点生命周期 异步落库与有界队列,观测不反压业务 自适应采样(错误强制全采,普通按价值分配) 瀑布图定位慢节点 runId串联Graph

D-503 371

AI Agent工具链

本文系统梳理了AI Agent开发工具链的体系架构与发展趋势。工具链按生命周期划分为12个核心工具域,包括模型层管理、Agent框架编排、RAG检索、安全护栏等。当前行业呈现四大趋势:MCP协议成为工具连接标准、自进化Agent兴起、专用芯片出现、记忆系统成为核心竞争力。工具链采用六层架构(基础设施层至应用层)加横切关注点的组织结构,具有分层解耦和多Agent编排特征,其中Router-Specialist-Validation-Audit的四级协作模式成为主流。MCP和A2A双协议体系实现了标准化交互。

lza_csdn2019的博客 346

Intouch间接变量(扩展)

间接变量只是Intouch提供给开发者的便捷方式之一,并不是所有情况都一定要使用间接变量,有时候用条件语句或者内存变量的方式也能起到类似的作用。

weixin_41571357的博客 2168

AI技能设计实战:从可观测性到MCP协议,打造高可靠Agent技能

在AI Agent和自动化工具领域,技能(Skill)作为核心功能单元,其设计质量直接影响系统稳定性和用户体验。从技术原理看,一个健壮的技能架构需遵循软件工程的基本准则,尤其强调可观测性(Observability)——通过结构化的TRACE日志记录执行链路、关键决策点和异常信息,使内部状态透明化,便于问题诊断与性能优化。这不仅是提升开发效率的关键,更是保障服务可靠性的基石。在工程实践中,技能的价值体现在能否无缝集成到现有工作流,解决真实场景下的高频痛点。随着生态发展,标准化协议如MCP(Model Con

weixin_34082789的博客 386

抖音用户评论和ID的采集方法

随着5G时代的普及,各大运营商的套餐纷纷推出,使得流量成本进一步降低。同时5G线路高宽带、低延迟的技术特性和手机普及,让视频用户访问量快速增加。 由于大量的视频工具和拍摄APP的提供,让短视频的拍摄、制作包括发行都变得更加简单便捷,越来越多的普通人可以投入视频创作,创造了更丰富的互联网内容,视频作者从视频推广中能获取粉丝和推广收益。 目前抖音就是目前最重要的短视频平台之一,要及时获取上面的用户评论和ID,需要结合爬虫代理实现采集方案,下面的代码就能快速采集相关信息: package htmlunit; i

ssbt_2020的博客 6787

黑苹果 macOS 安装实战:上千种机型 EFI 配置,一步步装稳系统

很多人第一次装黑苹果,卡在开机第一屏的"此电脑不受支持"提示。Hackintosh 是长期维护的开源项目,汇集上千种硬件机型的 EFI 引导配置与安装教程,帮你在普通 PC 上装起 macOS。下文按动手顺序展开。 ## 🧭 项目定位:先搞清楚它能帮你什么 它以机型为单位整理 EFI 配置,笔记本、台式机、迷你主机都有收录,并附安装说明。你不用从零写 config.plist:找到同款或相近

gitblog_00526的博客 386

Keil MDK打开别人工程总报错?手把手教你修复‘找不到main.o’和‘未定义’的路径问题

本文详细解析Keil MDK工程移植时常见的'找不到main.o'和'未定义'编译错误,提供从路径修复到宏定义配置的完整解决方案。通过系统化的检查清单和预防措施,帮助开发者快速解决MDK工程迁移问题,提升嵌入式开发效率。

weixin_28724661的博客 397

Ubuntu18.04 SoftRoCE安装教程

目标:创建两台Ubuntu18.04虚拟机,安装SoftRoCE环境,一台作为Server,一台作为Client,模拟RDMA通信环境,熟悉RDMA的通信方式。

GGGYL111的博客 1548

Grafana Tempo 与 AI:用 MCP 服务器和 LLM 优化 API 构建智能 Trace 查询 Agent

Grafana Tempo 原生暴露了一套面向 AI Agent 的接入能力:基于 Model Context Protocol(MCP)的 `/api/mcp` 服务器、支持 `Accept: application/vnd.grafana.llm` 头部的 LLM 优化 API 响应,以及配套的 `gcx`、`assistant-cli` 等 Grafana 家族工具。本文以仓库内官方文档 [

gitblog_01049的博客 21

【在 WSL2 GUI 中使用 pulseaudio 播放声音】

最近在搞一个Linux项目,由于WSL2中需要用到声音外放,无奈只能潜心研究。后来就使用了一种折中的方式替代,那就是pulseaudio。目前来讲WSL2对硬件外设的支持还是不太友好,关于USB的支持我之前在其他文章中已经论述过了,这里不讨论。1、Windows11别忘记打开声音2、可能有一定延迟,因为是通过网络传输的。3、效果的话只能见仁见智了,如果不能满足要求就安装一个实实在在的Ubuntu吧!

jiexijihe945的博客 4530

MCP与A2A架构:实现移动核心网智能体控制的新范式

在AI驱动的自动化运维领域,智能体(Agent)通过感知、决策与执行闭环自主完成任务已成为核心趋势。其关键在于如何让智能体安全、高效地调用外部工具与数据,这正是Model Context Protocol(MCP)协议旨在解决的基础问题。MCP定义了一套标准化接口,使大模型能够结构化地“操作”各类系统能力,为智能体提供了统一的能力接入层。结合Agent-to-Agent(A2A)协同架构,多个智能体得以进行任务编排与协作,从而将孤立的工具调用升维为目标驱动的连续行动序列。这一技术组合在移动核心网这类复杂系统

weixin_34006468的博客 322

【62】OpenCV C++实战篇——【项目实战】OpenCV C++ 精准定位“十字刻度尺”中心坐标,过滤图片中的干扰,精准获取十字交点坐标

本文针对工业相机拍摄的2000万像素图像中十字刻度尺的精确定位问题进行了研究。面对图像较暗、存在红黄干扰、记号笔涂抹及细节模糊等难点,提出了一种基于霍夫变换的解决方案。通过灰度化、反色、二值化预处理后,对比分析了多尺度霍夫直线(HoughLines)和渐进概率霍夫线段(HoughLinesP)两种方法的定位效果。实验结果表明,HoughLinesP由于具有最小线段长度和间隙约束,在直线贴合度和交点定位精度上表现更优,其返回的线段端点坐标也更便于后续处理。该研究为工业视觉中微小目标的精确定位提供了实用参考。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 975

在Allegro设计界面中如何修改封装焊盘

在高密度板的情况下,SUIPLA(支持内层没有的焊盘摘掉)打勾,在高密度板的情况下,内层没有的焊盘摘掉可以增加走线的空间。3、修改完焊盘后,选择File→Update to Design(更新到设计)。然后关闭焊盘修改对话框即可。,将会定期不定期更新技术文章,互相学习交流。或者点击Options选项卡下要修改的焊盘,然后点击Edit修改。在Allegro PCB设计界面中修改封装焊盘的方法。2、然后点击封装上要修改的焊盘,右击选择Edit。修改完成后如下图所示。

bhxc809751502的博客 7806

Spring AI 2.0企业级Agent实战:从多模型到Skills全链路解析

企业级AI应用开发中,模型与业务系统之间的连接是核心难点。Agent技术通过统一编排模型调用、工具使用和外部协议接入,让AI真正理解并操作企业数据。Spring AI作为Java生态的集成框架,提供了多模型抽象、Tools函数调用、MCP协议接入、多层记忆管理和Skills流程封装等能力,帮助企业构建可落地的智能助理。本文以智能航空项目为例,从环境配置、模型切换、工具设计到Agent工作流组装,系统讲解如何用Spring AI 2.0打通从知识检索到业务操作的全链路,并分享稳定性、可观测性与数据合规的工程实

weixin_32932149的博客 231

15、基于最优传输的协作多视图聚类框架

本文提出了一种基于最优传输理论的协作多视图聚类框架,通过引入协作学习机制在不同视图间建立先验交互,以提升共识聚类的质量。框架包含两种新方法:协作共识投影方法(CoCP)和基于新表示的协作共识方法(CoCNR)。CoCP在全局空间中整合多视图信息并进行共识投影,而CoCNR则通过协作编码生成新的数据表示以实现更优聚类。方法利用熵正则化的Wasserstein距离与Wasserstein重心,有效捕捉数据分布间的几何结构,并通过聚合步骤获得统一模型。实验结果表明,所提方法在多个数据集上均优于现有方法,具有良好的

gpt4scribbler的博客 85

rea 上手教程:10 分钟跑通你的第一条二进制逆向命令

周五下午,你桌上躺着一个 stripped 的 .elf,老板要它的加解密逻辑,你打开 IDA,对着 GUI 发呆。这种时刻正是 rea 要解决的:它把原生二进制逆向——符号、字符串、引用、伪代码——搬回命令行,让你和 AI Agent 用同一条命令读同一个程序的输出。读完这篇文章,你手里会有一条跑通的命令和一份能看懂的输出。 ## 认知对齐:它是编排层,不是反编译器 一句话定义:rea 是一

gitblog_00041的博客 474

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

5分钟装好Bloxstrap:Roblox替代启动器从安装到上手的完整指南

Bloxstrap 是一款第三方 Roblox 替代启动器:它不改动游戏客户端本体,却在官方启动器之上加上了 Discord 状态、自定义音效、服务器定位等实用功能,只支持 Windows,MIT 协议开源,主体用 C# 编写。不碰游戏本体意味着不用担心账号安全,这正是它和"修改器"最大的区别。 下面按"装之前 → 装的过程 → 装之后"的顺序走一遍,每一步只解决一个新手最容易卡住的点。 ##

gitblog_01123的博客 179

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

企业 AI Agent 调用 MCP 工具时,哪些云上安全方案适合做权限控制和审计?

Agent通过Gateway完成工具搜索、列出工具和调用工具,企业则在同一位置进行认证、访问控制和治理。例如,一位客服人员平时有权查看订单。企业通过MCP为AI Agent连接数据库、工单、邮件、代码仓库和业务API,可以显著加快工具接入。但MCP解决的主要是工具如何被发现和调用,并不会自动完成企业级身份认证、最小权限、凭证管理和审计。例如,市场部员工通过营销Agent生成活动方案时,可以调用品牌素材和市场数据工具,但不应因为营销Agent部署在企业内部,就自动获得财务预算系统的访问权限。

DecRef_2026的博客 363

MCP与Agent Skill:智能体开发中的核心协议与技能单元解析

在智能体开发领域,模型间通信协议(MCP)和Agent Skill是两大关键技术组件。MCP作为系统级协议,定义了模型交互的标准化接口和上下文管理机制,确保跨会话状态的一致性和模型协同工作流的稳定性。其核心原理包括JSON Schema标准化请求/响应格式、Redis集群管理对话上下文等。Agent Skill则是面向具体任务的原子化能力单元,通过参数化设计和领域优化实现垂直场景的高效处理。两者的协同工作显著提升了智能体系统的可维护性和扩展性,广泛应用于对话系统、自动化工作流等场景。本文深入解析MCP与Ag

weixin_33672400的博客 435

AI Agent开发平台实战:编排、多模型接入与MCP/SKILL/RAG工程化设计

AI Agent正在从单体Demo走向平台化工程,核心挑战是如何将流程编排、模型接入与知识扩展标准化。本文从Agent编排层出发,解析有向图模型、串并行调度与容错降级;再深入多供应商接入层,展示统一接口如何屏蔽不同模型SDK差异,实现成本优先与容灾切换;并厘清MCP工具接入、SKILL技能封装、RAG知识库三者的边界与组合套路。文章还结合工程化底座的可观测性与评测闭环,给出落地时的反直觉经验,适合正在构建Agent平台或准备将AI应用推向生产的团队参考。

weixin_29031161的博客 263

AI Agent 工程实践(19):从 Demo 到生产环境——AI Agent 的工程 Checklist

本文总结了从Demo到生产级AI Agent的十大关键检查项,揭示了Demo与生产环境的本质差异。作者通过亲历事故归纳出十个必检维度:行为约束规则、复盘机制、记忆系统、安全治理、工作流编排、容错恢复、调用链追踪、监控指标、基准测试和日志审计。每个维度都配有明确的通过标准(如"核心规则≤5条"、"四层记忆体系"等)和对应解决方案的文章指引。文章强调生产级Agent必须通过全部检查项,缺一不可,并提供了自动化检查脚本模板。

2401_85223846的博客 766

如何搭建 drawio-desktop:draw.io 桌面版离线免费画流程图与架构图的完整教程

在浏览器标签页里画图,尴尬多半来自网络:标签页一关,编辑状态悬空;网一断,页面直接白屏。drawio-desktop 就是官方给出的解法——draw.io 桌面版,把整套编辑器装进本机,离线流程图、本地架构图全靠它渲染,不联网也能画,个人和商用场景都是免费绘图工具。这篇教程带你走完"拿到源码 → 依赖就位 → 窗口弹出"的全过程,并顺带讲清数据落在哪、网络边界画在哪。 ## draw.io 桌面

gitblog_00366的博客 393

用 Go Micro + MCP 让现有微服务零改造接入 AI Agent

**导读**:本文以 Go Micro 博客平台为例,完整演示如何通过一行 `mcp.WithMCP(":3001")` 把已有的微服务(Users / Posts / Comments / Mail)直接暴露为 MCP(Model Context Protocol)工具,供任意 MCP 兼容的 AI Agent 调用。读完本文,你将掌握 MCP 网关注入方式、工具 Schema 自动生成原理、d

gitblog_00825的博客 456
上一篇: 第九篇:如何评测一个 AI Agent?从回答准确率到完整执行轨迹评估
下一篇: 第十一篇:AI Agent 安全攻防:Prompt Injection、越权工具调用与数据泄露防护
yychen_java
博客等级 码龄8年 1451粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值