- 博客(967)
- 收藏
- 关注
原创 uniapp中uni.showToast,uni.showModal层级问题
在UniApp 跨端开发实践中,前端开发者常会遇到原生交互组件层级管理难题:当页面存在固定定位(fixed)元素或第三方弹窗时,轻提示与模态框易被高权重组件覆盖,导致核心交互失效。传统方案尝试局部调整z-index往往收效甚微,根源在于UniApp框架 对全局组件样式的特殊作用域机制。
2026-10-28 17:13:25
130
原创 vite-plugin-uni-manifest 升级指南
全称是,它让你可以用 TypeScript 书写和校验 uni-app 的全局文件,理论上和的字段一比一对齐。在 2026 年 8 月 3 日发布了 v0.5.0,又在 8 月 14 日发布了 v0.6.0。十来天连发两个大版本,可能大部分朋友还停留在 v0.4,所以我想专门写这篇文章介绍相关的改动和升级。
2026-10-26 11:18:00
181
原创 LangGraph == 静态分支
因此,defer=True的运行机制可以概括为:触发边的 Channel为特殊类型,首次写入不触发;常规流程结束后,特殊通道 finish();通道变为可用;从而触发延迟节点,后者在额外超步中执行。
2026-10-24 17:03:33
176
原创 LangGraph == 顺序结构
边是图结构中最基本的元素之一,节点之间的执行顺序、分支跳转以及循环控制,最终都依赖节点和边共同表达。的边不会像指向普通节点的边那样,触发一个真实的节点任务。如果没有新的节点被激活,也就没有新的任务需要执行,图运行自然结束。虽然在某些简单流程中省略这些边也能正常运行,但显式添加它们,可以让图结构更加完整、语义更加清晰,便于后续维护。出发的边,或者没有通过其他方式指定入口节点,LangGraph 就无法确定图的初始执行节点。的边,最后一个节点执行完成后,如果没有后续节点被触发,图也可以正常结束。
2026-10-24 16:32:32
201
原创 前端如何通过a链接下载文件
但是在实际使用中发现,点击该链接后并不是下载对应的文件,而是在浏览器中打开了该文件,这是为什么呢?当服务器向浏览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如 txt、jpg、pdf 等。如果需要将文件下载保存在本地,则需要使用 HTTP 响应头 Content-Disposition 进行处理。
2026-10-20 11:31:54
133
原创 LangGraph == 图的状态(State)管理 (下)
LangGraph构建的计算图通常会和LLM结合使用,而LLM在运行过程中通常需要维护一组消息列表。为了提升开发效率,LangGraph。开发者可以直接继承该状态类型,并在其基础上扩展自定义状态字段。由此可知,messages。该字段的类型是列表,元素类型为AnyMessage;同时,它通过Annotated绑定了内置Reducer函数。的完全限定名(英文全称,正是上文 3.2.2.3.2 节介绍的内置Reducer函数。output: NotRequired[str] # 关键:改为可选。
2026-10-13 17:33:24
200
原创 何让你Mac电脑成为个人WIFI热点?
在没有Wi-Fi的情况下,如何让你的Mac成为个人热点,让手机也可以通过Mac共享的Wi-Fi上网,当然前提下就是你的Mac能通过网线连接上互联网。在你的Mac配置成为个人Wi-Fi热点成功后,菜单栏的Wi-Fi图标会变成以下这个样子。
2026-10-13 09:23:59
186
原创 LangGraph == 图的状态(State)管理 (中)
同时,给节点函数声明返回状态类型,也可以帮助阅读者理解该节点会更新哪些字段。输入状态和输出状态通常应是全局状态的子集 输入状态描述图对外需要接收的数据,输出状态描述图最终需要返回的数据。节点返回值的应用主要由字段名称和图中已记录的状态字段决定 节点返回的字典会根据字段名称写入对应状态字段,并按照该字段的。节点返回的是状态更新,而不是完整状态 节点函数不需要返回完整状态,只需要返回本节点想要更新的字段。在 LangGraph 中,节点函数通常不需要返回更新后的完整状态,只需要返回本节点对状态的局部更新。
2026-10-12 17:47:03
227
原创 LangGraph == 图的状态(State)管理 (上)
状态的定义实际上是在声明状态的Schema,后者是状态字段的完整描述。官方推荐了三种定义Schema的方式:TypedDict、dataclass、PydanticState Reducer 是 LangGraph 中用于合并状态更新的核心机制。在 LangGraph 的StateGraph中,每个节点可以读取和写入共享状态,而 Reducer 定义了如何将多个节点对同一状态键的更新合并,接收当前值和更新值,返回合并后的新值注解定义:通过为状态键指定 Reducer。
2026-10-10 17:52:41
178
原创 LangGraph == 图的基础构建与运行
1. 定义全局状态定义整个运行图共享的全局状态(实际上,除了全局状态,LangGraph还支持其它类型的状态,下文详述)2. 创建状态图创建 StateGraph实例,将状态和状态图绑定3. 定义图结构定义节点和边并添加到状态图中全局状态是 LangGraph 运行图每个节点都可以访问的公共对象。return {"logs": ["node_1 运行完毕"],return {"logs": ["node_2 运行完毕"],
2026-10-09 16:37:58
202
原创 LangGraph == 总览 (1)
LangGraph 运行时底层基于自研的 Pregel 运行时,其核心思想借鉴了 Google Pregel 计算模型,用于组织和执行复杂的图计算流程。
2026-10-08 18:14:34
349
原创 LangChain核心组件 == 记忆(memory)
不管是修剪还是删除,都会导致一部分消息丢失,从而丢失记忆。总结消息(Summarize Messages)它的思路很简单,就是把历史的消息利用大模型总结出摘要,然后把最新的消息拼接在一起作为新的消息列表发送给大模型,这样既不会超出模型的上下文窗口限制,还能尽量保留所有的记忆。用法很简单:初始化SummarizationMiddleware和checkpointer# 初始化checkpointer# 初始化中间件。
2026-09-26 13:32:57
170
原创 LangChain核心组件 == 工具(Tools)
在LangChain中,定义工具的过程被大大简化,与定义普通函数几乎没什么差别,只是在一些细节上需要注意。首先,定义工具需要在函数上添加@tool装饰器。例如,我们定义一个计算平方根的数学工具智能体在工作时,需要将函数的名称、输入、作用传递给大模型,默认情况下这些信息的来源是:工具名称:函数名工具输入:函数入参工具作用:函数的注释当然,我们可以通过tool装饰器来覆盖上述信息:通过装饰器定义工具名称通过装饰器定义工具作用描述。
2026-09-26 12:24:15
182
原创 LangChain核心组件 == 提示词(Prompts)
本节我们主要学习了:什么是提示词如何优化系统提示词,控制模型输出设定角色和详细指令通过few-shot样例,让模型参考通过结构化输出控制输出格式通过markdown、xml语法编写提示词,加强模型理解能力。
2026-09-26 11:19:27
201
原创 LangChain核心组件 == 消息(Messages)
在调用模型时,发送给LLM的消息、LLM返回的消息都包含以下几部分内容:role:消息所属角色,可以是system、user、assistantcontent:消息的内容metadata(可选):消息的元数据,例如:消息的ID、消耗的token等这太麻烦了。在LangChain中发送给LLM的消息、LLM返回的消息都统一被封装为BaseMessage,它是中基本的上下文单元。
2026-09-26 11:03:27
234
原创 LangChain核心组件 == 模型(Models)
默认会根据模型名称自动确定模型的提供者、其base_url,并从env读取api_key,但前提是必须是langchain支持的模型提供者(支持模型参考链接),例如:OpenaiDeepseekGoogleAnthropic...对于其它不支持的模型,我们必须自定义模型参数来访问。例如,我们要访问阿里云百炼的qwen-max,它就是不被langchain支持的模型,我们必须自定义模型参数来访问。我们需要在环境变量中定义api_key和base_url然后在中指定modelbase_url和。
2026-09-26 10:14:36
357
原创 LangChain核心组件 -- 认识LangChain
什么是Agent,这其实没有一个标准的答案,每个人都有自己的理解。对于这个问题,LangChain创始人有一个偏向技术性的答案:Agent是一种使用大语言模型(LLM)来决定应用程序控制流的系统。在人工智能领域,Agent(通常翻译为智能体或代理)是指一种能够感知环境、进行推理、自主决策并采取行动以实现特定目标的智能系统。特性传统聊天机器人/LLMAI Agent交互模式被动响应,问一句答一句主动规划,以目标为导向执行力停留在文本生成层面能操作软件、发送邮件、分析数据自主性。
2026-09-25 16:36:36
491
原创 Deepseek Harness 架构解析和应用 上
最近 Deepseek Harness 在 Github 很受追捧,短短几周就拥有了 200k+ 的 star,它跟其他的 agent 框架有何不同,为什么还能在这个拥挤的赛道出圈?这篇文章主要分析一下它的“Everything is a plugin”的设计和具体应用。
2026-09-21 11:22:59
134
原创 vite-plugin-uni-pages 升级指南
全称是,它让你可以用 TypeScript 书写 uni-app 的全局文件pages.json,支持约定式路由,页面级配置则通过definePage宏写在.vue文件里。在 2026 年 6 月 9 日发布了 v0.4.0,又在 8 月 27 日发布了 v0.5.0,中间还穿插了 v0.4.1 到 v0.4.9 的多个补丁版本。距离 v0.4 发布已经过去快三个月,不少项目可能还在用 v0.3,这篇文章就来完整梳理相关的改动、背后的原因以及升级时的注意事项。
2026-09-17 17:06:02
375
原创 uni-app 文件路径与 Base64 互转
这段代码真正值得学习的并不只是 Base64,而是跨平台 API 适配。把不同平台的文件 API 统一封装起来。文件 ─────────────────────────→ Base64↑ ││ ││ ↓平台文件 → Base64Base64 → 文件H5FileReaderuni-app 小程序readFilewriteFile微信小程序readFilewriteFileApp/*** 将文件路径转换为 HTML5+ 可识别的本地文件路径。
2026-09-12 10:27:08
303
原创 第10章:RAG(5)
Text Embedding Models:文档嵌入模型,提供将文本编码为向量的能力,即 文档向量化。文档写 入 和 用户查询匹配 前都会先执行文档嵌入编码,即向量化。常用嵌入模型:LangChain中针对向量化模型的封装提供了两种接口,一种针对 句子的向量化embed_query ,一种针 对 文档的向量化(embed_documents)。
2026-09-10 12:07:38
78
原创 第10章:RAG(4)
当我们将文本拆分为块时,除了字符以外,还可以: 按Token的数量分割 (而非字符或单词数),将 长文本切分成多个小块。什么是Token?对模型而言,Token是文本的最小处理单位。为什么按Token分割?编码器说明TokenTextSplitter 底层会用到 token 编码器,后者的主要功能是将输入的文本切分为token序列, 并将token序列映射为ID序列,本质上是一个 tokenizer。
2026-09-10 10:21:02
114
原创 第10章:RAG(3)
获取 Document 对象后,需要将其切分成一个个小块(Chunk)。无论是在存储还是检索过程中,都以这些 块(chunk) 为基本单位,这样能有效地避免内容噪声干扰和超 出最大 Token 的问题。
2026-09-07 15:14:05
168
原创 第10章:RAG(2)
我们在《第02章-模型调用》章节已经通过requirements.txt 文件安装过课程的依赖。当时考虑到本章 RAG模块涉及的依赖较多且大,所以不在之前的依赖文件中。所以,这里大家需要补充安装RAG涉及到 的依赖。完整版文件见《02-资料\requirements_full.txt》检查冲突pip check如果环境安装正确,则日志如下。
2026-09-03 10:15:10
307
原创 第10章:RAG(1)
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合 信息检索 (Retrieval)与 文本 生成 (Generation)的技术,旨在提升大语言模型在回答专业问题时的 准确性 和 可靠性。典型的检索流程如下:简单举例:如果说LangChain相当于给LLM这个“大脑”安装了“四肢和躯干”,RAG则是为LLM提供了接入“人类 知识图书馆”的能力RAG的项目举例。
2026-09-03 09:28:07
203
原创 第09章:上下文与记忆 (7)
静态运行时上下文(Static runtime Context)表示不可变的数据,如用户元数据、工具和传递给应用程 序的数据库连接对象。通常在运行开始时通过 invoke / stream 的 context 参数传递,此类数据 在运行期间不会更改。
2026-09-01 18:11:52
233
原创 第09章:上下文与记忆 (5)
短期记忆记录的是 会话级别(线程,Thread) 的数据, 会话间不共享。而长期记忆记录的是用户特定或应用级别的数据,任何会话都可以随时访问。这类信息不属于某一条聊天,而属于“用户/组织/应用本身”。
2026-08-31 15:16:24
538
原创 第09章:上下文与记忆 (4)
把早期历史压缩成摘要,再替换原始消息。消息裁剪和删除都会导致上下文缺失,影响回答质量和用户体验。和它们相比,摘要是更适合长会话的 折中方案:保语义,不保原文。官方推荐内置 SummarizationMiddleware。上一章已有讲解。import os# 从 .env 文件中加载环境变量# 用于正常对话的模型# 用于生成历史消息摘要的模型# 创建带摘要中间件的 Agenttools=[],# 用于生成历史消息摘要的模型# 触发条件:# 当消息 Token 数超过 100 时,触发摘要。
2026-08-28 17:08:04
243
原创 第09章:上下文与记忆 (3)
如果将 状态检查点(checkpointer) 保存在内存, 进程结束 则状态丢失,生产环境不可接受。因此,生 产环境要用持久化的外部存储介质,如PostgreSQL。LangGraph提供的checkpointer后端列表如下此处选择PostgreSQL作为持久化器。
2026-08-28 14:57:33
234
原创 第09章:上下文与记忆 (2)
第3步:设定会话 ID:通过 config = {"configurable": {"thread_id": "1"}} 为每次调用指定线程标识。thread_id 是记忆管理的核心开关:在会话2里询问会话1的会话信息,Agent 会表示不知道——因为双 方记忆空间完全隔离。这就像玩 RPG 游戏时的“自动存档”:你不需要手动保存,系统在关键节点自动记录,下次进入游 戏随时可以从上次的存档点继续。Agent: 我不知道你的名字哦,你可以告诉我,我就可以用名字称呼你啦。有什么我可以帮你的吗?
2026-08-28 14:22:24
228
原创 Linux云服务器安装与PostgreSQL安装
企业用户可以选择租用云服务器。因为PostgreSQL所需的资源很小,一个轻量级的服务器足以支持运 行。我们需要租赁一个云服务器去运行PostgreSQL数据库: 腾讯云。官网:https://cloud.tencent.com/
2026-08-27 17:06:30
259
原创 第09章:上下文与记忆 (1)
记忆是一种记住之前互动信息的系统。随着Agent处理涉及大量用户交互的复杂任务,记忆变得至关重 要!大多数的大模型应用程序都会有一个 会话接口 ,允许我们进行 多轮的对话 ,并有一定的上下文记忆能 力。比如但实际上,大模型本身是“无状态”的, 不会记忆 任何上下文的。即每次调用 agent.invoke() 都是全新 的开始,不记得之前的对话。
2026-08-25 17:18:46
212
原创 第08章:中间件(10)
中间件只用一个钩子函数,推荐用装饰器,需要多个钩子函数推荐类写法装饰器也不是不能实现,多数情况下可以像下面的示例里那样通过工厂函数返回多个装饰器函数来完 成;但这种方式本质上是把一个“逻辑上属于同一个中间件”的行为拆成多个独立函数,再由外部统一组 装,因此不如类写法自然、集中、清晰。2. 使用类实现单钩子场景下,装饰器即可;多钩子场景下,类不是唯一可行方案,但通常是更自然、更推荐的实现方 式。
2026-08-21 17:43:03
194
原创 第08章:中间件(9)
支持两种用法装饰器是函数式挂载,把一个hook快速挂载到Agent的某个节点。类写法是对象化中间件,把中间件封装为一个可配置、可复用、可扩展的组件。
2026-08-21 17:12:35
62
原创 第08章:中间件(8)
某些复杂场景下,官方内置的中间件不能完全满足需求,此时可以通过实现LangChain暴露的中间件 hook函数 构建自定义中间件。说明:尽可能使用内置中间件。Hook 函数,中文常叫 钩子函数 ,指的是:在某个既定流程的特定时机,被框架、系统或主程序 自动 调用 的扩展函数因此,可以把它理解成:主流程预留了一些插槽,允许你在这些位置挂上自己的函数,这种被挂进去并在特定时机执行的函 数,就是 hook 函数。不是你主动在业务代码里随便调用的,而是当流程运行到某个“钩子点”时,系统自动触发它。
2026-08-20 11:00:53
295
原创 第08章:中间件(7)
ContextEditingMiddleware 的价值:大模型多轮对话时,如果频繁调用产生大量文本的工具 (如代码执行、网页爬取),历史记录会急剧膨胀。这个中间件就像一个“上下文抽脂手术”,在不 影响当前对话的前提下,自动在后台删掉之前沉淀的工具调用废话,从而极大地节省 Token 费用 并防止超出模型最大上下文窗口(Context Window)。注意:不会更改消息列表。基于系统的Glob和Grep检索工具,为Agent赋予本地文件搜索和分析的能力。- 类似洋葱模型:1→2→3→模型→3→2→1。
2026-08-19 17:05:17
197
微信公众号的网页授权域名已经支持配置多个方案
2025-04-30
前端 自动部署 前端web自动化部署到服务器脚本 解放双手
2025-04-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