自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(183)
  • 收藏
  • 关注

原创 多层记忆系统(Multi-layer Memory System)深度源码解析

本文基于 Claude Code 生产级源码,深度剖析 Agent 中"多层记忆系统"这一核心机制的完整实现。从 CLAUDE.md 指令加载到自动记忆提取,从相关性召回到跨会话整合,逐层拆解每个子系统的设计动机、核心算法和关键代码。

2026-08-28 20:29:40 337

原创 上下文预算管理(Context Budget Management)深度源码解析

本文基于 Claude Code 生产级源码,深度剖析 Agent 主循环中"上下文预算管理"这一核心机制的完整实现。从工具结果裁剪到五层压缩管线,再到错误恢复,逐层拆解每个环节的设计动机、核心算法和关键代码。

2026-08-27 19:57:40 432

原创 Claude Code 如何写代码:从模型输出到磁盘写入的全链路源码解析

Claude Code 的"写代码"操作是一条从模型意图到磁盘字节的全链路治理管道——注册决定有什么工具,编排决定执行顺序,治理链决定能否执行,tool.call() 执行具体逻辑,原子写入保障数据安全。每一层都是对"Agent 可能犯错"的防御。*

2026-08-27 16:00:02 308

原创 Codex使用教程,到底能用来干什么?

AI工具Codex的实际应用价值,指出其核心能力不仅是写代码,而是能自动化处理各种工作流程。作者通过多个具体场景(如财务分析、教学备课、运营内容创作、PPT制作、法律文件处理、科研文献整理、数据分析、编程开发等)展示了Codex如何替代重复性劳动,帮助用户从零散任务转向结果导向的工作模式。文章强调Codex的真正价值在于:1)理解完整任务需求;2)自主执行多步骤操作(读取文件、整理数据、分析问题、生成报告等);3)串联多个工具形成自动化工作链。这种"把完整工作交给AI处理"的模式,比单纯问答式

2026-08-24 23:03:51 172

原创 用 Python + 约 600 行代码,把 Agent Runtime 里的几个核心机制拆开实现了一遍。

最近在研究 DeepSeek Harness / Cordis 的插件化架构,发现很多概念看源码很容易陷进去:为什么一个 apply 函数就能给系统增加能力?为什么 ctx.llm 不需要提前定义?插件之间的加载顺序谁来管理?卸载插件时,怎么保证注册的东西全部清理?所以我花了一点时间写了一个小项目:cordis-mini用 Python + 约 600 行代码,把 Agent Runtime 里的几个核心机制拆开实现了一遍。

2026-08-21 11:23:33 163

原创 深度拆解DeepSeek Harness插件热更新实现原理

dsh 框架如何通过 ctx.effect() 和 ctx.on() 机制实现插件系统的可逆注册。核心要点包括: 强制使用 effect 机制:所有注册操作必须通过 ctx.effect() 或 ctx.on() 进行,确保每个副作用都有对应的撤销路径。 两种撤销方式: 直接返回清理函数 使用 Generator 语法,通过 yield 分步提交清理逻辑(自动逆序执行) 实践示例:以 LlmRuntime.registerAdapter 为例,展示了: 如何将 setup 和 teardown

2026-08-20 00:00:00 971 3

原创 插件解耦神器!DeepSeek Harness 五种事件分发模式

Cordis框架提供了五种事件分发模式(emit/parallel/serial/bail/waterfall),支持插件间高效通信。emit用于并发通知,parallel实现并行任务聚合,serial支持顺序短路处理,bail提供同步拦截机制。重点waterfall采用洋葱模型,通过next()委派控制流,实现中间件式调用链,是LLM调用等场景的核心机制。该类型化事件系统解决了插件架构中的通信、拦截和流程控制等关键问题,waterfall模式需显式调用next()的特性需要特别注意。

2026-08-19 12:30:00 290

原创 踩坑必看!DeepSeek插件inject依赖的底层逻辑

Cordis框架中插件依赖管理的实现机制,主要围绕inject元数据和Fiber状态机展开。关键点包括: 依赖声明:通过export const inject声明插件依赖关系,支持数组或对象形式,如llm-deepseek声明依赖llm服务。 拓扑推导:Loader通过Inject.resolve将依赖声明统一转换为依赖映射表,运行时据此动态判断插件启动条件。 状态管理:Fiber采用六种状态(PENDING/LOADING/ACTIVE等)和_refresh机制,自动处理依赖就绪检查与状态跃迁。

2026-08-18 22:54:01 187

