RAG 解决什么问题?LLM 有两个先天局限:知识截止日期,以及幻觉(对不知道的事情也会编出答案)。RAG(Retrieval-Augmented Generation,检索增强生成)是当前最成熟的解决方案——在 LLM 回答问题之前,先从知识库中检索相关文档,把检索结果和问题一起塞进 prompt,让 LLM 基于真实文档回答。
对代码审查 Agent 来说,RAG 的具体场景是:用户问”...
为什么 Agent 需要安全护栏?一个能调用工具的 Agent 本质上拥有代码执行能力。read_file 能读文件系统,search_code 能执行 grep 命令,write_file 能覆盖本地文件。如果不加约束,一个错误的工具调用就能造成实际破坏。
这和传统 Web 应用的安全模型完全不同。传统应用中,用户能做什么由前端表单和 API 接口限定。但在 Agent 架构里,LLM 决...
问题:Agent 为什么会”失忆”?代码审查 Agent 的典型对话流程是这样的:
123456用户:审查 src/components/ 下的所有文件Agent:list_directory → 发现 8 个文件Agent:read_file("src/components/Button.tsx") → 审查Agent:read_file("src/compo...
为什么手写而不是用 LangChain?在开始之前,先回答一个会被反复问到的问题:市面上有 LangChain、Vercel AI SDK、CrewAI 这么多 Agent 框架,为什么要自己手写?
我的回答是:如果你只是想把 Agent 跑起来,用框架。如果你想理解 Agent 每一行代码的执行逻辑,手写。
LangChain 封装了太多细节。用它做项目,面试时一定会被追问”你知不知道底层...
Prompt(提示词)定义Prompt 是用户给 AI 的指令——用自然语言告诉它要做什么,是控制 AI 输出的基础工具。
例子
“帮我写一段 Java 代码,实现用户登录校验。”
“用小学生能听懂的话解释 JVM。”
“假设你是 Java 架构师,帮我设计一个高可用订单系统。”
核心特点
本质是一次性的自然语言指令或可复用的模板。
质量决定输出质量:清晰的 prompt 带来精准结...
34. 在排序数组中查找元素的第一个和最后一个位置最优解法时间复杂度 O(logn),空间复杂度 O(1)
答案所在范围使用左闭右开区间 [left,right)(取不到 right,所以是开区间),为了使区间不为空,循环条件应为 left<right。
如果 nums[mid]>=target,令 right=mid [left,mid),可得 nums[right]>...
209. 长度最小的子数组最优解法时间复杂度 O(n)(左指针和右指针各移动 n),空间复杂度 O(1)
right 从左到右移动,当 sum-nums[left]>=target 时,left 循环向左移动,且 sum-=nums[left]如果 sum>=target 符合条件,则判断是否需要更新答案。注意:right-left+1 是子数组长度
123456789101...
11. 盛最多水的容器最优解法时间复杂度:O(n),空间复杂度:O(1)
左指针指向 height[left] (left=0),右指针指向 height[right] (right=len-1),哪条边矮,则将该条边向内侧移动,看是否有更大值(因为如果有更大值,那么一定不会由矮边构成)。
优化点:如果矮边内侧的边比矮边还矮,就继续向内移动并循环判断
12345678...
167. 两数之和 II - 输入有序数组用获取信息量来衡量一个算法的效率
暴力解法**时间复杂度:O(n^2)**,没有利用数据有序的信息
最优解法时间复杂度:O(n),空间复杂度:O(1)
根据当前指针两个元素相加值判断指针移动,每次判断能得到 n 个信息(大于说明左指针右侧的值都不行,小于说明右指针左侧的值都不行)。
1234567891011121314151617/** * @...
Codes in lesson7
User 命令详解( swap_base_input & swap_base_output)swap_base_input(基于输入数量的代币交换)src/instructions/lib.rs:
1234567pub fn swap_base_input( ctx: Context<Swap>, amou...