腾讯开源 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

本文提纲

  1. tRPC-Agent-Go 是什么
  2. 架构设计:六大核心模块
  3. 内建 Agent 类型:像乐高一样组合
  4. GraphAgent:Go 版 LangGraph
  5. 完整的功能覆盖:不是玩具
  6. 5 分钟上手
  7. 腾讯内部的真实验证

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_loadskill_runskill_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人工智能时代,转载请注明出处。

posted @ 2026-06-09 12:36  iTech  阅读(54)  评论(0)    收藏  举报