自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (2)
  • 收藏
  • 关注

原创 手写 MCP Server 和 MCP Client:Node.js 实现 AI Agent 自动调用本地工具(附完整源码)

从零实现一个可运行的 MCP + Agent 项目:用 @modelcontextprotocol/sdk 编写 MCP Server 暴露工具、编写 MCP Client 发现并连接工具、Agent 通过 Tool Calling 循环(LLM 决策 → Agent 执行 → 结果回传)让 AI 真正操作本地项目,最后封装成 Express 网关 + 网页交互。附完整源码。

2026-07-30 16:00:00 338

原创 一文讲清 LLM、Tool Calling、Agent、Workflow、MCP 的区别与联系(AI Agent 架构入门)

LLM 负责推理,Tool Calling 负责连接工具,Agent 负责动态决策,Workflow 负责流程编排,MCP 负责标准化连接外部能力。这五个概念到底怎么区分?MCP 和 Tool Calling 是什么关系?一文看懂当前主流 AI Agent 应用的基本架构。

2026-07-30 15:45:00 190

原创 Claude Code 使用指南:常用命令、配置与技巧速查表

Claude Code 从入门到进阶的命令速查:安装配置、常用 CLI 命令、权限管理、CLAUDE.md 项目配置、MCP 接入、Hooks 与自定义命令等高频操作一表收齐,当手册用。

2026-03-23 09:00:00 615

原创 LangGraph 实战教程:从 ReAct Agent 到 StateGraph 状态机,构建复杂决策链

简单 Agent 遇到多步骤复杂任务就失控?本文用 LangGraph 把 Agent 从"自由发挥"升级为"状态机编排":StateGraph 定义节点与边、条件路由控制执行路径、循环与人工介入节点,构建可控可调试的复杂决策链。

2026-03-16 20:54:27 574

原创 LangChain 接入 Tavily 实时搜索:让 AI 告别幻觉、获取实时数据(DeepSeek 实战)

AI 只会用训练数据回答"北京春季平均气温"?接入 TavilySearch 实时搜索 + 动态上下文注入 + 三重反幻觉校验(日期偏差过滤、System Prompt 强约束、数据合理性验证),构建"感知 → 检索 → 校验 → 展现"的完整闭环。

2026-03-12 16:40:59 669

原创 AI 同时调用多个工具时组件互相覆盖?tool_call_id 隔离 + 并发渲染方案(DeepSeek 实战)

用户一句话触发"查天气 + 画地图"两个工具,组件却互相覆盖?深度解构 DeepSeek 流式返回的 chunk 结构:第 1 包携带 id 和 name、后续包只有 arguments。用 useRef 累加 + Map 深度合并 + tool_call_id 隔离,实现多工具并发流式渲染互不干扰。

2026-03-12 15:52:21 605

原创 AI 流式输出不完整 JSON 怎么解析?partial-json + 插件化架构实现丝滑渲染(React 实战)

AI 生成的 JSON 只吐了一半,组件就卡住不动?用 partial-js 解析破碎 JSON 实现流式渲染:插件注册表解耦渲染逻辑(对标 Lobe Chat 架构)、Zod Schema 校验防幻觉、错误信息回传实现自愈型 Agentic Loop。从 Demo 到生产级的完整工程化方案。

2026-03-12 15:20:58 633

原创 Function Call 实战:让 AI 对话动态渲染地图组件,React + Tool Calling 完整实现(附源码)

用 300 行代码打通大模型 Function Call 与前端状态管理:AI 回复不再只有文字流,而是直接在对话中弹出可交互的地图组件、天气卡片。完整讲解 Tool Calling 的决策链路、React 动态组件渲染、结构化 JSON 输出与校验,附全部可运行源码。

2026-03-12 14:27:38 117

原创 100 行代码 我用LangGraph+Tavily打造一个会“自主思考”的 Agent

摘要 本文详细介绍了如何从零构建一个具备智能判断能力的AI助手Agent。通过使用langGraph框架和Tavily搜索引擎,实现了以下核心功能:1) 自动识别问题类型(如天气查询);2) 按需获取实时数据;3) 结合知识库生成回答。文章包含完整的开发流程:从环境配置(安装依赖、API密钥设置)、问题分析(设计决策流程),到具体实现四个关键节点(智能决策器、数据搜集器、报告生成器、通用回答器)。最终构建的Agent能智能判断何时需要联网搜索,并给出专业回答,大幅提升了AI助手的实用性和效率。

2025-12-11 17:36:12 1023

原创 Gemini3 生成的基于手势控制3D粒子圣诞树

Gemini3 生成的基于手势控制3D粒子圣诞树

2025-12-11 15:48:01 2674 3

原创 从Prompt到Answer:详解AI Agent架构中的ReAct模式与工具调用

