第 14 章 · LangGraph4j 入门:AI Agent 什么时候该上状态图

CrewAI实战指南:构建高可用多智能体协作系统 多智能体系统(MAS)是实现复杂AI自动化的核心范式,其本质并非简单叠加多个大模型,而是通过角色化分工、任务编排与上下文隔离,建立可验证的协作契约。CrewAI作为面向生产环境的工程化框架,以‘角色即契约’‘工具即插件’‘任务即单元’为设计内核,显著降低状态不一致、权限混乱与上下文丢失等熵增风险。它特别适用于合同审查、跨API协同、弹性分析集群等需强容错、可审计、易扩展的真实业务场景,是连接LLM能力与企业级工作流的关键中间件。 阅读详情

版本:LangGraph4j 1.8.25(Java 17+);业务侧对齐 Spring AI 2.0.1。 目标:弄清图编排解决什么问题;先认能力全貌;再把 AgentState、StateGraph、CompiledGraph 对上号。

单轮 ChatModel.call / ChatClient 适合「问一句、答一句」。流程一旦出现多步、分支、循环、人审、按会话恢复,堆在一个大方法或一串 if-else 里会很难改、很难测。

LangGraph4j 用状态图描述这类流程:

节点:做一步计算(改状态)
边:决定下一步去哪
共享状态:各节点读写的同一份数据

节点算;边决定往哪走;Channels 决定结果怎么合进状态。

上图是常见拓扑:START → call_model → 条件边,一边到 tools(可环回模型),一边到 END。右侧是共享状态与三层配置。


14.1 能力覆盖范围

先认脸,不必背 API。九块按用途分成三层:

层能力块做什么
底座State / Channels共享状态怎么存、怎么合并(覆盖或追加)
底座StateGraph节点、边、START / END,画出蓝图
底座Compile / 运行compile 成可执行图;invoke / stream
流程路由 / 循环条件下一跳、工具环、recursionLimit
流程并行 / 子图扇出合并、把子流程嵌进大图
流程异步 / 流式节点异步执行、中间结果往外推
工程Checkpoint / HITL快照落盘、人审中断、按 threadId 恢复
工程AgentExecutor预置 ReACT(模型 ↔ 工具)执行器
工程Studio / OTEL可视化调试、链路观测

怎么用这张图:

  • 没有底座三块,其它都挂不上。

  • 拓扑简单时,路由 / 并行可以后加。

  • 要人审或要按会话恢复,才认真上 Checkpoint。

  • 标准「模型叫工具再叫模型」可直接用 AgentExecutor;业务边很定制再自建 StateGraph。


14.2 核心抽象

StateGraph(蓝图)
    → compile(CompileConfig)
    → CompiledGraph(可执行图)
         → invoke / stream(带 RunnableConfig)
概念类型 / 入口管什么
状态AgentState + Channels键、默认值、合并规则(覆盖 / 追加)
节点NodeAction(或异步变体)读状态,返回部分更新 Map
边固定边 / 条件边(EdgeAction)下一个节点 id,或 END
命令Command边动作里可同时带「下一跳 + 状态更新」
端点START / END图的入口与出口(特殊节点 id)
编译CompileConfigSaver、中断点、recursionLimit(默认 25)
运行RunnableConfig尤其是 threadId(有 Saver 时的会话键)

消息列表这类「越跑越长」的字段,用 Channels.appender(...)(或允许重复的 appenderWithDuplicate)。旧资料里的 MessageChannel 已删除,不要再按那个名字找 API。

节点返回的是增量,不是整份新状态;也不要改 state.data() 里的可变集合——合并交给 Channel。

三层配置不要混:

层类型何时定典型内容
蓝图StateGraph写代码时有哪些节点、边怎么连
编译CompileConfigcompile(...) 时CheckpointSaver、interrupt、递归上限
单次运行RunnableConfig每次 invoke / streamthreadId、与本次恢复相关的参数

有 Saver 时,threadId 就是会话键:同一用户连续对话应复用同一 threadId;多用户绝不能共用一个默认值,否则检查点会串台。


14.3 最小形态

下面这段不接模型,只说明「状态 → 节点 → 边 → 编译 → 运行」怎么串(START / END 来自 StateGraph 的静态常量):

