dodo-agent
项目实战1(dodo-agent)
通用 Agent 与 PPT、DeepResearch
25 篇 · 约 191 分钟整体架构与功能点介绍
这节课我们正式开启智能体应用实战课程的学习。作为整个课程的开篇,这节课我会带大家全面认识这个仿豆包的智能体应用平台(DodoAgent 豆豆),从项目定位、技术架构到核心功能,帮你建立起对整个项目实战课程的完整认知框架。 为什么要做…
项目运行说明
系统架构 为了方便,直接把前端代码放到了dodo agent项目的resources目录下了 和后端一起启动就行,可以直接访问:http://127.0.0.1:8888/index.html 后端启动 环境版本 组件 版本 JDK…
智能对话:从需求分析到技术落地
完整的智能问答应该具备什么? 相信大家都用过 豆包 或 ChatGPT 进行日常问答。提问之后,它会一边输出内容,一边展示思考过程;当知识不足时,会主动联网搜索;回答完成后,还会给出参考来源以及相关推荐问题。从表面上看,这只是一个对…
流式控制与任务管理
在上节课中,我们已经实现了一个具备会话记忆、工具调用、联网搜索、参考来源以及推荐问题能力的智能问答系统。从功能层面来看,它已经能够完成完整的智能体对话流程。但如果将这样的系统直接上线,很快就会遇到一系列典型的工程问题。 例如:用户在…
流式响应的一些重要概念
在前面的学习中,我们已经实现了一个具备 流式输出、任务管理、停止生成 等能力的完整的智能对话系统。在这个过程中,你会发现代码里频繁出现一些概念,例如: Mono Flux Sinks Disposable flatMap 背压(on…
文件问答助手如何实现?
在前面的课程中,我们已经实现了一个具备 联网搜索能力的智能问答系统,其核心架构基于 ReAct Agent,通过工具调用的方式完成信息检索与推理。本节课我们继续在这个基础上扩展一个新的能力:文件问答助手。很多智能产品都支持“上传文件…
大文件如何处理?
在上一节课中,我们实现了一个直接截断的文件问答助手:在 Agent 执行之前,通过 loadContent 方法直接读取文件内容,然后将文本注入到模型上下文中完成问答。这种方式最大的优势是响应速度快,因为整个过程只需要 一次模型推理…
智能体生成PPT的几种方式
本节课我们将继续围绕一个非常热门的智能体应用场景来展开:PPT生成智能体。 目前市面上,很多智能体产品都在提供类似的能力,例如输入一个主题,让 AI 自动生成一份完整的 PPT,包括页面结构、文字内容以及配图设计等。从表面上看,这似…
模板填充 PPT 需求分析
在上一节课中,我们介绍了目前市面上常见的几种 AI 生成 PPT 的技术方案,并重点说明了 模板填充 PPT 是目前最稳定、最适合产品化落地的一种实现方式。 但如果真正去实现一个完整的 AI PPT 生成系统,仅仅知道用模板填充其实…
PPT 生成智能体
在前面的课程中,我们已经系统分析了当前市面上 主流的 PPT 生成智能体实现方式,并且重点拆解了 豆包 PPT 的生成流程,了解了一个成熟产品在需求澄清、内容规划、素材准备以及最终生成阶段的大致工作方式。 而从这一节课开始,我们将不…
如何输出稳定的PPT?
在上一节中,我们已经介绍了 PPT 自动生成流程中的几个关键环节,包括 需求澄清、信息收集、模板选择以及大纲生成。通过这些步骤,系统已经明确了用户的核心需求,并确定了 PPT 的整体结构与内容框架。 接下来,本节将进入 PPT 生成…
用Python-PPTX渲染出PPT
在上一节中,我们已经完成了 Schema 的生成。Schema 本质上是一个 描述 PPT 页面结构的 JSON 数据,其中包含: 每一页使用哪个模板页 每个 shape 需要填充什么内容 是否需要生成图片 文本内容和字数限制 但是…
PPT生成失败策略与断点恢复
失败策略(FailedStrategy) 接下来我们来看 PPT生成流程中的失败策略(FailedStrategy)。在整个 PPT 生成智能体中,我们前面已经介绍过很多不同阶段,这些阶段本质上都是由 状态机 + 策略模式 来驱动执…
实现 DeepResearch(上)
最近,大家可能已经注意到,各个大模型平台都在陆续推出一种新的能力形态。比如:在豆包中叫做“深度研究”,在 Google Gemini 中叫做 “DeepResearch”。这些功能已经不再只是简单地回答问题,而是会先对任务进行拆解,…
实现 DeepResearch(下)
在上节课中,我们已经分析过,DeepResearch 的底层核心机制,其实就是基于 Plan Execute 架构实现的。因此在工程实现时,并不需要从零重新设计一套 Agent 体系,而是可以直接在我们之前讲解过的 PlanExec…
前端的一些相关工作
这部分内容比较简单,对于后端而言就是CRUD接口,而前端我这边是用Claude Code帮我生成的,所以这节课给大家介绍一下这个项目前端的一些相关工作。 会话管理 因为用户在使用智能体的时候,往往会产生很多历史对话。如果没有会话管理…
多实例Agent任务管理改造
在前面的课程中,我们已经通过 AgentTaskManager 实现了单实例下的任务注册、并发控制、流式终止和资源释放。但那套实现只依赖本地 ConcurrentHashMap,一旦系统部署多个实例,问题就出现了,比如我现在启动两个…
Agent Skills到底是如何实现的?
如果你用过 Claude Code 这种类似的 Code Cli,那么一定知道他们都有强大的 Skills 技能系统。Claude Code 启动时会自动加载 /.claude/skills/ 目录下的技能,当用户提出某个专业领域的…
智能体如何拥有操作系统的能力?
2026 年,AI Agent 迎来了真正的爆发。OpenClaw 这个开源项目,短短几个月内席卷全球,github star数直接飙升至第一。而 Claude Code 等编程Cli 也成为了开发者日常离不开的编程助手。它们有一个…
spring-ai-agent-utils中的skills
在上一节课中,我们手搓了一套 Agent Skills 系统,通过 SkillRegistry、SkillPromptFormatter、ReadSkillTool 等组件,实现了技能的元数据注入提示词 + 渐进式按需加载完整内容的…
Think模型与输出解析
在前面的课程中,我们的 dodo agent 一直使用的是 qwen plus 这种常规模型。常规模型直接输出回答内容,不包含任何思考过程,processChunk 中拿到的 text 就是最终的回复,处理起来比较简单。 但在上节课…
分阶段流式输出
在之前的课程中,我们的各个 Agent(WebSearchReactAgent、FileReactAgent 等)一直使用 AgentResponse 来构建流式响应,输出类型只有 text、thinking、reference、r…
重写 PPTX Skill
在之前的课程中,我们给 dodo agent 实现了 Agent Skills 系统,并使用 Anthropic 官方的 pptx skill 来测试 skills 的效果。官方的 pptx skill 本质上是一份 python …
上下文压缩:micro_compact
在前面的课程中,我们围绕 SkillsReactAgent 实现了 Agent Skills 系统的相关功能,但在实际使用中,尤其是处理长链路的复杂任务时,你会发现一个问题:Agent 跑着跑着就变笨了,甚至开始偏离主题。 以 PP…
上下文压缩:auto_compact
上一节我们实现了上下文压缩的第一层 micro compact,它像是 JVM 的 Young GC,每轮自动替换掉旧的工具调用内容,释放了大量上下文空间。 但 micro compact 有一个局限性:它只是把大内容替换成小占位符…