blades

GitHub
758 92 简单 1 次阅读 2天前MIT语言模型Agent开发框架图像
AI 解读 由 AI 自动生成,仅供参考

Blades 是一款基于 Go 语言构建的多模态 AI Agent 开发框架,旨在帮助开发者高效打造智能代理应用。它主要解决了在 Go 生态中缺乏灵活、标准化 AI 代理构建方案的痛点,让开发者能够轻松实现多轮对话、思维链推理及结构化输出等复杂功能。

这款工具特别适合熟悉 Go 语言的后端工程师和系统架构师使用。Blades 的最大亮点在于其"Go 原生”的设计理念:代码风格符合 Go 社区习惯,学习曲线平缓;架构上采用高度解耦的插件化设计,支持自由切换大模型服务商(如 OpenAI)、自定义工具调用及内存管理。此外,它还借鉴了 Kratos 框架的中间件机制,可便捷地集成可观测性监控与安全护栏等功能。通过统一的 Agent 接口,用户能像搭积木一样组合提示词、链条和外部工具,快速构建出逻辑清晰、易于维护的智能系统,是 Go 开发者进入 AI 应用领域的得力助手。

使用场景

某电商平台的后端团队需要构建一个能处理用户投诉、自动查询订单状态并生成结构化回复报告的智能客服系统。

没有 blades 时

  • 多模态集成困难:开发者需手动编写大量胶水代码来串联文本大模型与图片识别 API,导致代码耦合度高且难以维护。
  • 上下文记忆缺失:在多轮对话中,历史订单信息和用户情绪状态难以持久化存储,导致机器人经常“失忆”,重复询问用户已提供的信息。
  • 流程编排僵化:一旦需要调整“先查库后推理”的业务逻辑,必须重构核心代码,缺乏灵活的链式调用机制来应对复杂的思考路径。
  • 可观测性不足:缺乏统一的中间件机制,无法便捷地监控 Agent 的决策过程或设置安全护栏,生产环境调试如同黑盒。

使用 blades 后

  • 原生 Go 风格集成:利用 blades 统一的 Agent 接口和插件化 ModelProvider,团队用简洁的 Go 代码即可无缝切换模型并挂载图像识别工具,开发效率提升显著。
  • 内置记忆管理:通过框架自带的 Memory 组件,系统自动维护长短期上下文,确保在多轮交互中精准引用之前的订单详情和用户诉求。
  • 灵活链式编排:借助 Chain 组件将查询、推理、生成报告等步骤像乐高一样组装,轻松实现复杂的思维链(CoT)逻辑,业务变更仅需调整配置。
  • 生态中间件支持:直接复用 Kratos 生态的中间件能力,快速植入日志追踪、延迟监控及内容安全过滤,让智能体运行透明可控。

blades 让 Go 开发者能以熟悉的范式高效构建具备记忆、推理和多模态能力的复杂 AI 智能体,大幅降低落地门槛。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该工具是基于 Go 语言开发的多模态 AI Agent 框架,非 Python 项目。运行需安装 Go 环境并配置相应 LLM 服务的 API Key(如 OpenAI)。支持通过 embed.FS 或目录加载技能模块,架构设计强调解耦和中间件扩展性。
python不适用 (基于 Go 语言)
github.com/go-kratos/blades
github.com/go-kratos/blades/contrib/openai
blades hero image

快速开始

构建状态 GoDoc DeepWiki 许可证

Blades

Blades 是一个面向 Go 语言的多模态 AI Agent 框架,支持自定义模型、工具、记忆、中间件等。它适用于多轮对话、思维链推理以及结构化输出等多种场景。

名称由来:游戏《战神》以希腊神话为背景,讲述了克拉托斯从凡人蜕变为战神并展开弑神之旅的冒险故事。而“双刀”正是克拉托斯标志性的武器。

架构设计

