micro/go-micro · 上手攻略
- 仓库:micro/go-micro
- 链接:https://github.com/micro/go-micro
- 分类:AI · Agent 框架 · Go
- 作者:Tom
- 更新:2026-08-23
是什么
go-micro 是 Go 语言的AI Agent 运行时框架(agent harness)和微服务开发框架。它的核心定位是:把你已经在用微服务方式构建的系统,直接变成 Agent 可以调用、Agent 之间可以互操作的智能服务。
官方自称"A harness is the runtime around an agent"——harness(驾驭装置)是围绕在 Agent 周围的那一圈东西:它能调用什么工具、记住什么上下文、受什么边界约束、什么工作流会触发它、它依赖哪些服务、其他 Agent 怎么找到它。go-micro 把这套 harness 写成 Go 代码,而不是 YAML 配置或 JSON 模板。
关键协议支持:MCP(Model Context Protocol,工具调用)+ A2A(Agent-to-Agent 协议)+ x402(付费工具调用标准)。
Sponsor 阵容包括 Anthropic 和 OpenAI,在 AI Native 生态中有较高认可度。
解决什么问题
主流 Agent 框架(LangChain、AutoGen 等)帮你把模型放进循环,但当你需要: - 让 Agent 真正调用真实的服务(而不是模拟工具); - 让多个 Agent 互相发现、互相委托任务; - 把 Agent 的非确定性工作和确定性的业务流程编排在一起; - 部署后观察 Agent 做了什么、出了什么错;
这些问题 LangChain 没有标准答案。go-micro 的思路是:Agent 就是一个分布式服务,构建 Agent 的方式就是构建服务——最终你写的是 Go 服务,它天然可部署、可观测、可被其他 Agent 发现。
快速安装
# 方式一:二进制安装(无需 Go 环境)
curl -fsSL https://go-micro.dev/install.sh | sh
# 方式二:Go 安装
go install go-micro.dev/v6/cmd/micro@latest
# 验证
micro --version
若 PATH 问题参考官方安装故障排除指南。
核心用法
最短可跑示例(无 API Key)
# 脚手架一个服务
micro new helloworld
cd helloworld
micro run
# 另一终端调用
curl -X POST http://localhost:8080/api/helloworld/Helloworld.Call \
-H 'Content-Type: application/json' \
-d '{"name":"World"}'
服务自动暴露 REST API、gRPC、MCP 接口,无需额外配置。
定义一个服务(Go 代码)
package main
import (
"context"
"go-micro.dev/v6"
)
type Request struct { Name string `json:"name"` }
type Response struct { Message string `json:"message"` }
type Say struct{}
func (h *Say) Hello(ctx context.Context, req *Request, rsp *Response) error {
rsp.Message = "Hello " + req.Name
return nil
}
func main() {
service := micro.NewService("greeter")
service.Handle(new(Say))
service.Run()
}
Doc comment 自动成为工具描述,@example 标签成为工具示例。
构建 Agent(需要 API Key)
export ANTHROPIC_API_KEY=sk-ant-... # 或 OPENAI_API_KEY / GEMINI_API_KEY
micro run --prompt "a task management system with categories" --provider anthropic
Agent 会自动设计服务架构(task + project),用户确认后生成 Go 处理器代码、编译、启动,并在对话中执行。
微服务项目结构
myapp/
├── api/ # API 网关
├── service-a/ # 服务 A
├── service-b/ # 服务 B
└── workflows/ # 持久化流程
每个服务注册到服务发现,注册后其他服务/Agent 可通过名字直接调用。
核心概念
Agent Harness 的五个组成部分
| 组件 | go-micro 实现 |
|---|---|
| Tools(工具) | 每个 Go 方法 = 一个工具,端点元数据自动变工具 schema |
| Memory(记忆) | 持久化上下文,支持会话历史 |
| Guardrails(护栏) | MaxSteps / LoopLimit / ApproveTool / 工具包装器 |
| Trigger(触发器) | 工作流 + Agent 调度混合 |
| Interop(互操作) | MCP(工具) + A2A(Agent 间) + x402(付费工具) |
持久化流程(Durable Flows)
当路径已知时,用 Go 代码写确定性流程;路径不确定时,调度给 Agent。两者共用同一运行时,无需切换框架。
x402 付费工具标准
如果你的工具需要按次收费(如外部 API),go-micro 支持 x402 协议,Agent 调用时自动附上支付凭证,无需在 prompt 里硬编码 API Key。
微服务 + Agent 的统一运行时
官方核心观点:"an agent is a distributed system, and building one is building a service"——Agent 天然是分布式系统,用微服务方式构建才能真正投产,而不是只在 Jupyter Notebook 里跑通 demo。
典型适用场景
- 企业级 AI 应用:需要在生产环境运行的 Agent,不能只靠 Python 脚本;
- 多 Agent 系统:多个专业 Agent 需要互相发现、互相委托任务(而非靠 prompt engineering 硬编码);
- 现有 Go 微服务接入 AI:已有 Go 服务,想让 AI Agent 控制/增强这些服务;
- 需要 MCP 工具接入:想用 MCP 协议让 AI Agent 调用真实工具;
- 自主改进循环(Autonomous Improvement Loop):
micro loop init可为任意 GitHub 仓库生成自我优化流水线(North Star + 优先级排序 + CI 验证)。
CLI 关键命令
| 命令 | 作用 |
|---|---|
micro new <name> |
脚手架新服务 |
micro run |
运行当前目录服务 |
micro chat |
与 Agent 对话 |
micro inspect agent <name> |
查看 Agent 记忆与历史 |
micro agent demo |
无 Key 打印首个 Agent 示例 |
micro agent quickcheck |
自检并打印恢复建议 |
micro examples |
打印可运行示例列表 |
micro loop init --roles all |
生成自我优化流水线 |
坑与注意
- v6 版本号:当前包路径为
go-micro.dev/v6,网上大量旧文章是 v3/v4,需要注意版本差异。 - API Key 是必须的:纯脚手架(
micro new+micro run)不需要 Key,但 Agent 级别的对话生成需要 Anthropic/OpenAI 等 Key;v6 版本已加入对 300+ AI 模型的统一接入层。 - Windows 有限支持:官方建议 Linux/macOS,Windows 支持不完整。
- 付费支持是维护者收入来源:基础使用免费,但问题支持、咨询、培训由维护者收费——这是好事,说明项目有资金持续维护。
micro loop需要额外配置:GitHub Actions workflow + CODEX_TRIGGER_TOKEN 等,在开启调度前需完成检查清单。
与同类对比
| go-micro | LangChain | AutoGen | CrewAI | |
|---|---|---|---|---|
| 语言 | Go | Python | Python | Python |
| Agent 互操作 | A2A + MCP 内置 | 需额外适配 | 部分 | 部分 |
| 服务化 | 原生 | 包装后 | 包装后 | 包装后 |
| 微服务生态 | 原生 Go | 无 | 无 | 无 |
| x402 付费工具 | ✅ | ❌ | ❌ | ❌ |
| 商业支持 | ✅ 维护者直售 | ✅ LangChain Inc | ✅ Microsoft | 社区 |
一句话结论
go-micro 是目前唯一一个把 Go 微服务生态和 AI Agent runtime 融合成一体的框架——如果你用 Go 构建生产系统,想让 AI Agent 真正操作你的服务而不是只读 prompt,它是最自然的选择;如果你只用 Python 或不需要生产级部署,LangChain/AutoGen 仍是更轻量的起点。
⚠️ 本攻略依赖 GitHub README + 官方文档,未实际运行;版本命令以 micro --version 和仓库最新文档为准。