从 ADK 看 Google 眼里的 MCP&A2A&Skill
我眼里的:
许多平台原来开放了 OpenAPI,MCP 能够对接到现在的 AI 生态,调用门槛大幅降低。
当 Agent 多且杂(现实如此),就会衍生出 Agent 之间的通信需求,A2A 像是在设想未来,姑且当做一个标准了解。
Skill 通过渐进式披露解决了模型上下文的问题,本质上还是计算机常用的分而治之思想;同时 Skill 支持描述顺序执行/条件分支,避免了拖拉拽搭建工作流。
现在从 ADK 的实现和使用方式,来看看其怎么看待这三个概念/技术点的。
1. MCP
分别是 Client Server 两个角度:
Client: 如何将 ADK tool(s) 转为 MCP Server
Server: 如何在 ADK agent 中接入其他 MCP...
Google ADK 是如何实现可观测的?
1. 何时需要可观测性
智能体交互变慢了,是调用工具还是查询知识库变慢了?工具调用了第三方的 API,估计是网络波动。哦不,知识库底层的 Milvus 没有做存算隔离,可能是这里的性能瓶颈?或者是系统缺少隔离,其他用户影响了当前用户?
当你开始考虑这个问题时,就说明系统缺少可观测的能力了。
得益于微服务架构的发展,智能体技术从构建之初,就可以基于成熟的可观测的能力。该能力,是解决智能体从有用到可用的关键点。
注:除了 CodeAgent 以外,为何大部分的智能体都只是 demo 而没有用,就是另外一个话题了。
从架构角度,需要提前考虑如何让智能体变得可用。无论系统设计的如何健壮,SRE 如何运维和弹性伸缩资源,系统长时间运行,总会出问题,而哪里会出问题则是不可预测的。
可观...
Google ADK: 又一款 Agent 框架?
1. Google ADK:轻量级智能体框架介绍
Agent Development Kit (ADK) 是 Google 去年推出的一款智能体框架,从我的测试情况看1,还是比较好用的。
相比 LangChain,主要的优点是轻量级的设计及简洁代码、对 Agent 效果迭代过程的实用设计。前者方便快速原型开发,后者则关注到了 Agent 效果而不是仅仅搭建出来。
LangChain 初始印象是功能强大,比如支持了不同的 LLM、不同的向量库等。但是实际使用下来,发现这种支持的代价就是深层次的抽象、反射。而对于简单的业务场景,比如代码定位、个性化的功能开发等,反而会更加复杂耗时。
之前也简单的看过CAMEL 和 AutoGEN,方便性上不如 ADK.
更合理的智能体框架形式,或...
基于Mem0的几款记忆框架&平台的调研
1. Mem0 是什么
mem0ai/mem01的官网介绍:
Mem0 (“mem-zero”) enhances AI assistants and agents with an intelligent memory layer, enabling personalized AI interactions. It remembers user preferences, adapts to individual needs, and continuously learns over time—ideal for customer support chatbots, AI assistants, and autonomous systems.
现在看,记忆层已是智能体的基础...
任务队列 Celery 实践
上一篇介绍了 Celery 架构,这篇我们实战看看。
1. 例子
文章从基础、重试、ack、周期任务等几个方面说明,完整的运行例子放在了 github 上
1.1. Hello World
入门例子使用非常简洁,分为两步:
启动Worker: 从 Redis 读取任务,执行add方法,将结果写回 Redis
run_simple_task -> add.delay: 写入任务,通过app分发到 default 队列(存储到 Redis),并等待读取结果
1.1.1. 消费者-Worker
先从启动 Worker 开始,定义app/celery_app.py:
#!/usr/bin/env python
# coding=utf-8
from celer...
任务队列 Celery 架构
1. 定位:Celery 是什么?
Celery 是一个分布式任务队列系统,用于在多个工作进程和机器之间异步执行任务。
异步任务的需求很多,特别是耗时且需要平滑处理的场景。比如文件格式转换、数据统计、调用第三方耗时的 api 等,就需要任务入队,然后逐批出队处理。
有些情况下,异步任务还往往伴随着延迟或者周期处理的需求,例如统计网站使用量、文件个数大小等,Celery 也还支持了周期及延迟任务。
2. 思考:如果自己实现
实现任务队列,基础是链条上参与的三个角色:生产者、队列、消费者
首先是生产者:需要支持用户自定义任务,能够方便的提交到任务队列,队列里存储的应当是任务的元信息。这块需要提供代码框架或者接口实现。
其次是队列:任务不丢的基础是持久化。我的第一个想法是采用消...
2025年个人总结
1. 工作
工作节奏相比互联网变平缓了。有时也会遇到难题,不过组内氛围很好,大家充分发挥“三个臭皮匠顶个诸葛亮”的精神,一块硬着头皮解决。
不忙的时候,有几次一路蹬着自行车回家,看着主路上车水马龙、辅路上人来人往,川流不息,恍惚间有种刚来北京读书时对这个城市的感觉。
工作内容偏功能性一些,性能、稳定性、辅助系统很少涉及。今年要随着项目开展,多研究些开源项目,多去思考生产落地的实际问题。
2. 读书
2025 读的书不多,AI 相关耗时最久。今年想在此基础上,读更多关于历史的书。
书名
一句话总结
《人工智能工程化:应用落地与中台构建》
第一次一窥其他人眼中 AI 中台的全貌,当...
记忆和向量-读《图解大模型》
1. 记忆
大模型是无状态,不会记住任何先前的对话内容。
图源:《图解大模型-生成式AI原理与实战》
注意书里介绍的是短期记忆
常见记忆方式有两种:
对话缓冲区
对话摘要
1.1. 对话缓冲区
图源:《图解大模型-生成式AI原理与实战》
LangChain 框架使用ConversationBufferMemory ConversationBufferWindowMemory实现,原理上就是将每轮对话的user system都发给大模型,上限则通过对话轮数或者 tokens 个数控制。
1.2. 对话摘要
如果不控制上限,对话缓冲区随着对话内容持续增长,并逐渐逼近模型的词元限制;如果控制上限,又可能丢失较早的对话内容。
对话摘要...
264 post articles, 22 pages.