两小时搭建AI Agent实战:Docker部署Dify接入DeepSeek全记录
2026/9/24 20:31:15 网站建设 项目流程

花两小时装了ai agent。。。前些天在一个技术交流群里看到这句话,后面拖着的省略号和句号让我脑补出对方的表情:介于“原来这么简单”和“原来也不过如此”之间。有点意思。我上周也完整走了一遍这条路:从装Docker开始,把Dify社区版部署起来,接上DeepSeek的API,跑通了一个会自己拆任务、调工具、看结果的Agent。整个过程算下来差不多两小时,其中半小时花在等容器镜像、半小时花在找工具API,真正理解原理的时间反而很短。这篇文章没有官方文档式的废话,只有一条完整的实操路线、一些真的会让你卡住半小时的细节,以及装完之后它到底能干什么。

如果你只是刷到“AI Agent”这个词觉得不明觉厉,想在周末动手试个水;或者你已经玩过ChatGPT、DeepSeek,但没搞明白“Agent”跟聊天到底有什么区别;又或者你正打算在公司内部评估要不要搭一套Agent平台——这篇文章都适合你。我尽量不写成教程,而是写成“一个刚亲手搭过的人,跟你复盘一遍全过程”。

1. AI Agent到底是个什么东西,为什么值得花两小时装

动手之前,先回答一个最基础的问题:Agent和你手机里那个AI助手,到底差在哪?

1.1 普通AI聊天是“问一句答一句”,Agent是“给定目标自己干活”

如果你打开DeepSeek的网页对话,问它“帮我整理一份本周科技要闻”,它只能基于训练数据里的知识去回答,没办法真去搜索最新新闻。如果问“帮我查一下明天北京的天气再决定穿什么”,它大概率会说“我还不能实时获取天气信息”,或者干脆编一个天气数据出来。这不是它笨,而是它没有“手”——模型本身没有连接外部世界的能力。

Agent的差别恰恰在这里。Agent架构里多了一个关键的循环:模型在生成回答之前,可以先决定调用某个工具,工具执行完之后把结果反馈给模型,模型再基于真实数据做下一步判断。这就是所谓的“思考-行动-观察”循环。我自己的理解方式很简单:LLM像是刚毕业的高材生,什么都懂一点,但坐在那儿不能动;Agent像是给这位高材生配了电脑、拉了网线、定了KPI的负责人,他不仅能想,还能上手干。

所以“装Agent”装的是什么?装的不是模型,而是一套能跟模型配合、让它能调用外部工具、管理多轮任务、最终把目标完成的软件系统。

1.2 Agent和LLM、AI模型的概念层级,DeepSeek属于哪类

这三个词在热搜里频繁一起出现,其实层级完全不同。

  • AI模型:最底层的说法,泛指一切人工智能模型,包括图像识别、语音识别、自然语言处理等。
  • LLM(大语言模型):专指处理语言的那一类AI模型,比如DeepSeek、GPT、Claude、Qwen,都属于LLM。
  • Agent:不是模型,而是“模型 + 工具 + 编排逻辑”组合出来的完整系统。

那DeepSeek属于哪类?它属于LLM,也就是Agent的“大脑”。当你打开DeepSeek官方网页版聊天时,你面对的是一个聊天应用;当你把DeepSeek的API接入到Dify这类Agent平台,再给它配上搜索、计算、文件读写等工具,你才得到了一个Agent系统。

很多新手就卡在这个概念上,以为“装Agent”等于“装一个模型”,到处找模型包下载。实际上,模型通常是云端的,你通过API调用就行了;你本地装的是那个把模型和工具串起来的平台。

1.3 Agent的组成结构:从实操视角拆解Planning、Memory、Tool Use

如果只记一句话,就记这四个组件:规划、记忆、工具、反思。不需要按学术论文那样理解,用实操视角就够了。

组件作用实际操作中的对应物新手常见误区
模型(LLM)理解语言、生成决策DeepSeek等API以为模型就是Agent本体
规划(Planning)把大目标拆成小步骤Agent框架的规划模块、System Prompt引导以为Agent一次就能生成完美答案
记忆(Memory)记住上下文和历史偏好对话记忆、知识库、向量数据库以为刷新页面后Agent还认识自己
工具(Tool Use)与外部世界交互搜索接口、天气API、数据库操作以为工具越多越好

