腾讯开源 tRPC-Agent-Go:用 Go 写生产级 AI Agent 的正确姿势
腾讯开源 tRPC-Agent-Go:用 Go 写生产级 AI Agent 的正确姿势
看完你会发现,Go 写 Agent 也可以很优雅。
Go 在后端服务领域已经是统治级的存在,但 AI Agent 领域的框架几乎被 Python 独占。LangChain、CrewAI、AutoGen——清一色 Python 生态。如果你公司的后端是 Go 栈,想上 Agent 能力就得跨语言调用或者硬着头皮写 Python 中间层。
腾讯的 tRPC 团队显然不甘心于此。他们开源了 tRPC-Agent-Go——一个用 Go 写的、面向生产环境的 Agent 框架。1,285 颗星,v1.10.0,Apache 2.0 协议,已经在腾讯元宝、腾讯视频、腾讯新闻、IMA、QQ音乐等业务线跑通了。
GitHub 地址:github.com/trpc-group/trpc-agent-go
官方文档:trpc-group.github.io/trpc-agent-go
本文提纲
- tRPC-Agent-Go 是什么
- 架构设计:六大核心模块
- 内建 Agent 类型:像乐高一样组合
- GraphAgent:Go 版 LangGraph
- 完整的功能覆盖:不是玩具
- 5 分钟上手
- 腾讯内部的真实验证
tRPC-Agent-Go 是什么
一句话概括:用 Go 写的、面向生产的、全功能 AI Agent 框架。
它不是又一个 Python 框架的 Go 移植。从架构设计到 API 风格都是地道的 Go——强类型、组合优于继承、interface 驱动。项目源自 tRPC 生态(腾讯的多语言、高性能 RPC 框架),生来就是为生产环境服务的。
核心卖点:
- GraphAgent:类型安全的图工作流,多条件路由,功能对标 LangGraph
- Agent Skills:基于
SKILL.md的可复用工作流,支持安全执行 - 全协议支持:MCP、A2A、AG-UI 三大 Agent 通信协议全覆盖
- 评测体系:内置 EvalSet + Metric,量化 Agent 质量
- Prompt Caching:自动缓存优化,缓存命中节省 90% token 成本
架构设计:六大核心模块
整个框架围绕一个清晰的分层架构:
Runner(编排层)
├── Agent(执行单元)
│ ├── Planner(推理规划)
│ ├── Tools(工具调用)
│ └── Memory(上下文记忆)
├── Session(会话管理)
├── Knowledge(RAG 知识检索)
└── Telemetry(可观测性)对应到代码包结构:
| 包 | 职责 |
|---|---|
agent |
核心执行单元,处理用户输入并生成响应 |
runner |
Agent 执行器,管理执行流、串联 Session 和 Memory |
model |
多 LLM 支持(OpenAI、DeepSeek 等) |
tool |
工具能力(Function、MCP、DuckDuckGo 等) |
graph |
图工作流引擎,多条件路由 |
memory |
长期记忆和个性化信息 |
knowledge |
RAG 知识检索 |
planner |
Agent 规划和推理 |
skill |
SKILL.md 驱动的可复用工作流 |
artifact |
Agent 产出文件的版本化存储 |
evaluation |
评测集和可插拔度量 |
server |
HTTP 服务器(Gateway、AG-UI、A2A) |
telemetry |
OpenTelemetry 追踪和指标 |
执行流程:Runner 编排整个管道 → Agent 处理请求 → Planner 决定策略和工具选择 → Tools 执行具体任务 → Memory 维护上下文 → Knowledge 提供 RAG 能力。
内建 Agent 类型:像乐高一样组合
框架自带四种开箱即用的 Agent,通过组合可以搭建复杂工作流:
LLMAgent — 最基础的单元,把任何 chat-completion 模型包装成 Agent。
ChainAgent — 顺序执行,上一个 Agent 的输出作为下一个的输入。适合 pipeline 场景。
ParallelAgent — 并发执行多个子 Agent,结果合并。适合并行处理场景。
CycleAgent — 循环执行 planner + executor,直到满足终止条件。适合需要迭代优化的场景。
组合起来就像拼乐高:
// 先分析、再处理、最后汇报
pipeline := chainagent.New("pipeline",
chainagent.WithSubAgents([]agent.Agent{
analyzer, processor, reporter,
}))
// 或者并行跑多个任务
parallel := parallelagent.New("concurrent",
parallelagent.WithSubAgents(tasks))GraphAgent:Go 版 LangGraph
这是 tRPC-Agent-Go 最值得关注的特性。GraphAgent 提供了类型安全的图工作流,支持多条件路由——功能上对标 Python 生态的 LangGraph。
sg := graph.NewStateGraph(schema)
sg.AddNode("router", routerFunc)
sg.AddNode("A", funcA)
sg.AddNode("B", funcB)
sg.SetEntryPoint("router")
// 多条件扇出:router 同时走向 A 和 B
sg.AddMultiConditionalEdges(
"router",
func(ctx context.Context, s graph.State) ([]string, error) {
return []string{"goA", "goB"}, nil
},
map[string]string{"goA": "A", "goB": "B"},
)
sg.SetFinishPoint("A").SetFinishPoint("B")AddMultiConditionalEdges 是关键 API——一个节点可以同时扇出到多个分支并行执行,而不是只能走一条路。这对复杂业务流程(比如同时触发数据分析和通知推送)非常实用。
Graph 的状态管理是类型安全的,不是 map[string]any 一把梭。这在 Go 的语境下格外重要——编译期能查出的 bug,别留到线上。
完整的功能覆盖:不是玩具
tRPC-Agent-Go 不是 MVP,是生产级框架。从它的功能清单看:
协议支持:
- MCP(Model Context Protocol)— 通过
trpc-mcp-go实现完整 MCP 规范 - A2A(Agent-to-Agent)— 跨运行时的 Agent 互通,已验证与 ADK Python A2A Server 的对接
- AG-UI(Agent-User Interaction)— 内建 SSE 服务器,对接 CopilotKit 和 TDesign Chat
记忆与知识:
- In-Memory 和 Redis 两种 Memory 后端
- RAG 知识检索:加载文档、Embedding 向量存储、搜索
- 跨会话的上下文保持
Agent Skills:
- 基于
SKILL.md的可复用工作流定义 - 支持本地文件系统和远程 HTTP(S) 仓库(zip/tar.gz 自动下载缓存)
skill_load、skill_run、skill_find等内建工具skill_exec支持交互式会话(stdin/TTY)
评测体系:
- EvalSet + 可插拔 Metric
- 量化 Agent 质量变化
- 支持本地文件和内存两种运行方式
可观测性:
- OpenTelemetry 全链路追踪
- Langfuse 集成
- 覆盖 model、tool、runner 三层
代码执行:
- 安全的代码执行沙箱
- 支持 Human-in-the-loop
产出物管理:
- Artifact 版本化存储
- 支持 In-Memory、S3、COS 三种后端
5 分钟上手
# 1. 克隆
git clone https://github.com/trpc-group/trpc-agent-go.git
cd trpc-agent-go
# 2. 配置 LLM
export OPENAI_API_KEY="your-key"
export OPENAI_BASE_URL="your-base-url" # 可选
# 3. 跑第一个 Agent
cd examples/runner
go run . -model="gpt-4o-mini" -streaming=true试着问它:"现在几点了?然后算一下 15 × 23 + 100"——你会看到 Agent 先调用时间工具,再调用计算器工具,实时流式输出。
最小化代码只需要几步:
// 创建模型
model := openai.New("deepseek-chat",
openai.WithVariant(openai.VariantDeepSeek))
// 创建工具
calc := function.NewFunctionTool(calculate,
function.WithName("calculator"),
function.WithDescription("数学运算"))
// 创建 Agent
agent := llmagent.New("assistant",
llmagent.WithModel(model),
llmagent.WithTools([]tool.Tool{calc}))
// 创建 Runner 并执行
runner := runner.NewRunner("app", agent)
events, _ := runner.Run(ctx, "user-1", "session-1",
model.NewUserMessage("算一下 2+3 等于几"))任何 Go 函数都能通过 NewFunctionTool 变成 Agent 可调用的工具——不用写 JSON Schema 描述,struct tag 自动生成。
腾讯内部的真实验证
README 里的致谢部分透露了这个框架的分量:
感谢腾讯元宝、腾讯视频、腾讯新闻、IMA 和 QQ 音乐团队提供的宝贵支持和真实场景验证。
这不是实验室项目。它在腾讯的多个核心业务线上跑过了。从内容平台到音乐流媒体到 AI 助手——覆盖了搜索推荐、内容理解、对话系统等多种 Agent 应用场景。
tRPC 组织在 GitHub 上有 14 个公开仓库,涵盖 Go、C++、Java 等多语言 RPC 实现。tRPC-Agent-Go 是这个生态在 AI Agent 方向的延伸,不是孤立的实验品。
你在用 Go 还是 Python 写 Agent?评论区聊聊你的选择和理由。觉得有用的话,点个赞让更多人看到。
作者: itech001 来源: 公众号:AI人工智能时代 网站: https://www.theaiera.cn/ 每日分享最前沿的AI新闻资讯和技术研究。
本文首发于 AI人工智能时代,转载请注明出处。