<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zxlp520的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/zxlp520</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; zxlp520]]></copyright><item><title><![CDATA[【Agent 生产化手记】【二】向人提问时，这一轮怎样提交成等待，刷新和隔天再答都还能接上。]]></title><link>https://blog.csdn.net/zxlp520/article/details/169448821</link><guid>https://blog.csdn.net/zxlp520/article/details/169448821</guid><author>zxlp520</author><pubDate>Thu, 29 Oct 2026 11:37:51 +0800</pubDate><description><![CDATA[Agent向人提问的本质，是将“等待”从阻塞操作转化为可持久化、可恢复的状态。传统写法中，wait_for_answer() 会卡住进程，导致资源浪费与状态丢失。正确做法是：工具执行成功后返回一张“待回答卡片”，记录问题与状态；用户回复时，系统通过统一检查补全答案，再继续下一轮。关键在于：等待不是工具属性，而是结果状态。这一设计使交互可中断、可重放、可跨轮次衔接，避免了因历史错乱、注册顺序依赖或重写历史带来的陷阱。最终实现“问人”作为长事务中的一环，真正可生产化。]]></description><category></category></item><item><title><![CDATA[【Agent 生产化手记】【一】能跑 10 分钟的 Agent，和能上线 10 个月的 Agent，差在哪]]></title><link>https://blog.csdn.net/zxlp520/article/details/169350938</link><guid>https://blog.csdn.net/zxlp520/article/details/169350938</guid><author>zxlp520</author><pubDate>Wed, 28 Oct 2026 11:46:36 +0800</pubDate><description><![CDATA[能跑10分钟的Agent与能上线10个月的Agent，本质差异在于：前者是短暂请求，后者是需持久化、可中断、可恢复、可审计的有状态长事务。生产化核心是补齐五项关键能力——状态外置、中断可续、失败有终态、上下文控预算、过程可被理解。若仅优化“一次跑完”，忽视“断了还能看懂”，系统终将因状态丢失、恢复失效、成本失控而崩溃。真正的生产级Agent，不是跑得快，而是扛得住中断、算得清账、说得清事。]]></description><category></category></item><item><title><![CDATA[【生命科学 Agent】推理平台（三）]]></title><link>https://blog.csdn.net/zxlp520/article/details/168963392</link><guid>https://blog.csdn.net/zxlp520/article/details/168963392</guid><author>zxlp520</author><pubDate>Sat, 24 Oct 2026 11:05:28 +0800</pubDate><description><![CDATA[本文聚焦生命科学Agent平台的契约层设计，提出“工具契约”四大核心字段（request_id、deadline_ts、priority、callback）实现平台与Agent的显式协作。通过流式进度反馈，支持早停与预算熔断，显著降低无效算力消耗。关键创新在于赋予Agent“算力意识”：暴露预计等待时间、成本与替代方案，推动其自主决策，形成“感知-决策-反馈”闭环。同时以幂等、退避、熔断与准入背压机制约束Agent行为，防止资源滥用。最终实现算力利用率与系统稳定性的双重跃升。]]></description><category></category></item><item><title><![CDATA[【生命科学 Agent】推理平台（二）]]></title><link>https://blog.csdn.net/zxlp520/article/details/168874754</link><guid>https://blog.csdn.net/zxlp520/article/details/168874754</guid><author>zxlp520</author><pubDate>Fri, 23 Oct 2026 14:38:02 +0800</pubDate><description><![CDATA[有限 GPU 算力下，如何为生命科学 Agent 搭一套推理平台（二）：选型与 Trade-off 上一篇我们留了个尾巴：架构被四个决定锚定之后，还剩两个问题没答——用什么实现排队？用什么实现弹性？]]></description><category></category></item><item><title><![CDATA[【生命科学 Agent】推理平台（一）]]></title><link>https://blog.csdn.net/zxlp520/article/details/168874348</link><guid>https://blog.csdn.net/zxlp520/article/details/168874348</guid><author>zxlp520</author><pubDate>Fri, 23 Oct 2026 14:33:14 +0800</pubDate><description><![CDATA[本系列尝试回答一个具体问题——当 GPU 卡数是固定的，而上层是一个会自主规划、批量调用工具的生命科学 Agent 时，中间的推理层该怎么搭。]]></description><category></category></item><item><title><![CDATA[AI Agent 实战：将 Node-RED 创建的 MCP 设备服务接入 Dify]]></title><link>https://blog.csdn.net/zxlp520/article/details/149231685</link><guid>https://blog.csdn.net/zxlp520/article/details/149231685</guid><author>zxlp520</author><pubDate>Wed, 09 Jul 2025 19:19:23 +0800</pubDate><description><![CDATA[本文介绍了如何将Node-RED创建的MCP设备服务接入Dify或MegaAgent平台，实现AI Agent与物理设备的交互。首先确保已部署Node-RED MCP服务并拥有Dify实例，然后在Dify中安装MCP插件并配置服务URL。配置完成后，在Agent工具中添加该插件，即可通过自然语言控制设备。最后展示了完整控制链路的应用场景，如通过指令查询天平重量等，为智能实验室、工业自动化等场景提供基础支持。]]></description><category></category></item><item><title><![CDATA[MCP 实战派【3】Node-RED MCP 插件实践指南：从安装到常见问题解析]]></title><link>https://blog.csdn.net/zxlp520/article/details/149228958</link><guid>https://blog.csdn.net/zxlp520/article/details/149228958</guid><author>zxlp520</author><pubDate>Wed, 09 Jul 2025 17:18:25 +0800</pubDate><description><![CDATA[本文介绍了增强版 node-red-contrib-mcp-server 插件，该插件实现了完整的 MCP 核心协议，解决了与 Dify、Claude 等平台集成的关键问题。文章详细说明了插件的安装方法，并重点总结了三个实践中的常见错误点：在 function 节点中正确处理 msg 对象、严格遵守 MCP Tools Response 规范要求，以及实现 notifications/initialized 事件的重要性。最后提供了一个完整的 Node-RED 流程示例，展示了如何通过 MCP 协议调用模拟]]></description><category></category></item><item><title><![CDATA[【Vibe Coding 实战】我如何用 AI 把一张草图变成了能跑的应用]]></title><link>https://blog.csdn.net/zxlp520/article/details/149154446</link><guid>https://blog.csdn.net/zxlp520/article/details/149154446</guid><author>zxlp520</author><pubDate>Sun, 06 Jul 2025 16:24:04 +0800</pubDate><description><![CDATA[本文分享了一个利用AI辅助开发自动化移液枪调参系统的实战案例。作者通过LLM+Agent方案替代人工调参，在UI开发环节先用Excalidraw绘制草图，再用bolt.new生成React前端框架，随后借助Claude根据前端代码自动生成后端API和数据库结构。最终结合Copilot完成剩余开发，成功实现系统V1.0版本。作者指出，AI显著降低了代码编写成本，但需求理解和系统设计等核心能力仍无法被替代，强调在AI时代，开发者更应聚焦于提升理解能力和架构思维。案例生动展示了AI工具链在现代开发中的高效协同作用]]></description><category></category></item><item><title><![CDATA[MCP实战派【2】从0-1实现一个满足 MCP 协议的 Server]]></title><link>https://blog.csdn.net/zxlp520/article/details/147776985</link><guid>https://blog.csdn.net/zxlp520/article/details/147776985</guid><author>zxlp520</author><pubDate>Thu, 08 May 2025 00:24:26 +0800</pubDate><description><![CDATA[本文将引导你了解如何在不使用 MCP 官方 Python SDK 的情况下，从零开始构建一个符合 MCP 协议的服务端（Server）,真正的掌握 MCP 的协议]]></description><category></category></item><item><title><![CDATA[MCP实战派【1】-SSE]]></title><link>https://blog.csdn.net/zxlp520/article/details/147563783</link><guid>https://blog.csdn.net/zxlp520/article/details/147563783</guid><author>zxlp520</author><pubDate>Sun, 27 Apr 2025 16:44:31 +0800</pubDate><description><![CDATA[分析下 MCP SSE 的设计和 具体的执行流程]]></description><category></category></item><item><title><![CDATA[【Dify 本地 tools 集成指南】MCP 和 OpenAPI]]></title><link>https://blog.csdn.net/zxlp520/article/details/147125552</link><guid>https://blog.csdn.net/zxlp520/article/details/147125552</guid><author>zxlp520</author><pubDate>Thu, 10 Apr 2025 19:21:35 +0800</pubDate><description><![CDATA[介绍 Dify 如何和本地的工具做集成]]></description><category></category></item><item><title><![CDATA[一次日志记录中使用fastjson涉及到ByteBuffer的教训]]></title><link>https://blog.csdn.net/zxlp520/article/details/141283716</link><guid>https://blog.csdn.net/zxlp520/article/details/141283716</guid><author>zxlp520</author><pubDate>Sat, 17 Aug 2024 17:17:51 +0800</pubDate><description><![CDATA[回顾上面，其实最大的一个问题就是，在记录日志的时候，不应该添加在代码执行逻辑之前，这是一个不好的代码习惯，应该将日志记录放在代码执行逻辑之后。此外，代码的测试用例要做全，排查代码的时候，定位问题的时候 更加敏锐些。]]></description><category></category></item><item><title><![CDATA[【LLM基础知识点整理】大模型的量化和蒸馏]]></title><link>https://blog.csdn.net/zxlp520/article/details/140909226</link><guid>https://blog.csdn.net/zxlp520/article/details/140909226</guid><author>zxlp520</author><pubDate>Sun, 04 Aug 2024 19:12:52 +0800</pubDate><description><![CDATA[大模型量化是指将深度学习模型中使用的浮点数表示转换为低精度整数表示的过程。这通常涉及选择合适的量化比特数和方法，以减少内存占用和推理时间，同时尽量不损失太多准确性。]]></description><category></category></item><item><title><![CDATA[FlinK KeyBy分布不均匀 问题的总结思考]]></title><link>https://blog.csdn.net/zxlp520/article/details/123785308</link><guid>https://blog.csdn.net/zxlp520/article/details/123785308</guid><author>zxlp520</author><pubDate>Mon, 28 Mar 2022 00:45:39 +0800</pubDate><description><![CDATA[背景
最近 公司组织架构调整，我也被调整到了 数据中台组，刚好最近分配到一个需求任务，这个任务其实也很简单，就是公司的BI分析需要一个维护的 统计分析数据 ，这部分数据  由于一些历史等原因，是solr 那边 做完索引的专利数据，发对应的专利消息到对应的Kafka  的一个topic 中，我们数据组这边消费消息后，做一些etl 的工作后 入库，为了保证数据的实时性，我们采用了Flink 来消费Kafka的消息,我这边只要在我们的处理专利数据的sink中，新增一个逻辑 处理这份数据，然后入库，最终提供给BI那]]></description><category></category></item><item><title><![CDATA[记一次服务假死的问题排查]]></title><link>https://blog.csdn.net/zxlp520/article/details/123294309</link><guid>https://blog.csdn.net/zxlp520/article/details/123294309</guid><author>zxlp520</author><pubDate>Sat, 05 Mar 2022 14:29:19 +0800</pubDate><description><![CDATA[日常问题总结]]></description><category></category></item><item><title><![CDATA[FastJson 过滤复杂数据对象]]></title><link>https://blog.csdn.net/zxlp520/article/details/109602694</link><guid>https://blog.csdn.net/zxlp520/article/details/109602694</guid><author>zxlp520</author><pubDate>Tue, 10 Nov 2020 17:05:12 +0800</pubDate><description><![CDATA[FastJson 过滤复杂数据对象前言描述分析SimplePropertyPreFilter  的使用过滤名称重复的字段改良的版本依旧不灵活的问题最终版本过滤带层级属性 PropertyPreFilter其余的过滤器介绍总结
前言
很久 没有 写博客了 一晃都已经2个月了 到新东家也有2个月了，好快！
博客还是要重新拾起了，养成一个好习至少要21天 但是毁掉它只需要一个借口~
描述
先描述下问题，最近做了一个任务，主要是处理数据的问题，所有的原始数据存在的我们的Nosql 数据库中，使用的是AWS 的Dyn]]></description><category></category></item><item><title><![CDATA[面试总结：2个栈去实现一个队列]]></title><link>https://blog.csdn.net/zxlp520/article/details/108451383</link><guid>https://blog.csdn.net/zxlp520/article/details/108451383</guid><author>zxlp520</author><pubDate>Mon, 07 Sep 2020 16:55:47 +0800</pubDate><description><![CDATA[说明
博主我最近去面试，面试的公司问了很多问题，其中有2个和算法相关的题目，没回答上来，后来回来仔细看了下 其实也是很简单的，主要还是这些年 忽略了基础的一些算法，立下个Flag 这下半年 好好的 温习下算法，刷下leetcode.
话不多说，其中的一问题是这样的：
面试官：你知道栈结构么？栈和队列有啥区别？怎么用2个栈去实现一个队列？
栈？？？ 嗯嗯 知道这个结构  但是很少用呀~？ 栈和队列的区别不就是  数据一个树先进先出，一个先进后出么!2个栈实现一个队列？？？
分析
其实这个题目，我很久之前就看过]]></description><category></category></item><item><title><![CDATA[一次使用Redis做短信次数验证的小思考]]></title><link>https://blog.csdn.net/zxlp520/article/details/108173031</link><guid>https://blog.csdn.net/zxlp520/article/details/108173031</guid><author>zxlp520</author><pubDate>Sat, 22 Aug 2020 19:13:22 +0800</pubDate><description><![CDATA[前文
都好久没写博文了，一转眼都一个月过去了，今天写点儿简单的，是我工作中遇到的，前一段时间做一个任务，里面涉及到一个发送短信次数的验证：
需求
原需求是这样的：
要求用户没小时发送短信的次数不能超过5次，如果超过了就当天限制发送！
想法
拿到这样的需求，各位小伙伴会有怎么样的想法呢，你心中的方案是什么？
话不多说！
我一开始的第一个想到的方案 是 存数据库  建一张表  记录发送的记录 然后每次发送的时候 查表再做下验证！为嘛为会这么想呢，因为我看系统里面之前发送短信频次的验证就是这么写的！
如果这样时候]]></description><category></category></item><item><title><![CDATA[Java多线程-ThreadPoolExecutor是怎么去执行一个任务的？源码分析]]></title><link>https://blog.csdn.net/zxlp520/article/details/107454755</link><guid>https://blog.csdn.net/zxlp520/article/details/107454755</guid><author>zxlp520</author><pubDate>Mon, 20 Jul 2020 12:03:41 +0800</pubDate><description><![CDATA[前言
前面一遍文章 我们看了下FutureTask的源码，知道了怎么样去获取一个任务的返回值，今天我们看下ThreadPoolExecutor。
ThreadPoolExecutor 看名词 我们就可以 看做是ThreadPool 和Executor的结合，大概意思我们也能知道就是线程池执行器，哈哈这翻译 真棒。这篇博文 会从源码的角度去分析下 一个线程任务 加入的线程池以后 是怎么被执行的~
线程池
上面 说线程的时候 我们也说过 线程是系统中极其珍贵的资源，那我们要合理的使用他，所以有了线程池的出现，那]]></description><category></category></item><item><title><![CDATA[你知道ThreadPoolExecutor是怎么存储线程池状态和线程数量的么？]]></title><link>https://blog.csdn.net/zxlp520/article/details/107398462</link><guid>https://blog.csdn.net/zxlp520/article/details/107398462</guid><author>zxlp520</author><pubDate>Fri, 17 Jul 2020 00:44:40 +0800</pubDate><description><![CDATA[前言
最近在看ThreadPoolExecutor的源码，里面在处理存储线程池的状态和线程池里面的大小感觉特比有意思，所以单独拿出来和大家分享下~
怎么去存储状态和工作线程数，我们一步步的来看看，最后最下总结，总结下为什么这么去做
分析
    private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));
    private static final int COUNT_BITS = Integer.SIZE - 3;//]]></description><category></category></item></channel></rss>