qpeter

qpeter

暂无个人简介
Java后端
2025
老鱼大学

该用户为会员

会员专享项目教程/ 答疑等服务

✅ 今天做了 1. 刷一小时面试鸭 2. 总结 AskHuman 以及智能体的架构 ⏰ 明天计划: 1. 刷一小时面试题 2. 输出智能体及其 AskHuman 的系统性文档 📚 今日感悟: 今天算是把智能体架构和 Human-in-Loop 啃下来了。最核心的是CompletableFuture<T>的使用,通过这个来阻塞唤醒线程并传递 Human Answer。底层原理是 CAS,相比于线程睡眠导致 CPU 空转效率要高得多了。 再一个就是要给 AgentState 加 volatile 字段确保智能体状态在多个线程之间的可见性,因为 AgentState 是控制智能体循环的核心。 起一个异步线程池专门用来异步跑 Agent 实例,最后就是 Agent 实例的继承关系,最后 Agent 实例拥有继承来的所有属性。所以需要再定义一个 AgentManager 来获取和创建实例。

✅ 今天做了 1. 刷一小时面试鸭 2. 复习智能体构建 3. 智能体 AskHuman 并发收尾 ⏰ 明天计划: 1. 刷一小时面试题 2. 总结 AskHuman 以及智能体的架构 📚 今日感悟: 彻底被 AI 折服,vibe coding 后端中,AI 连 NPE 都考虑到了,写代码这方面被 AI 完爆,今天是在学习 AI 是如何搭建 Human-in-Loop 的。 主要是通过三个线程配合 + Loop 的状态来完成的,三个线程分别为启动对话的 Tomcat 线程,后台异步运行智能体实例的线程,接收 Human Answer 的 Tomcat 线程,这三个线程操作的都是同一个 Manus 实例,所以就会有并发问题。 并发问题用到了 ConcurrentHashMap 来维护 Manus 实例和 ChatId 的映射,以及 CompletableFuture 来控制线程的阻塞唤醒和传递 Human Answer 。 NPE 的问题是接收 Human Answer 的 Tomcat 线程如果在异步线程之前设置了 Future 来传递信息,此时 Future 就为 null 了。所以需要在代码中加入 null 检查。 之前其实踩过 NPE 的坑,还是 dubug 排除出来的,但是这里确实没有想过 NPE 的问题,对于并发编程这一块我还是很薄弱的。

✅ 今天做了 1. 刷一小时面试鸭 2. 智能体 AskHuman 实现 ⏰ 明天计划: 1. 刷一小时面试题 2. 智能体收尾 📚 今日感悟: 今天发现一个还不错的技巧,直接在后端的 vibe coding 会话中,让他生成对应 vibe coding 前端的提示词,前端的开发和联调效率要高不少。 智能体的实现还是很有别于对话的实现的。实现 AskHuman 本质还是工具调用,模型思考是否需要 AskHuman,然后通过调用工具,把用户的输出添加到本次实例维护的消息记忆中,同时需要保存并暂停当前智能体执行的快照。

✅ 今天做了 1. 刷一小时面试鸭 2. 智能体历史对话 ⏰ 明天计划: 1. 刷一小时面试题 2. 智能体 AskHuman 📚 今日感悟: 接口文档还是很重要的,接口文档没有搞清楚,很容易出现调错了接口,最后重新返工,得不偿失。前后端联调的过程中会发现很多问题,需要一一处理。 但是真正跑通了呈现出来了自己真正想要的效果真的很爽。

✅ 今天做了 1. 刷一小时面试题 2. Claude 后门原理 & Harness Engineering 3. 改造智能体项目第一阶段,定为研发规范智能体 ⏰ 明天计划: 1. 刷一小时面试题 2. 智能体 AskHuman + 历史对话 📚 今日感悟: 今天看了大佬“执笔经年”的“从零构建企业级知识库平台“的帖子。看完觉得自己还是太菜了,了解的知识还是不够,还是存在着很多问题需要改进的,非常欠缺这种企业级项目的落地经验。 项目技术选型、架构权衡、版本迭代,背后的各种思考,AI 应用开发本质考查的还是后端的工程能力,官方文档的阅读应用能力,自己还有着太多需要进步的地方了。 终于知道为什么飞行员都用飞行时长来衡量技术了,作为开发者,项目时长也是衡量技术的核心参数。

