Cursor 的 Agent 是如何工作的?
Cursor Agent是一个自主代码编辑系统,结合LLM、文件系统访问和AST工具,实现安全高效的代码修改。其核心技术包括:1)意图识别判断用户需求;2)LLM生成可执行的编辑计划;3)基于AST的差分补丁系统确保修改安全。完整流程从用户请求到多轮计划执行,相比普通ChatGPT具有工程级编辑能力,支持多文件修改和精确代码定位。系统核心组件包括代码索引、意图分类、提示词调度等,用户可基于类似架构
下面我给你一份 深度、工程级别 的解释,说明 Cursor 的 Agent 是如何工作的,并拆解内部机制、执行流程、触发逻辑、代码编辑能力、意图识别等技术原理。
🧠 Cursor 的 Agent 是如何工作的?(技术解析)
Cursor 的 Agent 本质上是一个强约束下的 自主代码编辑 Agent(Code Editing Agent)。
它结合 LLM + 文件系统访问 + AST/差分工具 + 规则系统 来形成一个“会自己编辑代码的 AI”。
你可以理解为 Git + Diff Patch + Intent Detection + LLM 的组合系统。
🧩 核心能力由三部分组成
1. Intent Detection(意图识别)
Cursor 的 Agent 必须判断:
➡️用户的问题是否要“写代码”
➡️是否要“修改当前文件”
➡️是否要“跑自动修复流程”
这通过:
- 语义分类器(LLM-based intent classifier)
- 局部提示词(Cursor 内部 rules)
- 用户当前打开的文件上下文
- 当前 cursor 中的 codebase indexing 信息
来决定是否启动 Agent。
例如:
用户说:
“帮我给这个函数加上缓存”
Agent 触发。
用户说:
“MongoDB 和 Postgres 哪个好?”
Agent 不触发。
2. Plan + To-do List(LLM 规划系统)
当 Agent 启动时,Cursor 会提示 LLM:
“你必须创建一个 todo list,每一步必须是可执行的编辑步骤。”
这是 Cursor 特有的强制格式,例如:
Here is my plan:
1. Modify function foo in file src/cache.ts
2. Add new Cache class to src/utils/cache.ts
3. Update imports in src/index.ts
Cursor 的 UI 会把这转成一个 To-do checklist,让用户 review。
但本质上这是一个 LLM 生成的约束式计划。
3. Diff Patch System(安全的代码编辑器)
Cursor 的 Agent 永远不会直接生成大片代码,而是生成 最小 diff patch:
--- before
+++ after
@@ -1,5 +1,8 @@
function foo() {
+ // add cache layer
}
这保证:
- 修改不会破坏文件结构
- 可以被用户审查
- 可以 undo/redo
- 文件冲突很少
- 修改的语义非常明确
这点比一般聊天模型强很多。
Cursor 内部使用:
🔧 AST-aware 编辑器(抽象语法树)
Cursor 对多语言做了 AST/Token 分析,保证:
- 代码补全不会破坏语法
- diff 在语法边界内
- 编辑前先检查 AST 结构是否完整
🔄 完整流程:Cursor Agent 的执行步骤
下面是 Cursor Agent 一次操作的完整内部流程:
❶ 用户发出一个请求
例如:
“把这个 API 的错误处理改成 retry 3 次”
❷ Intent Detection
系统判断 → 这是“代码编辑类请求”,启动 Agent。
❸ 生成 Plan(To-do steps)
LLM 根据 codebase index 生成一套完整 plan。
❹ 用户确认
Cursor 弹出 checklist:
✓ Step1
✓ Step2
用户可以修改、勾掉或继续。
❺ LLM 进入 “编辑模式(Edit Mode)”
Cursor 给模型:
- 目标文件的内容
- AST 结构摘要
- 计划中的 step
让 LLM 生成 diff patch
❻ Cursor 自动应用 Patch
应用到本地文件
并同步更新 codebase index。
❼ Agent 根据下一步继续循环
直到所有步骤完成。
这是一个有限状态机:
PLAN → APPLY_DIFF → VERIFY → NEXT_STEP
🔍 Cursor Agent 为什么比普通 ChatGPT 编辑代码更强?
| 能力 | ChatGPT | Cursor Agent |
|---|---|---|
| 能看整个 codebase | ❌ 不行 | ✔️ 有本地索引 |
| 能修改文件 | ⚠️ 基于猜测 | ✔️ AST + diff patch |
| 工程级编辑 | ❌ 会写错路径 | ✔️ 精确定位文件 |
| 多文件改动 | ❌ 几乎不可能 | ✔️ 支持 |
| 提示词 | 普通 | 高度优化的系统提示词 |
| 执行流程 | 1 次生成 | 多轮行动计划 |
Cursor 是设计成一个 Developer Agent,而不是“聊天机器人”。
🌐 Cursor 的 Agent 核心技术组件
✔ Embedding + Indexing(代码库语义搜索)
✔ Intent Classifier(意图判断)
✔ LLM Orchestration(提示词调度)
✔ Planning System(步骤规划)
✔ Diff Patch Engine(安全代码编辑器)
✔ AST-aware Validation(避免语法错误)
✔ File System Abstraction(FS 操作)
🧱 你能自己写一个类似 Cursor 的 Agent 吗?
可以。我给你一个简化版架构:
User Query
↓
Intent Detector (LLM)
↓
Plan Generator (LLM)
↓
Diff Editor (LLM with context)
↓
Patch Apply Engine
↓
FS Update + Re-index
你之前正打算写 本地 Codebase 服务 + Faiss,
你完全可以自己搭一个 Cursor-like Agent。
如果你想,我可以给你:
✔ 完整的系统架构
✔ Python 版本 Code Edit Agent
✔ 使用 AST + difflib 自动生成 patch
✔ 与你的 Faiss codebase 检索集成
✔ 一个可运行的 demo
引申话题继续提供:
- Cursor Agent 的完整提示词(伪版本)
- 如何构建 To-do List 规划系统
- 如何做安全 diff 编辑器
- 如何用 dify 搭一个 Cursor 级 Agent
- 如何用 Ollama 搭本地 Code Agent
需要我帮你写一个 Cursor Agent 的最小可运行版本吗?
更多推荐


所有评论(0)