当前位置: 首页 > news >正文

Cursor神一样的存在,核心能力codebase是如何工作的?

最近宣布达到 3 亿美元年度经常性收入,已经成为vibe coding标配。核心能力来自于Codebase。根据官方说法,codebase实现是依赖使用 Merkle 树来快速索引代码。但是没有竞品模仿这种方法。

Merkle是如何工作的那?

Merkle 树简单解释

Merkle 树是一种树状结构,其中每个"叶子"节点都标有数据块的加密哈希值,每个非叶子节点都标有其子节点标签的加密哈希值。这创建了一个层次结构,通过比较哈希值可以高效地检测任何层级的更改。

可以将其视为数据的指纹系统:

每条数据(如文件)都有自己的唯一指纹(哈希值);成对的指纹被组合并赋予新的指纹这个过程持续进行,直到只剩下一个主指纹(根哈希值)

根哈希值总结了各个部分包含的所有数据,作为整个数据集的加密承诺。这种方法的优点是,如果任何一条数据发生变化,都会改变其上方的所有指纹,最终改变根哈希值。

Cursor 如何使用 Merkle 树进行代码库索引

Cursor 将 Merkle 树作为其代码库索引功能的核心组件。根据 Cursor 创始人的帖子和安全文档,其工作原理如下:

第 1 步:代码分块和处理

Cursor 首先在本地对代码库文件进行分块,在进行任何处理之前将代码分割成语义上有意义的片段。

第 2 步:Merkle 树构建和同步

启用代码库索引时,Cursor 扫描在编辑器中打开的文件夹,并计算所有有效文件的哈希值的 Merkle 树。然后将此 Merkle 树与 Cursor 的服务器同步。

第 3 步:生成嵌入向量

将块发送到 Cursor 服务器后,使用 OpenAI 的嵌入 API 或自定义嵌入模型创建嵌入向量。这些向量表示捕获了代码块的语义含义。

第 4 步:存储和索引

嵌入向量与元数据(如起始/结束行号和文件路径)一起存储在远程向量数据库(Turbopuffer)中。为了在保持隐私的同时仍能启用基于路径的过滤,Cursor 为每个向量存储一个模糊化的相对文件路径。重要的是,根据 Cursor 创始人的说法,"您的代码不会存储在我们的数据库中。请求结束后就会被删除。"

第5 步:使用 Merkle树进行定期更新

每 10 分钟,Cursor 检查哈希值不匹配的情况,使用 Merkle 树识别哪些文件发生了变化。只需要上传已更改的文件,这大大减少了带宽使用。这正是 Merkle 树结构提供的最大价值——实现高效的增量更新。

代码分块策略

代码库索引的效果在很大程度上取决于代码如何分块。虽然简单的方法按字符、单词或行分割代码,但它们往往会错过语义边界,导致嵌入质量下降。

可以基于固定的标记计数分割代码,但这可能会在中途切断函数或类等代码块。

更有效的方法是使用理解代码结构的智能分割器,例如使用高级分隔符(如类和函数定义)在适当的语义边界处分割的递归文本分割器。更优雅的解决方案是基于代码的抽象语法树(AST)结构进行分割。通过深度优先遍历 AST,它将代码分割成适合标记限制的子树。为了避免创建太多小块,只要保持在标记限制之内,就将兄弟节点合并成更大的块。可以使用 tree-sitter 等工具进行 AST 解析,支持多种编程语言。

推理时如何使用嵌入向量

在介绍完 Cursor 如何创建和存储代码嵌入后,一个自然的问题出现了:这些嵌入在生成后实际是如何使用的?本节将解释这些嵌入在正常使用过程中的实际应用。

语义搜索和上下文检索

当用户使用 Cursor 的 AI 功能(如使用 @Codebase 或 ⌘ Enter 提问)时,会发生以下过程:

查询嵌入:Cursor 为您的问题或正在处理的代码上下文计算嵌入向量。

向量相似度搜索:将查询嵌入发送到 Turbopuffer(Cursor 的向量数据库),后者执行最近邻搜索以找到与查询在语义上相似的代码块。

本地文件访问:Cursor 客户端接收结果,其中包括最相关代码块的模糊化文件路径和行范围。重要的是,实际的代码内容保留在您的机器上并在本地检索。

上下文组装:客户端从本地文件中读取这些相关代码块,并将它们作为上下文与您的问题一起发送到服务器供 LLM 处理。

