Skip to content

一个基于多智能体协作的 AI 助手,支持命令行和Web界面,提供团队模式、自定义会议模式和多智能体讨论模式(圆桌会议模式)三种工作方式,通过多个专业智能体协同工作来完成复杂的编程和系统任务。

License

Notifications You must be signed in to change notification settings

wsshow/feikong-teams

Repository files navigation

fkteams 非空团队

fkteams(FeiKong Teams,非空团队)是一个开源的多智能体协作 AI 助手,旨在通过多个专业智能体的协同工作来完成复杂的任务。它支持两种交互界面:现代化的 Web 界面和传统的命令行界面,满足不同用户的使用习惯和场景需求。

非空团队架构简介

演示图

Web 界面模式

Web界面模式

命令行模式

命令行模式

快速开始

💡 快速体验:如果你已经有预编译的可执行文件,只需要配置环境变量并运行 ./fkteams --web 即可立即体验 Web 界面!

1. 克隆项目

git clone https://github.com/wsshow/feikong-teams.git
cd feikong-teams

2. 配置环境变量

复制 .env.example.env 并配置:

cp .env.example .env

编辑 .env 文件,填写必要的配置:

# 模型配置
FEIKONG_OPENAI_API_KEY=your_api_key_here
FEIKONG_OPENAI_BASE_URL=https://api.openai.com/v1
FEIKONG_OPENAI_MODEL=gpt-5

# 网络搜索工具配置(可选)
FEIKONG_PROXY_URL=http://127.0.0.1:7890

# 工作目录配置, 默认为: ./workspace
FEIKONG_WORKSPACE_DIR = ./workspace

# 代码助手
FEIKONG_CODER_ENABLED = true

# 本地命令行助手
FEIKONG_CMDER_ENABLED = true

# 数据分析师
FEIKONG_ANALYST_ENABLED = false

# SSH 访问者智能体配置(可选)
FEIKONG_SSH_VISITOR_ENABLED=true # 设置为 true 启用小访智能体
FEIKONG_SSH_HOST=ip:port
FEIKONG_SSH_USERNAME=your_ssh_user
FEIKONG_SSH_PASSWORD=your_ssh_password

# Web 页面登录认证(可选,设置 ENABLED=true 后启用)
FEIKONG_LOGIN_ENABLED=true
FEIKONG_LOGIN_SECRET=your_random_secret_key
FEIKONG_LOGIN_USERNAME=admin
FEIKONG_LOGIN_PASSWORD=your_password

3. 配置圆桌会议成员(可选)

生成示例配置文件:

./fkteams -c
#
./fkteams --generate-config

编辑 config/config.toml 配置圆桌会议成员、MCP 服务和自定义智能体:

[server]
port = 23456        # Web服务器端口
log_level = "info"  # 日志级别

# 圆桌会议配置
[roundtable]
max_iterations = 2  # 讨论轮数

[[roundtable.members]]
index = 0
name = '深度求索'
desc = '深度求索聊天模型,擅长逻辑分析'
base_url = 'https://api.deepseek.com/v1'
api_key = 'your_deepseek_api_key'
model_name = 'deepseek-chat'

[[roundtable.members]]
index = 1
name = '克劳德'
desc = '克劳德聊天模型,擅长创意思维'
base_url = 'https://api.anthropic.com/v1'
api_key = 'your_claude_api_key'
model_name = 'claude-3-sonnet'

# 自定义智能体配置
[custom]

# 配置自定义智能体
[[custom.agents]]
name = "数据分析师"
desc = "专业的数据分析智能体"
system_prompt = """你是一个专业的数据分析师,擅长数据处理和可视化。
你需要:
1. 分析用户提供的数据
2. 使用合适的工具进行数据处理
3. 生成可视化图表
4. 给出专业的分析建议
"""
base_url = "https://api.openai.com/v1"
api_key = "your_api_key"
model_name = "gpt-4"
tools = ["file", "command", "mcp-filesystem"]  # 可使用内置工具和MCP工具

# 配置 MCP 服务
[[custom.mcp_servers]]
name = "filesystem"  # MCP服务名称,使用时需加前缀:mcp-filesystem
desc = "文件系统操作工具"
enabled = true
timeout = 30
url = "http://127.0.0.1:3000/mcp"
transport_type = "http"  # 支持 http, sse, stdio

