第一回引言:从“对话”到“推理”的范式转变
传统的LLM应用大多基于“单次问答”或“线性链式(Chains)”模式。在这种模式下,模型如果第一枪没有打中,应用就宣告失败。而在实际工业场景中,我们迫切需要Agent具备像人类一样的反思、推理与迭代纠错能力。
本文将聚焦于如何利用 ReAct 模式、LangGraph 状态机 与 PydanticAI 结构化输出 三大核心技术,从零构建一个具备“自我纠错(Self-Correction)”能力的智能化代码生成 Agent。
一、 核心技术栈深度解析在动手构建复杂系统之前,我们必须先理清底层的技术支柱。一个拥有自主决策能力的 Agent,其大脑由以下三个关键部分构成:
1. 决策范式:ReAct 模式(Reason + Act)传统的 LLM 习惯于直接输出答案,而 ReAct 模式改变了这一习惯。它强制大模型按照 思考(Thought) $\rightarrow$ 行动(Action) $\rightarrow$ 观察(Observation) $\rightarrow$ 再思考 的闭环逻辑运行。
在代码生成场景中,这套模式的映射非常直观:
Thought(思考) :分析用户的需 ...
SPA发版后偶发白屏:场景、根因与治理方案
本文结合具体应用场景,说明我们遇到的在生产环境偶发整页空白的问题:在什么条件下出现、如何定位、项目内已采取哪些措施、以及仍依赖运维侧配合的部分。
1. 现象
用户侧:页面突然白屏或长时间无内容,常发生在发版后的一段时间内,且并非所有用户同时复现。
浏览器开发者工具中常见(可能同时出现多项):
Failed to load module script:期望加载 JavaScript 模块,响应的 Content-Type 却是 text/html。
Failed to fetch dynamically imported module / Importing a module script failed 等动态 import() 相关错误。
网络面板中:对 .../assets/*.js 的请求返回 404,或返回 200 但正文为 HTML(实为 SPA 回退页)。
另有一条独立但常一起出现在控制台的问题:**413 Request Entity Too Large**(附件上传超过网关或服务端请求体限制)。它不直接导致「JS 白屏」,但会干扰排障,需在文档中区分。
...
从“不存在”的重复请求,聊到 Web 存储的深坑
在 Web 开发中,有些 Bug 的隐蔽性极高,它们往往藏在浏览器的底层机制和复杂的交互链路中。最近我们遇到了一个关于“邀请码重复绑定”的诡异问题,最终溯源发现,这不仅涉及前端的存储选择,还涉及浏览器对网络请求的展示逻辑。
问题背景项目中有个典型的裂变需求:用户 A 分享链接给用户 B,B 点击链接进入站点(URL 携带邀请码),点击登录后调起微信授权,登录成功后前端调用 /invites/bind 接口完成绑定。
现象: 后端数据库出现了同一个用户被重复绑定的两条记录。 初步排查: 后端日志显示,两个 /invites/bind 请求几乎在同一秒(间隔仅几十毫秒)到达服务器。
疑点一:消失的“第二次请求”前端最初的结论是: “后端背锅” 。理由看似非常充分:
控制台证据:Network 面板从头到尾只显示了一条 bind 请求。
逻辑自洽:前端代码对 bind 请求做了严格控制,执行前会判断 SessionStorage 中是否存在邀请码,请求发出的那一刻会立即清空该值。理论上,第二次请求根本过不了判断逻辑。
然而,后端日志是铁证。为什么控制台只显示一条请求,后端却收到了两条 ...
未来已来-论ai时代的最佳编程实践
三十多年前,软件工程的鼻祖弗雷德里克·布鲁克斯(Frederick Brooks)在他的神作《人月神话》里掐指一算,断言:“编程界没有银弹。” 他的意思是,没有任何一种技术或管理方法,能像杀掉狼人的银弹一样,让软件开发的生产力在十年内提高一个数量级。
老布当年说这话时,手里可能还攥着打孔卡片或者在为 C++ 的内存泄漏掉头发。他大概做梦也没想到,三十年后,人类真的搞出了一颗闪着赛博光芒的“准银弹”——人工智能。
现在的编程界,画风已经彻底从“面向 Google 编程”进化到了“面向意图编程”。如果你还在坚持纯手工一行行敲代码,并以此为傲,那感觉就像是在 F1 赛场上坚持骑自行车,虽然锻炼身体,但确实追不上那群开了挂的“提示词工程师”。
那么,在这个 AI 领跑的时代,什么样的编程实践才称得上是“最佳”?让我们聊聊如何优雅地装上这颗银弹。
一、 从“搬砖工”进化为“包工头”:提问力的觉醒以前我们评价一个程序员优不优秀,看的是他的“手速”和“记忆力”——能不能盲打正则表达式?能不能背出 Linux 的八百个参数?
在 AI 时代,这些技能的价值正在迅速贬值,贬值速度堪比没通电的比特币。A ...
现代单页应用(SPA)中微信授权登录的高可用架构实现
深度解析:现代单页应用(SPA)中微信授权登录的高可用架构实现在当前的 Web 开发生态中,微信扫码登录已成为 B/S 架构系统的标配。然而,如何在单页应用(SPA)中优雅地处理跨窗口通信、状态校验、以及 Nginx 层的路由分发,是衡量一个系统工程化水平的重要指标。本文将结合实际项目经验,深度拆解一套工业级的微信授权登录全链路实现方案。
一、 授权发起的严密性:State 校验与环境预判授权的第一步并非简单地跳转链接,而是确保请求的安全性和上下文的可追溯性。
1. 安全指纹:State 的生成与持久化为了防御 CSRF(跨站请求伪造)攻击,前端在请求后端获取微信授权 URL 之前,需生成一个随机的 state。在本项目中,该 state 被写入 localStorage 而非 sessionStorage。
技术细节:由于微信授权往往涉及新窗口弹出(window.open),子窗口与父窗口之间需要共享状态。sessionStorage 仅在单一标签页生命周期内有效,无法跨窗口传递。
2. 交互降级策略为了提供极致的用户体验,前端通常优先尝试使用 window.open ...
小绿专题:第一回
本文开始,我们将开始小绿专题,此为Unite1BENEBENE:meaning “well”
benediction:well + speaking
benefactor:someone who helps another person or groups.especially by giving money
beneficiary: a person or organization who will get money or property when someone die
benevolence: kindness
AMAM: meaning “to love”
amicable: friendly,peaceful.describe relations between group or nations
enamored: be fascinated
amorous: describe a couple, or another
paramour: a lover, often secret,not allowed by law or custom
BELLBELL: me ...
四轴无人机研究:第二回
本文继续我们先前的无人机研究升力从何而来压强差。因为气流的高速流动,导致桨叶上方压强小于下方,形成压强差抬升飞机。一般四轴无人机斜角方向桨叶一致,两侧相反,负负得正。
几个角度偏航角,横滚角,俯仰角。方向如何控制的实践,就是让一侧的压力高于另一侧。
电机无刷电机,空心杯有刷电机
PWM:标准化方波。
电池如三元锂电池,家用一度电: 1kwh
电源芯片用来管理充放电
陀螺仪测量飞行姿态。位于无人机最中间.
通信模块激光测距仪遥控器PID控制算法反馈控制算法
最后插个题外话电流供电后,电动机是怎么动起来的呢?感兴趣的可以去了解下
家用电学常识
本文介绍家用电学基础核⼼电学参数电压(U)单位伏特(V),电路中两点间的电位差,是电流流动的动⼒。
家庭⺠⽤供电:单相220V(⽕线与零线间),三相380V(三相⽕线间);
⼯业供电:三相380V/220V(星形接法,⽕线与零线间220V,⽕线间380V);
安全电压:≤36V(潮湿环境≤12V),⽤于⼿持电动⼯具、照明等危险场景。
电流(I)单位安培(A),电荷定向移动形成的电流,分直流(DC)和交流(AC)。
交流电流:家庭、⼯业常⽤,⽅向和⼤⼩随时间周期性变化;
直流电流:电池、直流电机等设备使⽤,⽅向固定;
常⽤电流范围:家庭插座回路10-16A,空调、电热⽔器等⼤功率设备16-32A,⼯业电机根据功率不同,电流从⼏安到⼏⼗安不等。
电阻(R)单位欧姆(Ω),导体对电流的阻碍作⽤,电阻越⼤,电流越⼩。
常⽤导体电阻:铜<铝<铁,电⼯布线优先选⽤铜芯线(导电性能好、电阻⼩、发热少);
电阻计算公式:R=U/I(欧姆定律),核⼼⽤于电路计算、故障排查。
功率(P)单位⽡特(W),表⽰电⽓设备消耗电能的速度,计算公式:P=UI(单相 ...
盐值化加密
本文介绍盐值化加密过程.注册
同后端约定加密算法,如SHA-256,
前端随机生成盐值
密码 + 盐加密
传「加密密码 + 盐值」给后端存储;
登录
通过用户名或取盐值如/api/getSalt?username=张三,只传账号,不传密码;
用登录密码 + 盐,算法加密
传加密值给后端对比;
核心:全程不传输、不存储原始密码,盐值随机唯一避免被破解。注意,sha256是单向哈希算法(散列算法)。从后端角度看,他有你加密后的一串字符以及盐值。但无法看到你的密码。
Docker概览
本文主要是干货介绍,docker相关的内容。豆包解释,“Docker 是「应用打包 + 跨环境运行」工具,核心解决环境不一致、部署繁琐问题;解决 “我本地能跑,你本地跑不了” 的经典问题。核心是 “打镜像(打包)- 跑容器(运行)”,轻量且隔离性强;”所谓的镜像,就是打包好的 “应用安装包”,可以理解为手机 App 安装文件。所谓容器,就是镜像运行起来的实例(可读写),可以理解为安装好的手机 App。你:负责写好 Dockerfile(一次性的工作)团队:享受一致的开发环境(永久的便利)项目:获得了环境一致性(长期的价值)
说白了,就是把项目及跑项目的环境一块给你打包了。
这解释是很清晰,但我首先一个问题,对于一个前后端分离的项目,该如何操作呢?
具体操作对于前后端分离项目,Docker 核心是给前端、后端、数据库分别打镜像、跑容器,再用 Docker Compose 一键管理所有容器(避免手动启动多个容器)。