现代AI Agent系统通过ReAct(Reasoning-Acting)模式实现了从简单问答到复杂问题求解的跨越。该系统由大模型(推理引擎)、Agent协调器(流程控制器)和MCP Server(工具执行层)三大组件协作完成。ReAct模式通过"思考-行动-观察"循环,让AI能主动获取外部信息进行渐进式分析。Agent在其中扮演关键角色,负责工具发现、提示词工程、调用路由和状态管理。这一架构使AI系统具备数据驱动决策、高透明度和强适应性等特点,实现了从静态知识库到动态问题求解的进化。

2025-09-24 15:36:45 1402

原创 修复vite中使用react提示Fast refresh only works when a file only exports components.

我通过 `vite` 构建了一个 `react` 应用并使用 `react.lazy` 来懒加载组件,但是在使用过程中 一直提示 `Fast refresh only works when a file only exports components. Move your component(s) to a separate file.eslint(react-refresh/only-export-components)`。这里简单的记录下问题的修复方式。

2024-04-17 09:30:51 4075

原创 vue3 源码解析(7)— diff 算法源码的实现

vue3 采用的 `diff` 算法名为快速 diff 算法,整个 `diff` 的过程分为以下5个阶段完成。 1. 处理前置节点 2. 处理后置节点 3. 处理仅有新增节点 4. 处理仅有删除节点 5. 处理其他情况(新增 / 卸载 / 移动)

2024-04-17 09:29:06 1709

原创 vue3 源码解析(6)— lifecycle 生命周期的实现

对于 vue3 的生命周期,我们经常性会去疑问,生命周期有哪些呢,它是怎么去实现的, 又是什么时候调用的。

2024-02-01 14:43:24 1244

原创 vue3 源码解析(5)— patch 函数源码的实现

在 vue 中 patch 函数的作用是在渲染的过程中,比较新旧节点的变化,通过打补丁的形式,进行新增、删除、移动或替换操作,此过程避免了大量的 dom 操作,提升了运行的性能。

2024-02-01 14:41:57 1864

原创 vue3 源码解析(4)— createApp 源码的实现

我们通过阅读源码了解到,createApp 函数是 vue3 的入口函数,通过 createApp 函数我们可以创建一个应用。createApp 的实现是借助了 createRenderer 函数,createRenderer 的实现内部包装了createAppAPI。createApp 函数接收一个组件,然后返回一个应用,这个应用中有一个 mount 方法,这个 mount 方法就是用来将应用挂载到容器中的。

2024-01-12 15:08:26 2106

原创 vue3 源码解析(3)— computed 计算属性的实现

通过对computed的源码分析,我们可以看到 vue3 如何实现计算属性的。当我们创建一个计算属性时,vue 会收集这个计算属性的所有依赖项。然后,当这些依赖项发生变化时,vue 会重新计算这个计算属性的值。并通过_dirty这个标志位来判断是否需要执行副作用函数并更新_value的值。这种机制使得我们可以方便地创建基于其他响应式依赖项的计算属性。

2024-01-10 15:46:07 2095

原创 vite 深入浅出

vite(轻量,轻快的意思) 是一个由原生ES Module驱动的 Web 开发前端构建工具。浏览器原生 ESM:浏览器支持的 JavaScript 模块化标准,可以直接使用标签加载模块,无需打包或转译。在开发环境下基于浏览器原生ES Module的支持实现了no-bundle服务。另一方面借助esbuild超快的编译速度来做第三方库构建和ts/jsx语法编译,从而能够有效提高开发效率。在生产环境下基于rollup打包来构建代码。

2023-11-13 16:32:21 1244

原创 vue3 源码解析(2)— ref、toRef、toRefs、shallowRef 响应式的实现

这篇文章主要介绍了 vue 3 的响应式原理,其中涉及到了reftoReftoRefsshallowRef等函数的实现。ref:ref 函数用于创建一个包含响应式数据的引用对象,它接受一个基本类型或对象类型的参数,并返回一个具有 value 属性的对象。当访问或修改 value 属性时,会触发响应式更新。ref 函数会对对象类型的参数进行深度响应式转换,即递归地将对象的所有属性都转换为响应式的。

2023-10-25 16:11:38 1169

原创 vue3 源码解析(1)— reactive 响应式实现

reactive:函数返回一个对象的响应式代理。reactive 函数会调用createReactiveObject函数,根据对象的类型,创建不同的代理处理器。reactive函数的参数必须是一个对象,否则会报错。:函数根据对象的类型,创建不同的代理处理器。如果对象是一个数组,会创建一个 collectionHandlers 对象;如果对象是一个普通对象,会创建一个 baseHandlers对象。代理处理器是一个包含 get、set、deleteProperty 等方法的对象,用于拦截对象的属性访问和修改。

2023-10-24 15:04:41 1166

原创 rollup 实现多模块打包

以上大体实现了通过 rollup 实现多模块打包的功能。