知情响应:LLM 现在拥有来自您代码库的必要上下文,可以为您的问题提供更明智和相关的响应,或生成适当的代码补全。

这种基于嵌入的检索允许:

上下文代码生成:在编写新代码时,Cursor 可以参考现有代码库中的类似实现,保持一致的模式和风格。

代码库问答:您可以询问有关代码库的问题,并获得基于实际代码而不是泛泛而谈的答案。

智能代码补全:代码补全可以增强对项目特定约定和模式的感知。

智能重构:在重构代码时,系统可以识别代码库中所有可能需要类似更改的相关部分。

为什么Cursor 使用 Merkle 树

1. 高效的增量更新

通过使用 Merkle 树,Cursor 可以快速识别自上次同步以来哪些文件发生了变化。无需重新上传整个代码库,只需上传已修改的特定文件。这对于大型代码库来说很重要,因为重新索引所有内容在带宽和处理时间方面都太昂贵。

2. 数据完整性验证

Merkle 树结构允许 Cursor 高效地验证正在索引的文件是否与服务器上存储的内容匹配。分层哈希结构使得在传输过程中很容易检测到任何不一致或损坏的数据。

3. 优化缓存

Cursor 将嵌入存储在以块的哈希值为索引的缓存中,确保第二次索引相同的代码库要快得多。这对于多个开发人员可能在使用相同代码库的团队来说很好。

4. 保护隐私的索引

为了保护文件路径中的敏感信息,Cursor 通过按 '/' 和 '.' 字符分割路径并使用存储在客户端的密钥加密每个段来实现路径模糊化。虽然这仍然会显示一些有关目录层次结构的信息,但隐藏了大多数敏感细节。

5. Git历史集成

在 Git 仓库中启用代码库索引时,Cursor 还会索引 Git 历史。它存储提交 SHA、父信息和模糊化的文件名。为了使同一 Git 仓库和同一团队中的用户能够共享数据结构,用于模糊化文件名的密钥是从最近提交内容的哈希值派生的。

嵌入模型和注意事项

嵌入模型的选择显著影响代码搜索和理解的质量。虽然一些系统使用开源模型如 all-MiniLM-L6-v2,但 Cursor 可能使用 OpenAI 的嵌入模型或专门针对代码调优的自定义嵌入模型。对于专门的代码嵌入,Microsoft 的 unixcoder-base 或 Voyage AI 的 voyage-code-2 等模型适合代码特定的语义理解。

嵌入挑战变得更加复杂,因为嵌入模型有标记限制。例如,OpenAI 的 text-embedding-3-small 模型的标记限制为 8192。有效的分块有助于在保持语义含义的同时保持在标记限制内。

握手过程

Cursor 的 Merkle 树实现的一个关键方面是同步期间发生的握手过程。Cursor 应用程序的日志显示,在初始化代码库索引时,Cursor 创建一个"merkle 客户端"并与服务器执行"启动握手"。这个握手涉及将本地计算的 Merkle 树的根哈希值发送到服务器。

握手过程允许服务器确定需要同步代码库的哪些部分。根据握手日志,我们可以看到 Cursor 计算代码库的初始哈希值并将其发送到服务器进行验证。

技术实现挑战

虽然 Merkle 树方法提供了许多优势,但实现起来并非没有挑战。Cursor 的索引功能经常遇到重负载,导致许多请求失败。这可能导致文件需要多次上传才能完全索引。用户可能会注意到到 'repo42.cursor.sh' 的网络流量比预期高,这是由于这些重试机制造成的。

另一个挑战与嵌入安全性有关。学术研究表明,在某些情况下可以反转嵌入。虽然当前的攻击通常依赖于访问嵌入模型并处理短字符串,但存在一个潜在风险,即获得 Cursor 向量数据库访问权限的攻击者可能从存储的嵌入中提取有关索引代码库的信息。

相关文章:

Cursor神一样的存在,核心能力codebase是如何工作的?

最近宣布达到 3 亿美元年度经常性收入,已经成为vibe coding标配。核心能力来自于Codebase。根据官方说法,codebase实现是依赖使用 Merkle 树来快速索引代码。但是没有竞品模仿这种方法。 Merkle是如何工作的那? Merkle 树简单解释 Merkle …...

python代码绘制某只股票最近90天的K线图、均线、量能图

运行代码,要求输入股票代码和名称,其他参数可省略 import akshare as ak import matplotlib.pyplot as plt import pandas as pd import mplfinance as mpf import matplotlib.dates as mdates import numpy as np import os from datetime import date…...

