自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Day 2 · Java 后端工程代码审查 — 深入审查 Issue 与解决方案教学文

结论先行:这是一套"能跑但边界模糊"的经典 Cache Aside 实现——它假设了"DB 提交和 Redis 删除必然同时成功、且不会有并发读旧写回",而现实是两个系统之间不存在分布式事务。必须围绕"删除失败"与"并发写回"两条失败路径重新设计。不一定。 这是 Cache Aside(旁路缓存)模式的"阿喀琉斯之踵"。Cache Aside 的写路径规则是"先更新 DB,再删除缓存"(Write-Around 思路:让缓存下次读取时自然重建,而不是去更新缓存)。这个规则本身是对的——删除缓存比更新缓存更不

2026-08-28 16:02:34 428 6

原创 Pi :调试与可观测性——全链路日志、状态机断点与崩溃回放

第 9/15/19 节。

2026-08-24 10:10:52 513 4

原创 Pi :Agent 测评体系——从 Trajectory 到 Regression

可观测回答"Agent 做了什么",测评回答"Agent 做得好不好"。。这篇把 eval 方法论补全。

2026-08-19 17:19:36 668 5

原创 AI 时代审查思维:审查第一篇

一个很普通的电商下单服务,逻辑就三步:查库存、扣库存、建订单。@Service.orElseThrow(() -> new IllegalArgumentException("商品不存在"));throw new IllegalStateException("库存不足");代码读起来顺不顺?顺。有,有库存校验,有异常抛出,格式也干净。如果这就是你 PR 的全部内容,很多团队可能就点了合并。但先别急。我不找语法错误,我只判断:这代码上线后,可能出什么事?现在,我们走进审查者的脑子。

2026-08-16 16:30:47 471 10

原创 Pi :任务规划与执行语义——Plan、State、Replan 与 Termination

主循环回答"下一轮怎么跑",规划回答"下一步为什么这么跑"。——Pi 用循环内化了"隐式规划",但真正设计 Agent 时,你要把规划变成显式语义。这篇研究四件事:规划状态机、何时 replan、何时终止(这是 Agent 领域最深的坑)、以及 Pi 的隐式规划给了什么借鉴。

2026-08-16 09:02:40 710 8

原创 Pi :上下文工程——Context Assembly、Compaction 与 Memor

这是本系列最重要的"横向能力"篇。前面所有篇都在讲"Agent 怎么运行",这一篇讲。模型选错了可以换,上下文构造错了,Agent 会"越跑越傻"——这正是本系列一直强调"Context 是编译出来的"的完整展开。

2026-08-15 09:33:41 731 1

原创 Pi :内置四工具源码拆解——文件锁、变更快照与 bash 隔离

四个工具没有一个直接碰 Node 的 或 。它们全部通过注入的 ()操作文件系统、执行命令:这个抽象有三个直接收益:这是"工具层与操作系统解耦"的标准姿势——你的 Java 工具也应该定义 / 接口,而不是直接在工具里 。 的 schema():三个细节值得抄:① 输出有界,且明确告诉模型怎么读完。 工具描述原话:“输出截断 + 指引模型用 offset 继续读完”——Pi 把"怎么处理大文件"写进工具描述,模型按指引自动分页。② 图片是一等输入。 支持 jpg/png/gif/webp/bmp

2026-08-13 10:19:07 825 1

原创 Pi:Agent 主循环——调度内核与循环钩子

一期讲了工具循环怎么执行、扩展怎么接。这篇补上主循环本身的:输入怎么进来、推理和工具怎么调度、每轮状态怎么写、人在哪里介入、钩子在哪里触发。核心代码是,配合第 10、11 节(事件与钩子)。

2026-08-12 10:20:53 398 1

原创 Pi:模型层——大模型调度内核与“推理“支柱

系列入口:[[解剖Pi-八支柱视角下的极简Agent架构]](总纲)一期五篇拆完了"执行、会话、工具、安全、落地"。。模型层是整个 Agent 公式里"大模型"那一半——。这篇拆。但就是这么一层"统一 API",撑起了模型适配、流式、重试、超时、缓存、推理级别、上下文交接全部能力。

2026-08-11 09:11:43 716 1

