LangChain4j 于 2026-09-28 发布 1.20.2:聚焦 Agent-to-Agent(A2A)客户端修复——A2AClientInstance/A2AClientBuilder 增加 tenant(),@A2AClientAgent(tenant=…) 可在每条 MessageSendParams 自动附带租户;也可从 Agent Card URL 路径 /.well-known/{tenant}/agent-card.json 解析。租户参数从方法参数中过滤,避免泄漏给 LLM 工具调用。同步加固 AgenticScope/ResultWithAgenticScope 的 toString,防止循环引用炸日志。

核心要点速览 (Key Takeaways)

  • ✓发版:1.20.2(2026-09-28);对比 1.20.1...1.20.2
  • ✓A2A 租户:@A2AClientAgent(tenant=…) / a2aClientBuilder.tenant(…);空则从 Agent Card URL /.well-known/{tenant}/agent-card.json 解析(#6512)
  • ✓安全边界:带 @A2ATenantId 的参数不再作为工具参数交给 LLM,而是写入消息元数据
  • ✓可观测:DefaultAgenticScope/ResultWithAgenticScope toString 防循环引用,避免日志/调试死循环
  • ✓协议与文档:A2A Protocol · LangChain4j Agents 教程
🧭

阅读完核心要点?进一步了解模型实力与实际开销

7 大权威镜像天梯跑分与 29+ 款主流编程套餐横向比价测算

🔬

深度技术解析与实战评估

核心背景与行业痛点

多租户 Agent 平台用 A2A 做跨进程委派时,租户标识必须随每条消息送达下游,但又不能出现在 LLM 可见的工具参数里——否则模型可能改写或泄漏租户 ID。上一版客户端缺少统一的 tenant 注入点,开发者只能在业务层手写透传,容易漏发或误暴露。

架构亮点与底层机制

1.20.2 通过 #6512 在 langchain4j-agentic-a2a 与 langchain4j-agentic 落地租户链路:A2AClientInstance.tenant()、A2AClientBuilder.tenant(String),以及声明式 @A2AClientAgent(tenant=…)。配置非空时,租户写入每次 MessageSendParams;若留空,则尝试从 Agent Card URL 路径 /.well-known/{tenant}/agent-card.json 解析。A2AClientAgentInvoker 会过滤带 @A2ATenantId 的方法参数,使其不进入 LLM 工具参数集合。DefaultAgenticScope/ResultWithAgenticScope 的 toString 增加循环引用防护,避免调试输出栈溢出。

权威 Benchmark 与实测跑分对比

本版为协议正确性补丁,发行说明未给出 SWE-bench、吞吐或延迟数字。验收建议:多租户联调时抓包确认每条 A2A 消息含预期 tenant;故意在 agent 方法签名暴露租户参数,确认不会出现在模型 tool schema;对含循环引用的 AgenticScope 调用 toString 应在有限时间内返回。勿将「125 个变更文件」理解为功能面扩大——其中大量为各模块版本号对齐。

开发者实战落地与开箱指南

将依赖升级到 dev.langchain4j:langchain4j:1.20.2(agentic 模块对应 1.20.2-beta30)。在 A2A 客户端注解或 builder 上设置 tenant,或确保 Agent Card 发布在带租户段的 well-known 路径。教程见 Agents,协议规范见 a2a-protocol.org。完整 diff:compare 1.20.1...1.20.2。