【源码笔记-Agentscope】PlanNotebook
看一下官网上的描述先: 1234567891011121314151617// 快速启用ReActAgent agent = ReActAgent.builder() .name("Assistant") .model(model) .enablePlan() .build();// 自定义配置PlanNotebook planNotebook = PlanNotebook.builder() .maxSubtasks(15) .build();ReActAgent agent = ReActAgent.builder() .name("Assistant") .model(model) .planNotebook(planNotebook) .build(); 那么要看的就是三个点 planNotebook 方法(直接enablePlan有默认实现也可以注意一下) PlanNotebook 类 从enablePlan先入手看看默认情况下的实现。 enablePlan首先根据...
【源码笔记-Agentscope】SKILL
SkillBoxSkillBox居然没有类说明,但是看到一个@Deprecated的方法感觉还挺有意思的。 1234567891011/** * Creates a SkillBox without a toolkit. * * <p>This constructor will be removed in the next release. A SkillBox must hold a * {@link Toolkit} to operate correctly. Relying on automatic toolkit assignment makes * behavior less explicit and harder to reason about. */@Deprecatedpublic SkillBox() { this(null, null, null);} 根据这段@Deprecated的描述可以看到,每个SkillBox都必须有一个Toolkit,或者说必须作为Toolkit存在,那是否说明其实在Age...
【源码笔记-Agentscope】智能体创建(下)
ReActAgent总算是到了本次源码阅读的终点站,就是为了这碟醋包的这盘饺子。总之先来看一下ReActAgent的类说明,感觉根据类说明来进行源码阅读不失为一个方便理解的方法。 ReActAgent 官方类说明翻译ReAct(推理与行动)智能体实现 ReAct 是一种智能体设计模式,它将推理(思考和规划)与行动(工具执行)结合在一个迭代循环中。智能体会在这两个阶段之间交替进行,直到完成任务或达到最大迭代次数限制。 核心特性: 响应式流处理:使用 Project Reactor 实现非阻塞执行 Hook 系统:可扩展的 Hook 机制,用于监控和拦截智能体执行过程 人机协同支持(HITL):通过在 PostReasoningEvent/PostActingEvent 事件中调用 stopAgent() 实现人在回路 结构化输出:继承自 StructuredOutputCapableAgent,提供类型安全的输出生成能力 使用示例: 1234567891011121314151617181920212223242526// 创建模型DashScopeChatModel...
Reactor 框架 Flux 和 Mono 类学习指南
一、Reactor 框架概述与核心概念1.1 Reactor 框架简介与最新版本Reactor 是一个专为 JVM 设计的完全非阻塞反应式编程基础框架,具有高效的需求管理(背压管理)能力。它直接集成了 Java 8 的函数式 API,特别是 CompletableFuture、Stream 和 Duration。截至 2026 年 4 月,Reactor 的最新版本是 3.8.4,于 2026 年 3 月 10 日发布(2)。 Reactor 的设计目标是解决 JVM 上 “经典” 异步方法的缺陷,同时专注于几个关键方面:组合性和可读性、丰富的操作符集合、惰性执行模型以及强大的背压管理机制。作为 Spring 生态系统中反应式编程栈的基础,Reactor 在 Spring WebFlux、Spring Data、Spring Cloud Gateway 等项目中发挥着核心作用(47)。 1.2 反应式编程基础概念反应式编程是一种关注数据流和变化传播的异步编程范式。与传统的命令式编程不同,反应式编程允许轻松表达静态(如数组)或动态(如事件发射器)数据流。 在反应式编程模型中,核心概...
【源码笔记-Agentscope】智能体创建(中)
AgentBase根据类说明给出的几个核心设计原则来看看具体是怎么实现的。 职责分离:AgentBase 提供基础设施支持(钩子、订阅、中断、状态),但不包含业务逻辑 内存管理委托:将内存管理职责交给需要它的具体智能体(例如 ReActAgent) 状态管理:通过实现 StateModule 接口来管理状态 中断机制:使用响应式模式,子类在适当的检查点调用 checkInterruptedAsync(),通过 Mono 链传播 InterruptedException 观察模式:智能体可以接收消息而无需生成回复 职责分离核心思想: AgentBase 只提供基础设施,不包含具体的业务逻辑。 源码实现: 抽象方法定义业务边界 12345// 第 275 行:只定义接口,不实现具体逻辑protected abstract Mono<Msg> doCall(List<Msg> msgs);// 第 458 行:中断处理留给子类实现protected abstract Mono<Msg> handleInterrupt(InterruptC...
【源码笔记-Agentscope】智能体创建(上)
今天从模板中给定的生成一个agent的代码出发,看看在创建一个ReActAgent实例的过程中发生了什么。 12345678910111213141516171819202122232425262728293031323334353637383940414243import io.agentscope.core.ReActAgent;import io.agentscope.core.message.Msg;import io.agentscope.core.model.DashScopeChatModel;import io.agentscope.core.tool.Toolkit;import io.agentscope.core.tool.Tool;import io.agentscope.core.tool.ToolParam;public class QuickStart { public static void main(String[] args) { // 准备工具 Toolkit toolkit = new ...
【源码笔记-Agentscope】快速开始与整体概览
📚 阅读动机为什么想要阅读 Agentscope 的源码?主要是好奇这几个问题: 一个 Agent 框架是如何组织”推理 - 行动”循环的? 工具调用是怎么让大模型”感知”并正确执行的? 对话记忆是怎么管理和持久化的? Hook 系统如何优雅地插入到各个执行环节? 带着这些问题,先从官方文档入手,了解一下整体架构。 🎯 整体印象先放一张我理解的调用流程图(基于文档描述): 我的理解: 整个流程其实就是一个双循环结构: Reasoning(推理环):从 Memory 读取历史 → Formatter 格式化 → Model 调用 LLM → 得到响应 Acting(行动环):如果需要调用工具 → Toolkit 执行 → 结果存回 Memory → 回到推理环 这个设计思想跟 ReAct 论文的思路是一致的:思考(Reasoning)和行动(Acting)交替进行,直到完成任务。 📄 ReAct 论文原文:ReAct: Synergizing Reasoning and Acting in Language Models 作者:Yao et al. 发表:IC...
欢迎来到我的博客
你好,我是 bngel,欢迎来到我的个人博客!这是使用 Hexo 框架和 Butterfly 主题搭建的博客。 关于这个博客这个博客主要用于记录我的学习笔记和技术思考。我目前专注于 人工智能(AI) 领域的学习,包括但不限于: 机器学习与深度学习基础 大语言模型(LLM)原理与应用 AI 工具的使用与实践 相关论文阅读与总结 除了 AI 相关内容,我也会分享一些后端开发以及与代码相关的心得体会,包括但不限于: 后端架构设计与最佳实践 代码质量与重构技巧 系统设计与性能优化 开发工具与效率提升 博客技术栈本博客使用以下技术构建: Hexo - 静态博客框架 Butterfly - 美观的 Hexo 主题 GitHub Pages - 博客托管服务 后续计划我会持续更新博客内容,把学习过程中遇到的问题、解决方案以及心得体会记录下来。如果你对我的博客有任何建议或想法,欢迎在评论区留言交流!