import static org.bsc.langgraph4j.StateGraph.END;
import static org.bsc.langgraph4j.StateGraph.START;
​
public class HelloState extends AgentState {
    public HelloState(Map<String, Object> initData) {
        super(initData);
    }
​
    public Optional<String> greeting() {
        return value("greeting");
    }
}
​
Map<String, Channel<?>> schema = Map.of(
        "greeting", Channels.base(() -> "")
);
​
NodeAction<HelloState> greet = state -> {
    String name = state.<String>value("name").orElse("world");
    return Map.of("greeting", "Hello, " + name + "!");
};
​
CompiledGraph<HelloState> graph = new StateGraph<>(schema, HelloState::new)
        .addNode("greet", greet)
        .addEdge(START, "greet")
        .addEdge("greet", END)
        .compile();
​
graph.invoke(Map.of("name", "LangGraph4j"))
        .ifPresent(s -> System.out.println(s.greeting().orElse("")));
// → Hello, LangGraph4j!

读这段时抓住四点:

  1. schema 声明每个键如何合并;节点只返回要改的键。

  2. addNode / addEdge 画蓝图;START / END 是端点。

  3. compile() 得到 CompiledGraph;无参编译 ≈ 默认 CompileConfig(无 Saver,recursionLimit = 25)。

  4. invoke(初始数据) 跑一轮,拿到最终状态。

接模型、工具循环、Checkpoint,都是在这个骨架上加节点与配置,而不是换一套运行时。


14.4 和 Spring AI 怎么分工

问题放哪
调哪家模型、Tool、RAG、MCP、流式 SSESpring AI
多步流程、环、条件分支、人审中断、按 thread 恢复、子图LangGraph4j
节点里要不要调模型图节点内调用 ChatModel / ChatClient,或使用预置 Agent 执行器
Spring AI   = 模型与周边能力(会不会说、会不会用工具、会不会检索)
LangGraph4j = 流程资产(先干什么、再干什么、失败 / 人审怎么走)

标准 ReACT(模型 ↔ 工具循环)可用预置 Agent 执行器直接得到一张图;拓扑与业务边强绑定(审批、多专家分工、子流程复用)时,再自建 StateGraph。


14.5 何时上图

场景是否上图原因
FAQ、单轮问答否一次 call / stream 即可
记忆 + 少量 Tool通常否ChatClient + Advisor 已够
多分支(审单 / 拒答 / 转人工)是分支要显式边,不能靠模型自觉
工具循环要可控退出是要管轮次、终止条件与中间态
人审通过后再继续是需要中断点与按 threadId 恢复
并行扇出再合并是需要并行节点与状态合并规则

上图的成本是:状态 schema、失败策略、测试与观测。需求还没到这一步时,先把 Spring AI 主链做稳更划算。


14.6 小结

记住含义
能力块九块先认脸;底座是 State → Graph → Compile
状态图节点算、边路由、Channels 合并
蓝图 → 编译 → 运行StateGraph → CompiledGraph → invoke / stream
三层配置图结构 / 编译选项 / 单次 threadId 分开
与 Spring AI能力底座 vs 流程编排,不是互相替代
AI大模型:(三)3.8 LangGraph实现Agent LangGraph是专注于智能体编排的底层框架,相比LangChain更适用于复杂、有状态的工作流。其核心由状态、节点和边构成,支持条件分支与循环。具备持久化检查点、失败容忍、流式处理及长短记忆管理等特性,支持子图模块化开发。它既能构建预定义路径的工作流,也能打造动态决策的智能体,适用于不可预测场景。通过构建客服邮件代理等案例,展示了其在分类、搜索、生成及人工审核中的灵活应用。LangGraph为需要长期运行、状态管理及高可靠性的复杂智能体提供了强大的编排能力,是实现故障恢复与人机协同的理想选择。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化 第二百零一十一 软件开发模型01