2023-08-01 20:48:45 2923

原创 vue3.3 新特性详解

个人观点:有写更新还是比较实用的,但是其中又包含太多的黑魔法了。。。

2023-07-25 11:07:47 1776

原创 基于 Docker + Nginx + Gitlab-runner 实现前端自动化部署流程

在早期部署前端项目时,我们通常会通过ftp把前端代码直接传输到指定的物理机上,或者通过ssh登陆到指定的物理机上,然后拉取指定仓库的前端代码在本地经行打包构建,构建完成之后在通过ssh将打包之后的文件上传到ngnix指定的目录下面,这样就算部署成功啦。在实际开发中,通常会基于Docker + Nginx + Gitlab-runner 来实现前端项目的部署。

2023-07-20 20:45:50 1797 1

原创 实现 Rollup 插件alias 并使用vitest提高开发效率

本篇文章是对的总结。其中涉及到开发一个组件库的诸多知识点。

2023-07-16 14:19:04 2551

原创 Axios断连重试

Axios断连重试

2022-08-10 23:25:33 951

原创 基于装饰器对通用表格的封装

在Vue中如何将通用的方法抽象出来进行封装,mixin是一种方式,但是mixin的缺点也很明显,关于mixin的缺点这里不做过多介绍,也可以通过这篇文章介绍的通过装饰器对通用列表的分装也是一种比较好的处理方式。.........

2022-08-06 15:13:46 429

原创 Vue实战中的策略模式

通过传入不同参数来调用不同的接口这样的场景在熟悉不过了,通常情况下会这样写到:// A.vueexportdefault{props:{type:String},queryList(){constapiMaps=newMap([['类型A','接口A'],['类型B','接口B'],['类型C','接口C'],['类型D','接口D']])}constap.........

2021-09-09 21:24:53 1020

原创 增强VSCode智能感知能力

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言本文说的类型支持仅仅是VSCode的IntelliSense功能,并非静态类型语言的类型检查,所以对开发的效率提升不大,但是可以提高项目的可维护...

2021-09-02 23:33:23 2465

原创 vue cli3使用官方方法配置sass全局变量报错

更新的scss版本在vue cli3的项目里面的配置需要修改参数设置,具体在vue.config.js文件很多博客里面的写法都是这样的 css: { loaderOptions: { sass: { // @/ is an alias to src/ data: `@import "@/styles/variables.scss"...

2019-11-21 10:04:20 1289

原创 koa2 使用passport权限认证中间件

做后端系统避免不了要做权限认证,比如本地用户登录,第三方登录。权限认证的思路也极其简单,不外乎就是登录,登出,路由守护三部分。今天要讲的权限认证中间件那就是:passportpassport 是 Node 的认证中间件,它的存在只有一个单一的目的,就是认证请求。配置 passport在认证过程中 passport 需要配置三个部分注册策略序列化反序列化这里把 passport...

2019-09-27 11:50:02 1178

原创 解决Ajax获取到数据放入echarts里不显示最有效的解决方法

废话不多说,直接上码:var temp = [];var tempArray = [];var data;$.ajax({ type : "post", url:"", data : {}, dataType : "json", success : function(data) { if (data) { $....

2018-02-03 17:35:18 5599 5

原创 Vue--搭建个人博客

1.初始化vue项目 1.1环境初始化 1.安装node。官网直达 2.安装淘宝npm镜像提高下载速度。 npm install -g cnpm --registry=https://registry.npm.taobao.org 3.安装vue脚手架vue-cli。 npm install --global vue-cli 1.2创建项目

2018-01-12 16:09:00 10140 1

翻译 JS前端创建html或json文件并浏览器导出下载

一、HTML与文件下载如果希望在前端侧直接触发某些资源的下载,最方便快捷的方法就是使用HTML5原生的download属性,例如:下载如果纯粹利用HTML属性来实现文件的下载(而不是浏览器打开或浏览),对于动态内容,就无能为力。例如,我们对页面进行分享的时候,希望分享图片是页面内容的实时截图,此时,这个图片就是动态的,纯HTML显然是无法满足我们的需求的,借助JS和其它一些HT

2017-07-28 16:39:52 10457

翻译 基于jQuery的弹窗小插件

jQuery,弹窗小插件,基于jQuery的弹窗小插件

2017-07-14 17:13:11 62095

C# 新的特性

C# 新的特性

2016-10-24

实现 rollup 实现多模块打包

测试代码

2023-09-21

基于 rollup 实现多模块打包

基于 rollup 实现多模块打包

2023-08-01

实现 Rollup 插件alias 并使用单元测试提高开发效率

资源文件

2023-07-16

[CSS Web开发学习实录].张芳芳等.扫描版

[CSS Web开发学习实录].张芳芳 [CSS Web开发学习实录].张芳芳等.扫描版

2017-12-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除