今天推荐阅读这一篇,虽然阅读量很低,但是把两款AI编程工具的核心原理讲解的很清楚,干货满满,值得阅读。
节省时间,我们先了解10条关键技术:
  • 全局代码感知:

    通过矢量索引索引引擎创建代码地图,利用LLM搜索高效检索全库信息。
  • AI行为控制:

    使用结构化提示、用户规则和会话记忆,精确指导AI的“思考”和回应逻辑。
  • 任务自动化执行:

    基于ReAct模式,AI通过代理循环智能调用搜索、编辑、运行等工具完成复杂任务。
  • 高效精准编辑:

    采用特殊差异语法生成语义补丁,通过应用模型快速合并代码修改。
  • 处理复杂工作流:

    Windsurf 的AI流程能将工具链(最多20步)串联,实现多步自动化操作。
  • 智能模型调度:

    使用混合专家方法和智能路由层,根据任务动态选择最合适的AI模型。
  • 实时生成与引导:

    通过逐标记流式传输代码,并跟踪用户光标进行预测性完成。
  • 即时响应用户编辑:

    基于事件驱动架构SSE,AI能感知并实时调整对用户手动修改的回应。
  • 自动问题检测:

    集成自动错误检测和自我修正能力,主动调试AI或用户代码。
  • 持续代码知识更新:
    自动且持续更新矢量索引,确保AI对最新代码有感知。

  • 安全实验环境:

    受保护的沙盒中运行AI的实验性代码,避免影响项目稳定。
以下是详解:
Cursor 如何阅读您的代码?
  • 索引和向量存储:

    解密AI编程利器:Cursor与Windsurf核心技术
    Cursor 将您的整个项目索引到一个向量存储中。您可以将其视为创建了一个代码的智能地图,其中相似的概念被分组在一起。
  • 专用编码器模型:

    在索引时,Cursor 使用一个专用的编码器模型,该模型特别强调注释和文档字符串,以便更好地捕捉每个文件的目的。
  • 两阶段检索过程:

    当您提出问题时,Cursor 使用两阶段检索过程。首先,它执行向量搜索以查找候选代码片段。然后,它使用一个 AI 模型根据相关性对这些结果进行重新排序。这就像一位图书管理员,先找出关于某个主题的所有书籍,然后仔细整理以找到您需要的准确内容。这种两阶段方法显著优于传统的关键字或正则表达式搜索,尤其是在处理关于代码行为的非简单问题时。
  • 显式和自动上下文:

    您还可以使用 @file 或 @folder 标签明确地指向 Cursor 到特定文件。这就像在说:“请专门查看本书的这些章节”。已经打开的文件和光标周围的代码会自动添加到上下文中。

Windsurf 如何阅读您的代码?

  • 索引引擎:

    Windsurf 通过其索引引擎采用类似的方法。它扫描您的整个代码库以构建一个可搜索的代码地图。
  • 基于 LLM 的搜索工具:

    Windsurf 开发了一种据称优于传统的基于嵌入的搜索方法的基于 LLM 的搜索工具。这使得 AI 能够更好地解释您的自然语言查询并找到相关的代码片段。
  • 考虑开放和相关文件:

    在提出建议时,Windsurf 会考虑开放的文件,并自动从项目其他地方提取相关文件。这种“全代码库意识”意味着 AI 将您的代码库理解为一个连接的系统,而不仅仅是孤立的文件。
  • 上下文固定 (Context Pinning):

    Windsurf 还提供“上下文固定”功能。这是一种保持关键信息(如设计文档)始终对 AI 可用的方式。将其视为将重要笔记放在布告栏上,AI 无论您正在做什么,都能始终看到。
  • 记忆 (Memories):

    Windsurf 的 Cascade 代理使用 AI 规则和记忆(跨会话的持久上下文)。记忆可能由用户创建(如关于项目 API 的笔记)或从先前的交互中自动生成。这意味着 Windsurf 可以“记住”它随着时间推移了解到的关于您的代码库的信息,而不是每次会话都从头开始。

