<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[https://github.com/Jul1en-Lin]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/TwoCat_C</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TwoCat_C]]></copyright><item><title><![CDATA[【Pi 超轻量插件】让 Jev 去掉无用的工具调用结果，留一个清爽的上下文！]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/166490979</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/166490979</guid><author>TwoCat_C</author><pubDate>Wed, 23 Sep 2026 19:50:15 +0800</pubDate><description><![CDATA[长会话里那些“食之无味”的历史工具输出在使用 AI 进行较复杂的重构或排查任务时，都会遇到上下文过多压缩的情况。在 Pi 中虽然说有压缩命令，但我们可以看看他具体压缩了些什么。如果你用 Pi 跑过时间稍长的任务，大概清楚那个感觉：上下文里堆着几十轮的工具输出，read 读了几百行源码的结果、bash 吐出来的长串依赖树、反复试错时留下的废弃命令……这些东西凑在一起，等到上下文快满、准备压缩时，它们依然原封不动地躺在那儿，等着被一口气扔进去做摘要。]]></description><category></category></item><item><title><![CDATA[Matt 与 Uncle Bob 的播客访谈有感]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/164630754</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/164630754</guid><author>TwoCat_C</author><pubDate>Tue, 08 Sep 2026 20:29:00 +0800</pubDate><description><![CDATA[在 context window 中，随着上下文不断变长，“lost in the middle“ 现象就会慢慢浮现，即模型对于比较久的和最新的对话的记忆比较清楚，但是在中间的内容却很难记得住。所以你的目标是把自己从代码里抽出来，不靠人工审查，在代码周围搭一层脚手架，自己尽量少碰，还要把 agent 拘在最紧的束缚衣里，让它没法犯错。主管工程师也好、谁也好，那个手里跑着一串 agent，自己当将军的人，应该把你当一个 agent 看：派同样的活，上同样的确定性工具。如果叠的过多显然是有的，甚至比人还慢。]]></description><category></category></item><item><title><![CDATA[【Java 脚手架】OSS 存储 SDK/V4 签名实现上传]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/164292804</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/164292804</guid><author>TwoCat_C</author><pubDate>Wed, 02 Sep 2026 10:54:57 +0800</pubDate><description><![CDATA[OSS（Object Storage Service）是一款海量、安全、低成本、高可靠的云存储服务，多种存储类型供选择，全面优化存储成本。优先使用 OSS 提供的 SDK 发起请求，因为 SDK 已集成复杂的 V4 签名算法。只有在无法使用 SDK 时，才需要参考本文自行实现 V4 签名算法。此实例代码在完成上传功能后都会尝试关闭 OSSClient，不符合此脚手架的业务逻辑，需保持开启。由于官方 SDK 已集成复杂的 V4 签名鉴权，只需传入必要的 sk 与 region 字段即可。]]></description><category></category></item><item><title><![CDATA[做脚手架过程中遇到的自动装配的细节问题]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/164226793</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/164226793</guid><author>TwoCat_C</author><pubDate>Mon, 31 Aug 2026 18:15:25 +0800</pubDate><description><![CDATA[考虑到文件服务是单独存在的，所以应该有一个启动类，那么。我当时的 OSS 文件配置模块既没有启动类，也没有 imports 文件，光存在。这次在文件服务里照抄 bite 项目的 OSS 配置时撞到了这个问题。脚手架里的 Redis、Caffeine、统一异常处理都是后者，所以要用。是 starter 的推荐写法，不做 CGLIB 代理，启动更快。，防止 starter 里的自动配置类被消费方的包扫描误扫进去。文件服务这种独立启动的模块，其实用。，所以他能被启动类扫描到。起到了作用， 普通的。]]></description><category></category></item><item><title><![CDATA[【Java 脚手架】封装通用工具类-3]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/164151876</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/164151876</guid><author>TwoCat_C</author><pubDate>Fri, 28 Aug 2026 19:06:25 +0800</pubDate><description><![CDATA[所以引入了本地缓存 [[Caffeine 介绍|Caffeine]]，在脚手架里做成了三层缓存结构：L1 是 Caffeine（本地内存），L2 是 Redis，L3 是 DB。因为我会注册很多的 Bean，有给 Redis 的，有 RabbitMQ 的，还有 Caffeine 的，但是都是怎么将合适的 Bean 来装配到对应的 Template 的呢？业务没跑完锁先过期，另一个线程把锁拿走了，原线程 finally 里直接 DEL，删的就是别人的锁。设长了，服务宕机后锁迟迟不释放，后面的请求全堵着；]]></description><category></category></item><item><title><![CDATA[Caffeine 介绍]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/164123057</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/164123057</guid><author>TwoCat_C</author><pubDate>Thu, 27 Aug 2026 18:03:32 +0800</pubDate><description><![CDATA[以下介绍基于官方 wiki 解释Caffeine 是一个基于 Java 8 开发的提供了命中率的的缓存库。为了提高集成度，扩展模块提供了和适配器。JSR-107 规范了基于 Java 6 的 API，在牺牲了功能和性能的代价下使代码更加规范。Guava 的 Cache 是 Caffeine 的原型库并且 Caffeine 提供了适配器以供简单的迁移策略。]]></description><category></category></item><item><title><![CDATA[【Java 脚手架】封装通用工具类-2]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/163776548</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/163776548</guid><author>TwoCat_C</author><pubDate>Sat, 15 Aug 2026 11:57:54 +0800</pubDate><description><![CDATA[在 Postman 能看到是被正常捕获的，但是返回的 msg 丢失了，与预期返回的字符串不符合。，因为本身脚手架是 Spring 项目，且 Spring 封装的线程池类能够更方便的对线程池的一些配置进行修改，且设计初衷需要满足 nacos 动态配置的要求，所以用。做成了一个 starter，其他微服务引入依赖，异常处理器就自动生效了。通过 debug 可以看出 retMsg 在经过 ex.getMessage() 后得到的是空值，原本的默认值也被覆盖了。这个文件，里面写了要加载的配置类。]]></description><category></category></item><item><title><![CDATA[【Matt Pocock Skills】全新工作流详解]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/163763201</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/163763201</guid><author>TwoCat_C</author><pubDate>Fri, 14 Aug 2026 22:39:40 +0800</pubDate><description><![CDATA[一切教程与观点都来自本人的实战体验与 Matt 的官方 skill 介绍和直播讲解，欢迎交流讨论！Matt Pocock 的 Skills 是一套给 coding agent 使用的工程工作流。每个 skill 都是边界清楚，大部分都要手动调用 slash command 才能触发，根据实际场景来动态调整。而且 Matt 的思想是将问题先经过不断的挖掘，然后变成spec文档，确定好前进方向后，将问题拆分成多个 issue，然后 issue 中有可能包含多个非常简单的子 issue。以ticket。]]></description><category></category></item><item><title><![CDATA[【工作流更新】从 Superpower 到 Matt Pocock]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/163543341</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/163543341</guid><author>TwoCat_C</author><pubDate>Thu, 06 Aug 2026 21:23:17 +0800</pubDate><description><![CDATA[Matt Pocock 的 skills 走另一条路：不设对话开始时的总入口，直接把 skill 分成两类。一类是主动调用的 slash command 命令，例如grill-meto-specto-ticketsimplementhandoff。它们通常对应一段明确的协作动作：把一个想法问透、把想法写成规格、拆成任务、开始实现、交接上下文。其他的技能例如tddprototyperesearch，只在合适的时候在 Matt 工作流中被调用，平时开发只需要注重主动调用的 slash command 即可。]]></description><category></category></item><item><title><![CDATA[Agent Harness Engineering Survey 论文所想]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/163483858</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/163483858</guid><author>TwoCat_C</author><pubDate>Wed, 05 Aug 2026 00:26:36 +0800</pubDate><description><![CDATA[这篇文章总结了《Agent Harness Engineering: A Survey》论文的核心内容，系统性地梳理了AI代理控制框架（Harness Engineering）的发展脉络和技术架构。]]></description><category></category></item><item><title><![CDATA[Codex 降智原因与 system prompt 修复指南]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/163483839</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/163483839</guid><author>TwoCat_C</author><pubDate>Wed, 05 Aug 2026 00:23:45 +0800</pubDate><description><![CDATA[这篇笔记整理了关于这个问题在目前社区里测试有效的几种修复方法。]]></description><category></category></item><item><title><![CDATA[【Java 脚手架】封装通用工具类-1]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/163451249</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/163451249</guid><author>TwoCat_C</author><pubDate>Mon, 03 Aug 2026 22:02:29 +0800</pubDate><description><![CDATA[记录我在学习制作 Java 脚手架项目时遇到的问题和知识点，以便后续复盘学习～]]></description><category></category></item><item><title><![CDATA[【Claude Code】Compact 源码级别的学习上下文压缩]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/163420211</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/163420211</guid><author>TwoCat_C</author><pubDate>Sun, 02 Aug 2026 20:52:29 +0800</pubDate><description><![CDATA[这次是沿着 Open-ClaudeCode 里恢复出来的 Claude Code 2.1.88 源码，专门看了一遍上下文压缩的原理 compact。我把它理解成“对话太长时生成一个摘要”，但顺着调用继续看会发现，摘要只是其中一层。真正让任务在 compact 后还能接着做的，是 summary、最近原文、程序状态、附件、Hooks 和 transcript 一起配合。]]></description><category></category></item><item><title><![CDATA[【Claude Code】Fable 5 提示指南]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/162582382</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/162582382</guid><author>TwoCat_C</author><pubDate>Sat, 04 Jul 2026 15:49:21 +0800</pubDate><description><![CDATA[从这份文档来看，Fable 5 的核心转变是从「单次对话中的强大模型」变成了「能跑几天的自主 agent」。相应地，使用方式也需要从「逐条指令」转向「给目标、给边界、异步检查」。之前为 Opus 4.8 写的很多 prompt 技巧可能不再必要，甚至适得其反——这倒是给了一个机会重新审视并精简现有的框架。]]></description><category></category></item><item><title><![CDATA[【AI】Codex 的工作流更新-v3 [Codex-maxxing for long-running work]]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/162278478</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/162278478</guid><author>TwoCat_C</author><pubDate>Wed, 24 Jun 2026 22:15:05 +0800</pubDate><description><![CDATA[最近 OpenAI 的一篇博客：分享了关于长周期复杂任务的指南，并针对我已有的工作流作出一些更新。长周期的复杂任务通常不是一次 prompt 改完代码就结束。它可能要经历调查、实现、预览、反馈、等 CI、继续修改、准备 PR、后续检查。该博客更像是总结了 Claude Codegoal和loop命令的思想 💭。]]></description><category></category></item><item><title><![CDATA[【SpringCloud】SkyWalking 链路追踪知识详解及部署教程]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/162012801</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/162012801</guid><author>TwoCat_C</author><pubDate>Mon, 15 Jun 2026 18:05:30 +0800</pubDate><description><![CDATA[自动插件主要覆盖框架入口和常见中间件。纯业务方法、自研协议、特殊线程模型可能不会自动出现，这时可以使用 Java Agent Toolkit。]]></description><category></category></item><item><title><![CDATA[【SpringCloud】超详细的 Seata 分布式事务：从全局事务到 AT、TCC、Saga]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/161985551</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/161985551</guid><author>TwoCat_C</author><pubDate>Sun, 14 Jun 2026 23:31:34 +0800</pubDate><description><![CDATA[Seata是 Spring Cloud Alibaba 体系里常用的分布式事务解决方案。它解决的核心问题是：微服务拆分之后，一个业务请求可能跨多个服务、多个数据库，Seata 负责把这些分散的本地事务组织成一个全局事务，让整条业务链路尽量保持一致。Seata学习 Seata 时可以先不展开某个注解或配置，先看这条主线：微服务把一个业务动作拆成多个本地事务，Seata 再用全局事务把这些本地事务协调起来。]]></description><category></category></item><item><title><![CDATA[【AI】Claude Code 迁移至 Codex 的工作流更新-v2]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/161697735</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/161697735</guid><author>TwoCat_C</author><pubDate>Thu, 04 Jun 2026 23:10:08 +0800</pubDate><description><![CDATA[之前做了一版工作流更新的博客，现有新的体会，故花时间思考重新整理了一下个人开发的工作流，发现还是有不足的地方：原有的项目维护过于笨重，需要有两套不同的工作流来适应不同的项目开发 : )这次主要是在整理 Codex / Claude Code / 其他 Agent 之间的项目初始化工作流。之前有两个入口，一个是偏 Claude 的setup，主要维护CLAUDE.md；另一个是偏 Codex 的，主要维护AGENTS.md。]]></description><category></category></item><item><title><![CDATA[【Redis】事务详解、WATCH 实现思想]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/161697677</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/161697677</guid><author>TwoCat_C</author><pubDate>Thu, 04 Jun 2026 23:01:19 +0800</pubDate><description><![CDATA[乐观锁的想法是：我先假设冲突不会发生，所以不提前把资源锁死；等真正提交时，再检查有没有被别人改过。悲观锁是：我觉得一定会有人抢，所以我先加锁。别人想操作，必须等我释放锁。乐观锁是：我觉得大概率不会冲突，所以大家都可以先操作，提交时再检查有没有冲突，如果冲突了，我就失败重试。]]></description><category></category></item><item><title><![CDATA[【Redis】Docker 部署集群补充说明]]></title><link>https://blog.youkuaiyun.com/TwoCat_C/article/details/161697637</link><guid>https://blog.youkuaiyun.com/TwoCat_C/article/details/161697637</guid><author>TwoCat_C</author><pubDate>Thu, 04 Jun 2026 22:54:26 +0800</pubDate><description><![CDATA[上一节的Redis部署集群还有些不太清楚的地方，这里做补充说明，这次我们用 docker 部署 11 个 redis 节点，九个用于部署集群，两个用于扩容练习，集群的结构类似于如图，由于 redis 部署集群时内部的随机性，可能节点的静态 ip 所属的角色都不太一样，无伤大雅～]]></description><category></category></item></channel></rss>