从 0 开始搭建本地 Agent
在当前AI Agent火热趋势下,Agent以其自主推理和动态决策能力,显著超越传统自动化工作流的固定步骤执行,展现出灵活适应场景的巨大优势。
本文笔者将实践从零开始,以n8n为例搭建本地Agent,助你快速上手智能Agent开发。
Part1
Agent VS 自动化工作流
1. Agent 与自动化工作流的区别:
1.1 自动化工作流
自动化工作流是通过提前定义的固定步骤实现的过程,通常按照设定的规则和顺序执行任务。例如:
每天早晨定时启动程序,自动获取最新新闻。
提取新闻的标题、摘要、作者、发布时间等内容。
自动按照特定格式生成飞书消息发送给用户。
即使增加了复杂度,比如从多个不同来源获取新闻信息、自动生成内容摘要并保存到飞书多维表格中,它也只是严格地执行预设的步骤,没有自主决策或推理的能力。
1.2 Agent
Agent 具备自主推理和动态决策的能力。Agent 可以灵活地适应不同的场景,实时决定应该执行哪些操作。例如:
用户提出将某句话翻译成英文,Agent 会调用翻译工具完成任务。
当用户询问今日的新闻时,Agent 自主判断需要从飞书多维表格获取新闻数据并生成简洁的总结信息返回给用户。
与自动化工作流不同,Agent 可以根据情境的变化动态做出决策和适应性调整。
2. Agent 的三个核心组件
2.1 大脑(智能模型)
Agent 的大脑通常由强大的大语言模型(LLM)构成,例如:ChatGPT、Claude 、Llama、这些模型负责 Agent 的推理、规划和语言生成,让 Agent 能够智能理解用户需求,生成清晰准确的回应。
2.2 记忆(上下文与外部数据)
记忆允许 Agent 存储和检索历史信息,以便做出更好的决策。具体包括:
存储对话历史,提供持续的上下文信息。
访问外部文档、数据库来获取信息。
利用短期和长期记忆支持决策过程。
2.3 工具(与外部互动方式)
工具赋予 Agent 与外部环境进行互动的能力,包括以下几种类型:
信息获取工具:例如数据检索、网页搜索、文档信息提取。
执行行动工具:例如发送邮件、数据库修改、日历创建或代码执行。
任务编排工具:例如调用其他 Agent 或触发其他自动化工作流。
常见工具包括搜索引擎、邮件服务、表格处理工具、天气查询服务、日历管理工具,以及飞书、Twitter、高德地图、API 服务等。
3.单 Agent 与多 Agent 系统
3.1 单 Agent
适用于单一或简单任务,能够独立完成任务且易于维护与管理,强调简单高效。
3.2 多 Agent 系统
适用于较复杂的任务场景,常见结构包括:
一个中心 Agent 负责整体规划和任务分配。
子 Agent 专注于具体任务,例如调查、内容撰写或程序开发。
4.护栏与风险管理
为了防止 Agent 出现错误、陷入循环或产生不适当的行为,必须设置护栏,具体措施包括:
防止用户通过恶意指令绕过规则。
避免 Agent 生成误导性或虚假的信息。
不断更新护栏规则以应对新的风险。
实际案例中,有用户利用 Agent 漏洞,以极低价格购买车辆,设置合适的护栏则可以有效避免这一情况。
5.核心总结
自动化工作流:严格固定步骤,静态执行。
Agent:动态、自主决策,具备灵活的适应性。
5.1 Agent 三个核心组件:
大脑:大语言模型负责推理和语言理解生成。
记忆:历史上下文与外部信息检索。
工具:实现与外部互动的能力。
5.2 实施原则
始终优先考虑最简单有效的解决方案(单 Agent > 多 Agent,自动化工作流 > Agent,简单提示 > 自动化)。
Part2
开始实操
1.前置准备👀
1. 1 建立飞书多维表格
创建一个包含以下六个字段的飞书多维表格:
2.安装必要工具
2. 1 Docker 和 n8n官网
工具链接:
Docker 官网:https://www.docker.com/
n8n官网:https://n8n.io/
2.2 终端命令:
下载n8n
docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
3.正式开始实操
🔹 第一步:新建项目 + 设置触发器
添加按计划触发器,让 Agent 在设定时间自动运行。
🔹 第二步:添加 Agent 节点
点击加号 → 选择 AI → Agent。
🔹 第三步:连接大脑 🧠(LLM)
在DeepSeek开放平台中获得API密钥:
DeepSee开放平台:https://platform.deepseek.com/usage
🔹 第四步 添加记忆📝
可以在工具栏选择简单记忆给AI配置上下文记忆。
🔹 第五步 配置工具🔧【飞书】
5.1 安装飞书节点包
n8n-nodes-feishu-lite
5.2 配置飞书凭证
在开发者后台,创建应用,并获取 appid 和 appsecret:
飞书开放平台:https://open.feishu.cn/?lang=zh-CN
飞书开发者后台:https://open.feishu.cn/app
5.3 查询多维表格中今天和昨天的数据
a.获取多维表格 token 和 ID
b. 查找数据
{
"filter": {
"conjunction": "or",
"conditions": [
{
"field_name": "创建时间",
"operator": "is",
"value": ["Today"]
},
{
"field_name": "创建时间",
"operator": "is",
"value": ["Yesterday"]
}
]
}
}
5.4 获取飞书日历-日程列表
a.获取日历ID
b.日程列表unix时间戳
今天
{{ (Math.floor((Math.floor(Date.now()/1000) + 28800) / 86400) * 86400 - 28800) }}
今天往后7天
{{ (Math.floor((Math.floor(Date.now()/1000) + 28800) / 86400) * 86400 - 28800) + 604800 + 86399 }}
* 注意这一步需要创建一个机器人,并把机器人发布出来
版本号按照格式要求随便填一个就好,比如:0.0.1
🔹 第六步 构建HTTP请求,配置群聊机器人
6.1 在飞书群聊里添加自定义webhook机器人
6.2 发送头(请求头)填写
name
Content-Type
value
application/json
6.3 发送正文(请求体)填写
卡片格式消息
{
"msg_type": "interactive",
"card": {
"schema": "2.0",
"config": {
"update_multi": true,
"style": {
"text_size": {
"normal_v2": {
"default": "normal",
"pc": "normal",
"mobile": "heading"
}
}
}
},
"body": {
"direction": "vertical",
"padding": "12px 12px 12px 12px",
"elements": [
{
"tag": "markdown",
"content": "{{ $json.output ? JSON.stringify($json.output).slice(1, -1) : '' }}",
"text_align": "left",
"text_size": "normal_v2",
"margin": "0px 0px 0px 0px"
}
]
},
"header": {
"title": {
"tag": "plain_text",
"content": "AI News"
},
"subtitle": {
"tag": "plain_text",
"content": ""
},
"template": "blue",
"padding": "12px 12px 12px 12px"
}
}
}
🔹第七步 Agent提示词编写
Agent提示词需要包含的元素:
角色:你的身份
任务:要完成的内容
工具:可以使用的工具名和功能
约束:必须遵守的规则
输出:结果的格式与内容要求
本次Agent提示词:
你是我的专属AI助理“新闻报通”!你的使命是帮我洞察最新的AI动态,并结合我的工作日程,智能推荐感兴趣的内容和安排行程。在没有行业大事发生时,你也会关心我的生活,推荐放松娱乐活动。 最终你需要将所有分析和建议,整合为一个适合在飞书卡片中展示的Markdown格式文本块。保持乐观、敏锐、有创造力!
我有两个核心工具供你调遣:
news:用它来抓取过去2天内飞书多维表格里最新、最有料的AI新闻。此工具会返回一个新闻列表,列表中的每条新闻都包含:新闻标题、发布日期、发布媒体、核心内容/摘要、以及原文链接。
daily:用它来查看我未来7天的飞书日程安排。此工具会返回日程事件的日期、时间、事件标题。
你的行动指令:
第一步:信息收集
立即使用【最新新闻查询】工具,获取最新的AI新闻列表(每条新闻包含标题、日期、发布媒体、摘要、链接)。
同时,使用【日历查询】工具,获取我未来7天的详细日程安排。
第二步:智能分析与建议(输出为纯Markdown格式)
你的核心任务是生成一段单一、完整的Markdown文本。此文本本身就是最终要在飞书卡片中呈现的内容。请严格按照以下指导来组织信息,但不要在你的最终输出中包含模板本身的 ```markdown 包裹标记或任何非Markdown的解释性文字。
Markdown内容结构指导(请填充实际内容):
### 🚀 AI圈今日速递与【**专属建议**】
**🌟 今日AI新闻看板:**
{{#if (tool_output.latest_news an_array_with_items)}}
{{#eachtool_output.latest_newsas |news_item|}}
* ---
* **标题:** {{news_item.title}}
* **发布日期:** {{news_item.date}}
* **发布媒体:** {{news_item.source_or_media}}
* **核心摘要:** {{news_item.summary}}
* **原文链接:** [点击查看详情]({{news_item.link}})
{{/each}}
{{else}}
* 今天AI领域风平浪静,暂未捕获到新的AI大新闻。是时候出门活动活动了!
{{/if}}
* ---
**📅 我的近期日程概览:**
[此处列出未来几天的相关日程条目,或清晰指明哪些天/时段有空档,例如:
* X月X日 (周X):上午 - 视频脚本A;下午 - 暂无安排
* X月X日 (周X):全天 - 参与行业会议
]
**💡 综合建议与排期参考:**
[基于今天获取到的所有新闻(如果有的话)以及我的日程空闲情况,给出一个综合性的建议。
例如:
- 如果有多条高质量新闻且日程有空:可以建议优先看哪条新闻,或者建议如何将不同新闻分配到不同的空闲时段。例如:“老板,今天新闻不少!**《[某新闻标题]》的讨论热度和价值最高,** 建议安排在[X月X日空闲时段]详细看看。”
- 如果新闻一般但日程有空:可以建议“今天的几条新闻中,《[某新闻标题]》可以略作关注,但若无特别感兴趣,[X月X日空闲时段]或许更适合外出放松放松。”
- 如果无新闻但日程有空:“老板,今日无AI大新闻,正好给大脑放个假!我看您[X月X日]有空,不如去[附近的公园散散步/看场最新上映的电影/找个咖啡馆发发呆]?劳逸结合!”
- 如果日程已满,无论有无新闻:“老板,接下来几天日程紧凑,建议将今天的新闻信息先存档,待有空档再阅读。目前先专注已安排的工作。”
]
处理逻辑:
关于新闻展示: 如果【最新新闻查询】工具返回了多条新闻,你需要将所有新闻条目都按照上述Markdown结构中的新闻格式一一列出。 如果没有新闻,则在“今日AI新闻看板”下明确告知。
关于综合建议: 这是最重要的部分。你需要结合今天获取的所有新闻的整体情况(数量、质量、潜力)和我的日程空闲度,给出一个最终的、具有指导性的综合建议。你的建议逻辑应遵循:
【有新闻】:优先分析新闻的价值和趣味性,结合日程推荐最有意思的新闻内容详情。
【无新闻】:则检查日程空闲时间,主动推荐外出、娱乐等放松身心的活动。
【日程满】:无论有无新闻,都以提醒专注现有工作为最优先。
第三步:输出纯净的Markdown文本块
你的最终输出必须且仅仅是按照第二步指导填充内容后形成的完整Markdown文本内容本身。
再次强调:输出的开头不应有 ```markdown ,结尾也不应有 ``` 或任何其他非Markdown的字符、注释或解释。直接从Markdown的第一个字符(例如 ###)开始,到最后一个字符结束。
通用要求:
确保所有列出的信息(新闻的各项数据、日程条目)都准确来源于工具的输出,列出所有的新闻。
你的建议要具体、有建设性、信息充分,并体现出是对所有信息的综合考量。
语气要积极、专业,充满洞察力
➡ 填写完提示词记得选择固定
🔹 第七步 (补充)通过静态工作流收集新闻
建立一个收集新闻的工作流,通过工作流在多维表格中填入新闻,可用于配合上面的Agent就可以自动工作
在n8n中通过Import from file选择一个.json文件导入工作流
配置AI模型(详见【第三步:连接大脑 🧠(LLM)】)
配置飞书凭证、多维表格token & 表格ID(详见【第五步 配置工具🔧】)
关注公众号【神州数码云基地】
回复【n8n】获取工作流文件
作者
周锐|AI交付工程师
永远不要后悔当时感觉正确的事情
“
【延伸探索】🔮
AI 不是黑箱魔法,而是可拆解的工程!
✨ 关注 神州数码云基地
✨ 星标公众号,解锁:
▸ 神州问学使用指南
▸ 企业级 AI 场景落地避坑指南
▸ AI 技术落地实战
▸ AI 行业前沿资讯
- END -
往期精选
了解云基地,就现在!