规划很好理解。当你对Agent说“帮我写一篇关于Spring AI接入DeepSeek的文章”,它会拆成:搜索相关资料、整理常见误区、列提纲、逐段撰写。有些框架会自动做这个拆解,但更多时候要靠你在System Prompt里引导它。你写提示词的时候如果能主动告诉它“先做什么,再做什么”,它的表现会明显更稳。

记忆分两层。第一层是对话记忆,就是多轮会话里它能记住你们刚才聊过什么;第二层是长期记忆,通常需要挂一个向量数据库或知识库,让它“记得”你之前的偏好和知识背景。网上常说的“skill、memory、MCP”里,memory说的就是这个模块。

工具是Agent真正能“干活”的前提。模型通过Function Calling机制发出“我要调用天气工具,参数是北京”这样的指令,框架负责真的去执行,执行完把结果塞回给模型。这个过程在Dify的调试界面里能看到运行日志,也是排查问题最常用的入口。

这就是为什么“花两小时装Agent”这件事值得做——你不是在装一个更聪明的聊天软件,而是在亲手搭一套“能想办法完成任务”的自动化系统。理解这点之后,后面两章的操作才有意义。

2. 两小时安装路线:Dify + DeepSeek,零编码也能跑通

路线选择很重要。市面上Agent框架五花八门,选错了就是开写代码的不归路。

2.1 为什么选Dify和DeepSeek,而不是LangChain或纯代码

LangChain是Agent开发框架里的老牌选手,能力很强,但它需要你写Python代码,适合工程师造轮子。我们的目标是在两小时内跑通,不是写一套生产级代码,所以优先选可视化Agent开发平台。

Dify是开源项目,可以自托管,也提供云版。它的优势是:可视化编排Agent流程、内置常用工具、支持接入几乎所有主流模型、能一键发布成网页应用或API。而且它是中文社区活跃度比较高的开源项目,遇到问题可以搜到很多现成答案。

模型选DeepSeek,原因很现实:国内直连方便,价格便宜,注册就能拿到API Key。更关键的是,DeepSeek的Function Calling能力在开源模型里算比较稳的,做Agent够用。后面你会发现,工具调用稳定性直接决定Agent体验,这个坑我第三章细说。

如果你不想自己部署,也可以直接用Dify的云版或者扣子这类平台,但自托管能让你理解底层逻辑,数据也更可控。所以我的路线是:本地Docker跑Dify社区版 + DeepSeek API。

2.2 具体安装步骤:Docker起Dify,其实就四步

第1步:准备Docker环境

Windows用户装Docker Desktop,安装过程中允许它启用WSL2;macOS用户按自己芯片选对应安装包;Linux用户装Docker Engine和Docker Compose插件。装完在终端里敲两行命令验证:

docker --version docker compose version

两行都能输出版本号,环境就OK了。Windows用户注意,Docker Desktop首次启动可能要等一两分钟,看到鲸鱼图标不再转圈再继续。

第2步:拉取Dify社区版

打开终端,进入一个你准备放项目的目录,执行:

git clone https://github.com/langgenius/dify.git cd dify/docker docker compose up -d

这一步会拉取多个容器镜像并启动服务,耗时主要看网络,通常5到15分钟。看到所有容器都显示Started,服务就起来了。

如果这一步镜像拉取特别慢,不要死磕,配一下Docker镜像加速器(registry mirror)再重新执行。Docker Desktop的设置里找到Docker Engine,在配置里加上加速地址,Apply & Restart之后重新执行docker compose pull就行。另外建议给Docker分配至少4GB内存,否则后面容器容易莫名其妙重启。

第3步:完成初始化

浏览器打开http://localhost,Dify会自动跳到初始化页面,设置管理员邮箱和密码。有些版本如果80端口被占用,会映射到其他端口,记得到docker compose ps里看实际映射端口。

第4步:配置模型供应商

登录后,点右上角头像,进设置,找到模型供应商。新版本Dify里一般已经有DeepSeek的独立选项,直接选它,填入API Key,模型名选deepseek-chat保存即可。如果列表里没看到DeepSeek,就选OpenAI-API-compatible兼容模式,Base URL填https://api.deepseek.com,模型名填deepseek-chat,照样能用。测试连接提示成功后,模型就接好了。

这里有个小提醒:DeepSeek开放平台的新账号需要先小额充值才能调用API,几块钱够你测试大半天,别充多。

2.3 创建Agent、写Prompt、挂工具,跑通第一个任务

在首页点“创建空白应用”,选Agent类型,然后在编排页面里把模型切换成刚配置的DeepSeek。接着写System Prompt,这个最关键。新手可以先抄这个模板:

你是一个智能助理。当用户提出任务时,先判断是否需要调用工具。如果需要,先调用工具获取数据,再基于工具返回的真实结果回答用户,不要凭记忆编造。所有结论要条理清晰。

写完Prompt后,在右侧工具区域添加工具。这里有个建议:第一次测试不要急着加又需要额外API Key的工具,像天气服务通常要去OpenWeatherMap免费注册才能拿到Key,挺费时间。优先选计算器这种开箱即用的工具,先把“工具调用”全流程跑通,再慢慢挂别的。如果你后续想用搜索类工具,可以去Tavily或SerpAPI注册一个,通常都有免费额度。

然后在调试聊天框里输入:“帮我算一下1234乘以5678,然后把答案用一句话总结出来。”你会看到Agent先判断需要调用计算器,执行完拿到结果2684492,再组织语言回答你。第一次看到那个工具调用日志时,你会立刻明白Agent和普通Chatbot的本质差别。

如果一切顺利,这个Agent已经能干活了,而且你一行代码都没写。

3. 安装过程中真正会卡住你的几个细节

两小时听起来不长,但第一次装大概率会在某些奇葩位置卡半小时。我把这次踩过的坑整理出来,按“现象-排查-解决”的方式说,你遇到可以直接对照。

3.1 卡点一:docker compose up半天起不来,一查是镜像慢或内存不足

现象通常是:卡在Pulling镜像很久,或者启动后容器一直在重启。

排查步骤分两层。先看docker ps -a,确认哪些容器处于Restarting状态;再看docker logs <容器名>,看具体报错。如果日志里出现连接数据库失败,多半是数据库容器没起来,根源往往在内存不够;如果日志里出现OOM类似的字样,就直接去调资源。

解决办法:Docker Desktop的Settings → Resources里,把内存调到4GB以上,CPU至少给4核。镜像拉取慢的问题,配镜像加速器基本都能解决。不要试图把Dify的容器一个个手动启动,它的docker-compose编排里容器之间有依赖顺序,手动起很容易踩依赖没就绪的坑。

3.2 卡点二:模型接不上,一直提示401或Invalid API Key

这是配置模型供应商阶段最常见的错误。

排查链路很简单:先在DeepSeek开放平台重新复制一次API Key,很多401就是复制时候少了或者多了字符;再检查账号余额是否大于0,如果余额不足,接口会返回402或额度不足的提示;最后看模型名是否写错,deepseek-chat是对话模型,deepseek-reasoner是推理模型,Dify的模型列表里如果你填了模型供应商不支持的名称,也会报错。

还有一个版本差异问题:新版本Dify里DeepSeek有独立供应商入口,旧版本可能要自己通过OpenAI兼容模式拼接。如果测试连接成功但运行时报错,去模型供应商设置里检查一下模型名的拼写。

3.3 卡点三:Agent“光说不做”,答得流畅但不调用工具

这个问题最让人抓狂。模型回复得很完整、很有礼貌,但就是不触发工具调用,相当于你安排了一个员工,他嘴上答应得好好的,就是不动手。

通常的原因有三个。第一,System Prompt没写清楚“你应该使用工具”,模型把任务当成了纯问答;解决办法是在Prompt里明确要求“需要实时数据时,先调用工具再回答”。第二,工具描述太模糊,模型不知道什么时候该调它;Dify里每个工具都可以填写描述,写得越具体越好,比如“当用户询问实时天气时使用,参数city为城市名”。第三,模型本身的Function Calling能力弱,中文对话内容它可能处理得很好,但一旦涉及结构化工具调用就翻车;这种情况换一个工具调用更稳的模型立刻就能好。

还有一个容易被忽略的原因:工具数量太多。给Agent挂了十几个工具后,模型在决策时就容易“选择困难”,经常选错或者干脆不选。第一次跑通,控制在3到5个工具以内,跑顺了再慢慢加。

3.4 卡点四:它不记得你上轮说过什么

如果你开一个新会话,它忘了你之前交代的背景,这是正常的;但如果你在同一个会话里聊了十几轮,它把最开始的关键信息忘了,那就涉及上下文管理了。

Dify的Agent应用默认有多轮对话能力,但上下文轮次设得很小的话,旧信息会被截断。在应用设置里找到对话记忆相关配置,适当调大上下文轮次;如果任务依赖大量背景信息,把这些信息直接写进System Prompt,比让Agent靠记忆强得多。长期记忆功能则需要额外配置向量数据库并上传知识库文档,属于进阶玩法,第一版可以先不折腾。

3.5 顺带提醒:成本和访问安全

Agent跑起来后,每次对话都会消耗token,调用外部工具还会产生额外API费用。很多新手第一次装完就把它发布到公网,结果被人当成免费API狂刷,一觉醒来欠费几十块。Dify发布的应用一定要开启访问密钥或者访问限制,尤其是“发布到站点”之前,先把访问凭证设置好。

我把这次遇到的主要问题汇总成一张表,方便以后排查:

现象原因解决方向
容器不停重启内存不足或端口冲突提高Docker内存,检查端口映射
401/Invalid KeyAPI Key错误或余额不足重新复制Key,充值,检查模型名
回答流畅但不调用工具Prompt或工具描述不清晰强化“先工具后回答”的指令,精简工具
刷新后失忆未开启对话记忆或上下文轮次太小调整对话记忆配置
欠费应用公开且无鉴权发布前设置访问密钥

4. 装完它真实干过的事:三组实战场景

装完之后,最大的疑问一般是“然后呢”。我拿它实际跑了几天,挑三个最有代表性的场景说说。

4.1 自媒体选题调研Agent

我有一个公众号,每周要更新两三篇文章,最消耗精力的环节是找选题。我把Agent的System Prompt改成了:

你是一位科技自媒体编辑。当我让你给我今天的选题时,你先调用搜索工具搜索最新的科技热点,再基于热点信息,给出3个可以写的选题方向。每个选题要有一句话核心论点,并且标注信息出处。

然后我给它接了一个Tavily搜索工具,每天免费额度够用。测试时输入“给我今天的选题”,它真的先搜索了一圈新闻,然后给我列了三个选题方向。其中一个关于开源模型推理成本的选题,最后真的被我写成了文章。整个过程中,我干的活就是挑了一个方向,剩下的信息收集和初步整理都是它完成的。这就是Agent和普通AI助手的区别:它不是直接给出一个基于常识的答案,而是真的去搜集资料再下结论。

4.2 技术问题“复读机”变“助理”

有一次我想查Spring AI接入DeepSeek的配置方式,这个领域我不算熟。以前的做法是打开搜索引擎,翻三五篇文章对比着看;这次我直接在Agent对话框里输入:“帮我查一下Spring AI里接入DeepSeek模型需要配置哪些参数,给出最简配置,并列出官方文档的要点。”

Agent的行为链是:调用搜索工具抓取相关页面,提取关键配置项,然后整理成一段带参考来源的答案。它给出的配置代码不能用,因为版本更新太快,但它把官方文档的要点和参数含义总结得挺清楚。从“我自己翻文档”到“它给我一份带出处的摘要”,效率提升很明显。

现在很多Java开发者也在搜“Spring AI开发自己的Agent”这类话题,说明这个方向需求不小。我的建议是,先别急着用Spring AI从零写,把Dify这类平台跑通透,理解了Agent的运作循环之后,再去看Spring AI或者LangChain,会轻松很多。

4.3 给Agent加记忆后,它开始“记得你”

第四天我开始折腾知识库。Dify里有“知识库”功能,我把自己写过的十几篇文章扔进去,然后让Agent在回答时引用知识库内容。设置完之后,我问它“我写文章的风格有什么特点”,它根据我历史文章总结出几条:爱用具体案例、喜欢在开头抛问题、段与段之间过渡自然。这些算不上深度洞见,但基于真实文本的检索和归纳,至少让它的回答有了“了解你”的前提。