upload-labs通关笔记-第15关 文件上传之getimagesize绕过(图片马)

目录 一、图片马 二、文件包含 三、文件包含与图片马 四、图片马制作方法 五、源码分析 六、制作图片马 1、创建脚本并命名为test.php 2、准备制作图片马的三类图片 3、 使用copy命令制作图片马 七、渗透实战 1、GIF图片马渗透 (1)上传gif图…...

反弹shell

shell了解 shell其xxxx是交互,点鼠标敲键盘与计算机进行交互,还有常见的shell(cmd,powershell) shell反弹 当远程连接shell(windows远程桌面,linux有SSH之类),从外面远…...

【动手学深度学习】1.3. 各种机器学习问题

目录 1.3. 各种机器学习问题1)监督学习(supervisedlearning)(1)回归(regression)(2)分类(classification)(3)标记问题&…...

OS进程调度

tss Q1:你是如何保证两个进程不能同时访问共享资源的? ✅ 推荐回答: 我实现了基于结构体的互斥锁,使用 mutex_lock() 来加锁资源。如果已有任务持有锁,则当前任务会被阻塞并加入等待队列,直到被唤醒。解锁…...

MCP和 AI agent 有什么区别和联系

MCP 是什么? MCP(Model Context Protocol,模型上下文协议)是一种开源通信协议,旨在为大型语言模型(LLM)与外部数据源、工具或服务之间建立标准化、安全且灵活的双向连接。它类似于“AI 的 USB-…...

用Recommenders,实现个性化推荐

文章目录 引言一、Recommenders简介二、选择Recommenders的原因三、智能推荐系统的设计与实现四、总结 引言 在这个信息如洪流般涌来的时代,你是否常常在茫茫的信息海洋中迷失方向,为找不到自己心仪的内容而苦恼?今天咱们就来聊聊基于Micros…...

MCP-1:MCP组件与工作流程