原创 告别 import!这才是 AI 插件框架的依赖注入玩法✨dsh 底层杀疯了

服务定位模式在 Context 中的实现原理。ctx.llm 看似直接访问属性,实际是通过 Proxy 动态查找 store 数据:1)先检查特殊属性;2)命中计算属性则执行 getter;3)否则沿 fiber 链向上查找 store。类型提示通过声明合并实现,运行时通过构造函数注册服务。框架内置方法(如 ctx.on)也是通过 mixin 动态添加的访问器。两种读取方式的区别在于:ctx.<name> 用于已声明的依赖注入,会自动处理拓扑关系;而 ctx.get(name) 适合可选服务

2026-08-18 22:40:34 204

原创 deepseek-harness 一切皆插件!一个 plugin 就是一个“实现 Service 接口的对象“

DSH框架中插件的两种形态及其工作原理。最初的未架构化代码存在强耦合问题,任何修改都需改动核心代码。DSH通过插件化架构解决了这一问题: Service类插件(如LlmRuntime):定义新能力,通过继承Service基类自动注册到ctx上下文,提供核心功能接口。 函数插件(如llm-deepseek):消费已有能力,通过命名导出(name/inject等)声明依赖并进行功能扩展。 Service基类通过反射机制实现自动注册、依赖通知和卸载清理。以LLM功能为例,LlmRuntime作为服务定义

2026-08-18 22:27:21 457

原创 Subagents 使用指南

Subagent 是独立的 Claude 会话,由主对话临时调用完成特定任务后返回结论。它适用于需要上下文隔离、独立视角或并发处理的场景,如代码审查、多角度分析等。Subagent 作为 Markdown 文件存储,包含元信息和 system prompt,通过 tools 白名单实现能力隔离。主对话通过 Agent 工具调用 Subagent,准确的 description 描述能确保稳定触发。典型应用包括代码审查、并发分析等场景,通过独立会话避免污染主对话上下文。

2026-08-12 17:46:05 296

原创 Hooks 使用指南

摘要 Hook是Claude Code中基于事件触发的自动化脚本机制。它会在特定事件(如会话开始、用户消息提交、工具调用完成等)发生时自动执行预配置的shell命令,无需Claude进行决策判断。与Skill不同,Hook的特点是强制触发、不可跳过、无需智能判断,适用于必须确保执行的任务(如安全检查、环境验证等)。 Hook通过JSON文件配置,支持项目级、用户级和插件级三种层级。关键事件包括SessionStart(会话初始化)、UserPromptSubmit(用户消息处理)和PostToolUse(工

2026-08-12 17:13:37 339

原创 Skills 使用指南

Skill 是 Claude 的"技能包",包含说明书(SKILL.md)和辅助资源。它让 Claude 能根据特定场景自动执行标准化流程。SKILL.md顶部通过YAML定义触发条件(name/description)和工具权限(allowed-tools)。触发方式包括用户显式调用(/skill-name)或Claude智能匹配自然语言。技能包可包含脚本、模板等资源,适用于标准化检查、结构化生成、复杂流程等场景。典型应用包括自动化PR检查、变更说明生成、部署流程等,通过固化高频操作提升效率。

2026-08-12 17:00:20 250

原创 Claude Code 三大机制概览与决策 Skills、Hooks、Subagents

Claude Code 提供了三种正交扩展机制:Skills(操作手册)、Hooks(事件钩子) 和 Subagents(独立会话),分别解决不同场景问题。 Skills:由 Claude 主动触发的操作指南,适合需要主对话保留细节的流程(如生成 changelog)。 Hooks:事件驱动的自动化脚本(如会话开始检查环境),确保关键动作不被遗漏。 Subagents:独立会话,适合需并发或独立视角的任务(如多维度代码审查)。 决策逻辑: 触发是否基于事件?→ 选 Hook 是否需要主对话交互?

2026-08-12 16:24:48 385

原创 AI Agent 主循环(Runtime Loop)底层实现深度解析

本文剖析了生产级AI Agent平台的核心运行时循环设计与实现,从教学骨架到1700+行生产代码,揭示了Agent从"一问一答"到"持续决策系统"的演进关键。核心在于主循环机制:用户输入→模型推理→判断动作类型→执行工具→结果回写→持续循环,使模型成为"决策者"而非仅回答者。生产级实现通过状态对象管理循环进程,包含上下文预算管理(多级压缩策略)、流式模型调用、工具执行、错误恢复等复杂机制。架构上采用显式状态设计,每轮构造新状态对象进入下一循环,并通过transition字段记录继续原因,便于调试和测试。

2026-07-02 10:12:16 208

原创 Cursor到底怎么用?一个真实项目踩坑总结

《十倍速开发:AI时代的Cursor编程手记》通过真实案例探讨AI编程的本质。作者王尧以博客系统重构为例,展示了Cursor在Linux/Apache/FastAPI等技术栈中的实际应用。书中指出AI如同初级工程师:编码快但易出错,开发者需专注于架构设计而非代码生成。最有价值的是记录了AI失败案例,强调技术判断力的重要性。本书适合有经验的开发者了解AI协作边界,说明未来程序员的核心竞争力在于业务理解力和系统思维,而非单纯编码能力。AI降低了编码门槛,但工程经验仍是不可替代的关键。

2026-06-15 14:34:28 212

原创 SSE 到底是什么?它和 HTTP 有什么关系?Java/Spring 怎么实现流式输出(可直接上手)

很多人第一次接触 `text/event-stream` 时会困惑:SSE 是不是一种新协议?为啥还要用 HTTP?为什么要心跳 ping?以及我在 Java 里为什么会遇到 `No converter ... text/event-stream` 这种报错?本文用“尽量通俗”的方式讲清楚 SSE 的底层逻辑,并给出 Spring MVC 里“代理/转发上游 SSE 流”的实现思路与可执行代码示例。

2026-03-25 17:27:21 732

原创 Dify 工作流 Java 运行时:多线程并发与性能提升实践

一个用 Java 实现的 Dify 工作流执行引擎。项目的核心目标是:在保持与 Dify Python 版本行为一致的前提下,实现工作流的多线程/多请求并发执行,并提升整体执行速度。

2026-02-24 13:56:47 814 1

原创 Dify API 数据库连接与 Session 管理架构调研

本文档详细介绍了DifyAPI使用Flask-SQLAlchemy与PostgreSQL数据库交互的技术方案。核心内容包括:1) 采用Flask-SQLAlchemy作为ORM框架,通过scoped_session实现请求级Session管理;2) 数据库连接池配置及工作原理;3) 在Gevent协程环境下的特殊处理机制。重点分析了两种Session管理方式:标准db.session在Gevent下可能失效,推荐使用显式with Session()确保隔离性。文档还深入探讨了SQLAlchemy的缓存机制