[[custom.mcp_servers]]
name = "database"
desc = "数据库操作工具"
enabled = true
timeout = 30
command = "npx"  # 或 "uvx" for Python
env_vars = ["DATABASE_URL=postgresql://localhost/mydb"]
args = ["-y", "@modelcontextprotocol/server-postgres"]
transport_type = "stdio"  # stdio 方式启动本地 MCP 服务

配置说明

内置工具列表

  • file - 文件读写操作(限制在 workspace 目录),支持 unified diff 批量修改
  • git - Git 仓库操作
  • excel - Excel 文件处理
  • command - 命令行执行
  • ssh - SSH 远程连接
  • search - 网络搜索(DuckDuckGo)
  • todo - 待办事项管理
  • uv - Python uv 脚本工具
  • bun - JavaScript bun 脚本工具

MCP 工具使用

  • MCP 工具在配置时需要添加 mcp- 前缀
  • 例如:名为 filesystem 的 MCP 服务,在工具列表中写作 mcp-filesystem
  • 支持三种连接方式:
    • HTTP:连接远程 HTTP MCP 服务
    • SSE:通过 Server-Sent Events 连接
    • Stdio:启动本地 MCP 进程并通过标准输入输出通信

自定义智能体配置要点

  • name:智能体名称,用于标识
  • desc:智能体描述,帮助用户了解其能力
  • system_prompt:系统提示词,定义智能体的行为和能力
  • tools:工具列表,可包含内置工具和 MCP 工具
  • base_urlapi_keymodel_name:AI 模型配置

4. 运行

Web 界面模式(推荐)

启动 Web 服务器,通过浏览器访问:

# 使用预编译版本
./release/fkteams_darwin_arm64 --web

# 或直接编译运行
go run main.go --web

启动后访问 http://localhost:23456 即可使用 Web 界面。

Web 界面特性:

  • 实时聊天界面,支持流式输出显示
  • 智能滚动控制和历史消息浏览
  • 完整的 Markdown 渲染支持
  • 一键导出对话历史为 HTML 文件
  • 响应式设计,支持移动端访问
  • 可折叠侧边栏和模式切换
  • 可选的登录认证(通过环境变量配置)

命令行模式

适合开发者和高级用户:

# 默认启动团队模式
go run main.go

# 启动深度分析模式
go run main.go -m deep

# 启动自定义会议模式
go run main.go -m custom

# 启动多智能体讨论模式
go run main.go -m group

编译后运行

make build

# Web界面模式
./release/fkteams_darwin_arm64 --web

# 默认启动团队模式
./release/fkteams_darwin_arm64

# 启动深度分析模式
./release/fkteams_darwin_arm64 -m deep

# 启动自定义会议模式
./release/fkteams_darwin_arm64 -m custom

# 启动多智能体讨论模式
./release/fkteams_darwin_arm64 -m group

5. 使用

Web 界面使用

  1. 启动 Web 服务:./fkteams --web
  2. 打开浏览器访问:http://localhost:23456
  3. 在聊天界面输入你的问题或任务
  4. 实时查看 AI 助手的回复和工具调用过程
  5. 使用侧边栏切换工作模式(团队/深度/自定义/讨论)
  6. 点击“新建会话”按钮创建新的对话会话
  7. 通过侧边栏历史会话列表快速切换历史对话
  8. 点击“管理历史”按钮打开历史记录管理面板(支持搜索、导出、重命名、删除)

命令行使用

启动后,在命令行输入你的问题或任务:

请输入您的问题: 帮我写几篇相互关联的小小说,然后创建一个网站来展示这些小说。

常用命令(命令行模式)

命令 说明
quit / q 退出程序
list_agents 列出所有可用的智能体
@智能体名 [查询内容] 切换到指定智能体并可选执行查询
switch_work_mode 切换工作模式(团队模式/深度模式/自定义模式/讨论模式)
save_chat_history 保存聊天历史
load_chat_history 加载聊天历史
clear_chat_history 清空聊天历史
save_chat_history_to_markdown 导出聊天历史为 Markdown 文件
clear_todo 清空待办事项
help 显示帮助信息

智能体切换功能

从交互模式下,你可以直接与单个智能体对话,无需启动整个团队:

# 列出所有可用的智能体
list_agents

# 切换到小析(数据分析专家)
@小析

# 切换并直接提问
@小码 帮我创建一个 Python 脚本

# 切换到小搜并搜索信息
@小搜 查找最新的 Go 语言教程

可用智能体列表

  • @小析 - 数据分析专家,擅长使用 Excel 和 Python 脚本从复杂数据中提取有价值的信息
  • @小码 - 代码专家,擅长读写和处理代码文件,能够帮助用户完成各种编程任务
  • @小令 - 命令行专家,擅长通过命令行操作完成任务,能够根据操作系统环境执行合适的命令
  • @小搜 - 情报搜索专家,擅长中英文双语检索并优先使用官方/权威来源输出可靠结论
  • @小访 - 远程访问专家,擅长通过 SSH 连接远程服务器,执行命令、传输文件和管理远程系统
  • @小天 - 讲故事专家,擅长编写引人入胜的故事
  • @小简 - 总结专家,擅长将冗长的信息提炼为简洁的摘要

提示:输入 @ 符号后会自动显示可用的智能体列表供选择。

命令行参数

参数 简写 说明
--web -w 启动 Web 服务器模式(推荐)
--work-mode -m 工作模式: team(团队)、deep(深度)、group(讨论)或 custom(自定义)
--query -q 直接查询模式,执行完查询后退出
--version -v 显示版本信息
--update -u 检查并更新到最新版本
--generate-env -g 生成示例 .env 文件
--generate-config -c 生成示例配置文件
--init -i 初始化运行环境(交互式选择安装/升级 uv、bun 等依赖)

使用场景示例

Web 界面模式 - 推荐用法

适合场景

  • 日常对话和任务处理
  • 需要查看历史消息的场景
  • 展示给他人或协作使用
  • 移动设备访问

使用流程

  1. 启动 Web 服务:./fkteams --web
  2. 浏览器访问:http://localhost:23456
  3. 在界面中选择工作模式(团队模式/深度模式/自定义模式/讨论模式)
  4. 开始对话,实时查看 AI 回复和工具执行过程
  5. 使用“管理历史”功能搜索、导出、管理历史对话

命令行模式

适合场景

  • 服务器环境下使用
  • 自动化脚本集成
  • 开发和调试
  • 终端重度用户

使用流程

  1. 启动:./fkteams -m team
  2. 输入任务描述
  3. 查看实时输出和工具调用
  4. 使用内置命令管理历史和模式切换

圆桌会议模式详解

工作原理

圆桌会议模式模拟了一场专家研讨会:

  1. 问题提出:用户提出问题或任务
  2. 轮流发言:每个配置的模型依次针对问题发表观点
  3. 观点参考:后发言的模型可以看到前面模型的观点,并在此基础上补充或提出不同见解
  4. 多轮迭代:根据 max_iterations 配置进行多轮讨论,逐步深化分析
  5. 形成共识:最终综合各方观点,给出更全面准确的答案

适用场景

  • 复杂决策:需要从多角度分析的重要决策
  • 创意头脑风暴:激发不同模型的创意火花
  • 观点验证:让多个模型相互验证,减少单一模型的偏见
  • 深度分析:需要多轮思考才能得出结论的复杂问题

配置建议

  • 选择不同特点的模型作为讨论成员,以获得更多元的观点
  • max_iterations 建议设置为 1-3,过多轮次可能导致观点趋同
  • 可以给每个成员设置描述性的 desc,帮助理解其专长

Skills 指南

什么是 Skills?

Skills 是一组指令、脚本和资源的集合,fkteams(统御) 可以动态加载这些 Skills 来提升在特定任务上的表现。Skills 教会 fkteams(统御) 如何以可重复的方式完成特定任务,无论是按照公司的品牌指南创建文档,还是使用组织特定的工作流程分析数据,或者自动化个人任务。

Skills 配置

skills目录:{FEIKONG_WORKSPACE_DIR}/skills/{用户技能目录}

「用户技能目录」是一个独立的子目录,必须包含: SKILL.md

SKILL.md 文件示例:

---
name: "数据分析"
description: "一套用于数据分析的技能,包含数据清洗、统计分析和数据可视化的指令和脚本。"
---

