CursorClaudeCursor 运行代码Cursor 调试Claude 修 bugClaude 编程

Cursor 怎么运行代码 - 终端、调试器、Claude AI 修 bug 全流程

Cursor 怎么运行代码?本文系统讲清 Cursor 内置终端、Tasks、Debugger 的用法,以及 Cursor + Claude AI 修 bug 的完整工作流和常见调试坑。

· 阅读约 18 分钟

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-临时命令、跑脚本
Taskstasks.json 配 + Cmd-Shift-B重复用的构建/测试命令
Debuggerlaunch.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 task
  • Cmd-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 直接跑用 tsxts-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

测试报错没自动按钮的情况:

  1. 选中终端里的错误信息(可拖选)
  2. Cmd-L / Ctrl-L 打开 Chat
  3. Cmd-Shift-L / Ctrl-Shift-L 把选中内容发到 Chat
  4. 在 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

  1. 程序停在断点
  2. 左侧 Call Stack 面板右键 → “Copy Call Stack”
  3. Cmd-L 打开 Chat,粘贴
  4. 问: “为什么这个时候 user 是 null”

把变量值贴给 Chat

  1. Variables 面板找到关键变量
  2. 右键 → “Copy Value”
  3. 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,分工:

工具强项用在哪儿
CursorIDE 视觉调试、断点、变量观察单步排查、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 -rfgit 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 调试相关 UI / 命令名称版本迭代可能变动,以官方文档为准。