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 阵容包括 AnthropicOpenAI,在 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 生成自我优化流水线

坑与注意

  1. v6 版本号:当前包路径为 go-micro.dev/v6,网上大量旧文章是 v3/v4,需要注意版本差异。
  2. API Key 是必须的:纯脚手架(micro new + micro run)不需要 Key,但 Agent 级别的对话生成需要 Anthropic/OpenAI 等 Key;v6 版本已加入对 300+ AI 模型的统一接入层。
  3. Windows 有限支持:官方建议 Linux/macOS,Windows 支持不完整。
  4. 付费支持是维护者收入来源:基础使用免费,但问题支持、咨询、培训由维护者收费——这是好事,说明项目有资金持续维护。
  5. 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 和仓库最新文档为准。