Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Agent

这是一个基于Go语言构建的智能代理(Agent)框架。它利用大语言模型(LLM)的强大能力,结合可扩展的工具集,以交互或非交互的方式完成复杂任务。

核心架构

本项目的架构围绕着几个核心组件构建,这些组件协同工作,形成一个完整的“思考-行动”循环。

  1. Agent (代理): 这是项目的“大脑”。它负责与大语言模型(LLM)进行通信。它接收当前的对话历史和可用的工具列表,然后调用LLM生成一个“思考”(Thought)。这个“思考”可能是一个直接的文本回答,也可能是一个或多个工具调用请求。

  2. ToolKit (工具包): 这是项目的“双手”。它负责管理和执行所有可用的工具。工具集是可扩展的,可以包括:

    • 本地工具: 在本地环境中直接执行的Go函数。
    • MCP工具: 通过模型上下文协议(Model Context Protocol, MCP)连接的远程工具。 这使得代理能够与外部世界进行交互,例如读写文件、执行命令、访问API等。
  3. Controller (控制器): 这是项目的“中枢神经系统”。它协调Agent和ToolKit之间的所有交互,并管理整个对话流程。其核心职责是:

    • 维护一个完整的对话历史记录,包括用户输入、模型的思考过程、工具调用和工具执行结果。
    • 实现一个循环,不断地调用Agent进行思考,如果Agent决定使用工具,Controller会调用ToolKit来执行这些工具,然后将结果反馈给Agent,让其继续思考,直到任务完成。
  4. Main (入口): 应用程序的入口点。它负责初始化所有组件,并根据命令行参数决定运行模式:

    • 交互模式: 启动一个终端用户界面(UI),允许用户与代理进行实时对话。
    • 非交互模式: 接收一个--prompt参数,执行一次性的任务,然后将结果输出到标准输出。

如何运行

交互模式

直接运行应用程序将进入交互模式:

go run ./cmd/agent

非交互模式

使用 --prompt 标志来运行一个一次性的任务:

go run ./cmd/agent --prompt "请分析当前的项目,并编写一个README文档。"

依赖注入

项目利用 google/wire 进行依赖注入,以实现松耦合和可测试性。wire.go 文件定义了各个组件的依赖关系,并通过代码生成(wire_gen.go)来创建最终的注入器。这使得替换或模拟任何组件(如LLM提供者或工具)变得非常容易。

About

这是一个基于Go语言构建的智能代理(Agent)框架。它利用大语言模型(LLM)的强大能力,结合可扩展的工具集,以交互或非交互的方式完成复杂任务。

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages