D

dodo-agent

项目实战1(dodo-agent)

通用 Agent 与 PPT、DeepResearch

25 篇 · 约 191 分钟
01

整体架构与功能点介绍

这节课我们正式开启智能体应用实战课程的学习。作为整个课程的开篇,这节课我会带大家全面认识这个仿豆包的智能体应用平台(DodoAgent 豆豆),从项目定位、技术架构到核心功能,帮你建立起对整个项目实战课程的完整认知框架。 为什么要做…

8 min
02

项目运行说明

系统架构 为了方便,直接把前端代码放到了dodo agent项目的resources目录下了 和后端一起启动就行,可以直接访问:http://127.0.0.1:8888/index.html 后端启动 环境版本 组件 版本 JDK…

2 min
03

智能对话:从需求分析到技术落地

完整的智能问答应该具备什么? 相信大家都用过 豆包 或 ChatGPT 进行日常问答。提问之后,它会一边输出内容,一边展示思考过程;当知识不足时,会主动联网搜索;回答完成后,还会给出参考来源以及相关推荐问题。从表面上看,这只是一个对…

9 min
04

流式控制与任务管理

在上节课中,我们已经实现了一个具备会话记忆、工具调用、联网搜索、参考来源以及推荐问题能力的智能问答系统。从功能层面来看,它已经能够完成完整的智能体对话流程。但如果将这样的系统直接上线,很快就会遇到一系列典型的工程问题。 例如:用户在…

5 min
05

流式响应的一些重要概念