MCP-1:MCP组件与工作流程 1.什么是MCP2.MCP架构组件​​2.1.MCP Hosts2.2.MCP Client​​2.3.MCP Server3.交互流程3.1.用户提问3.2.LLM 推理选择MCP Server(大模型规划)3.3.调用 MCP Tool3.4.返回结果3.5.数据清洗3.6.反馈信息给用户1.什么是MCP MCP(Model Context Proto…...

NVIDIA GPU 性能调优与诊断完全指南

本文为多 GPU 用户(如 3*RTX A4000 系统)提供一份全面的调优与诊断手册,涵盖功率限制、风扇控制、频率锁定、缓存清理、GPU 重置与性能测试工具等操作命令,适合开发者与研究人员在部署前进行系统级优化与验证。 📌 目录…...

从运维告警到业务决策:可观测性正在重新定义企业数据基础设施

可观测性(Observability)与传统监控(Monitoring)的核心差异,本质上是一种数据维度的主动暴露与被动采集的范式转变。传统监控就像在黑暗森林中设置有限的探照灯,运维人员必须预先假设可能的故障路径&#x…...

配电网运行状态综合评估方法研究

1评估指标体系的构建 [1]冷华,童莹,李欣然,等.配电网运行状态综合评估方法研究[J].电力系统保护与控制,2017,45(01):53-59. 1.1评估范围 图1为配电系统组成示意图,其中A、B、C分别表示高、中、低压配电系统。高压配变(也称主变)将35kV或110kV的电压降到10kV&#…...

Linux中I/O复用机制epoll

1. 为什么会出现 epoll? 在早期的网络编程中,select 是一个非常常用的 I/O 复用机制,用于在多个文件描述符(如套接字)上进行 I/O 操作的检测。select 会将多个文件描述符传入,轮询检查它们的状态&#xff…...

数据库表关系详解

一、一对多关系 特征:表A的一条记录对应表B的多条记录,表B的一条记录仅对应表A的一条记录 示例: 学生表(子表) | id | name | class_id | |-----|------|----------| |1001| 张三 | 111 | |1002| 张四 | 222 | 班级表…...

Agentic Loop与MCP:大模型能力扩展技术解析

一、什么是MCP MCP(Model Context Protocol)是一种用于大语言模型与外部工具交互的协议框架。它允许大语言模型能够调用各种外部工具来扩展其能力边界,如访问文件系统、搜索引擎、数据库等。 MCP的核心价值 能力扩展:使大语言模…...

贪心算法 Part04

总结下重叠区间问题 LC 452. 用最少数量的箭引爆气球 和 LC 435. 无重叠区间 本质上是一样的。 LC 452. 用最少数量的箭引爆气球 是求n个区间当中 , 区间的种类数量 k。此处可以理解为,重叠在一起的区间属于同一品种,没有重叠的区间当然…...

Spring事务简单操作

什么是事务? 事务是一组操作的集合,是一个不可分割的操作 事务会把所有的操作作为⼀个整体, ⼀起向数据库提交或者是撤销操作请求. 所以这组操作要么同时 成功, 要么同时失败. 事务的操作 分为三步: 1. 开启事start transaction/ begin …...

04算法学习_209.长度最小的子数组

04算法学习_209.长度最小的子数组题目描述:个人代码:学习思路:第一种写法:题解关键点: 第二种写法:题解关键点: 个人学习时疑惑点解答: 04算法学习_209.长度最小的子数组 力扣题目链…...

./build/mkfs.jffs2: Command not found

参考文章:https://blog.csdn.net/FLM19990626/article/details/132070195 sudo apt-get install lib32stdc6 sudo apt-get install lib32z1 sudo apt-get install mtd-utils sudo apt-get install man-db sudo apt-get install liblzo2-dev:i386sudo ldconfig...

从零基础到最佳实践:Vue.js 系列(4/10):《Vue Router 路由管理:深入探索与实战应用》

引言 在现代前端开发中,单页应用(SPA)凭借其流畅的用户体验和高性能成为主流。Vue Router 作为 Vue.js 的官方路由管理工具,为开发者提供了强大的路由管理能力,帮助实现页面导航、权限控制和动态内容加载。本文将从基…...

深入解析C++静态成员变量与函数

当然可以&#xff01;下面是对这段 C 代码的逐行详细注释说明和解释&#xff0c;帮助你理解静态成员变量和静态成员函数的使用。 &#x1f9f1; 类定义部分&#xff1a;MyClass cpp 深色版本 #include <iostream> 说明&#xff1a;包含标准输入输出流库&#xff0c;用于…...

基于JDBC的信息管理系统,那么什么是JDBC呢?什么又是DAO类?

1.JDBC JDBC 即 Java Database Connectivity&#xff0c;是 Java 语言中用于与数据库进行交互的一套 API。它提供了一种标准的方式&#xff0c;让 Java 程序能够连接到各种不同类型的数据库&#xff0c;并执行 SQL 语句来实现对数据库的查询、插入、更新和删除等操作。 主要功…...

Java虚拟机 -虚拟机栈

虚拟机栈详解 虚拟机栈概述案例常见的跟虚拟栈异常相关的异常StackOverflowError异常OutOfMemoryError异常 栈的基本存储单位局部变量表IDEA Jclasslib Bytecode Viewer插件slot 操作数栈方法调用&#xff08;待后续补充&#xff09; 虚拟机栈 上一篇文章&#xff0c;我们简单…...

【AI News | 20250521】每日AI进展

AI Repos 1、OpenHands OpenHands&#xff08;前身为OpenDevin&#xff09;是一个由AI驱动的软件开发代理平台&#xff0c;它能够像人类开发者一样修改代码、运行命令、浏览网页、调用API&#xff0c;甚至从StackOverflow复制代码片段。用户可以通过OpenHands Cloud轻松上手&a…...

RAG 挑战赛冠军方案解析:从数据解析到多路由器检索的工程实践,推荐阅读!

多路由器 动态知识库&#xff1a;RAG 冠军方案的核心技术揭秘 源码地址&#xff1a;https://github.com/IlyaRice/RAG-Challenge-2/tree/main 公司年报智能问答比赛任务简介 比赛的任务是基于公司年度报告构建一个问答系统。简单来说&#xff0c;比赛当天的流程如下&#xff…...

Java基础 Day17

一、递归 方法直接或者间接调用本身 将大问题, 层层转化为一个与原问题相似的、规模更小的问题来解决 二、异常 程序在编译或执行过程中&#xff0c;出现的非正常的情况 (错误) 语法错误不是异常 1、阅读异常信息 从下往上看&#xff1a;发生异常的位置、异常名称、发生异…...

系分论文《论软件系统安全分析和应用》

系统分析师论文范文系列 【摘要】 2023年3月&#xff0c;我司承接了某知名电商企业“智能化供应链管理系统”的开发任务&#xff0c;我作为系统分析师负责全面的安全分析与设计工作。该系统以提升电商供应链效率为核心&#xff0c;整合仓储、物流、支付等模块&#xff0c;并需应…...

蓝耘Ubantu服务器测试最新 PP-StructureV3 教程

一、服务器配置 二、安装Anaconda3 进入云服务器后删除minconda文件夹 官网&#xff1a; https://repo.anaconda.com/archive/ 在里面找到自己系统的安装包&#xff0c;然后右击复制链接安装。 一定要选择Anaconda,因为很多依赖问题用Minconda容易报错。 wget https://repo…...

File文件

路径&#xff1a; 相对路径&#xff1a;以 当前工作目录&#xff08;或指定的基准目录&#xff09;为起点&#xff0c;描述目标文件或目录的位置&#xff0c;不包含根目录信息&#xff0c;仅表示与基准目录的相对位置关系。绝对路径&#xff1a;从文件系统的 根目录 开始&…...

Wireshark抓包分析小程序接口请求教程

## 1. 准备工作 ### 1.1 安装Wireshark - 访问Wireshark官网 (https://www.wireshark.org/) 下载最新版本 - 按照安装向导完成安装 - 确保安装时选择安装WinPcap或Npcap&#xff08;用于网络数据包捕获&#xff09; ### 1.2 配置环境 - 确保电脑已连接网络 - 如果使用手机…...

C++之模板进阶(探索C++模板:非类型参数与特化技巧)

本节目标&#xff1a; 1.非类型模板参数 2.类模板的特化 3.类模板特化的应用之类型萃取 4.模板的分离编译 非类型模板参数 模板参数分 类型形参与非类型形参 类型形参&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称 非类型形…...

【项目记录】准备工作及查询部门

1 开发规范 1.1 前后端分离开发 现在的企业项目开发有2种开发模式&#xff1a;前后台混合开发和前后台分离开发。 前后台混合开发&#xff0c;顾名思义就是前台后台代码混在一起开发 这种开发模式有如下缺点&#xff1a; 1. 沟通成本高&#xff1a;后台人员发现前端有问题&a…...

chromedp -—— 基于 go 的自动化操作浏览器库

chromedp chromedp 是一个用于 Chrome 浏览器的自动化测试工具&#xff0c;基于 Go 语言开发&#xff0c;专门用于控制和操作 Chrome 浏览器实例。 chromedp 安装 go get -u github.com/chromedp/chromedp基于chromedp 实现的的简易学习通刷课系统 目前实现的功能&#xff…...

企业级调度器LVS

访问效果 涉及内容&#xff1a;浏览拆分、 DNS 解析、反向代理、负载均衡、数据库等 1 集群 1.1 集群类型简介 对于⼀个业务项⽬集群来说&#xff0c;根据业务中的特性和特点&#xff0c;它主要有三种分类&#xff1a; 高扩展 (LB) &#xff1a;单个主机负载不足的时候&#xf…...

MySQL中的重要常见知识点(入门到入土!)

基础篇 基础语法 添加数据 -- 完整语法 INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);-- 示例 insert into employee(id,workno,name,gender,age,idcard,entrydate) values(1,1,Itcast,男,10,123456789012345678,2000-01-01) 修改数据 -- 完整语法 UPDA…...