编号类型模型领域模型中的知识点/因素/参数关联知识和法律法规1传统顺序模型瀑布模型 (Waterfall)通用软件开发、硬件紧密耦合系统、政府/军工项目、需求稳定的传统信息系统严格线性阶段:可行性研究→需求分析(SRS,含功能/非功能/接口/约束,使用IEEE 830模板)→系统设计(概要设计HLD:架构、模块划分、数据库ER图;详细设计LLD:伪代码、类图、接口定义)→实现(编码规范、代码审查、静态分析工具SonarQube)→测试(单元测试JUnit、集成测试、系统测试、验收测试UAT,测试计划提前编写

weixin_49199313的博客 154

MAS(二):CrewAI、iii/Motia、JoyAgent、Langroid、AgentUniverse、LangGraph4j、Tinyflow、MiroFlow、CoAgents

MAS(二):CrewAI、iii/Motia、JoyAgent、Langroid、AgentUniverse、LangGraph4j、Tinyflow、MiroFlow、CoAgents

lonelymanontheway的博客 2211

Grafana图像渲染插件安装全攻略:解决依赖缺失问题(附完整命令清单)

本文详细介绍了在CentOS/RHEL环境下安装Grafana图像渲染插件`grafana-image-renderer`的全过程,包括解决常见的依赖缺失问题。通过提供完整的命令清单和疑难问题排查指南,帮助用户高效部署和优化插件性能,确保图像渲染功能稳定运行。

weixin_30399821的博客 86

LangGraph4j何时上状态图?从裸ReAct循环到有序Agent

状态图是一种将业务流程显式建模为节点与边的编排范式,其核心原理是把原本依赖大模型逐轮“猜测”的控制流,固化为代码可检查、可遍历、可恢复的图数据。在 AI Agent 工程中,模型负责内容生成,状态图负责流转正确性,两者解耦后系统才具备边界、恢复与可观测性。当业务出现稳定流程骨架、多结局分支或外部副作用控制需求时,继续使用裸 ReAct 循环会带来无限循环、状态丢失与难以追踪等问题,而使用 LangGraph4j StateGraph 可以用条件边表达 if/switch,用 Checkpointer 实现快

weixin_42531779的博客 237

Android客户端如何设计架构

当我们在新开发一款APP时,我们在初期要如何设计架构呢?在这里我根据我的经验,总结了一些基本的架构思路。 客户端架构设计的时候,首先需要充分考虑到所开发的app的类型,这里我分为功能型和服务型两大类,功能型的app侧重业务和功能,服务型的app侧重服务和运算。下面我就具体来讲讲针对这两种类型的通用架构。 功能型app 功能型app的activity比较多,整个app都以一个个activity承载业务和功能,在设计这类app时,我们需要考虑哪些要素呢? 由于activity比较多,我们需要考虑页面的跳转路由,

子者不语的专栏 1544

【基于51】红外寻迹智能小车 - 代码篇

这是一个基于C51单片机的红外巡线智能小车,是一个适合嵌入式单片机、C语言初学者练习的小Demo,文章提供完整的项目思路、免费的源代码。

ZER00000001的博客 3万+

Upscayl 中文界面全解:从快速切换到 i18n 原理

Upscayl 已内置完整的简体中文语言包,刚装好就能把整个界面切成中文。切换只要三步,像 TTA 模式这种耗时八倍的设置也会直接写明代价,不用再对照英文猜。 ## 快速切换:把界面切到简体中文 1. 启动 Upscayl。 2. 点左侧边栏的「设置」选项卡。 3. 在「语言」下拉菜单里选「简体中文」。 4. 完成,界面立即切换,不用重启。 > 如果下拉列表里没出现简体中文:基本是版本太旧,

gitblog_00777的博客 192

基于PLC的全自动洗衣机控制系统+控制程序

本设计使用PLC控制系统替换了传统的继电器控制系统,实现了全自动洗衣机在硬件方面的提升,丰富了全自动洗衣机在软件方面的功能,提高了全自动洗衣机的洗衣效率,基本可以满足用户的洗衣需求。

zzzz114231的博客 8956

500-AI-Agents-Projects 实战指南:500+ 开源 AI Agent 项目精选、框架选型与行业用例全景解析

本篇指南围绕开源仓库 500-AI-Agents-Projects 展开,系统解读这份覆盖 LangGraph、CrewAI、AutoGen、Agno 等主流框架,横跨医疗、金融、教育、网络安全等二十余个行业的 AI Agent 项目合集。读完本文,你将掌握:如何用不到 5 分钟跑通一个自带依赖的可运行 Agent、如何根据场景在五大框架间做出选型、如何按行业/框架快速检索 500+ 项目,以及如

gitblog_00016的博客 231

大数据合规工程师必备的7项核心技能

当我们谈论“大数据”时,往往先想到它的价值——驱动业务增长、优化用户体验、赋能智能决策。大数据的价值越大,其合规风险的“重量”就越重。2023年,全球有超过120个国家出台了数据保护法规,中国《个人信息保护法》《数据安全法》的实施进入深水区,欧盟GDPR的罚款金额屡创新高(最高达全球营收的4%)。企业面临的合规压力,早已从“被动应对监管”升级为“主动构建合规能力”。在这样的背景下,大数据合规工程师。

SuperAGI2025 1259

直击高频编程考点:字符串知识及经典算法题总结

字符串相关基本练习题总结(最长公共子串、最长回文子串、最长无重复字符子串、最小覆盖子串、字符串相乘、中文数字表达转实际数字格式等)

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

Multi-Agent编排框架对比:AutoGen、CrewAI与LangGraph的实战评估

Multi-Agent编排框架没有银弹。选型应围绕三个核心问题进行:任务形态是探索性还是确定性、流程复杂度是否超过15步、团队是否有图编程经验。在生产环境中,LangGraph因其灵活的状态管理与条件路由能力,在多步骤任务链场景中表现最佳。但其学习曲线陡峭,团队至少需要2到3周的熟悉期。CrewAI则更适合快速MVP验证,3天即可完成基本工作流搭建。建议在实际项目中选择框架前,先使用三者的最小可行示例对核心业务场景进行一周的并行验证。数据驱动的选型决策,远比跟随技术潮流更可靠。

qq_35160742的博客 4765

Unity-Mirror网络框架-从入门到精通之MultipleMatches示例

Multiple Matches 示例主要讲述了如何在使用 Mirror 网路框架时管理多个游戏匹配。以及如何设置一个能够同时支持多个游戏会话的系统,使玩家能够加入他们所选择的比赛,而不是强制他们加入一个单一的匹配。

TxNet 964

AI学习-langgraph-2

是专门面向工具调用的运行时对象。工具函数中存在名为 runtime并且类型标注为 ToolRuntime的参数时底层运行时会在调用工具前自动注入 ToolRuntime实例。根据源码实现,某些不规范的写法也能注入运行时实例,但并不规范,不推荐。需要注意,ToolRuntime与图节点中使用的 langgraph.runtime.Runtime并不是同一个类型。前者额外提供了当前图状态、运行配置和工具调用 ID 等工具调用专属信息。当前版本,ToolRuntime@dataclass。

qq_62408075的博客 326

lammps不同晶面建模方法汇总

Lammps lattice命令中的orient关键词可实现晶体的旋转和重定向,下面的命令中,111面的法线方向与y正方向重合,说明111面垂直于y轴。在有些模拟中,需要研究特定面的性质,比如研究110面,默认状态下,110面不是坐标平面,研究起来不方便,需要对模型进行旋转,如下图所示。经过旋转后,110面的法线方向与x轴正方向重合,旋转之后再重新对晶体进行切割,新模型的x面就是110面。需要注意的是,这种方法需要明确指定x、y、z轴的正方向分别对应哪三个面的法线方向,缺一不可。大家好,我是小马老师。

lammps_jiayou的博客 357

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

2026科研AI Agent工作台:本地化、可审计、可拆解的工程实践

AI Agent已从概念验证迈入科研生产环境,其核心不再依赖大模型API性能,而在于可控性、可追溯性与领域适配能力。本文围绕‘本地化AI Agent工作台’这一技术范式,解析如何通过分层架构(调度层/记忆层/工具层/执行层)、领域感知PDF解析、有限状态机决策控制、文档关系图谱增强RAG、LoRA热插拔微调及全链路审计追踪等关键技术,构建数据主权自主、错误可定位、流程可复现的科研协作者系统。内容覆盖LangGraph状态机设计、Qdrant向量库治理、vLLM+Qwen2.5本地部署、提示词三元组工程等真实

weixin_34151004的博客 379

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

从模型部署到多智能体协作:大模型Agent实战开发全解析

大模型应用正从简单的API调用走向复杂的智能体(Agent)编排,这要求开发者理解工具调用、记忆管理、任务规划等核心机制。本文基于LangGraph、LangChain4j、Dify等主流框架,系统梳理了从本地模型部署(Ollama/vLLM)、RAG知识库构建、到LoRA微调与多智能体协作的完整技术链路。同时,结合销售智能体等真实项目案例,探讨了Function Calling、ReAct模式、上下文压缩等工程实践要点,为后端开发者及AI应用工程师提供一条清晰的学习路线。无论你是想入门大模型应用层,还是希

weixin_33912638的博客 530

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

大模型应用开发--Agent笔记1(定义,ReAct、Plan-and-execute范式,Coze、Dify低代码平台,LangChain、LlamaIndex、AutoGen框架,评估,含代码)

本文基于datawhale的Hello-Agents开源项目及其他大模型开发资料整理而成。内容分为四个部分: 智能体基础概念、智能体构建范式、智能体框架比较和智能体性能评估。笔记重点分析了不同范式的优缺点,并通过实际代码示例展示了各框架的具体实现方式。作者将持续更新学习内容,深入探索智能体开发的实践应用。

zhuai.blog.youkuaiyun.com 2012

多模态视觉大模型实战:从融合原理到Agent应用开发指南

大模型技术正从纯文本向多模态融合快速演进,视觉信息作为人类感知的核心,推动着视觉大模型成为AI应用开发的必备能力。其底层原理是通过视觉编码器将图像映射为视觉token,再经投影层与文本语义空间对齐,最终由LLM统一完成跨模态理解。这一架构让16G显存的消费级显卡即可运行7B级多模态模型,极大降低了开发门槛。在实际工程中,多模态RAG可解决图文混合文档的检索增强生成,多模态Agent通过视觉观测与规划分工实现“看懂并行动”,而LoRA微调则帮助模型适配垂直场景。无论是电商以图搜图、工业缺陷检测,还是智能客服与

weixin_34204722的博客 302

AI系统三大基石:记忆设计、智能体构建与多模态对齐

在大模型应用落地中,‘记忆’并非简单向量存储,而是涵盖时效性、权限控制与语义粒度的分层认知缓存;‘智能体’不是LLM调用工具的脚本,而是具备目标函数、状态机与失败恢复能力的自治系统;‘多模态AI’也远超图文拼接,本质是跨模态联合表征与可解释的认知对齐。这三者共同构成AI工程化的操作系统层,决定系统是否真正可靠、可审计、可演进。本文聚焦Designing Memory与Building Agents两大核心实践,结合多模态对齐图(Multimodal Alignment Graph)等轻量架构,面向RAG升级

chouchijiao8952的博客 397

【项目推荐】基于 SpringBoot3 + Spring AI 的游泳馆管理系统:Agent + RAG + Function Calling 一次学全

它不是玩具 Demo,而是一个「业务 + AI」双主线交织的真实系统——预约业务在跑,AI 客服在旁边实时查库作答,两条线通过 Function Calling、RAG、站内消息串成一体。面试官问「你做过什么 AI 项目」时,你能从业务场景讲到架构取舍,从 RAG 切分参数讲到降级兜底——这和「我调了一下 ChatGPT 的 API」是完全不同的两个段位。项目已包含完整的建表 SQL、初始化数据、部署文档,克隆下来就能跑。获取方式:见文末说明 / 后台回复关键词获取。—— 完 ——

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 347

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 289

MCP 2026-07-28 无状态协议大改版:Spring AI 2.1 多轮往返请求与网关路由落地

无状态,所以任何实例都能处理任何请求,扩容不再需要粘性会话;显式句柄,所以跨调用状态是可审计、可过期的,而不是藏在进程内存里;幂等重放,所以交互式中断在分布式环境下也可恢复,代价是你要自己保证副作用可对账;头部路由,所以网关能在不解析 body 的前提下做治理,而校验 header/body 一致性成了新的安全底线。这些没有一个是在发明新概念。它们是分布式系统里被验证过二十年的老手艺:无状态、显式上下文、幂等、网关治理、fail-fast、可观测。

qq_36021478的博客 150

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 346

实际工程问题:AI 生成 Spring Cache(@Cacheable / @CachePut / @CacheEvict)缓存注解踩坑

商品详情服务,要求:商品基础信息走缓存,减少 DB 查询;典型:AI 只贴注解,忽略 AOP 代理、key 设计、缓存穿透/击穿/过期、序列化、同步刷新,本地单测正常,上线后缓存脏数据、命中率异常、雪崩。如果业务在事务中,@CacheEvict / @CachePut 如果在事务提交前执行,一旦事务回滚,缓存已经被删掉/更新,数据不一致。• 如果在同一个类里用 this.xxx() 调用带缓存注解的方法,不走代理,缓存直接失效;// 更新商品:先更新 DB,再删除缓存,而不是直接 @CachePut。

2401_89363342的博客 467

SpringBoot 新闻推荐系统:88个Java文件105个接口,首页推荐位是后端按点击数排出来的

# SpringBoot 新闻推荐系统:88个Java文件105个接口,首页推荐位是后端按点击数排出来的 > 这是一套基于 Spring Boot 的新闻推荐系统源码,配套 `db.sql` 建表脚本,业务覆盖新闻发布、排行榜管理、评论回复、点赞点踩、收藏夹和轮播图配置。形态是**前后台双端**:前台是读者用的 layui 静态站,后台是管理员用的 Vue 单页应用(编译产物已嵌在工程里)。最值

面朝大海 252
上一篇: 第 13 章 · AI智能体的可观测性、运维与安全
下一篇: 第 15 章 · 第一个 AI 工作流:Hello Graph 从 START 跑到 END
AI深栈
博客等级 码龄14年 1粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值