这个功能背后的机制就是RAG(检索增强生成):先把你上传的文档切块存进向量数据库,用户提问时先做相关性检索,再把检索结果拼进Prompt让模型生成回答。它并不是真的“懂你”,但在实际使用中,效果已经足够唬人。

这一轮玩下来,我对Agent的边界也有了更清晰的认识:它在信息搜集、整理、归纳方面确实能干,但涉及逻辑推理、审美判断、人际沟通的任务还很弱。把期望定在“数字助理”而非“数字员工”,体验会好很多。

5. 接下来怎么往深玩:MCP、多智能体与极简自研

跑通基础Agent之后,还有几个重要的进阶方向。这里我不展开长篇大论,只把我自己验证过的路径梳理一遍。

5.1 MCP协议:给Agent接上标准“USB-C口”

MCP(Model Context Protocol)是这两年Agent生态里非常重要的协议,你可以把它理解成Agent外接工具的标准接口。以前给Agent接一个新工具,要给每种平台单独写适配逻辑;现在只要工具方提供了MCP Server,Dify这类Agent平台就能直接挂载使用。

Dify新版本已经支持MCP接入,在Agent配置里可以添加MCP服务器。常见的用法有:连接本地文件系统、访问GitHub仓库、操作数据库、读邮箱日历等。装上之后,Agent的“手脚”就真正伸展到你的工作环境里了。我目前只接了一个文件系统相关的MCP Server,效果不错,至少它能读取我指定的本地文件夹里有哪些文档,并基于这些文档回答问题了。

搜索词里有人问“skill memory mcp”三个词的关系,简单说:skill是让Agent学会某种技能,memory是让它记住历史,MCP是统一工具接入方式。三者共同决定Agent能力的上限。

5.2 从单Agent到多智能体:分工协作才是真自动化

单Agent的能力有上限,最明显的瓶颈是它既要做调研又要写稿还要校对,分身乏术。多智能体的思路是让不同Agent各干一摊,比如:一个调研Agent负责收集资料,一个写作Agent负责成稿,一个审核Agent负责挑毛病找漏洞。这种模式在软件研发场景更有想象空间:需求Agent拆需求,开发Agent写代码,测试Agent补用例,这也是“多智能体协助开发”相关搜索词背后的真实需求,很多团队已经在拿这个方向做实验了。

但我强烈建议新手先别碰多Agent。多个Agent协作时,上下文互相传递、任务边界划分、结果校验,哪一环没设计好都会浪费大量时间调试。先把单个Agent用到顺手,再开始考虑分工。

5.3 想彻底理解Agent原理,可以自己写一个十来行的骨架

如果你对Dify这类图形化平台始终觉得隔了一层,我建议你试试手写一个极简Agent骨架。核心就是一个循环:

def run_agent(user_task): messages = [{"role": "system", "content": SYSTEM_PROMPT}, {"role": "user", "content": user_task}] while True: resp = llm.chat(messages) # 请求大模型 if resp.tool_call: # 模型决定调用工具,框架负责执行 tool_result = execute_tool(resp.tool_call) messages.append({"role": "tool", "content": tool_result}) continue # 模型认为任务已完成,返回最终回答 return resp.answer

去掉装饰性的代码,Agent的本质就是这么简单:循环判断“模型是否想调用工具”,想调用就帮他调用,把结果再喂回去,直到模型认为任务完成。Dify、LangChain,甚至Spring AI这类Java生态框架,本质上都是在这个循环外面加缓存、加记忆、加可视化、加并发管理。

两小时装完Agent之后,我最大的感触不是“我掌握了一个新工具”,而是这个概念的滤镜终于碎了。当你不把Agent当成一个营销黑话,而是当成一个可以亲手组装、调试、试错的小系统时,它剩下的全是可玩性。如果你还没装过,建议按第二章的路线动手一次。最差的结果是你多了一个能自动查资料、整理信息的数字助理;最好的结果,是你对整个AI应用的内部结构有了通盘理解——这比看一百篇科普文章都值。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询