原创 用“判断·授权·执行·记录·会话·隔离·决策·看见“八支柱解剖 Pi:一个极简 Agent 的“五内建、三外置“

上一篇文章《设计Agent与AI工具-总纲博客》里,我把 Agent 开发收拢成八个词——判断、授权、执行、记录、会话、隔离、决策、看见。,约 4 万 star,OpenClaw 的核心运行时构建在它的 SDK 之上)。这篇文章从 Pi 的 GitHub 仓库直接拉源码和文档,逐条核对:它是否符合这八支柱?符合到哪一层?不符合的地方,它自己的逻辑是什么?每一段结论都附源码或文档原话,不靠转述。

2026-08-09 10:23:26 643 4

原创 AI Agent 开发总纲:从提示词工程走向系统设计

那是因为你一直在看"树",没看到"林"。这篇文章是一张林的地图——把目录里那些博客(生产级 Agent、可观测性、上下文窗口、幂等、SSE、Redis、TTFT)和两个真实项目(Pi Agent Harness、Claude Code 会话式 CLI)串成一张总图,按四个维度收拢,最后补一节从 Session 设计里提炼的硬需求与软实力。看完它,你再回头看任何一篇,都能说得出"它解决的是这条链路上哪一个问题"。

2026-08-09 10:11:02 722 5

原创 AI 可观测性实战:从一条链路到最小可测性单元

一套可观测性建起来,最终的目的只有一个:当系统表现不好时,你能知道该动 Prompt、检索、模型、上下文还是工具。一次 AI 请求的完整链路,连同上下文来源、模型消耗、工具行为和质量结果一起被记录下来,问题就从"猜"变成了"查"。这是可观测性给 AI 系统带来的最大改变。

2026-08-06 10:40:01 573 2

原创 Agent 不是会调工具的聊天机器人,是断电了还能续跑的执行系统

不需要一次性把整个 Agent 平台搭出来。分三阶段,每一阶段都有明确的边界。

2026-08-04 10:53:54 493 3

原创 Redis实战:一个AI工作流系统里的五个应用场景,从传参到限流的完整链路

你给 Agent 平台发了一条消息:「帮我查一下昨天长沙的天气,整理成一段话发到工作群。这句话落到后端,会触发一串连锁动作:解析意图、抽取参数、查工具配置、调第三方 API、把多个子任务并行跑完再汇总。这一串动作里,Redis 至少会被摸到五次——登录态的 token 存了一次,工具的配置缓存读了一次,调用第三方前的限流计数加了一次,并行分支的结果写了一次,汇总节点抢锁抢了一次。这五次,正好对应五个经典场景。本文不讲「Redis 有哪些数据类型」这种开场白,而是顺着这一条真实请求的链路,把每个场景的。

2026-08-03 11:14:14 410 2

原创 幂等性实战:从一次重复扣款事故到生产级幂等链路

一个操作执行一次和执行N 次无论这个操作被调用多少遍,对系统状态的影响都只发生一次。幂等的本质:用一个全局唯一标识标记本次操作,执行前判断是否已处理,配合数据库约束兜底,保证多次调用结果一致。一个全局唯一标识—— 幂等键选对(业务流水号,不是自增 ID);执行前判断是否已处理—— 原子占位(Lua/SETNX/唯一索引),先占坑再执行;数据库约束兜底—— 唯一索引 / 状态机 / 版本号,让存储层成为永不失守的最后一层。从"是什么"到"怎么防",从单层方案到六层链路,绕了一大圈,其实幂等就是一套。

2026-08-02 09:52:20 680 3

原创 秒杀系统八股连环问:从超卖血案到生产级架构

秒杀是后端面试的"照妖镜"。一个抢购场景,从"能跑"到"能扛",中间隔着超卖、重复下单、消息丢失、最终一致性、热 Key、防刷……每一个都是真实生产事故的浓缩。面试官最爱的套路就是抓住你方案里的一个漏洞,顺着往下追一层——你越自信,他追得越深。这篇文章就是一场完整的模拟面试。我把一份真实的秒杀代码评审文档拆开,用面试官连环问的方式重新组织:每一层你以为自己答完了,面试官就补一刀,逼着你把架构再进化一轮。七层下来,正好覆盖一份生产级秒杀系统的全部考点。