## 具体的数据分析技能描述...

MCP 工具集成指南

什么是 MCP?

Model Context Protocol (MCP) 是一个开放的协议标准,用于 AI 应用与外部工具和数据源的集成。fkteams 完整支持 MCP 协议,可以轻松接入丰富的 MCP 工具生态。

MCP 服务配置

config/config.toml 中配置 MCP 服务:

[[custom.mcp_servers]]
name = "filesystem"
desc = "文件系统操作工具"
enabled = true          # 是否启用
timeout = 30           # 超时时间(秒)
url = "http://127.0.0.1:3000/mcp"
transport_type = "http"

[[custom.mcp_servers]]
name = "postgres"
desc = "PostgreSQL 数据库工具"
enabled = true
timeout = 30
command = "npx"        # 启动命令
env_vars = ["DATABASE_URL=postgresql://localhost/mydb"]  # 环境变量
args = ["-y", "@modelcontextprotocol/server-postgres"]   # 命令参数
transport_type = "stdio"

支持的连接方式

  1. HTTP 方式

    • 适合:远程 MCP 服务
    • 配置:设置 urltransport_type = "http"
  2. SSE 方式

    • 适合:需要服务器推送的场景
    • 配置:设置 urltransport_type = "sse"
  3. Stdio 方式

    • 适合:本地 MCP 工具
    • 配置:设置 commandargstransport_type = "stdio"
    • 支持通过 env_vars 配置环境变量

在自定义智能体中使用 MCP 工具

[[custom.agents]]
name = "数据处理专家"
desc = "专门处理数据相关任务"
system_prompt = "你是一个数据处理专家..."
tools = [
  "file",              # 内置文件工具
  "mcp-filesystem",    # MCP 文件系统工具(需加 mcp- 前缀)
  "mcp-postgres"       # MCP 数据库工具
]
base_url = "https://api.openai.com/v1"
api_key = "your_api_key"
model_name = "gpt-4"

MCP 工具命名规则

  • MCP 服务在配置文件中使用 name 字段定义
  • 在智能体的 tools 列表中引用时,需要添加 mcp- 前缀
  • 例如:name = "filesystem" → 使用时写作 mcp-filesystem

常用 MCP 服务示例

# 文件系统操作
[[custom.mcp_servers]]
name = "filesystem"
desc = "文件系统读写工具"
enabled = true
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/directory"]
transport_type = "stdio"

# GitHub 集成
[[custom.mcp_servers]]
name = "github"
desc = "GitHub API 工具"
enabled = true
command = "npx"
env_vars = ["GITHUB_TOKEN=your_github_token"]
args = ["-y", "@modelcontextprotocol/server-github"]
transport_type = "stdio"

# Google Drive
[[custom.mcp_servers]]
name = "gdrive"
desc = "Google Drive 工具"
enabled = true
command = "npx"
args = ["-y", "@modelcontextprotocol/server-gdrive"]
transport_type = "stdio"

# Brave Search
[[custom.mcp_servers]]
name = "brave-search"
desc = "Brave 搜索引擎"
enabled = true
command = "npx"
env_vars = ["BRAVE_API_KEY=your_api_key"]
args = ["-y", "@modelcontextprotocol/server-brave-search"]
transport_type = "stdio"

更多 MCP 服务请访问:https://github.com/modelcontextprotocol/servers

自定义智能体使用指南

⚠️ 重要提示:自定义智能体只在自定义会议模式 (custom) 下启用。需要使用 -m custom 参数启动或在 Web 界面中选择自定义模式。

工作模式说明

自定义智能体与其他工作模式的关系:

  • 团队模式 (team):使用内置智能体(小搜、小天、小简始终可用;小码、小令、小析、小访需环境变量启用)
  • 深度模式 (deep):使用深度探索者智能体,能深入分析问题并协调多个智能体解决复杂任务
  • 讨论模式 (group):使用 [roundtable.members] 配置的圆桌会议成员
  • 自定义模式 (custom):使用 [[custom.agents]] 配置的自定义智能体

启动自定义模式

# 命令行模式
./fkteams -m custom

# Web 模式(在侧边栏选择自定义模式)
./fkteams --web

# 直接查询模式
./fkteams -m custom -q "你的问题"

创建自定义智能体

  1. 编辑配置文件 config/config.toml