Blades 充分利用 Go 语言的特点,提供了一套灵活高效的 AI Agent 解决方案。其核心在于通过统一的接口和可插拔组件实现高度解耦与扩展性。整体架构如下: architecture

  • Go 风格:完全遵循 Go 的设计理念构建,代码风格和使用体验对 Go 开发者来说十分熟悉。
  • 简单易用:通过简洁的代码声明即可定义 AI Agent,快速满足需求,使复杂逻辑清晰易懂、易于管理和维护。
  • 中间件生态:借鉴 Kratos 的中间件设计理念,可观测性和护栏等功能可以轻松集成到 AI Agent 中。
  • 高度可扩展:通过统一的接口和可插拔组件实现高度解耦与扩展性,便于集成不同的 LLM 模型和外部工具。

核心概念

Blades 框架通过一系列精心设计的核心组件实现了强大的功能与灵活性。这些组件协同工作,共同构建 Agent 的智能行为:

  • Agent:执行任务的核心单元,能够调用模型和工具。
  • Prompt:用于与 LLM 对话的模板化文本,支持动态变量替换和复杂上下文构建。
  • Chain:连接多个 Agent 或其他 Chain,形成复杂的流程。
  • ModelProvider:可插拔的 LLM 接口,方便切换和集成不同的语言模型服务(如 OpenAI 等)。
  • Tool:Agent 可使用的外部能力,例如调用 API、查询数据库、访问文件系统等。
  • Memory:为 Agent 提供短期或长期记忆能力,支持带上下文的连续对话。
  • Middleware:类似于 Web 框架中的中间件,可对 Agent 进行横切控制。

Agent

Agent 是 Blades 框架中最核心的接口,定义了所有可执行组件的基本行为。它的设计旨在提供统一的执行范式。通过 Run 方法,框架内的各类功能模块实现了 解耦、标准化和高可组合性AgentChainModelProvider 等组件都实现了该接口,从而统一了它们的执行逻辑,使不同组件能够像乐高积木一样灵活组合,构建复杂的 AI Agent。

// Agent 表示一个能够处理调用并生成消息序列的自主代理。
type Agent interface {
    Name() string
    Description() string
    Run(context.Context, *Invocation) Generator[*Message, error]
}

ModelProvider

ModelProviderBlades 框架中用于与底层大语言模型(LLM)交互的核心抽象层。其设计目标是通过统一的接口实现 解耦和扩展性,将框架的核心逻辑与具体模型的实现细节(如 OpenAI、DeepSeek、Gemini 等)分离。它充当适配器的角色,负责将框架内部的标准化请求转换为模型原生 API 所需的格式,并将模型的响应转换回框架的标准格式,从而使开发者能够轻松切换和集成不同的 LLM。

type ModelProvider interface {
    // Generate 执行一次完整的生成请求,并一次性返回结果。适用于不需要实时反馈的场景。
    Generate(context.Context, *ModelRequest, ...ModelOption) (*ModelResponse, error)
    // NewStreaming 启动流式请求。该方法会立即返回一个 Generator 对象,允许调用者逐步接收模型生成的内容。适用于构建具有打字机效果的实时对话应用。
    NewStreaming(context.Context, *ModelRequest, ...ModelOption) (Generator[*ModelResponse])
}

ModelProvider

Agent

AgentBlades 框架中的核心协调者。作为顶层的 Agent,它整合并编排 ModelProviderToolMemoryMiddleware 等组件,以理解用户意图并执行复杂任务。其设计允许通过灵活的 Option 函数进行配置,从而驱动智能应用的行为与能力,履行任务编排、上下文管理及指令遵循等核心职责。

Flow

flow 用于构建复杂的工作流和多步推理。其设计理念是编排多个 Agent 组件,实现数据和控制流的传递,其中一个 Agent 的输出可以作为下一个 Agent 的输入。这种机制使开发者能够灵活地组合组件,构建高度定制化的 AI 流程,实现多步推理和复杂的数据处理。它是实现 Agent 复杂决策过程的关键。

Tool

Tool 是扩展 AI Agent 能力的关键组件,代表 Agent 可以调用的外部功能或服务。其设计旨在赋予 Agent 与现实世界交互的能力,执行特定操作或获取外部信息。通过清晰的 InputSchema,它引导 LLM 生成正确的调用参数,并通过内部的 Handle 函数执行实际逻辑,从而将各种外部 API、数据库查询等封装成 Agent 能够理解和调用的形式。