2026-08-01 11:01:23 641 5

原创 TTFT优化:一个方案的5次推倒重来

回到最开始的那个直觉方案。它错了吗?其实没一条是错的。流式返回确实用上了,连接池确实省了握手,异步解耦确实让主链路短了几十毫秒。漏了链路的前半段:用户到服务器的路上,DNS和TLS在消耗看不见的时间漏了RAG的计算开销:Embedding和向量检索,占了30%以上却被当成"别人的事"漏了并发下的排队效应:单用户测试很快,不代表百万并发下依然快漏了"先看见再行动"的底气:没有分层Trace,每次排查都是一场猜谜好的优化方案,和"看起来对"的优化方案之间,差的就是这四件事。

2026-07-31 09:57:34 772 6

原创 代码在,测试过了,接口却 404?—— 多模块 Maven 项目 SNAPSHOT 依赖漂移的深度排查与原理剖析

❌ 反模式:mvn -f 子模块/pom.xml spring-boot:run原因:绕过 reactor,从本地仓库解析 SNAPSHOT,版本不可靠✅ 正模式:mvn -pl 启动模块 -am packagejava -jar 启动模块/target/xxx.jar原因:reactor 保证所有模块都是最新编译这次排查花了近两个小时。如果启动命令统一为 reactor + jar→ 问题根本不会发生如果理解 MockMvc 的 classpath 来源。

2026-07-30 11:54:07 337 3

原创 SSE 深度解析:从协议原理到生产落地

不支持自定义请求头,这是很多人的阻塞点。路线一(轻量级方案)—— Cookie 认证。服务端设Cookie,连接建立时自动携带。简单、安全、零代码。缺点是跨域场景下 SameSite 限制会导致 Cookie 不发送。路线二(重型方案)—— 先用 POST 换一次性 Ticket,再用 Ticket 连 SSE。本质上是用一个短暂的临时凭证,把"认证"和"建立流"拆成两步,避免 Token 长期暴露在 URL 里。路线三(完全自控)—— 放弃 EventSource,用fetch手写 SSE 客户端。

2026-07-30 09:33:46 737 5

原创 你的 ChatBot 没崩,只是还没撞上 Token 超限这堵墙

摘要本身也是一次 LLM 调用,花 Token + 花时间。如果一条 2000 Token 的消息你也去摘要,摘要的 prompt 就花了 300 Token,返回摘要又花了 200 Token——为了省 2000 Token 花了 500 Token,还多了 2 秒延迟。值不值?得设一个成本阈值:只有当消息 Token 数超过某个值(比如 5000 Token),才触发摘要。低于这个值,直接保留原文——不折腾。// 不够长,别浪费钱摘要try {

2026-07-29 22:29:46 527 4

原创 ConcurrentHashMap 深度解析:从问题到设计,从设计到源码

当某个线程发现自己区间的桶全部处理完毕,并且// transfer() 的退出逻辑(简化)// 当前区间的桶都处理完了// 这是最后一次进入——所有桶都已确认迁移完毕// 清除临时引用// ★ 切换到新数组!// 设置新阈值 = 新容量*0.75return;// CAS 将 sizeCtl 减 1(表示本线程退出扩容)// 检查是不是倒数第二个线程(即最后一个退出的线程)// 判断条件: (sc - 2)!// 如果相等 → 我是最后一个 → 需要收尾return;

2026-07-29 09:57:35 834 2

原创 java运行排错,新码旧jar

一个知识库列表接口挂了。这个名字有误导性。它不是编译器报的"找不到方法"——源码完全能编译通过。它是 JVM 在运行时发现某个 class 文件的二进制签名和调用方期望的不一致,抛出的一个Error子类。Error意味着这不是业务异常,是 JVM 层面的问题:当前 classpath 上加载到的类,和编译时用的类,不是同一个版本。

2026-07-28 15:01:30 507 3

原创 JVM 面试宝典:从入门到调优实战

