用途
tRPC-Agent-Go 是一个 Go 语言框架,用于构建生产级智能体系统。它面向希望将智能体应用融入 Go 服务的开发者,强调并发、可观测、易于部署,并支持与 A2A、AG-UI、MCP 等协议集成。
主要能力
- Go 原生智能体运行时:支持流式运行器、上下文取消、面向服务的 API。
- GraphAgent:类型安全的图工作流,支持多条件路由,功能上相当于 Go 版的 LangGraph。
- 多智能体协作:支持链式、并行和基于循环的工作流。
- 丰富的工具生态:函数工具、MCP 工具、网页搜索、代码执行和自定义服务。
- 持久化状态:会话、记忆、工件和知识检索。
- Agent Skills:可复用的 SKILL.md 工作流,支持安全执行。
- 智能体自进化:Hermes 风格的会话审查,可提取、门控并发布可复用的 SKILL.md 工作流。
- 提示缓存:自动成本优化,缓存内容可节省 90% 成本。
- 评估与基准:评估集与指标,用于持续衡量质量。
- 协议集成:AG-UI 用于前端,A2A 用于智能体互操作,MCP 用于工具。
- 生产可观测性:OpenTelemetry 追踪、指标和 Langfuse 示例。
使用方式
环境要求
- Go 1.21 或更高版本
- LLM 提供商 API 密钥(如 OpenAI、DeepSeek 等)
快速开始
官方称可在 3 个简单步骤内构建第一个智能体,约 5 分钟。运行示例后可以看到:与 AI 智能体的交互式聊天、实时流式响应、工具使用(计算器 + 时间工具)、带记忆的多轮对话。可尝试提问:“What's the current time? Then calculate 15 * 23 + 100”。
停止/取消运行
若要中断正在运行的智能体,推荐取消传递给 Runner.Run 的上下文。这会安全地停止模型调用和工具调用,并让运行器清理。注意:不要只是“跳出”事件循环,智能体 goroutine 可能继续运行并阻塞在通道写入上。始终先取消,然后继续排空事件通道直到关闭。可将 Ctrl+C 转换为上下文取消。
示例目录
示例目录包含覆盖每个主要功能的可运行演示:
- 首个多轮智能体:examples/runner
- 可控图工作流:examples/graph
- 智能体前端或流式 UI:examples/agui
- A2A 互操作:examples/a2aagent
- RAG 与知识检索:examples/knowledge
- 评估与提示迭代:examples/evaluation
- 技能与本地自动化:examples/skillrun
- 将智能体包装为可调用工具:examples/agenttool
- 多工具编排:examples/multitools
- 网页搜索工具集成:examples/duckduckgo
- 提供文件作为输入:examples/fileinput
内置智能体
大多数应用无需自行实现 agent.Agent 接口。框架已内置多个可直接使用的智能体,可像乐高积木一样组合。组合 API 允许嵌套链、循环或并行,无需底层管道代码。
Agent Skills
技能是包含 SKILL.md 规范及可选 docs/scripts 的文件夹。内置工具包括:skill_load、skill_list_docs、skill_select_docs、skill_run,以及(当执行器支持交互式会话时)skill_exec、skill_write_stdin、skill_poll_session、skill_kill_session。skill_run 是隔离工作区中的默认一次性命令运行器。skill_exec 和会话工具覆盖交互式 stdin/TTY 流程,无需将完整脚本内联到提示中。它们仅在代码执行器暴露 InteractiveProgramRunner(或回退到本地引擎)时注册。
skill.NewFSRepository(...) 可扫描多个根目录,例如共享技能目录加用户私有目录。在长期运行的进程中,安装或删除技能后调用 (*skill.FSRepository).Refresh()。NewFSRepository 也接受 HTTP(S) URL(例如 .zip 或 .tar.gz 归档),负载会下载并缓存在本地(可通过 SKILLS_CACHE_DIR 覆盖缓存位置)。
建议仅对所选技能文档要求的命令使用 skill_run,而非通用 shell 探索。当 LLMAgent 使用 WithCodeExecutor(...) 仅为了支持 skill_run 时,可通过 llmagent.WithEnableCodeExecutionResponseProcessor(false) 禁用响应代码执行处理器,避免助手文本中嵌入的 Markdown 围栏代码块在 skill_run 启用时自动执行。
examples/skillfind 演示了真实的端到端发现流程:模型使用内置的 skill-find 技能搜索公共网络,将公共 GitHub 技能安装到用户私有目录,刷新仓库,并在同一对话中使用新技能。本地执行默认关闭,可在需要运行已安装技能时显式启用。
智能体自进化
已完成的会话可异步审查,通过质量门控提升,并作为受管 Agent Skills 发布回未来轮次。支持修订存储、质量门控、人工批准,以及后续运行中技能可用时的热启动行为。Runner 集成只需一个选项:runner.WithEvolutionService(...)。
评估与基准
使用可重复的评估集和可插拔指标评估智能体。包括本地文件支持的运行和内存运行。
适用场景
官方列出适合构建:
- 客户支持机器人:理解上下文并解决复杂查询的智能体。
- 数据分析助手:查询数据库、生成报告并提供洞察的智能体。
- DevOps 自动化:智能部署、监控和事件响应系统。
- 业务流程自动化:具有人在环能力的多步骤工作流。
- 研究与知识管理:用于文档分析和问答的 RAG 驱动智能体。
限制
资料中未提供关于收费、价格、平台支持范围、性能指标或具体效果的数据。部分功能(如交互式会话工具)依赖代码执行器是否暴露 InteractiveProgramRunner。本地执行默认关闭。使用前需自备 LLM 提供商 API 密钥。