[[custom.agents]]
name = "前端开发专家"
desc = "专注于前端开发的智能体"
system_prompt = """你是一个专业的前端开发工程师。
你擅长:
- React、Vue、Angular 等现代前端框架
- HTML、CSS、JavaScript/TypeScript
- 响应式设计和移动端适配
- 性能优化和最佳实践

你需要:
1. 理解用户的前端开发需求
2. 使用合适的工具创建和修改代码
3. 确保代码质量和最佳实践
4. 提供清晰的技术建议
"""
base_url = "https://api.openai.com/v1"
api_key = "your_api_key"
model_name = "gpt-4"
tools = ["command", "search"]
  1. 启动自定义模式

    # 命令行启动
    ./fkteams -m custom
    
    # 或 Web 模式中选择自定义模式
    ./fkteams --web
  2. 使用说明

    • 自定义模式下会自动加载配置文件中的所有自定义智能体
    • 主持人智能体会根据任务需求调度合适的自定义智能体
    • 可以与内置智能体(如小搜、小天)混合使用

配置参数说明

参数 说明 必填
name 智能体名称
desc 智能体描述
system_prompt 系统提示词,定义智能体的行为
base_url AI 模型 API 地址
api_key API 密钥
model_name 使用的模型名称
tools 工具列表(内置工具和 MCP 工具)

系统提示词编写技巧

  1. 明确角色定位:清楚说明智能体的专业领域
  2. 定义能力范围:列出智能体擅长的具体技能
  3. 设定工作流程:指导智能体如何处理任务
  4. 强调约束条件:说明需要遵守的规则和限制

工具配置最佳实践

  1. 按需选择:只配置智能体真正需要的工具
  2. 组合使用:合理搭配内置工具和 MCP 工具
  3. 权限控制:注意工具的安全性和访问权限

使用场景示例

场景 1:代码审查助手

[[custom.agents]]
name = "代码审查专家"
desc = "专业的代码审查和质量分析"
system_prompt = """你是一个严格的代码审查专家...
重点关注:代码质量、安全漏洞、性能问题、最佳实践"""
tools = ["command", "mcp-github"]

场景 2:DevOps 助手

[[custom.agents]]
name = "DevOps 工程师"
desc = "自动化运维和部署专家"
system_prompt = """你是一个经验丰富的 DevOps 工程师...
擅长:CI/CD、容器化、监控告警、自动化脚本"""
tools = ["command", "mcp-github"]

场景 3:数据分析师

[[custom.agents]]
name = "数据分析师"
desc = "数据处理和可视化专家"
system_prompt = """你是一个数据分析专家...
能力:数据清洗、统计分析、数据可视化、报告生成"""
tools = ["command", "mcp-postgres", "mcp-filesystem"]

安全说明

  • 文件操作限制:文件操作被限制在工作目录 workspace/ 下(可通过 FEIKONG_WORKSPACE_DIR 配置),防止误操作系统文件
  • 命令执行权限:小令智能体会根据当前操作系统类型(Windows/Linux/macOS)执行相应的命令
  • SSH 连接管理:小访智能体通过 SSH 连接远程服务器,确保连接信息安全存储和使用
  • MCP 工具隔离:每个 MCP 服务运行在独立的进程中,可以单独控制启用/禁用
  • 工具权限管理:自定义智能体只能使用配置中明确指定的工具,避免权限滥用
  • 日志记录:所有智能体的操作和输出都会被记录,可以主动输出成 markdown 文件,便于审计和调试
  • 工具调用可视化:所有工具调用都会在终端显示,提供透明度
  • 环境变量保护:请确保 .env 文件和 config.toml 不被泄露,避免敏感信息外泄

构建

# 清理构建产物
make clean

# 构建当前平台
make build

# 修改 Makefile 中的 os-archs 变量以支持其他平台
# 例如:os-archs=darwin:arm64 linux:amd64 windows:amd64

许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

致谢

相关链接

About

一个基于多智能体协作的 AI 助手,支持命令行和Web界面,提供团队模式、自定义会议模式和多智能体讨论模式(圆桌会议模式)三种工作方式,通过多个专业智能体协同工作来完成复杂的编程和系统任务。

Topics

Resources

License

Stars

Watchers

Forks