lightbulbagent-demo

DS生成的本地化agent-demo方案(20260216)

我们可以将三种方案融合成一个功能强大的本地AI系统,兼具个性化助手自动化任务私有知识库。考虑到你的系统内存有限(约5GB可用),我们将采用轻量化部署策略,并确保各组件可独立启用,避免资源争抢。


🌐 整体架构

[用户接口层]
   ├─ (可选) Open WebUI  —— 图形化助手界面(带记忆功能)
   ├─ 终端别名/脚本      —— 快速命令行对话
   └─ n8n 自动化界面     —— 可视化工作流设计

[核心服务层]
   ├─ Ollama             —— 运行DeepSeek模型(1.5B/7B)
   ├─ AnythingLLM        —— 私有知识库引擎(含嵌入模型)
   └─ n8n 后端           —— 自动化任务调度

[数据层]
   ├─ Docker 卷          —— 持久化存储(知识库、n8n数据)
   └─ 本地文件系统       —— 脚本、配置文件

所有组件通过Docker容器运行,利用Docker网络互相通信,并共享宿主机的Ollama服务。


🧩 组件清单与内存评估

组件
内存占用预估
说明

Ollama

模型相关

运行1.5B模型约1.1GB,7B模型约4-5GB

AnythingLLM

~300MB

含嵌入模型(all-MiniLM-L6-v2)

n8n

~200MB

自动化引擎,可调整并发任务数

Open WebUI

~200MB

Web前端,可选

总计

1.8GB+

若全部启动,建议至少4GB可用内存

若内存吃紧,可选择性启动部分组件(例如用终端对话替代Open WebUI)。


🚀 部署步骤(逐模块安装)

0. 前提条件

  • Docker 已安装并配置镜像加速器(国内用户务必配置)。

  • Ollama 已安装并运行(如果未安装,参考之前回答)。

  • 已拉取所需模型(如 deepseek-r1:1.5b)。


1. 部署知识库:AnythingLLM

AnythingLLM 提供完整的RAG能力,可上传文档并基于本地模型问答。

1.1 创建数据目录并运行容器

访问 http://localhost:3001 进入设置向导。

1.2 配置 AnythingLLM 连接 Ollama

  • 进入设置 → AI Provider,选择 Ollama

  • Ollama Base URL:http://localhost:11434(因为使用了host网络,容器内可直接访问宿主机端口)

  • 选择聊天模型:例如 deepseek-r1:1.5b

  • 选择嵌入模型:如果本地没有嵌入模型,可在Ollama中先拉取轻量嵌入模型:

    然后在AnythingLLM中选择 nomic-embed-text

1.3 创建知识库并上传文档

  • 创建工作空间(例如“我的文档”)。

  • 上传PDF、TXT等文件,等待向量化完成。

  • 测试问答,确保能检索并生成回答。


2. 部署自动化引擎:n8n

n8n 负责定时任务、事件触发、与Ollama API交互。

2.1 运行 n8n 容器(使用host网络同样简单)

访问 http://localhost:5678,注册账号(本地数据)。

2.2 添加Ollama节点(通过HTTP Request)

n8n默认无Ollama节点,我们使用HTTP Request节点调用Ollama API。

创建工作流示例:每日新闻摘要

  • 触发器:Cron节点,每天8:00执行。

  • HTTP请求:获取RSS内容(可用RSS Feed节点,或手动请求)。

  • 代码节点:提取文章标题和链接。

  • 循环:对每篇文章,用HTTP Request调用Ollama生成摘要。

    • URL: http://localhost:11434/api/generate

    • Method: POST

    • Headers: Content-Type: application/json

    • Body:

  • 汇总输出:将摘要组合成邮件正文,通过Email节点发送。

2.3 连接知识库(可选)

如需在自动化中查询知识库,可用HTTP Request调用AnythingLLM的API(需在AnythingLLM中生成API密钥)。例如,自动回答常见问题并存入数据库。


3. 部署专属AI助手前端

3.1 方案A:轻量级终端助手(推荐低内存)

沿用你已有的 deepseek 别名,指向1.5B模型。修改 ~/.zshrc

优点:几乎不额外消耗内存,适合日常快速问答。

3.2 方案B:图形化助手 Open WebUI(功能丰富)

如果内存允许(约+200MB),可部署Open WebUI,它支持:

  • 多模型切换(包括1.5B/7B)

  • 记忆功能(记录用户偏好)

  • 内置RAG(但不如AnythingLLM强大)

部署 Open WebUI(使用host网络):

访问 http://localhost:3000,注册后即可对话。

设置记忆:在聊天界面左侧点击“记忆”图标,添加用户信息(如名字、兴趣),AI将据此个性化回复。


4. 组件集成:打通任督二脉

4.1 让 n8n 能调用 AnythingLLM 知识库

  • 在 AnythingLLM 设置中生成 API 密钥。

  • n8n 工作流中使用 HTTP Request 节点,URL 为 http://localhost:3001/api/v1/workspace/{workspace-id}/chat,携带API密钥和用户问题,即可基于知识库回答。

4.2 让 Open WebUI 使用 AnythingLLM 知识库

Open WebUI 本身支持RAG(通过文档上传),但如果你想复用AnythingLLM的知识库,有两种方式:

  • 在Open WebUI中上传相同文档(简单但冗余)。

  • 通过Open WebUI的“外部工具”功能,编写一个自定义工具调用AnythingLLM API(需要开发,较复杂)。

4.3 自动化触发个性化提醒

在 n8n 中创建定时工作流,每天早上调用Ollama生成一句鼓励语或日程建议,然后通过Telegram或邮件发送。可利用Open WebUI的记忆API(如果部署了)获取用户偏好。


🧠 内存优化建议

  1. 模型选择:日常使用1.5B模型,需要深度推理时临时切换7B。

  2. 按需启动容器:将不常用的容器停止(例如 docker stop anythingllm),用脚本一键启动所需组合。

  3. 增加Swap:创建4GB Swap文件,避免因内存不足导致OOM:

  4. 限制容器内存:在 docker run 时添加 -m 2g 等参数限制内存使用(需内核支持)。


📘 使用场景示例

  • 早晨:输入 ds-auto 打开n8n,查看昨晚自动生成的行业摘要。

  • 工作:在终端输入 deepseek,快速问一个Python问题,AI立刻回答。

  • 下午:输入 ds-web 打开知识库界面,上传新文档并提问,获得基于私有资料的答案。

  • 晚上:让n8n定时备份重要文件,并用Ollama生成备份报告邮件。


🧹 清理与维护

  • 定期清理Docker日志:docker logs --tail 50 <容器名> 可查看最新日志。

  • 备份数据卷:docker run --rm -v n8n_data:/data -v $(pwd):/backup alpine tar czf /backup/n8n_backup.tar.gz -C /data .

  • 如需卸载某组件,停止并删除容器,再删除数据卷(如有需要)。


这个融合方案为你构建了一个本地AI中台,既能对话,又能自动化,还能检索私有知识。你可以根据实际需求增减组件,所有配置均持久化,重启后依然可用。

如果有任何步骤遇到问题,欢迎随时提问!

最后更新于