29.第二阶段x64游戏实战-技能冷却

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;28.第二阶段x64游戏实战-代码实现遍历技能 找技能冷却要通过一个技能cd长点的&…...

第19天-Python自动化生成PPT图文教程(基于python-pptx)

环境准备 pip install python-pptx Pillow 基础示例:批量插入图片 from pptx import Presentation from pptx.util import Inches import os from PIL import Image def create_image_slides(): # 初始化演示文稿 prs = Presentation() # 获取当前目录所…...

基于STM32的骑行语音播报系统

目录 一、前言 二、项目功能说明 三、主要元器件 四、原理图与PCB 五、手机APP 六、完整资料 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; 咸鱼商品链接&#xff1a; 基于STM32的骑行语音播报系统 二、项目功能说明 基础功能&#xff1a; 1&…...

springboot链接nacos测试

代码资料链接&#xff1a;https://download.csdn.net/download/ly1h1/90881498 场景说明&#xff1a;本次测试是springboot项目&#xff0c;可以链接上ncaos&#xff0c;将对应命名空间下的配置信息读取出俩&#xff0c;然后可以在接口进行返回显示。 0.环境配置 1.代码结构 …...

【初识】内网渗透——基础概念,基本工具使用

目录 一、域&#xff0c;工作组&#xff0c;域控制器&#xff0c;活动目录相关概念&#xff1a; 域环境&#xff1a; 工作组&#xff1a; 域控制器DC&#xff1a; 活动目录AD&#xff1a; 二、内网的基本场景&#xff1a; 三、内网渗透基本测试方案&#xff1a; #案例1一基本信…...