概念全称包含内容面向用户JVM类加载器、运行时数据区、执行引擎核心运行环境JREJVM + 核心类库 + 资源文件Java 程序运行用户JDKJRE + 开发工具(javac、javap、jdb 等)Java 开发者。JVM 是整个 Java 生态的基石,屏蔽了底层操作系统的差异,实现了"一次编写,到处运行"。算法是否移动对象是否有碎片内存利用率适用场景标记-清除否是100%CMS 老年代标记-复制是否50% → 90%(HotSpot 优化后)新生代标记-整理。

2026-07-28 09:49:38 639 1

原创 Java 并发编程深度全解 —— 从八股到实战

JMM 通过关系来定义操作之间的内存可见性。如果 A happens-before B,那么 A 的结果对 B 可见,且 A 的执行顺序在 B 之前。六大核心规则│ ① 程序顺序规则 ││ 同一个线程中,前面的操作 happens-before 后面的操作 │// hb→ │// 后面的 ││ ││ ② volatile 变量规则 ││ 对一个 volatile 变量的写 hb→ 后续对该变量的读 ││ ││ ③ 锁规则 ││ 对一个锁的解锁 hb→ 后续对这个锁的加锁 ││ │。

2026-07-27 10:35:10 519 2

原创 JavaSE 深度梳理:从表层语法到底层机制

真正理解 JavaSE,不在于背下多少道面试题,而在于脑中有一条清晰的认知曲线——从"日常写的那些代码"出发,逐步下沉到 JVM 如何执行它们,再向外延伸到语言自身的演进逻辑。本文尝试按这条曲线组织全部核心知识点。

2026-07-26 10:29:03 570 6

原创 Java 集合框架八股:从全景架构到 HashMap 连环追问

对比维度JDK 7JDK 8数据结构Segment[] + HashEntry[] + 链表Node[] + 链表 + 红黑树(对齐 HashMap)同步机制ReentrantLock(分段锁)CAS + synchronized(桶级锁)锁粒度Segment(16个段)单个桶(bin)并发度固定的(默认16)动态的(=桶数量)扩容Segment 内部独立扩容多线程协同扩容(helpTransfer)红黑树❌✅size 计算分段计数,可能全锁。

2026-07-25 04:19:54 477

原创 从零构建一个 LLM Agent 框架:设计决策与 CLI 实战

直觉上你可能会写一个。

2026-07-20 17:24:11 453 4

原创 整了张修仙角色卡,能说的不能说的都在这了

先交代背景。我想在酒馆里跑修仙。不是那种穿过去系统激活追妻火葬场的修仙,是那种你散修一个灵石掰两半花、路边野店可能黑吃黑、筑基丹要攒三年材料还得看丹阁脸色——的修仙。但你我都知道普通角色卡做不到。AI记不住。昨天你刚筑基,今天问它你在什么境界,它:“你是一名筑基期修士……不对你好像还在炼气?等等我再看看——你是什么境界来着?就这种感觉。所以我去看MVU卡了。MagVarUpdate,一个让AI能读写变量的架构。然后我花了大概……一天?从v0.1干到v0.7,搞了37个文件,一张PNG。

2026-07-19 10:57:29 699 4

原创 ReAct 和 Plan-and-Solve,两种 Agent 模式你选哪个?

两个模式的取舍,本质上是在灵活性和结构性之间做权衡。ReAct 把决策权分散到每一步,模型实时决定下一步干什么。代价是 token 烧得多,还有死循环风险。Plan-and-Solve 把决策集中在规划阶段,后面就是机械执行。代价是一旦规划有误,整个任务可能白干。所以没有"哪个更好",只有"哪个更适合你当前的任务"。从 ReAct 开始试。跑通了但觉得 token 开销太大、或者模型经常跑偏,再考虑往 Plan-and-Solve 的结构化方向调整。

2026-07-15 16:59:18 745 4

原创 SSE 双队列架构进化之路:从 OOM 到网络漂移,一个后端项目的八次蜕变

这是一个 LLM 流式对话后端的故事。项目核心很简单——一条 SSE 连接(Server-Sent Events),把大模型的流式输出实时推给用户。听起来不值一提:一个队列存 token,一个 SseEmitter 推出去,完事。但线上教做人。LLM 生成太快,下游消费太慢 →OOM网络抖了抖,几个 token 丢了 →用户看到一篇残缺回答用户从 WiFi 切到 4G,三秒断连 →全量重跑 LLM,账单翻倍每一个问题都不是"加个 if-else"能解决的。

