← 返回全部文章

你真的需要AI Agent吗?先把这套本地自动化跑起来

n8n 加 Ollama 可以把邮件分拣、日志告警、文档摘要这些任务放到本地跑。它不神秘,关键是把不确定性关进一个步骤,后面继续用固定流程。

现在很多人一上来就想做 AI Agent 。真落到日常工作里,大部分需求没有那么玄:邮件来了,判断优先级;PDF 丢进文件夹,提取摘要;服务器日志异常,发一条解释清楚的提醒。

这不是 Agent 。它更像一条固定流水线,中间塞进一个本地模型,让它负责“理解一下”。

n8n + Ollama 正好适合这个场景。 n8n 负责触发器、分支、连接器和执行步骤;Ollama 在本机跑模型,提供 localhost:11434 接口。数据不用送到 OpenAI 、 Anthropic 或其他云端模型,成本也从按 token 计费变成自己维护机器。

这个方案不适合所有人。但如果你正在为 Zapier + OpenAI API 账单肉疼,或者不想把邮件、合同、日志、客户资料发到云端,它值得先跑一遍。

先把 Ollama 跑起来

Linux / macOS 上安装 Ollama:

curl -fsSL https://ollama.com/install.sh | sh

先拉一个适合工作流的模型。原讨论里提到的是 Gemma 系列,实际选择可以按机器内存来:

ollama pull gemma3:4b

如果你的机器内存更大,可以试 Qwen 系列。评论里有人问俄语场景,答复是 Qwen 对西里尔文字更稳,64GB 内存可以先试 30B/32B 级别模型。

给工作流模型单独建一个配置,主要是把上下文窗口调大一点:

cat > workflow-model.modelfile << 'EOF'
FROM gemma3:4b
PARAMETER num_ctx 16384
EOF

ollama create workflow-model -f workflow-model.modelfile

确认 API 正常:

curl http://localhost:11434/api/generate -d '{
  "model": "workflow-model",
  "prompt": "把这句话分成 urgent / normal / newsletter:客户说今天必须回合同。",
  "stream": false
}'

能返回内容,就说明本地模型这一步通了。

用 Docker Compose 起 n8n

新建 docker-compose.yml

version: "3.8"

services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_HOST=localhost
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
    volumes:
      - n8n_data:/home/node/.local/share/n8n
    extra_hosts:
      - "host.docker.internal:host-gateway"

volumes:
  n8n_data:

启动:

docker compose up -d

打开:

http://localhost:5678

这里最容易踩坑的是这行:

extra_hosts:
  - "host.docker.internal:host-gateway"

n8n 在 Docker 容器里,Ollama 跑在宿主机上。没有这行,容器里的 n8n 很可能找不到 localhost:11434,因为容器自己的 localhost 不是宿主机。

连接 n8n 和 Ollama

在 n8n 后台进入 Credentials,新建 Ollama 凭据。 URL 写:

http://host.docker.internal:11434

保存后,新建 workflow,拖一个 Ollama 节点,应该能看到本机已经安装的模型。选 workflow-model,写提示词,接到前后的触发器和动作上。

到这里,核心链路已经完成:

触发器 -> n8n 固定步骤 -> Ollama 本地理解 -> n8n 固定动作

第一个可用工作流:邮件分拣

先做一个每天早上 8 点跑的邮件摘要:

  1. Cron Trigger:每天 8 点触发。
  2. Gmail Node:读取最近 12 小时未读邮件。
  3. Ollama Node:把标题和摘要发给本地模型分类。
  4. IF Node:把 urgent 和其他邮件分流。
  5. Telegram Node:只把紧急邮件摘要发给你。
  6. Gmail Node:把 newsletter 自动标为已读或归档。

Ollama 节点里可以用这个提示词:

你是一个邮件分拣助手。
请把每封邮件分成 urgent、normal、newsletter 三类。
对 urgent 邮件写一句话摘要。
只返回 JSON 数组,不要解释。
字段:subject、category、summary。

建议把输出格式压死。不要让模型自由发挥,不要让它写一大段解释。 n8n 后面的节点要吃结构化结果,JSON 越稳定,流程越好维护。

一个简化输入可以长这样:

[
  {
    "subject": "合同今天必须确认",
    "snippet": "客户希望下班前收到修改意见"
  },
  {
    "subject": "本周产品简报",
    "snippet": "这里是本周行业新闻和产品更新"
  }
]