内存

Memory 组件为 AI 代理赋予记忆能力,提供用于存储和检索对话消息的通用接口,确保代理在多次对话轮次中保持上下文连贯性。其设计支持按会话 ID 管理消息,并可配置消息数量限制,以在记忆广度与系统资源消耗之间取得平衡。该框架提供了 InMemory 实现,同时也鼓励开发者将其扩展到持久化存储或更复杂的记忆策略。

type Memory interface {
    AddMemory(context.Context, *Memory) error
    SaveSession(context.Context, blades.Session) error
    SearchMemory(context.Context, string) ([]*Memory, error)	
}

中间件

Middleware 是一种强大的机制,用于实现横切关注点(如日志记录、监控、身份验证、限流)。其设计允许在不修改 Runner 核心逻辑的情况下,将额外的行为注入到 Runner 的执行流程中。它以类似“洋葱模型”的函数链形式运作,提供高度灵活的流程控制和功能增强,从而实现非核心业务逻辑与核心功能之间的解耦。

💡 快速入门

使用示例(聊天代理)

以下是一个简单的聊天代理示例,展示了如何使用 OpenAI 的 ModelProvider 构建一个基本的对话应用:

package main

import (
    "context"
    "log"
    "os"

    "github.com/go-kratos/blades"
    "github.com/go-kratos/blades/contrib/openai"
)

func main() {
    // 使用环境变量配置 OpenAI API 密钥和基础 URL:
    model := openai.NewModel("gpt-5", openai.Config{
        APIKey: os.Getenv("OPENAI_API_KEY"),
    })
    agent := blades.NewAgent(
        "Blades Agent",
        blades.WithModel(model),
        blades.WithInstruction("你是一位乐于助人、能够提供详细准确信息的助手。"),
    )
    // 创建包含用户消息的 Prompt
    input := blades.UserMessage("法国的首都是哪里?")
    // 使用 Prompt 运行代理
    runner := blades.NewRunner(agent)
    output, err := runner.Run(context.Background(), input)
    if err != nil {
        log.Fatal(err)
    }
    // 打印代理的回答
    log.Println(output.Text())
}

技能

Agent 支持通过 WithSkills(...) 注入技能,技能可以从目录或 embed.FS 加载。关于技能包格式和元数据规则,请参阅 Agent Skill specification

package main

import (
    "embed"

    "github.com/go-kratos/blades"
    "github.com/go-kratos/blades/skills"
)

//go:embed example-skill/*
var skillFS embed.FS

func createAgent(model blades.ModelProvider) (blades.Agent, error) {
    // 目录加载:
    skillsFromDir, err := skills.NewFromDir("./skills")
    if err != nil {
        return nil, err
    }
    // 嵌入加载:
    skillsFromEmbed, err := skills.NewFromEmbed(skillFS)
    if err != nil {
        return nil, err
    }
    allSkills := append(skillsFromDir, skillsFromEmbed...)
    return blades.NewAgent(
        "SkillsAgent",
        blades.WithModel(model),
        blades.WithSkills(allSkills...),
    )
}

更多示例请参考 examples 目录。

🤝 贡献与社区

该项目目前仍处于早期阶段,我们正在持续快速迭代。我们诚挚邀请所有 Go 开发者和 AI 爱好者访问我们的 GitHub 仓库,亲身体验 Blades 带来的开发乐趣。

欢迎为项目点亮 ⭐️ 星标,在 examples 目录中探索更多使用示例,或者直接开始构建你的第一个 Go LLM 应用!

我们期待您的任何反馈、建议和贡献,共同推动 Go AI 生态系统的繁荣发展。

📄 许可证

Blades 采用 MIT 许可证授权。有关详情,请参阅 LICENSE 文件。

版本历史

v0.5.02026/04/02
v0.4.02026/03/02
v0.3.12025/12/05
v0.3.02025/11/26
v0.2.02025/11/18
v0.1.12025/11/13
v0.1.02025/11/11

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160.8k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|3天前
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像