2026-07-13 15:52:25 922 5

原创 我用 AI 模拟面试官把自己“烤“了两轮,然后我悟了

Claude Code 是 Anthropic 的 CLI 工具,grilling 是它内置的一个面试模拟技能。macOS/Linux/Windows 都能装。不收费(用 API key 按 token 计费),一次模拟面试大概花几毛到几块钱,比你买一杯奶茶便宜。以上所有技术案例都是经典后端场景(MySQL 分页、Redis 缓存、连接池配置、线程池隔离),不管你是 Java、Go 还是 Python 后端,底层逻辑是通的。

2026-07-10 17:57:00 748

原创 MySQL通关指南:从索引到优化的硬核知识

意向锁不是用来"锁"的,是用来"通知"的——告诉别人:“我要加行锁了,你想加表锁的话先等着。

2026-07-08 20:30:12 877

原创 从Deepseek接口到自创建简单Agent

首先是定义函数"""星座运势工具""""""查询城市天气"""return f"{city} {date}:晴,24~30℃,微风""""数学计算,传入数学表达式"""try:return f"计算结果 {expr} = {res}"return f"计算失败:{str(e)}"这里定义了三个本地工具,分别是固定回答以及运算注意的是,到这并未能直接使用,因为你传给大模型,它是有固定json格式的tools = [# 工具1:星座运势"sign": {},},},

2026-07-07 17:20:39 636 1

原创 Workflow?还是Agent,教你如何选择

常规 Workflow 更适合全流程标准化、场景可穷尽、无需自主决策的固定工作,稳定性与运行效率更有优势;当业务满足需求开放多变、执行路径不可预判、需要自主规划复盘、多轮交互、高频迭代拓展任意两项特征时,常规 Workflow 的预设编排逻辑将无法覆盖全部业务情况,此时选用 Agent 是更适配的技术方案。

2026-07-06 11:25:55 512 1

原创 一文从prompt原理教你如何写一份skill

能力维度LLM 原生状态Skill 框架的策略机制模式匹配✅ 极强提供规范模板让 LLM 匹配生成Prompt模板填充✅ 极强JSON Schema + 格式模板Prompt头脑风暴✅ 强ADR + 选项对比Prompt清单检查✅ 强逐项验证清单Prompt角色切换✅ 极强每阶段赋予不同角色Prompt跨阶段记忆❌ 弱文件 JSON 传递工具 (read/write)状态跟踪❌ 弱增量记录 + 文件存在性检查工具 + 规则精确计数❌ 弱。

2026-07-05 13:02:44 529 3

原创 一文讲清楚流式生成核心:SSE

SSE 是基于标准 HTTP 协议、服务端向浏览器单向推送数据的流式通信方案,只能服务器发消息给客户端,客户端不能主动发消息给服务端。

2026-07-05 10:29:27 735 2

原创 VIbe Coding时期,推送项目惹众宾欢也

本文详细介绍了在 vibe coding 过程中如何安全地将项目推送到 GitHub,避免泄露 API 密钥等敏感信息。文章从推送前的安全检查开始,逐步讲解 Git 仓库初始化、代码提交、远程推送等完整流程,并提供了更新现有仓库的方法和常见问题解决方案。通过本文,您可以掌握安全推送代码的最佳实践,确保开发过程中的信息安全。

2026-07-04 16:24:59 491 2

原创 一文明白ai时代几个关键名词

1.序列长度暴增:一般来说你一句话可能分单词只有10个id,如果分单字的话,就可能会翻倍,而我们Transformer 的复杂度是n方,这就导致,可能是翻4倍或者更多的后果,长文本显存就爆炸了,以及能处理的长文本长度直接缩水,无法接受一般。欸,RNN(循环神经网络),非常符合人的直觉,逐字扫描,按时间状态,逐Token处理,这就会涉及到后面Token是依赖前面Token的问题的,导致了以下几个问题。比如说越接近1,就是越相似,越接近-1,就是越不相似,不受向量模影响,而L2欧式距离是计算两直线的距离。

2026-07-01 15:59:50 491

空空如也

空空如也

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

TA关注的人

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