期望输出:

[
  {
    "subject": "合同今天必须确认",
    "category": "urgent",
    "summary": "客户要求今天下班前确认合同修改意见。"
  },
  {
    "subject": "本周产品简报",
    "category": "newsletter",
    "summary": ""
  }
]

五个更适合本地跑的场景

邮件分拣和自动归档。客户邮件打标签,newsletter 自动归档,紧急事项发到 Telegram 。人只看需要处理的部分。

日志监控。定时读取服务器日志,让本地模型解释异常模式,再发一条人能看懂的告警。日志不用上传到云端模型。

文档处理。监听一个文件夹,新 PDF 出现后提取文本,交给 Ollama 摘要,结果保存成 Markdown 。发票、报告、合同初筛都能用。

内容再利用。 RSS 有新文章时,本地模型生成公众号摘要、短视频脚本、社媒草稿。 n8n 只负责保存到表格或待审核文档,不自动发布。

会议准备。日历触发后,读取联系人、 CRM 备注和历史记录,生成一份会前 briefing,提前半小时发到手机。

这些场景共同点很明确:不要求秒级响应,不依赖最强模型,数据又有隐私价值。它们比“全自动 Agent”更适合固定工作流。

评论里最有价值的一点

讨论里有个提醒很关键:当工作流开始跨 Gmail 、日历、 CRM 查资料时,它会悄悄长出一点 Agent 味道。问题不在执行步骤,执行仍然可以固定;问题出在“上下文收集”这一层。

比如“帮我准备客户会议”这个任务,真正不确定的是:该查哪些资料、哪些资料算相关、哪些信息要丢给模型。后面的发 Telegram 、保存笔记、更新状态,仍然是固定流程。

所以不要一遇到这种情况就把整套系统升级成 Agent 。更稳的做法是:把不确定性关进一个上下文收集步骤,后面继续走固定管道。

还要给这个步骤做快照。每次运行时,把模型收到的上下文、筛选出来的资料、输出给下游的 JSON 都保存下来。否则出了怪结果,你分不清是流程 bug,还是上下文那一步漂了。

一个简单做法是在 n8n 里多加一步,把上下文写入本地文件:

{
  "run_id": "{{$execution.id}}",
  "input_sources": ["gmail", "calendar", "crm"],
  "assembled_context": "...",
  "model_output": "...",
  "created_at": "{{$now}}"
}

这一步看起来啰嗦,但它决定了后面能不能排错。本地自动化想长期跑,审计痕迹比炫技重要。

成本和硬件,别只看免费

原方案的成本对比很诱人:Zapier Pro 加 OpenAI API,一个月可能几十到一百多美元;n8n 自托管加 Ollama,软件成本接近零,主要是电费和机器维护。

但免费不等于没有成本。你要维护 Docker 、备份 n8n 数据、更新容器、处理模型变慢、处理机器睡眠。笔记本合盖,流程就停了。真想 24 小时跑,最好准备一台旧台式机、 NUC 或小主机。

硬件可以按这个标准粗略选:

  • 8GB:能跑小模型,适合实验。
  • 16GB:个人自动化比较舒服。
  • 24GB 以上:可以上更好的模型,余量也更大。
  • 64GB:多语言、大模型和更多并发更从容。

本地模型速度也要接受。它不适合用户正在等待的实时客服,但很适合定时任务、后台摘要、每天早上自动跑的工作流。

这套方案适合谁

适合三类人:已经在用 n8n 或愿意自托管的人;有隐私数据不想传云端的人;被云端自动化和 API 账单烦到的人。

不适合三类人:不想维护 Docker 的人;每次都需要顶级模型质量的人;要做实时用户请求的人。

我更愿意把它看成一个判断题:你要的是“自主决策”,还是“固定流程里有一步会理解文本”?如果是后者,先别急着上 Agent 。把 n8n + Ollama 跑起来,可能就够用了。

真正容易引发争论的点也在这里:很多团队喊着要 Agent,实际只是缺一条不把数据送上云的自动化流水线。你觉得呢?日常工作里,你更需要一个会自己行动的 Agent,还是一条可审计、可维护、偶尔调用本地模型的固定流程?

来源:https://www.reddit.com/r/better_claw/comments/1u6cqv1/n8n_ollama_a_local_model_selfhosted_automation/