Commander Agent 是一个基于多模型协同架构的智能终端助手,能够理解用户自然语言指令并通过执行 Shell 命令来实现复杂任务。
该项目采用基于多模型协同的架构,主要包含以下五个模型组件:
- 推理模型 (Reasoning): 负责理解用户意图,分析问题,并规划解决方案
- 结构化模型 (Structured): 将推理模型的输出转换为结构化的命令
- 安全模型 (Security): 评估命令的安全性,防止执行危险操作
- 执行模型 (Exec): 执行终端命令并捕获输出结果
- 回答模型 (Actor): 总结执行结果并生成最终回复
- 用户输入自然语言问题/任务
- 推理模型分析用户需求并规划解决方案
- 结构化模型将方案转换为具体的 Shell 命令
- 安全模型评估命令安全性,不安全的命令需要用户确认
- 执行模型运行命令并收集输出
- 循环执行上述步骤直到问题解决或达到最大轮次
- 回答模型总结整个过程并生成最终回复
- 多模型协同架构: 将复杂任务分解为多个专门模型处理
- 安全保障机制: 内置安全审查,危险命令需用户确认
- 交互式界面: 彩色输出、命令执行状态与结果反馈
- 配置灵活: 支持配置不同模型、参数、最大轮次等
- 日志记录: 详细记录整个执行过程,便于排查问题
通过 config.yaml 文件配置系统,主要包括:
# 最大轮次max_rounds: 10models: # 推理模型reasoning_model: model_id: ""# 模型IDbase_url: ""# API基础URLtoken: ""# API密钥# 结构化输出模型structured_model: model_id: ""base_url: ""token: ""# 安全审查模型security_model: model_id: ""base_url: ""token: ""# 回答模型actor_model: model_id: ""base_url: ""token: ""- 准备配置文件
config.yaml,填入相应的模型信息 - 运行程序:
go run main.go - 输入自然语言问题/任务
- 系统将自动规划并执行相应命令
- 危险命令会请求确认,输入 y/n 决定是否执行
- 完成任务后将生成最终回复
- 编程语言: Go
- 配置管理: Viper
- 依赖注入: 原生实现
- 日志系统: Go 标准库 log
- 交互界面: Readline + ANSI 颜色
- 命令执行: exec.Command
- 大型语言模型: 兼容多种 API 接口
├── main.go # 程序入口 ├── agent/ # Agent 核心实现 │ ├── agent.go # Agent 主逻辑 │ ├── reasoning.go # 推理模型 │ ├── structured.go # 结构化模型 │ ├── security.go # 安全模型 │ ├── exec.go # 执行模型 │ ├── actor.go # 回答模型 │ └── prompt.go # 提示词模板 ├── conf/ # 配置管理 │ └── conf.go # 配置加载与访问 ├── utils/ # 工具函数 │ └── utils.go # 通用工具方法 ├── config.yaml # 配置文件 └── README.md # 项目文档