✅ 今天做了 1. 刷一小时面试题 2. 复习类加载 3. 串字符串常量池与类加载 ⏰ 明天计划: 1. 刷一小时面试题 2. 改造智能体项目 📚 今日感悟: 之前学习时,一直不知道类加载时的符号应用和常量池有什么具体的应用,只知道概念,今天在看 HashMap 时中的 equals 与 hashCode 的联系时,发现了关于 String 的一个知识点:字符串常量池,这里是可以跟类加载的解析阶段串起来的。 字符串常量池的作用就是为了实现字面量复用,使用双引号创建字符串,这个字符串的内容就是字面量。 这里和类加载联系起来两步走: 1. 字符串常量池中无相同字面量。需要在堆里新建字符串对象,然后在字符串常量池中创建引用信息,运行时常量池中存放对应的符号引用,等类解析完了再把符号引用替换为直接引用。 2. 字符串常量池中存在相同字面量可以直接复用。这个时候就不需要在堆里创建新的字符串对象,而是直接将运行时常量池中存的字符串引用返回。

✅ 今天做了 1. 刷一小时面试题 2. 搬家收尾 ⏰ 明天计划: 1. 刷一小时面试题 2. 改造智能体项目 📚 今日感悟: 可视化自己的记录,分配时间时,就会发现自己最上游的运行规律和节奏是睡眠,千万不能为了把下游程序写的漂亮点就去修改能让一切正常运行的上游代码,上游是绝对不能动的底层架构,但是可以去优化中间件,把一些其他事情时间给压缩出来。

✅ 今天做了 1. 复盘反思上周 2. 调整简历,思考下一步行动 ⏰ 明天计划: 1. 刷一小时面试题 2. 改造智能体项目上线 📚 今日感悟: 坚持打卡,保持约束力和习惯。 搬家换了新环境,导致很多东西都需要慢慢适应,今天才开始静下心来重新坐在书桌前。

✅ 今天做了 1. 刷 1 小时面试鸭 2. 了解跨系统调用的落地方案 3. 了解 HashMap 中的 Hash 冲突以及 Hash 扩容原理 ⏰ 明天计划: 1. 刷 1 小时面试鸭 📚 今日感悟: 早点睡觉喽,熬夜有毒,停不下来,保持健康的作息真的太重要了。 对接不用的系统接口可以使用策略模式,使用 Map 来存策略, 使用构造器注入往 AuthStrategyFactory 类中注入再用 Stream 流存进 Map 中,Spring 自动把容器中所有 AuthStrategy 实现类收集成 List 注入进来,完成策略工厂的自发现。 这就是策略模式 + 工厂模式的经典 Spring 落地——新增认证策略只需加个 @Component,构造器注入 + final 保证了策略映射表的不可变性和完整性。

✅ 今天做了 1. 自行实现 API 开放,使用适配器模式配合 HttpClient 调用 2. 刷 1 小时面试鸭 ⏰ 明天计划: 1. 刷 1 小时面试鸭 2. 了解 HashMap 中的 Hash 冲突以及 Hash 扩容原理 📚 今日感悟: 感觉跨调用这一块更需要完整的去看一下 API 开放平台,存在很多问题没有理清楚。AI 给我搞了个 OpenFeign 跨系统调用,仔细研究,这玩意是严重依赖微服务的服务发现的,不适合单体项目。 Hutool HttpUtil + 策略模式封装认证逻辑,比 OpenFeign 更轻。 真正要注意的是 API 签名认证保证跨系统调用安全。

下载 APP