这两种系统都使用了复杂的技术来深入理解您的代码库,以便能够提供相关的帮助。它们通过索引、高级搜索、上下文管理和记忆功能来实现这一点。

Cursor 使用结构化的系统提示

提示带有特殊的标签,例如 <communication> 和 <tool_calling>


这两个 AI 编码助手通过将简单的语言转化为多步代理(agent)来进行“行动”,它们都采用了被称为 ReAct (Reason+Act) 的模式来实现这一点。

Cursor 如何行动和Agent架构

  • Cursor 的 Agent 以一个 循环 运作。在这个循环中:
    • AI 决定要使用哪个工具。
    • 解释正在做什么。
    • 调用工具。
    • 看到结果
    • 然后决定下一步行动。
  • 它使用一种称为 “Embed-Think-Do” 的代理循环。
  • Cursor 可以使用的工具包括:搜索代码库、读取文件、编辑代码、运行 shell 命令,甚至浏览网页获取文档。
  • 在代码编辑方面,Cursor 有一项重要的优化:它使用一种 特殊差异语法。AI 不会重写整个文件,而是只提出 语义补丁(即所需的具体更改)。一个单独的、更快的 “应用模型” 负责将这些补丁合并到代码库中。这种方法更高效,并减少了错误。
  • Cursor 在 受保护的沙盒环境 中运行所有实验性代码,以确保 AI 的实验不会意外破坏你的实际项目。
  • 例如,如果你要求 Cursor“修复认证 bug”,它可能会首先搜索代码库中与认证相关的文件,然后读取这些文件以理解问题,进行编辑以修复 bug,最后运行测试来验证解决方案。每一步都会在发生时清晰地解释给你。
  • 为了避免无限循环,Cursor 限制了这些自我修正循环(例如,“DO NOT loop more than 3 times on fixing linter errors”)。
  • Cursor 甚至采用了一种 “混合专家” 方法:一个功能强大的模型(如 GPT-4 或 Claude)负责进行高级推理,而专门的较小模型则处理特定任务(如应用代码更改)。
  • Cursor 使用一个智能路由层,根据操作、任务的复杂性以及用户设置,将特定任务 动态地路由到最合适的模型
  • 如果 AI 的代码引入了错误,Cursor 会 自动检测 并尝试在没有用户干预的情况下修复它。

Windsurf 如何行动和 Agent 架构

  • Windsurf 也使用 ReAct 模式,并强调其 “AI 流程”(AI Flows) 概念。
  • 它的代理被称为 “Cascade”代理
  • 当你提出请求时,Cascade 会生成一个计划进行代码更改,并在运行代码之前请求你的批准
  • 如果你批准,它可以在集成的 AI 终端 中执行代码,分析结果,并在出现错误时提出修复建议。
  • Windsurf 的 Agent 架构非常强大——它可以在单个流程中串联多达 20 个工具调用而无需用户干预
  • 它的工具包括自然语言代码搜索、终端命令、文件编辑和 MCP(Model Context Protocol)连接器到外部服务。这使得 Cascade 能够在一个连贯的序列中处理复杂的、多步骤的任务,如安装依赖项、配置项目和实现新功能。
  • Cascade 令人印象深刻的一点是,当你在流程进行中手动更改代码时,它会注意到并相应地进行调整。如果修改了函数参数,它会自动更新所有调用该函数的地方。这创建了一个紧密的反馈循环,让你和 AI 可以真正实时协作。
  • 这种响应能力建立在 事件驱动的架构 之上,其中特定的用户操作(如保存文件或更改文本)会触发 AI 使用更新后的状态重新运行其推理。
  • 系统使用 服务器发送事件 (SSE) 来维护编辑器、终端和 AI 聊天组件之间的同步。
  • Windsurf 在你工作时会 主动扫描问题。如果你运行代码并出现错误,助手可以立即看到该错误并帮助解决,而无需你复制粘贴任何内容。
保持编辑器和AI之间的实时同步,也很重要。
——
参考资料:
diamantai.substack.com/p/the-hidden-algorithms-powering-your