Cursor 怎么运行代码 - 终端、调试器、Claude AI 修 bug 全流程
Cursor 怎么运行代码?本文系统讲清 Cursor 内置终端、Tasks、Debugger 的用法,以及 Cursor + Claude AI 修 bug 的完整工作流和常见调试坑。
Cursor 怎么运行代码 是新用户最早问的实操问题之一。Cursor 本质是 VS Code 二次开发,VS Code 里能跑代码的所有机制(终端、Tasks、Debugger、launch.json)在 Cursor 里全保留。但 Cursor 加了一层AI 修 bug 的杀手锏:报错可以一键扔给 Claude 分析、调试器变量可以让 Claude 解读、Agent 模式甚至能自己跑测试 → 改代码 → 再跑直到通过。
本文按”基本运行 → AI 修 bug → 各语言示例 → 常见坑”的顺序讲清。
Cursor 跑代码的基本能力
Cursor 不是云端 IDE,所有代码在你本地执行——跟 VS Code 一样。要跑代码需要本机有对应的运行时(Python 解释器、Node 二进制、Java JDK 等),Cursor 只是个壳。
它提供 3 种主要方式跑代码:
| 方式 | 入口 | 适合 |
|---|---|---|
| 内置终端 | Ctrl- 或 `` Cmd- “ | 临时命令、跑脚本 |
| Tasks | tasks.json 配 + Cmd-Shift-B | 重复用的构建/测试命令 |
| Debugger | launch.json 配 + F5 | 设断点、逐步执行 |
下面分别讲。
方式 1:内置终端
最直接的运行方式。打开终端:
Cmd-` (Mac) / Ctrl-` (Windows/Linux)
或者 View → Terminal。
终端跟系统默认 shell 一致(Mac 默认 zsh,Windows 默认 PowerShell,Linux 看你的配置)。可以在 settings.json 里改:
{
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.defaultProfile.linux": "bash"
}
跑代码:
# Python
python script.py
# Node
node index.js
# Go
go run main.go
# Rust
cargo run
# Java(单文件,JDK 11+)
java Hello.java
多个终端用 split 同时跑:点终端右上角”+“或快捷键 Cmd-\ / Ctrl-\。
方式 2:Tasks (tasks.json)
Tasks 适合经常重复跑的命令,避免每次手敲。
配置入口
项目根目录建 .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Run Python",
"type": "shell",
"command": "python ${file}",
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "Test",
"type": "shell",
"command": "pytest tests/ -v",
"group": "test"
},
{
"label": "Build",
"type": "shell",
"command": "npm run build",
"group": "build"
}
]
}
触发
Cmd-Shift-B/Ctrl-Shift-B: 跑默认 build taskCmd-Shift-P/Ctrl-Shift-P→ “Tasks: Run Task”: 选任意 task
Tasks 的输出会进入 Cursor 的”Terminal”或”Output”面板,出错时报错可以直接发给 Chat 让 Claude 分析。
方式 3:调试器(Debugger)
要设断点、查变量,用调试器。
最简配置 launch.json
项目根目录建 .vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
]
}
启动
F5: 启动调试- 行号左边点一下: 设断点
- 程序停在断点后,左侧 Run and Debug 面板可看变量、调用栈
调试快捷键
| 操作 | 快捷键 |
|---|---|
| 启动调试 | F5 |
| 暂停 | F6 |
| 单步跳过 | F10 |
| 单步进入 | F11 |
| 单步跳出 | Shift-F11 |
| 继续 | F5 |
| 停止 | Shift-F5 |
各语言跑代码示例
Python
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false
},
{
"name": "Python: 模块",
"type": "debugpy",
"request": "launch",
"module": "uvicorn",
"args": ["app.main:app", "--reload"]
}
]
}
跑前确认解释器:左下角状态栏看 Python 版本,点击切换。或 Cmd-Shift-P → “Python: Select Interpreter”。
Node.js / TypeScript
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Node: 当前文件",
"type": "node",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "TypeScript: tsx",
"type": "node",
"request": "launch",
"runtimeExecutable": "tsx",
"args": ["${file}"]
}
]
}
TypeScript 直接跑用 tsx 或 ts-node,装一下:
npm i -D tsx
Go
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Go: 当前包",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}"
}
]
}
需要装 Go 扩展(微软官方),首次打开 Go 文件 Cursor 会提示装 dlv(Delve 调试器)。
Java
launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Java: 当前文件",
"request": "launch",
"mainClass": "${file}"
},
{
"type": "java",
"name": "Java: Spring Boot",
"request": "launch",
"mainClass": "com.example.Application",
"projectName": "demo"
}
]
}
需要装 Extension Pack for Java。Maven / Gradle 项目结构详见 Cursor 设置完整指南。
Cursor AI 修 bug 全流程
这是 Cursor 跟纯 VS Code 拉开差距的地方。
场景 1:终端报错时的 “AI Fix”
跑命令报错,Cursor 会在终端报错上方自动出现一个小按钮:
┌─────────────────────────────────────────┐
│ $ python script.py │
│ Traceback (most recent call last): │
│ File "script.py", line 5, in <module> │
│ result = data["user"] │
│ KeyError: 'user' │
│ │
│ [✨ Fix with AI] ← 点这里 │
└─────────────────────────────────────────┘
点击后 Cursor 把报错 + 相关源码自动发给 Chat,让模型分析。默认模型可以在 Cursor 设置 里改成 Claude Sonnet 4.6。
场景 2:测试失败 → 手动发到 Chat
测试报错没自动按钮的情况:
- 选中终端里的错误信息(可拖选)
Cmd-L/Ctrl-L打开 ChatCmd-Shift-L/Ctrl-Shift-L把选中内容发到 Chat- 在 Chat 里写: “这个测试为什么失败,看一下 test_user.py”
Claude Sonnet 4.6 能同时读 stack trace 和源码,定位逻辑错。
场景 3:Agent 模式自动跑测试 → 修复 → 再跑
这是 Cursor 最强的工作流。前提:你已经在 Composer / Agent 模式下,选了支持 Agent 的模型(Claude Sonnet 4.6 / Opus 4.6 / GPT-4o 等)。
操作:
1. Cmd-I / Ctrl-I 打开 Composer
2. 切到 Agent 模式
3. 输入: "跑 pytest,有失败的就修,直到全部通过"
4. Agent 开始:
- 调 terminal 跑 pytest
- 读输出找失败
- 改源码
- 再跑 pytest
- 循环直到 0 失败或卡死
Agent 跑长任务时,你可以切去做别的,它在后台跑。Agent 的工作机制和限制详见 Claude Code 是什么——Cursor 的 Agent 模式跟 Claude Code 在底层用的是类似的”循环工具调用”机制。
场景 4:让 Claude Sonnet 4.6 读源码 + stack trace 一起改
复杂 bug 一句话讲不清,这样做:
Chat 里输入:
@src/auth/login.ts @tests/auth/login.test.ts
下面这个测试失败:
[粘贴 stack trace]
期望行为:邮箱不存在时返回 USER_NOT_FOUND
实际行为:报 NullPointerException
请定位 bug 并修复,改动尽量小,不要重写整个文件。
@filename 是 Cursor Chat 的快捷引用,会把整个文件作为上下文。Claude Opus 4.6 在这种多文件 + 长 stack trace 推理任务上表现尤其好,详见 Claude Opus 4.6 深度评测。
调试器配合 AI
设了断点跑起来,程序停下后,可以让 AI 帮你分析当前状态。
把调用栈贴给 Chat
- 程序停在断点
- 左侧 Call Stack 面板右键 → “Copy Call Stack”
Cmd-L打开 Chat,粘贴- 问: “为什么这个时候 user 是 null”
把变量值贴给 Chat
- Variables 面板找到关键变量
- 右键 → “Copy Value”
- Chat 里: “data 的内容是这样: [粘贴],为什么 .filter() 返回空数组”
在断点处直接问 AI
光标在源码断点行,选中相关代码,Cmd-K 输入:
为什么这一行执行不到?上面的 if 条件是不是有问题?
Cmd-K 会把当前选区 + 周围代码作为上下文,让 Claude 直接给出分析。
长任务跑后台(npm install / 大型测试套件)
npm install 在大项目里能跑几分钟,直接占用主终端很烦。两个办法:
办法 1:开新终端
Cmd-` 后再 Cmd-Shift-` 开第二个终端
或终端面板右上角 ”+“,并排跑。
办法 2:Agent 后台模式
Composer / Agent 模式跑长任务时,Cursor 会把它放后台。底栏会显示进度,任务结束有通知。
注意 Agent 跑后台任务时,模型还在算 token,quota 在消耗,跑超长任务前看一眼 Claude Code 配额限制 思路类似,Cursor 也有快/慢请求配额。
Cursor 跟 Claude Code (CLI) 协作
很多人同时用 Cursor + Claude Code,分工:
| 工具 | 强项 | 用在哪儿 |
|---|---|---|
| Cursor | IDE 视觉调试、断点、变量观察 | 单步排查、UI 改 |
| Claude Code | 终端长任务、批量改造、Agent | 跨多文件 refactor、跑测试套件 |
典型工作流:
1. 在 Cursor 里发现一个 bug,设断点单步调试
2. 找到根因后,想批量改 N 个文件
3. 切到 Cursor 集成终端,跑:
$ claude
4. 让 Claude Code 自动改 N 个文件 + 跑测试
5. Claude Code 跑完,回 Cursor 看 diff、提交
为什么不全在 Cursor 里:Cursor 的 Composer 改 5-10 个文件丝滑,改 50+ 个文件容易超 context window,Claude Code 在 CLI 里跑长任务更稳。详细对比见 Claude Code vs Claude vs Cursor。
常见跑代码的坑
坑 1:Python 解释器路径不对
症状: pip install 装的包,跑时 import 报错。
原因: 你 pip 装到了系统 Python,Cursor 用的是项目 .venv。
排查:
# 终端里
which python # Mac/Linux
where python # Windows
python -c "import sys; print(sys.executable)"
在 Cursor 里看:左下角状态栏的 Python 版本,确认跟终端 which python 一致。
修复:
Cmd-Shift-P / Ctrl-Shift-P → "Python: Select Interpreter" → 选 .venv
坑 2:Windows PowerShell 跟 CMD 行为差异
Windows 上 Cursor 默认终端是 PowerShell。一些 npm script 在 PowerShell 跟 cmd 下行为不同,常见:
set NODE_ENV=production && node app.js—— cmd 风格,PowerShell 不识别- PowerShell 要写
$env:NODE_ENV='production'; node app.js
跨平台脚本用 cross-env:
npm i -D cross-env
{
"scripts": {
"start": "cross-env NODE_ENV=production node app.js"
}
}
或切换默认终端:
{
"terminal.integrated.defaultProfile.windows": "Command Prompt"
}
坑 3:Docker 容器内调试
代码跑在 Docker 容器里,Cursor 在主机上,断点设了没用。两个解决方案:
方案 A: VS Code Remote - Containers 扩展(Dev Containers)
在项目根建 .devcontainer/devcontainer.json,Cursor 会提示”在容器中重新打开”,所有调试都在容器内进行。
方案 B: 远程调试(Attach to Process)
容器内启动 debug server:
# Python
python -m debugpy --listen 0.0.0.0:5678 --wait-for-client app.py
launch.json:
{
"name": "Python: Attach Remote",
"type": "debugpy",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}
]
}
记得在 docker-compose 里 expose 5678 端口。
坑 4:Node 调试器连不上
Node 默认调试端口是 9229。如果端口被占用:
# Mac/Linux
lsof -i :9229
# Windows
netstat -ano | findstr 9229
杀掉占用进程或在 launch.json 里换端口:
{
"port": 9230
}
坑 5:Java 找不到 main class
Maven 项目第一次打开,Java 扩展还在解析 pom.xml。等右下角”Importing Maven projects…”走完再跑。如果一直卡:
Cmd-Shift-P / Ctrl-Shift-P → "Java: Clean Java Language Server Workspace" → Restart and delete
坑 6:终端 PATH 跟 GUI 启动不一致
Mac 上常见: 终端能跑 node,但 Cursor 启动调试报 “node not found”。
原因: GUI 启动的 Cursor 没继承终端的 PATH。
修复(Mac):
# ~/.zshrc 改完后
# 让 GUI 应用也能拿到 PATH
sudo launchctl config user path "$PATH"
或者在 launch.json 里写绝对路径:
{
"runtimeExecutable": "/Users/yourname/.nvm/versions/node/v20.10.0/bin/node"
}
FAQ
Cursor 能不能不打开终端直接跑
能,用 Tasks 配 default build task,Cmd-Shift-B 一键跑,输出在 Output 面板看。
跑代码会不会发数据到 Cursor 服务器
跑代码本身不会(代码在本地执行)。但报错”Fix with AI”会把错误 + 源码片段发到模型推理,Privacy Mode 开了不持久化,详见 Cursor 设置 的隐私章节。
Claude 修 bug 修错了怎么办
Cursor 修改前会显示 diff,Cmd-Z / Ctrl-Z 撤销改动。Composer 模式有”Reject”按钮,直接拒绝整轮改动。养成跑代码前 commit 一次的习惯,出问题 git reset 即可。
Agent 模式会不会跑危险命令
Cursor 的 Agent 在跑 shell 命令前会询问。rm -rf、git push --force 之类的危险命令默认要确认。但不要无脑全部 allow,大模型偶尔会出离谱命令,养成看一眼再点的习惯。
Cursor 调试比 VS Code 慢吗
理论上一样,Cursor 是 VS Code Fork,调试核心代码没变。如果觉得慢,通常是:
- 装了太多扩展(尤其代码分析类的)
- Codebase Index 在后台跑
- 关闭 telemetry:
"telemetry.telemetryLevel": "off"
能不能让 Claude 自己设断点
不能直接。AI 不能控制调试器 UI,但可以在源码里插入 breakpoint() (Python) / debugger; (JS),效果一样。让 Claude:
在 login 函数里插一个 breakpoint(),帮我定位 user 为 None 的位置
推荐阅读
- Cursor 国内使用 Claude 完整教程
- Cursor Tab 是什么
- Cursor 设置完整指南
- Claude Code 是什么
- Claude Code vs Claude vs Cursor
- Claude Opus 4.6 深度评测
- Claude Code 模型选择
Cursor 调试相关 UI / 命令名称版本迭代可能变动,以官方文档为准。