在前面的学习中,我们已经实现了一个具备 流式输出、任务管理、停止生成 等能力的完整的智能对话系统。在这个过程中,你会发现代码里频繁出现一些概念,例如: Mono Flux Sinks Disposable flatMap 背压(on…

5 min
06

文件问答助手如何实现?

在前面的课程中,我们已经实现了一个具备 联网搜索能力的智能问答系统,其核心架构基于 ReAct Agent,通过工具调用的方式完成信息检索与推理。本节课我们继续在这个基础上扩展一个新的能力:文件问答助手。很多智能产品都支持“上传文件…

5 min
07

大文件如何处理?

在上一节课中,我们实现了一个直接截断的文件问答助手:在 Agent 执行之前,通过 loadContent 方法直接读取文件内容,然后将文本注入到模型上下文中完成问答。这种方式最大的优势是响应速度快,因为整个过程只需要 一次模型推理…

8 min
08

智能体生成PPT的几种方式

本节课我们将继续围绕一个非常热门的智能体应用场景来展开:PPT生成智能体。 目前市面上,很多智能体产品都在提供类似的能力,例如输入一个主题,让 AI 自动生成一份完整的 PPT,包括页面结构、文字内容以及配图设计等。从表面上看,这似…

7 min
09

模板填充 PPT 需求分析

在上一节课中,我们介绍了目前市面上常见的几种 AI 生成 PPT 的技术方案,并重点说明了 模板填充 PPT 是目前最稳定、最适合产品化落地的一种实现方式。 但如果真正去实现一个完整的 AI PPT 生成系统,仅仅知道用模板填充其实…

5 min
10

PPT 生成智能体

在前面的课程中,我们已经系统分析了当前市面上 主流的 PPT 生成智能体实现方式,并且重点拆解了 豆包 PPT 的生成流程,了解了一个成熟产品在需求澄清、内容规划、素材准备以及最终生成阶段的大致工作方式。 而从这一节课开始,我们将不…

11 min
11

如何输出稳定的PPT?

在上一节中,我们已经介绍了 PPT 自动生成流程中的几个关键环节,包括 需求澄清、信息收集、模板选择以及大纲生成。通过这些步骤,系统已经明确了用户的核心需求,并确定了 PPT 的整体结构与内容框架。 接下来,本节将进入 PPT 生成…

6 min
12

用Python-PPTX渲染出PPT

在上一节中,我们已经完成了 Schema 的生成。Schema 本质上是一个 描述 PPT 页面结构的 JSON 数据,其中包含: 每一页使用哪个模板页 每个 shape 需要填充什么内容 是否需要生成图片 文本内容和字数限制 但是…

7 min
13

PPT生成失败策略与断点恢复

失败策略(FailedStrategy) 接下来我们来看 PPT生成流程中的失败策略(FailedStrategy)。在整个 PPT 生成智能体中,我们前面已经介绍过很多不同阶段,这些阶段本质上都是由 状态机 + 策略模式 来驱动执…

7 min
14

实现 DeepResearch(上)

最近,大家可能已经注意到,各个大模型平台都在陆续推出一种新的能力形态。比如:在豆包中叫做“深度研究”,在 Google Gemini 中叫做 “DeepResearch”。这些功能已经不再只是简单地回答问题,而是会先对任务进行拆解,…

7 min
15

实现 DeepResearch(下)

在上节课中,我们已经分析过,DeepResearch 的底层核心机制,其实就是基于 Plan Execute 架构实现的。因此在工程实现时,并不需要从零重新设计一套 Agent 体系,而是可以直接在我们之前讲解过的 PlanExec…

8 min
16

前端的一些相关工作

这部分内容比较简单,对于后端而言就是CRUD接口,而前端我这边是用Claude Code帮我生成的,所以这节课给大家介绍一下这个项目前端的一些相关工作。 会话管理 因为用户在使用智能体的时候,往往会产生很多历史对话。如果没有会话管理…

2 min
17

多实例Agent任务管理改造

在前面的课程中,我们已经通过 AgentTaskManager 实现了单实例下的任务注册、并发控制、流式终止和资源释放。但那套实现只依赖本地 ConcurrentHashMap,一旦系统部署多个实例,问题就出现了,比如我现在启动两个…

7 min
18

Agent Skills到底是如何实现的?

如果你用过 Claude Code 这种类似的 Code Cli,那么一定知道他们都有强大的 Skills 技能系统。Claude Code 启动时会自动加载 /.claude/skills/ 目录下的技能,当用户提出某个专业领域的…

13 min
19

智能体如何拥有操作系统的能力?

2026 年,AI Agent 迎来了真正的爆发。OpenClaw 这个开源项目,短短几个月内席卷全球,github star数直接飙升至第一。而 Claude Code 等编程Cli 也成为了开发者日常离不开的编程助手。它们有一个…

12 min
20

spring-ai-agent-utils中的skills

在上一节课中,我们手搓了一套 Agent Skills 系统,通过 SkillRegistry、SkillPromptFormatter、ReadSkillTool 等组件,实现了技能的元数据注入提示词 + 渐进式按需加载完整内容的…

8 min
21

Think模型与输出解析

在前面的课程中,我们的 dodo agent 一直使用的是 qwen plus 这种常规模型。常规模型直接输出回答内容,不包含任何思考过程,processChunk 中拿到的 text 就是最终的回复,处理起来比较简单。 但在上节课…

9 min
22

分阶段流式输出

在之前的课程中,我们的各个 Agent(WebSearchReactAgent、FileReactAgent 等)一直使用 AgentResponse 来构建流式响应,输出类型只有 text、thinking、reference、r…

9 min
23

重写 PPTX Skill

在之前的课程中,我们给 dodo agent 实现了 Agent Skills 系统,并使用 Anthropic 官方的 pptx skill 来测试 skills 的效果。官方的 pptx skill 本质上是一份 python …

13 min
24

上下文压缩:micro_compact

在前面的课程中,我们围绕 SkillsReactAgent 实现了 Agent Skills 系统的相关功能,但在实际使用中,尤其是处理长链路的复杂任务时,你会发现一个问题:Agent 跑着跑着就变笨了,甚至开始偏离主题。 以 PP…

8 min
25

上下文压缩:auto_compact

上一节我们实现了上下文压缩的第一层 micro compact,它像是 JVM 的 Young GC,每轮自动替换掉旧的工具调用内容,释放了大量上下文空间。 但 micro compact 有一个局限性:它只是把大内容替换成小占位符…

10 min