AgenticSeek:自托管的 AI 工具方案
开源替代品,支持在自己的服务器部署 AI 工具,规避云服务费用和数据隐私问题。
开源替代品,支持在自己的服务器部署 AI 工具,规避云服务费用和数据隐私问题。
一个 100% 本地化的 Manus AI 替代方案,这款支持语音的 AI 智能体可以自主浏览网页、编写代码、规划任务,同时将所有数据保留在本地设备上。针对本地推理模型进行了优化,完全在你的硬件上运行,确保完全隐私且零云依赖。
🔒 完全本地化与隐私保护 - 所有功能都在本地机器上运行——无云端、无数据共享。你的文件、对话和搜索记录始终保持私密。
🌐 智能网页浏览 - AgenticSeek 可以自主浏览互联网——搜索、阅读、提取信息、填充网页表单——完全无需人工干预。
💻 自主编码助手 - 需要代码?它可以编写、调试和运行 Python、C、Go、Java 等多种编程语言的程序——无需监督。
🧠 智能智能体选择 - 你提出问题,它会自动判断最合适的智能体来完成任务。就像随时有一个专家团队做准备一样。
📋 规划与执行复杂任务 - 从旅行规划到复杂项目——它可以将大任务分解为步骤,并使用多个 AI 智能体来完成工作。
🎙️ 语音启用 - 清晰、快速、未来感十足的语音和语音转文本功能,让你可以像与科幻电影中的个人 AI 助手对话一样与它交互。(开发中)
你能否搜索 AgenticSeek 项目,了解所需的技能,然后打开 CV_candidates.zip 文件,并告诉我哪些候选人最匹配该项目?
免责声明: 该演示中出现的所有文件(如 CV_candidates.zip)都是虚构的。我们不是一家公司,我们寻求的是开源贡献者,而非候选人。
🙏 本项目最初只是一个副业项目,零路线图、零融资。它的发展超出了我的预期,最终登上了 GitHub 热榜。衷心感谢所有贡献、反馈和耐心。
开始之前,请确保安装了以下软件:
Git: 用于克隆仓库。下载 Git
Python 3.10.x: 我们强烈建议使用 Python 3.10.x 版本。使用其他版本可能导致依赖错误。下载 Python 3.10(选择 3.10.x 版本)。
Docker Engine 与 Docker Compose: 用于运行捆绑服务(如 SearxNG)。安装 Docker Desktop(包含 Docker Compose V2):Windows | Mac | Linux。或者在 Linux 上分别安装 Docker Engine 和 Docker Compose:Docker Engine | Docker Compose(确保安装 Compose V2,例如 sudo apt-get install docker-compose-plugin)。
git clone https://github.com/Fosowl/agenticSeek.git
cd agenticSeek
mv .env.example .env
SEARXNG_BASE_URL="http://searxng:8080" # value depends on where the backend runs — see the SEARXNG note below
SEARXNG_PORT=8080
REDIS_BASE_URL="redis://redis:6379/0"
WORK_DIR="/Users/mlg/Documents/workspace_for_ai"
OLLAMA_PORT="11434"
LM_STUDIO_PORT="1234"
CUSTOM_ADDITIONAL_LLM_PORT="11435"
OPENAI_API_KEY='optional'
DEEPSEEK_API_KEY='optional'
OPENROUTER_API_KEY='optional'
TOGETHER_API_KEY='optional'
GOOGLE_API_KEY='optional'
ANTHROPIC_API_KEY='optional'
根据需要使用你自己的值更新 .env 文件:
SEARXNG_PORT: Docker 发布 SearXNG 时使用的主机端口。如果你的机器上端口 8080 已被占用,请设置另一个端口(例如 8001)。Docker 容器内部始终监听端口 8080——此变量不会改变这一点。
SEARXNG_BASE_URL: 后端用于访问 SearXNG 的地址。它在 .env 中设置(不在 config.ini),仅取决于后端的运行位置:
要在浏览器中检查 SearXNG,始终使用主机端口:http://localhost:<SEARXNG_PORT>。更改 .env 后,重启后端——该文件仅在进程启动时读取。
REDIS_BASE_URL: 保持不变
WORK_DIR: 本地机器上工作目录的路径。AgenticSeek 将能够读取和交互这些文件。
OLLAMA_PORT: Ollama 服务的端口号。
LM_STUDIO_PORT: LM Studio 服务的端口号。
CUSTOM_ADDITIONAL_LLM_PORT: 任何额外自定义 LLM 服务的端口。
API Key: 对于选择本地运行 LLM 的用户来说完全可选。这是本项目的主要目的。如果你的硬件足够强大,可以留空。
确保 Docker 已安装并在你的系统上运行。你可以使用以下命令启动 Docker:
在 Linux/macOS 上: 打开终端并运行:
sudo systemctl start docker
或从应用菜单启动 Docker Desktop(如果已安装)。
在 Windows 上: 从开始菜单启动 Docker Desktop。
你可以通过执行以下命令验证 Docker 是否在运行:
docker info
如果你看到关于你的 Docker 安装的信息,说明它运行正常。
有关本地供应商的摘要,请参见下表。
下一步: 本地运行 AgenticSeek
如果遇到问题,请查看故障排除部分。如果你的硬件无法本地运行 LLM,请参见使用 API 运行的设置。有关详细的 config.ini 说明,请参见配置部分。
硬件要求:
要本地运行 LLM,你需要足够的硬件。至少需要能够运行 Magistral、Qwen 或 Deepseek 14B 的 GPU。详细的模型/性能建议请参见常见问题。
启动你的本地供应商(例如使用 ollama):
除非你希望在主机上运行 AgenticSeek(CLI 模式),否则导出或设置供应商监听地址:
export OLLAMA_HOST=0.0.0.0:11434
然后启动供应商:
ollama serve
下面是本地支持供应商的列表。
更改 config.ini 文件,将 provider_name 设置为支持的供应商,provider_model 设置为供应商支持的 LLM。我们建议使用推理模型,如 Magistral 或 Deepseek。
请参见 README 末尾的常见问题以了解所需的硬件。
[MAIN]
is_local = True
provider_name = ollama
provider_model = deepseek-r1:14b
provider_server_address = 127.0.0.1:11434
agent_name = Jarvis
recover_last_session = True
save_session = True
speak = False
listen = False
jarvis_personality = False
languages = en zh
[BROWSER]
headless_browser = True
stealth_mode = True
config.ini 文件格式不支持注释。不要直接复制粘贴示例配置,因为注释会导致错误。相反,应手动修改 config.ini 文件以设置所需的值,不包括任何注释。
注意: 如果使用 LM-studio 运行 LLM,请勿将 provider_name 设置为 openai。应将其设置为 lm-studio。
注意: 某些供应商(如 lm-studio)要求在 IP 前面加上 http://。例如 http://127.0.0.1:1234。
下一步: 启动服务并运行 AgenticSeek
此设置使用外部的基于云的 LLM 提供商。你需要从选定的服务获取 API 密钥。
参考下方的 API 提供商列表。访问他们的网站注册并获取 API 密钥。
Linux/macOS:打开终端并使用 export 命令。最好将其添加到 shell 的配置文件(例如 ~/.bashrc、~/.zshrc)中以保持持久性。
export PROVIDER_API_KEY="your_api_key_here"
# 将 PROVIDER_API_KEY 替换为特定的变量名,例如 OPENAI_API_KEY、GOOGLE_API_KEY
TogetherAI 示例:
export TOGETHER_API_KEY="xxxxxxxxxxxxxxxxxxxxxx"
Windows:
Command Prompt(临时,仅当前会话):
set PROVIDER_API_KEY=your_api_key_here
PowerShell(临时,仅当前会话):
$env:PROVIDER_API_KEY="your_api_key_here"
永久设置:在 Windows 搜索栏中搜索"环境变量",点击"编辑系统环境变量",然后点击"环境变量..."按钮。添加一个新的用户变量,命名为相应的名称(例如 OPENAI_API_KEY),并将你的密钥作为值。
(有关更多详情,请参阅常见问题:如何设置 API 密钥?)
[MAIN]
is_local = False
provider_name = openai # 或 google、deepseek、togetherAI、huggingface
provider_model = gpt-3.5-turbo # 或 gemini-1.5-flash、deepseek-chat、mistralai/Mixtral-8x7B-Instruct-v0.1 等
provider_server_address = # 当 is_local = False 时,对于大多数 API 通常被忽略或可留空
# ... 其他设置 ...
警告:确保 config.ini 值中没有尾部空格。
我们建议不要将 gpt-4o 或其他 OpenAI 模型用于复杂的网页浏览和任务规划,因为当前的提示优化是针对 Deepseek 等模型的。
编码/bash 任务在使用 Gemini 时可能会遇到问题,因为它可能不会严格遵循针对 Deepseek 优化的格式提示。
当 is_local = False 时,config.ini 中的 provider_server_address 通常不会被使用,因为 API 端点通常在各自提供商的库中硬编码。
下一步:启动服务并运行 AgenticSeek
如有问题,请参阅已知问题部分。
有关详细的配置文件说明,请参阅配置部分。
默认情况下,AgenticSeek 完全在 Docker 中运行。
启动所需的服务。这将从 docker-compose.yml 启动所有服务,包括:
./start_services.sh full # MacOS
start start_services.cmd full # Windows
警告:此步骤将下载并加载所有 Docker 镜像,可能需要长达 30 分钟。启动服务后,请等待 backend 服务完全运行(你应该在日志中看到 backend: "GET /health HTTP/1.1" 200 OK),然后再发送任何消息。backend 服务在首次运行时可能需要 5 分钟才能启动。
访问 http://localhost:3000/,你应该能看到网页界面。
故障排除服务启动:如果这些脚本失败,请确保 Docker Engine 正在运行,并且 Docker Compose(V2,docker compose)安装正确。查看终端的输出以获取错误消息。参阅常见问题:帮助!运行 AgenticSeek 或其脚本时出现错误。
若要使用 CLI 界面,你必须在主机上安装包:
./install.sh
./install.bat # windows
然后你必须在 .env 文件(不是 config.ini)中更改 SEARXNG_BASE_URL 为主机映射的地址,因为在 CLI 模式下 backend 在你的机器上运行,在 Docker 外:
SEARXNG_BASE_URL="http://localhost:8080"
如果你在 .env 中更改了 SEARXNG_PORT,请在这里使用该端口(例如 http://localhost:8001)。编辑 .env 后重启 cli.py——该值在启动时读取。
启动所需的服务。这将从 docker-compose.yml 启动某些服务,包括:
./start_services.sh # MacOS
start start_services.cmd # Windows
运行:
uv run python -m ensurepip
以确保 uv 启用了 pip。
使用 CLI:
uv run cli.py
确保服务已通过 ./start_services.sh full 启动并运行,然后在 localhost:3000 访问网页界面。
你也可以通过在配置中设置 listen = True 来使用语音转文字。仅适用于 CLI 模式。
要退出,只需说/输入 goodbye。
以下是一些使用示例:
用 Python 制作一个贪吃蛇游戏!
在网上搜索法国雷恩排名前列的咖啡馆,并将三家咖啡馆及其地址的列表保存在 rennes_cafes.txt 中。
编写一个 Go 程序来计算数字的阶乘,并将其保存为 workspace 中的 factorial.go
搜索 summer_pictures 文件夹中的所有 JPG 文件,用今天的日期重命名,并将重命名的文件列表保存在 photos_list.txt 中
在网上搜索 2024 年流行的科幻电影,选择三部今晚观看。将列表保存在 movie_night.txt 中。
在网上搜索 2025 年最新的 AI 新闻文章,选择三篇,并编写 Python 脚本来爬取它们的标题和摘要。将脚本保存为 news_scraper.py,将摘要保存在 /home/projects 中的 ai_news.txt
周五,在网上搜索免费的股票价格 API,使用 supersuper7434567@gmail.com 注册,然后编写 Python 脚本来使用该 API 获取 Tesla 的每日价格,并将结果保存在 stock_prices.csv 中
请注意,表单填充功能仍处于试验阶段,可能会失败。
在你输入查询后,AgenticSeek 将为该任务分配最佳的 AI 智能体。
因为这是一个早期原型,AI 智能体路由系统可能不会总是根据你的查询分配正确的 AI 智能体。
因此,你应该明确说明你想要什么以及 AI 可能如何进行。例如,如果你想让它进行网络搜索,不要说:
你知道一些适合独自旅行的好国家吗?
而应该说:
进行网络搜索,找出最适合独自旅行的国家
如果你有一台强大的计算机或可以使用的服务器,但想从笔记本电脑上使用它,你可以选择使用我们的自定义 LLM 服务器在远程服务器上运行 LLM。
在将运行 AI 模型的"服务器"上获取 IP 地址:
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # 本地 IP
curl https://ipinfo.io/ip # 公网 IP
注意:对于 Windows 或 macOS,分别使用 ipconfig 或 ifconfig 查找 IP 地址。
克隆仓库并进入 server 文件夹。
git clone --depth 1 https://github.com/Fosowl/agenticSeek.git
cd agenticSeek/llm_server/
安装服务器特定的依赖:
pip3 install -r requirements.txt
运行服务器脚本。
python3 app.py --provider ollama --port 3333
你可以选择使用 ollama 或 llamacpp 作为 LLM 服务。
现在在你的个人计算机上:
更改 config.ini 文件,将 provider_name 设置为 server,provider_model 设置为 deepseek-r1:70b。将 provider_server_address 设置为将运行模型的机器的 IP 地址。
[MAIN]
is_local = False
provider_name = server
provider_model = deepseek-r1:70b
provider_server_address = http://x.x.x.x:3333
下一步:启动服务并运行 AgenticSeek
警告:语音转文字目前仅在 CLI 模式下有效。
请注意,目前语音转文字仅支持英文。
语音转文字功能默认禁用。要启用它,在 config.ini 文件中将 listen 选项设置为 True:
listen = True
启用后,语音转文字功能将侦听触发关键词(即 AI 智能体的名称),然后才开始处理你的输入。你可以通过更新 config.ini 文件中的 agent_name 值来自定义 AI 智能体的名称:
agent_name = Friday
为获得最佳识别效果,我们建议使用常见的英文名作为智能体名称,例如“John”或“Emma”。
看到转录文本开始出现后,大声说出智能体的名称以唤醒它(例如“Friday”)。
清晰地说出你的问题。
在请求末尾加上确认短语,向系统发出继续执行的信号。确认短语示例包括:
"do it", "go ahead", "execute", "run", "start", "thanks", "would ya", "please", "okay?", "proceed", "continue", "go on", "do that", "go it", "do you understand?"
[MAIN]
is_local = True
provider_name = ollama
provider_model = deepseek-r1:32b
provider_server_address = http://127.0.0.1:11434 # Example for Ollama; use http://127.0.0.1:1234 for LM-Studio
agent_name = Friday
recover_last_session = False
save_session = False
speak = False
listen = False
jarvis_personality = False
languages = en zh # List of languages for TTS and potentially routing.
[BROWSER]
headless_browser = False
stealth_mode = False
config.ini 设置说明:
[MAIN] 部分:is_local:如果使用本地 LLM 提供商(Ollama、LM-Studio、本地 OpenAI 兼容服务器)或自托管服务器选项,则设为 True。如果使用基于云的 API(OpenAI、Google 等),则设为 False。provider_name:指定 LLM 提供商。本地选项:ollama、lm-studio、openai(用于本地 OpenAI 兼容服务器)、server(用于自托管服务器配置)。API 选项:openai、google、deepseek、huggingface、togetherAI。provider_model:所选提供商的具体模型名称或 ID(例如,Ollama 使用 deepseekcoder:6.7b,OpenAI API 使用 gpt-3.5-turbo,TogetherAI 使用 mistralai/Mixtral-8x7B-Instruct-v0.1)。provider_server_address:LLM 提供商的地址。对于本地提供商:例如,Ollama 使用 http://127.0.0.1:11434,LM-Studio 使用 http://127.0.0.1:1234。对于 server 提供商类型:自托管 LLM 服务器的地址(例如 http://your_server_ip:3333)。对于云 API(is_local = False):此项通常会被忽略或可以留空,因为 API 端点通常由客户端库处理。agent_name:AI 助手的名称(例如 Friday)。如果启用了语音转文本,它将用作触发词。recover_last_session:设为 True 时尝试恢复上一次会话的状态,设为 False 时重新开始。save_session:设为 True 时保存当前会话的状态,以便之后恢复;否则设为 False。speak:设为 True 时启用文本转语音输出,设为 False 时禁用。listen:设为 True 时启用语音转文本输入(仅限 CLI 模式),设为 False 时禁用。work_dir:至关重要:AgenticSeek 读写文件的目录。请确保此路径在你的系统上有效且可访问。jarvis_personality:设为 True 时使用更具“Jarvis 风格”的系统提示词(实验性功能),设为 False 时使用标准提示词。languages:以逗号分隔的语言列表(例如 en, zh, fr)。用于选择 TTS 语音(默认为第一个),也可辅助 LLM 路由器。为提高路由器效率,请避免配置过多语言或过于相似的语言。
is_local:如果使用本地 LLM 提供商(Ollama、LM-Studio、本地 OpenAI 兼容服务器)或自托管服务器选项,则设为 True。如果使用基于云的 API(OpenAI、Google 等),则设为 False。
provider_name:指定 LLM 提供商。本地选项:ollama、lm-studio、openai(用于本地 OpenAI 兼容服务器)、server(用于自托管服务器配置)。API 选项:openai、google、deepseek、huggingface、togetherAI。
本地选项:ollama、lm-studio、openai(用于本地 OpenAI 兼容服务器)、server(用于自托管服务器配置)。
API 选项:openai、google、deepseek、huggingface、togetherAI。
provider_model:所选提供商的具体模型名称或 ID(例如,Ollama 使用 deepseekcoder:6.7b,OpenAI API 使用 gpt-3.5-turbo,TogetherAI 使用 mistralai/Mixtral-8x7B-Instruct-v0.1)。
provider_server_address:LLM 提供商的地址。对于本地提供商:例如,Ollama 使用 http://127.0.0.1:11434,LM-Studio 使用 http://127.0.0.1:1234。对于 server 提供商类型:自托管 LLM 服务器的地址(例如 http://your_server_ip:3333)。对于云 API(is_local = False):此项通常会被忽略或可以留空,因为 API 端点通常由客户端库处理。
对于本地提供商:例如,Ollama 使用 http://127.0.0.1:11434,LM-Studio 使用 http://127.0.0.1:1234。
对于 server 提供商类型:自托管 LLM 服务器的地址(例如 http://your_server_ip:3333)。
对于云 API(is_local = False):此项通常会被忽略或可以留空,因为 API 端点通常由客户端库处理。
agent_name:AI 助手的名称(例如 Friday)。如果启用了语音转文本,它将用作触发词。
recover_last_session:设为 True 时尝试恢复上一次会话的状态,设为 False 时重新开始。
save_session:设为 True 时保存当前会话的状态,以便之后恢复;否则设为 False。
speak:设为 True 时启用文本转语音输出,设为 False 时禁用。
listen:设为 True 时启用语音转文本输入(仅限 CLI 模式),设为 False 时禁用。
work_dir:至关重要:AgenticSeek 读写文件的目录。请确保此路径在你的系统上有效且可访问。
jarvis_personality:设为 True 时使用更具“Jarvis 风格”的系统提示词(实验性功能),设为 False 时使用标准提示词。
languages:以逗号分隔的语言列表(例如 en, zh, fr)。用于选择 TTS 语音(默认为第一个),也可辅助 LLM 路由器。为提高路由器效率,请避免配置过多语言或过于相似的语言。
[BROWSER] 部分:headless_browser:设为 True 时,在不显示可见窗口的情况下运行自动化浏览器(推荐用于 Web 界面或非交互式场景)。设为 False 时显示浏览器窗口(适用于 CLI 模式或调试)。stealth_mode:设为 True 时启用相关措施,使浏览器自动化更难被检测到。可能需要手动安装 anticaptcha 等浏览器扩展。
headless_browser:设为 True 时,在不显示可见窗口的情况下运行自动化浏览器(推荐用于 Web 界面或非交互式场景)。设为 False 时显示浏览器窗口(适用于 CLI 模式或调试)。
stealth_mode:设为 True 时启用