- 博客(92)
- 收藏
- 关注
原创 Mem0 源码解析系列(二):提示词工程的深度剖析
通过深入分析 Mem0 的提示词系统,我们理解了为什么"Mem0 增删改查记忆的本质是提示词工程"。
2026-04-14 14:10:38
477
原创 Mem0 源码解析系列(一):记忆是如何被添加的
本文深入解析 Mem0 记忆添加机制,揭示其双存储架构(向量存储+图存储)如何实现智能记忆管理。通过源码剖析,详解 LLM 驱动的事实提取、相似性检索、增删改决策等核心流程,展现 Mem0 如何用提示词工程实现高效记忆生命周期管理,适合开发者理解 AI 记忆系统设计。
2026-04-09 20:04:12
594
原创 Mem0:给 AI Agent 装上「长期记忆」
维度短期记忆长期记忆生命周期会话期间永久保存存储位置LLM 上下文窗口向量数据库容量有限(几十轮对话)理论无限检索方式顺序读取语义搜索跨会话❌ 不支持✓ 支持实现成本零成本需要存储基础设施短期记忆是「临时便签」,长期记忆是「永久笔记本」。Mem0(读作 mem-zero)是一个专为 AI Agent 设计的长期记忆框架。在阿里云开发者的一篇公众号博文中,提到Mem0 作为一个开源的长期记忆框架,几乎成为事实标准。GitHub 50K+ Star数也是目前开源记忆框架最高的。
2026-03-31 21:11:59
377
原创 openclaw平替之nanobot源码解析(八):Gateway进阶——定时任务与心跳机制
通过和,nanobot 完成了从“工具”到“助手”的蜕变。它不再仅仅等待指令,而是开始根据时间、计划和上下文,主动融入你的工作流。至此,nanobot 源码解析系列真正画上了句号。我们从最底层的配置,一路走到了最上层的自动化编排。希望这八篇文章能成为你探索 AI Agent 世界的一盏明灯。🐈✨。
2026-03-23 21:59:22
618
原创 openclaw平替之nanobot源码解析(七):Gateway与多渠道集成
nanobot 的 Gateway 架构展示了如何构建一个高内聚、低耦合的多渠道系统。通过统一的消息模型和抽象的渠道接口,它成功地屏蔽了不同社交平台之间的复杂性。本文是这个系列的第六篇。在下一篇中,我们将深入探讨 Gateway 的进阶功能——定时任务与心跳机制,看看 nanobot 如何让 AI 从”被动响应”转变为”主动服务”。懂原理,比会调包更重要。希望这个系列能帮你拆掉 AI Agent 的”黑盒”,让你在构建自己的智能体时更加游刃有余。🐈✨。
2026-03-23 21:51:09
826
原创 openclaw平替之nanobot源码解析(六):子智能体(Subagents)
这篇文章深入解析了 nanobot 的子智能体(Subagents)系统,揭秘其如何通过 `spawn` 工具和 `SubagentManager` 实现复杂任务的并行处理。文章详细拆解了主智能体召唤“分身”的底层流程、子智能体专注任务的独立运行机制,以及二者如何巧妙地通过 MessageBus(消息总线)注入系统消息实现跨时空协作与结果汇总。同时,还为开发者提供了实用的异步执行调试技巧,展示了 nanobot 以极简架构实现强大并发协作能力的精妙设计。
2026-03-19 20:52:20
625
原创 nanobot 源码解析(五):Skills 系统——让 AI 秒变专家
本文带你拆解其 Skills 系统,看它如何通过简单的 Markdown 文件教 AI 使用新工具,以及“按需加载”机制如何节省宝贵的上下文窗口。
2026-03-17 15:57:43
564
原创 openclaw平替之nanobot 源码解析(四):Markdown 驱动的记忆系统
为什么 nanobot 不需要复杂的向量数据库也能拥有长期记忆?本文带你深入拆解其独特的 Markdown 记忆系统,看它如何通过“两层架构”和“自我固化”机制实现持久化记忆。
2026-03-12 21:34:49
602
原创 openclaw平替之nanobot 源码解析(三):Markdown 驱动的系统提示词
在这四个文件构成了 nanobot 的核心身份。为什么要把这些关键指令放在 Markdown 文件里?人类可读(Human-Readable):你不需要懂 Python,只要会写字,就能修改 Agent 的性格。版本控制(Version Control):你的 Agent 进化过程可以被git commit记录。极简定制:想让 Agent 变幽默?改SOUL.md。想让它记住你的偏好?改USER.md。这种设计让 AI 不再是一个冷冰冰的黑盒,而是一个可以被你亲手雕琢的“数字生命”。
2026-03-12 21:23:15
320
原创 openclaw最强平替之nanobot源码解析(二):深入 agent 命令与极简消息总线设计
nanobot 的设计哲学在agent命令和MessageBus中体现得淋漓尽致:用最简单的 Python 原生工具(如),解决最复杂的解耦问题。理解了这一层,你就已经掌握了 nanobot 跨渠道通信的精髓。下一篇,我们将深入 nanobot 最具特色的部分:Markdown 驱动的记忆系统(Memory System),看看它是如何让 AI “长记性”的!💡nanobot算法上没有什么大的创新,但是其工程思维是需要我们每个agent从业工程师需要学习的!
2026-03-09 22:10:06
615
原创 openclaw最强平替之nanobot 源码解析(一):环境搭建、Debug 配置与 onboard 命令详解
学习任何一个开源项目,第一步永远是:把它跑起来,然后看它怎么动。nanobot 的安装和配置非常简单,但简单背后隐藏着很多 Agent 设计的精妙之处。今天,我们就来拆解它的“启动仪式”。
2026-03-09 22:05:01
1389
原创 Nano Code: 250行 Python 代码实现的极简 Claude Code
为了让 AI 具备操作文件系统和执行命令的能力,我们定义了readwriteeditglobgrepbash这六个基础工具。AI 模型(如 Claude 3.5 Sonnet / Opus)通过识别这些工具的定义,来决定何时以及如何调用它们。
2026-01-21 10:28:53
658
原创 解锁Open WebUI的潜力:自定义业务逻辑与服务交互全攻略
使用open-webui与自定义业务逻辑服务进行交互,不只是简单使用个大模型,而是结合我们的业务逻辑
2025-02-27 23:41:00
885
原创 Qanything 2.0源码解析系列6 PDF解析逻辑
是SelfParentRetriever的类对象,这个类也在qanything_kernel/core/retriever/parent_retriever.py中aadd_documents方法介绍方法截图:+逐行解析# 核心方法一中得到的18个docs会传递到这个方法中,作为documents参数传递进来self,# 会进入到这个if中# 遍历这18个doc# 如果有表或者长度<=80,进入这个if中。
2024-12-26 22:23:49
1214
原创 以openai的gpt3 5为例的大模型流式输出实现(原始、Sanic、Flask)- 附免费的key
针对大模型的流式输出,采用Sanic和Flask两种框架实现。代码写的很详细
2024-10-09 23:09:10
1289
原创 Qanything 2 0源码解析系列4 图片解析逻辑
以上就是图片解析逻辑的全部流程了。图片ocr识别文字,这些文字注入元数据,组成一个doc对doc进行split并merge,doc和doc之间的chunk_overlap为0,也就是没有overlap,每个doc长度在800内对每个doc再split并merge,doc的子doc之间有100的chunk_overlap,子doc长度400内对所有的子doc使用bce-embedding向量化并存入milvus向量数据库。
2024-09-23 22:58:27
1388
1
原创 Qanything 2 0源码解析系列1:新建知识库
"data": {在User表中增加user_id的记录在KnowledgeBase中增加user_id, kb_id, kb_name的记录。
2024-09-23 22:52:38
926
转载 Qanything 2 0源码解析系列2:上传文件 10648c4b656180e0b747f4c810aa2831
1.x上传文件之后并对文件进行处理存milvus了,2.0之后文件解析是一个单独的服务,这里仅仅是将相关记录存入了数据库。后续通过文件解析服务再从数据库取值根据不同的文件类型进行解析。💡 有问题,欢迎您在底部评论区留言,一起交流~
2024-09-23 22:48:10
496
1
转载 Qanything 2 0项目部署启动手把手教程
对于这种微服务架构的服务,启动的核心过程就是解决各种服务的配置问题。项目启动起来之后,接下来就可以愉快的玩耍了。debug的过程是理解Qanything以及RAG原理的核心过程,通过debug可以看到所有变量的值、可以看到一个请求进来之后这个项目的流转过程、可以看到一些很多介绍RAG的blog中忽略的细节信息。
2024-09-23 22:38:47
3042
7
原创 sqlite3简单使用
sqlite3轻量简介,无需单独的数据库服务,只需访问磁盘上的.db的文件。在某些情况下很有用。为什么要使用sqlite3?
2023-11-15 09:49:45
730
原创 mac电脑访问windows共享文件夹连接不上(设置445端口)
解决mac访问windows共享文件夹连接不上的问题,主要是在windows防火墙的入站规则中添加445端口
2023-08-02 19:26:47
9265
1
原创 局域网内电脑ping不通(防火墙惹的祸)
局域网内ping不通,一般都是因为防火墙阻拦了请求,除了采用关闭防火墙的解决方案之外,也可以设置防火墙的入站规则,使其可以ping通
2023-08-02 19:06:24
8846
原创 解决chrome浏览器导入crx插件提示“ 该扩展程序未列在 Chrome 应用商店中,并可能是在您不知情的情况下添加的。“
以cross-request 这个插件为例,拖入chrome浏览器中提示不可用。3. 在扩展程序中选择"加载已解压的扩展程序",选择解压后的文件目录即可。1. 将crx后缀改成zip。2. 然后解压zip包。
2023-06-12 20:07:45
6391
1
原创 windows安装pip根据官方文档的详细教程
前提是已经安装好python第一步:打开cmd,进入你想进入的文件夹第二步:在这个文件夹下使用curl命令下载get-pip.py文件curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py第三步:安装pippy get-pip.py第四步:配置环境变量,在Path中添加pip.exe的路径,根据自己的实际情况,一般是在Scripts文件夹中C:\Users\Lrcx\AppData\Local\Programs\Python\
2021-06-01 11:01:22
598
原创 使用Docker部署深度学习模型的小demo
怎么安装Docker这里我就不多说了,根据自己服务器的操作系统来官方安装教程:https://docs.docker.com/get-docker/我们使用的是tensorflow_server,docker好像没有torch_server第一步:拉取tensorflow/serving镜像docker pull tensorflow/serving第二步:克隆tensorflow官方仓库,我们使用里面已经训练好的模型使用的模型是saved_model_half_plus_two_cpu,
2021-05-31 22:18:46
731
原创 百度地图API接口调用的demo(浏览器端)
我们看百度官方给的demo,网址为:http://lbs.baidu.com/jsdemo.htm#aAsynLoadMap使用的是异步加载<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8"> <title>异步加载地图</title> <meta http-equiv="Content-Type" content="text
2021-04-28 16:59:42
668
原创 PAT乙级1030,有详细题目解析,如果未AC不要死抠
1030 完美数列 (25分)给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M≤mp,则称这个数列是完美数列。现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。输入格式:输入第一行给出两个正整数N和p,其中N(≤105)是输入的正整数的个数,p(≤109)是给定的参数。第二行给出N个正整数,每个数不超过109。输出格式:在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。输入样例:10 82 3 20 4 5 1 6 7 8 9
2021-04-26 19:17:12
378
原创 PAT乙级1029,使用双重循环
从今天开始全国各地研究生成绩陆陆续续也都出来了,出成绩的时刻总是有人欢喜有人忧,不管怎样,都应该紧锣密鼓的准备起来了,考的好的好好准备复试,考的一般的就得做好两手准备了,是调剂还是找工作。祝愿各位准研究生们都能顺利被自己想去的院校录取。笔者也参加了2020年研究生考试,也祝愿自己能顺利通过复试,拿到录取通知书。1029 旧键盘 (20分)旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入格式:输入在 2
2021-04-26 19:16:03
212
原创 PAT乙级1028,如果没有AC不要死抠,方法对就行,PAT对java还是很不友好的
1028 人口普查 (20分)某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。输入格式:输入在第一行给出正整数N,取值在(0,105];随后N行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按yyyy/mm/dd(即年/月/日)格式给出
2021-04-26 19:14:42
224
原创 PAT乙级1027,附题目解析和代码注释
1027 打印沙漏 (20分)本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ******** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
2021-04-26 19:13:22
285
原创 PAT乙级1026,使用Math.round进行四舍五入
这道题的题目解释我就不放到上面了,原题目链接为:https://pintia.cn/problem-sets/994805260223102976/problems/994805295203598336题目解析:记录c1,记录c2,c1 c2都是整数,可以定义整型变量。(c2-c1)/100是秒数,这里要注意刚才那样算会造成误差,比如拿题目给的样例举个例子(4577973-123)/100=45778,事实上应该是45778.5,按照四舍五入的原则应该是45779,所以这里应该这样操作:double c
2021-04-26 19:12:05
231
原创 PAT乙级1025,题目坑点就是给的节点不一定全部有用,需要先进行筛选
1025 反转链表 (25分)给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为 1→2→3→4→5→6,K为 3,则输出应该为 3→2→1→6→5→4;如果K为 4,则输出应该为 4→3→2→1→5→6,即最后不到K个元素不反转。输入格式:每个输入包含 1 个测试用例。每个测试用例第 1 行给出第 1 个结点的地址、结点总个数正整数N(≤105)、以及正整数K(≤N),即要求反转的子链结点的个数。结点的地址是 5 位非负整数,NULL 地址用−1表示。接下来有N行,每
2021-04-26 19:10:41
339
原创 PAT乙级1024,超详细题目解析带你一步一步分析,附AC代码注释
1024 科学计数法 (20分)科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。输入格式:每个输入包含 1 个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999
2021-04-26 19:09:05
489
原创 PAT乙级1023,有详细题目解析和AC代码
1023 组个最小数 (20分)给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意 0 不能做首位)。例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。现给定数字,请编写程序输出能够组成的最小的数。输入格式:输入在一行中给出 10 个非负整数,顺序表示我们拥有数字 0、数字 1、……数字 9 的个数。整数间用一个空格分隔。10 个数字的总个数不超过 50,且至少拥有 1 个非 0 的数字。输出格式
2021-04-26 19:06:51
281
原创 PAT乙级1022,除K取余法,有详细题目解析
1022 D进制的A+B (20分)输入两个非负 10 进制整数A和B(≤230−1),输出A+B的D(1<D≤10)进制数。输入格式:输入在一行中依次给出 3 个整数A、B和D。输出格式:输出A+B的D进制数。输入样例:123 456 8输出样例:1103题目解析:这道题不难理解,就是给两个正整数A,B(≤230−1),在int范围内,A+B=sum也在int范围内,直接用int存储就可。把十进制的sum转换成D进制的数字输出,这道题的核心算法就是除K取余法。但容易忽略
2021-04-26 19:05:14
1329
原创 PAT乙级1021,使用char数组来存储
1021 个位数统计 (15分)给定一个k位整数N=dk−110k−1+⋯+d1101+d0(0≤di≤9,i=0,⋯,k−1,dk−10),请编写程序统计每种不同的个位数字出现的次数。例如:给定N=100311,则有 2 个 0,3 个 1,和 1 个 3。输入格式:每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数N。输出格式:对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。输入样例:100311
2021-04-26 19:03:21
225
原创 PAT乙级1020,附AC代码和详细题目解析,提供一种不会超时的方法
1020 月饼 (25分)月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72
2021-04-25 21:58:29
318
原创 PAT乙级1019,附AC代码和题目解析
1019 数字黑洞 (20分)给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的6174,这个神奇的数字也叫 Kaprekar 常数。例如,我们从6767开始,将得到7766 - 6677 = 10899810 - 0189 = 96219621 - 1269 = 83528532 - 2358 = 61747641
2021-04-25 21:57:32
284
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