2026-01-22 16:08:14 676

原创 NFS:服务器搭建共享存储

摘要:记录CentOS7.9服务器间NFS共享配置全过程。服务端(84)安装nfs-utils,创建/opt/NFSSpace目录并设置nobody:nobody权限,配置/etc/exports导出共享。客户端(74)安装工具后成功挂载,并通过fstab实现开机自动挂载。关键避坑点:1)CentOS需用nobody:nobody代替nogroup;2)遇到Function not implemented时执行modprobe nfsd;3)注意防火墙和SELinux设置。测试验证双向读写正常,提供连接超时

2025-09-23 15:24:33 293

原创 Java vs Python ORM会话管理差异详解:为什么Python中会出现“对象未绑定到会话“错误?

SQLAlchemy与Hibernate的核心差异在于会话管理机制。Hibernate自动管理会话和事务,而SQLAlchemy需要开发者手动控制。在Dify工作流系统中,由于长时间运行任务和连接池优化需求,主动关闭会话会导致DetachedInstanceError。解决方案包括:1)重新查询对象;2)提前提取所需数据。建议Python开发者改变思维模式,主动管理资源,避免传递ORM对象,及时关闭会话并合理配置连接池。

2025-09-16 17:27:15 878

原创 RAG缓存优化技术详解:让AI更聪明的“记忆“系统

📝 RAG系统与CacheBlend智能缓存解决方案 RAG(检索增强生成)系统通过检索外部知识库生成更准确的回答,但传统方式存在重复计算问题(如每次查询都重新处理相同文档)。CacheBlend提出智能缓存方案: 核心优化:复用已计算的知识分片KV Cache(如客服系统中60%重复查询复用缓存),避免重复处理。 关键技术: 分片存储:文档拆分为独立分片(如种植指南、烹饪方法)。 前缀匹配:复用公共分片(最高节省75%计算)。 动态位置调整:通过RoPE技术保持上下文一致性。 效果:响应速度提升65-7

2025-08-21 17:46:07 789

原创 Milvus 从 v2.4.12 升级到 v2.5.11 的实施方案

