Commander Agent 是一个基于多模型协同架构的智能终端助手,能够理解用户自然语言指令并通过执行 Shell 命令来实现复杂任务。
该项目采用基于多模型协同的架构,主要包含以下五个模型组件:
- 推理模型 (Reasoning): 负责理解用户意图,分析问题,并规划解决方案
- 结构化模型 (Structured): 将推理模型的输出转换为结构化的命令
- 安全模型 (Security): 评估命令的安全性,防止执行危险操作
- 执行模型 (Exec): 执行终端命令并捕获输出结果
- 回答模型 (Actor): 总结执行结果并生成最终回复
- 用户输入自然语言问题/任务
- 推理模型分析用户需求并规划解决方案
- 结构化模型将方案转换为具体的 Shell 命令
- 安全模型评估命令安全性,不安全的命令需要用户确认
- 执行模型运行命令并收集输出
- 循环执行上述步骤直到问题解决或达到最大轮次
- 回答模型总结整个过程并生成最终回复
- 多模型协同架构: 将复杂任务分解为多个专门模型处理
- 安全保障机制: 内置安全审查,危险命令需用户确认
- 交互式界面: 彩色输出、命令执行状态与结果反馈
- 配置灵活: 支持配置不同模型、参数、最大轮次等
- 日志记录: 详细记录整个执行过程,便于排查问题
通过 config.yaml
文件配置系统,主要包括:
# 最大轮次
max_rounds: 10
models:
# 推理模型
reasoning_model:
model_id: "" # 模型ID
base_url: "" # API基础URL
token: "" # 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 # 项目文档