AI练习:混合圆

方法一&#xff1a;在圆内 1.画圆 选择椭圆工具&#xff0c;按住Shift键绘制正圆&#xff1b; CtrlC复制&#xff0c;CtrlF原地粘贴&#xff0c;按住Shift键缩小圆&#xff0c;移动位置&#xff1b; 再CtrlC&#xff0c;CtrlF&#xff0c;再按住Shift键缩小圆&#xff0c;移…...

心知天气 API 获取天气预报 2025/5/21

心知天气 API 获取天气预报 2025/5/21 URL格式: https://api.seniverse.com/v3/weather/now.json?key填你的秘钥&locationbeijing(这里填城市 可以用拼音)&languagezh-Hans&unitc 返回格式如下:...

PCB设计教程【入门篇】——电路分析基础-元件数据手册

前言 本教程基于B站Expert电子实验室的PCB设计教学的整理&#xff0c;为个人学习记录&#xff0c;旨在帮助PCB设计新手入门。所有内容仅作学习交流使用&#xff0c;无任何商业目的。若涉及侵权&#xff0c;请随时联系&#xff0c;将会立即处理 目录 前言 一、数据手册的重要…...

java上机测试错题回顾(1)

平时不能摸鱼太多&#xff0c;这样导致到最后不能摸鱼...... 看了看日历原来是6.12就结课了&#xff0c;啊哈哈&#xff0c;真没几天准备了&#xff0c;期末月你要来了吗&#xff1f; 1 参数传递&#xff0c;值传递~&#xff01; 题目 以下代码的输出结果为&#xff08; &a…...

HTTP相关内容

应用层 自定义应用层协议,协议:约定 1.约定好通信传输的信息 2.约定好数据的组织格式(xml, json(重点), protobuf) 也可以基于现成的应用层协议,来进行开发 协议的种类非常多(HTTP 协议属于翘楚,1.手机,2 网站) 跟正确的说,咱们现在使用的是 HTTPS 这个协议,HTTP和HTTPS …...

【笔记】排查并解决Error in LLM call after 3 attempts: (status code: 502)

#工作记录 一、问题描述 在部署运行部署对冲基金分析工具 ai-hedge-fund 时&#xff0c;不断出现以下报错&#xff0c;导致项目运行异常&#xff1a; Error in LLM call after 3 attempts: (status code: 502) Error in LLM call after 3 attempts: [WinError 10054] 远程主…...

基于python的机器学习(七)—— 数据特征选择

目录 一、特征选择概念 二、特征选择的方法 2.1 过滤式特征选择 2.1.1 方差分析 2.1.2 相关系数 2.1.3 卡方检验 2.2 包裹式特征选择 2.2.1 递归特征消除 2.3 嵌入式特征选择 2.3.1 决策树特征重要性 一、特征选择概念 特征选择是机器学习非常重要的一个步骤&#x…...

从电商角度设计大模型的 Prompt

从电商角度设计大模型的 Prompt&#xff0c;有一个关键核心思路&#xff1a;围绕具体业务场景明确任务目标输出格式&#xff0c;帮助模型为运营、客服、营销、数据分析等工作提效。以下是电商场景下 Prompt 设计的完整指南&#xff0c;包含通用思路、模块范例、实战案例等内容。…...

从零基础到最佳实践:Vue.js 系列(5/10):《状态管理》

引言 你是不是正在用 Vue.js 开发一个很酷的应用&#xff0c;然后发现组件之间的数据传递变得越来越混乱&#xff1f;比如&#xff0c;一个按钮的状态要传到好几层组件&#xff0c;或者多个页面需要共享同一个用户信息。这时候&#xff0c;状态管理就登场了&#xff01;在 Vue…...

git checkout HEAD

git checkout HEAD 主要用于将工作目录和暂存区的内容重置为当前 HEAD 指向的提交状态&#xff0c;常用于撤销未提交的修改15。具体行为如下&#xff1a; 一、核心作用 ‌恢复工作区文件‌ 将指定文件或全部文件恢复到 HEAD 指向的提交状态&#xff0c;丢弃工作区中未暂存的修改…...