Milvus的所有数据存储在宿主机的 /data/volumes/milvus 目录,对应容器内的 /var/lib/milvus 目录。/root/milvus_full_backup_20250516_183710/upgrade.sh脚本内容。提示: 此操作非必须执行,目的是为了数据备份,防止后续版本升级过程中发生数据丢失。2. 备份数据 ,查看Milvus容器的挂载卷信息。查看当前集合信息(便于升级后验证)提供了一个自动化更新脚本。

2025-05-19 11:30:22 1432

原创 cursor如何操作远程服务器-让你像在本地一样开发

输入密码点击回车会成功连接服务器 之后打开项目文件就可以像在本地操作一样操作服务器中的项目了。首先新增扩展 搜索 remote ,安装Remote - SSH。之后刷新就可以看到服务器的配置了 如下图所示位置。之后选中点击连接,第一次连接会让你输入密码。

2025-04-18 16:37:55 3563 1

原创 腾讯滑块验证码自动分析工具:原理与实现

滑块验证码是网站常用的安全验证方式,需要用户将滑块拖动到正确位置以验证身份。本项目开发了一个自动化工具,通过计算机视觉技术,能够分析腾讯滑块验证码并精确计算滑块需要移动的距离。该工具可用于自动化测试、安全研究和验证码优化等领域。

2025-03-26 13:24:58 1498

原创 用python写网络爬虫

在 Python 3 中,使用 urllib.request 模块发送 HTTP 请求时,默认的用户代理(User-Agent)是 Python-urllib/3.x(其中 x 是你使用的 Python 3 的具体版本号)。这种用户代理是非常典型的现代浏览器标识,通常用于模拟真实的浏览器访问,以避免被网站识别为爬虫或自动化程序而被拒绝访问。这个默认用户代理在某些网站上可能会被识别为爬虫并被拒绝访问。例如,如果你使用 Python 3.8,默认的用户代理字符串可能是 Python-urllib/3.8。

2025-03-25 19:18:04 2191

原创 Spring事务管理器详解:确保数据一致性的守护者

在Spring框架中,事务管理器是一个核心组件,负责协调和管理数据库事务的整个生命周期。它就像一个尽职的管家,确保所有的数据库操作都能按照预期进行,维护数据的一致性和完整性。

2025-03-24 14:09:42 352

原创 cursor设置每行代码长度

经常遇到cursor自动将我的代码截断 可以尝试下更新cursor拆行列的最大长度 默认是80,这里我扩展到了180。2. 搜索 ”Editor: Word Wrap Column“ 将数值改为所需要的长度。1. 打开文件--> 首选项 --> 设置。

2025-03-19 14:14:47 4364

原创 windows 利用nvm 管理node.js 2025最新版

之后一直下一步即可 可以取消勾选 open with Powershell 勾选后它会自动打开Powershell。查看已经安装的版本 我之前自己下载了16.9.0 可以看到能够检测到。这里选用cmd 输入以下命令查看是否安装成功。下载想用的版本 以v20.15.1为例。2. 下载最新版本的nvm。1.首先在下载nvm。查看系统node版本。

2025-03-05 19:54:26 809

原创 windows 安装Android Studio

想下载其他版本 可以下滑至这个页面 点击。注意一定要用英文 点击后会跳出协议。之后 选择想要的版本 点击即可安装。安装完成,点击下一步。

2025-03-04 11:02:24 592

原创 cursor使用教程(含项目实战)

Cursor 是一款集成了 AI 功能的代码编辑器,2024年Product Hunt产品榜:Cursor年度MVPcursor支持多款ai模型 包括最新出的ai模型(如:claude3.7 一般情况使用claude3.7即可 ,亲测claude-3.7-sonnet-thinking很好用,回复速度较快)

2025-03-03 14:52:30 11567

原创 微信公众号验证token报错问题

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。1)将token、timestamp、nonce三个参数进行字典序排序。返回字符串因为序列化问题自动带上了"",导致腾讯校验失败。2)将三个参数字符串拼接成一个字符串进行sha1加密。appID和appsecret是会自动生成的。

2025-01-24 16:30:02 1187

原创 设计模式||模板模式(含代码示例)

模板模式(Template Method Pattern)是一种行为型设计模式,它通过在一个方法中定义一个算法的框架,而将某些步骤的具体实现延迟到子类中。模板模式允许子类在不改变算法结构的情况下,重新定义算法中的某些步骤。模式核心概念模板方法在基类中定义一个方法,该方法包含算法的框架(骨架)。使用基类中的其他方法来实现算法的各个步骤。抽象方法在基类中声明但不实现,具体实现由子类提供。钩子方法(可选):提供在算法执行过程中插入自定义行为的机会,通常有默认的空实现,子类可以选择性地重写。

2025-01-03 17:42:36 662

原创 设计模式||观察者模式(含代码示例)

观察者模式(Observer Pattern)观察者模式是一种行为型设计模式,用于定义一种一对多的依赖关系,当对象的状态发生变化时,所有依赖于它的对象都会自动收到通知并更新。核心思想观察者模式实现了对象之间的解耦:被观察者(Subject)专注于自身状态的管理,而观察者(Observer)专注于对状态变化的响应,二者通过通知机制进行交互优点解耦:被观察者和观察者之间的耦合度低,便于扩展。动态联动:可以动态添加、移除观察者,灵活性强。符合开闭原则:被观察者的状态变化通知机制对扩展开放,对修改关闭。

2024-12-27 16:14:41 2250

原创 设计模式-责任链模式

责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,用于将请求的发送者与接收者解耦,使多个处理对象都有机会处理该请求。这些处理对象通过形成一条链式结构依次处理请求,直到某个对象能够完成处理或处理链结束。责任链模式的核心思想是:将多个可能处理请求的对象连接成一条链,沿着链传递请求,直至某个处理对象处理它或链的末端。应用场景请求需要被多个对象处理:比如击鼓传花、事件冒泡机制、权限校验、日志记录等。请求的处理逻辑需要灵活扩展:可以动态地增加或移除处理器。

2024-12-27 11:03:55 1005

原创 android开发---Kotlin语言基础语法

IDE采用的androidStudio 可自行官网下载hl=zh-cn新建项目添加一个main方法,main()函数的左边出现了一个运行标志的小箭头。现在我们只要点击一下这个小箭头,并且选择第一个Run选项,就可以运行这段Kotlin代码了快速上手:没有安装编译器可以选择线上开发 https://try.kotlinlang.org。

2024-09-06 17:13:00 1554

原创 自动化测试--利用pytest实现整条业务链路测试

前面一章讲解了单个接口的测试,但是实际项目中,因为权限和登录状态的限制,大部分接口没办法直接访问到,这时候我们想访问到一个系统的接口,就需要模拟用户登录拿到用户的token和所拥有的权限之后再将这些信息作为参数传递给下游进行测试举个栗子:定义接口的基础 URL。所有需要这个 URL 的测试函数都可以使用这个 fixture。请求访问登录接口:return {之后请求访问登录页面这样我们就能拿到用户的token信息将用户的请求头信息按照系统存放的规则存入请求头中params = {

2024-05-17 17:15:59 498

原创 接口自动化测试工具-----pytest

以上代码的逻辑就是 根据用户传过来的name字段查询数据库,之后拿到用户信息之后和password字段作对比,如果密码正确就返回success 失败就是 error。首先确保安装了Python环境,首先,你需要确保已安装 Python 和 Pip。如果还没有安装,可以从。下载并安装最新版本的 Python。安装过程中请确保选中“Add Python to PATH”选项。之后搭建一个后端项目,以springboot项目为例。编写一个简单的模拟登录的接口,之后启动项目。之后查看是否安装成功。

2024-05-17 15:42:59 565 2

原创 百万级别mysql性能耗时自测

首次查询不走索引的条件下进行查询 耗时为 700ms左右 之后查询同样的sql,稳定在430ms (可能mysql自带的缓存机制)有索引(主键索引):首次查询140MS 之后稳定在2ms加入索引的耗时为 username字段的索引时间+主键索引的耗时 因为测试中name字段重复度较高 因此name索引查询几乎不耗时间,最终结果为4ms。

2024-04-21 17:27:36 924

原创 项目开发中用户数据脱敏如何实现?

利用 CONCAT()、LEFT()和RIGHT() 字符串函数组合使用,请看下面具体实现。-- RIGHT(str,len):从字符串str 开始,返回最右len 字符。-- CONCAT(str1,str2,…):返回结果为连接参数产生的字符串。-- LEFT(str,len):返回从字符串str 开始的len 最左字符。2.自定义工具类 实现统一管理进行数据处理。提供两种方式:正则表达式和长度判定形式。3.定义枚举类 获取脱敏信息的类型。举个栗子:对用户姓名进行脱敏。通过自定义注解的形式实现。

2024-04-06 16:55:33 550

空空如也

空空如也

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

TA关注的人

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