AI 编程工具的几种形态
补全、对话、编辑器里的智能体、命令行智能体,AI 编程工具大致分这四种。讲清楚每种在做什么、适合什么任务,以及怎么控制智能体能动你电脑上的哪些东西。
- 约 30 分钟
- 难度:入门
- 实测:2026-09-14,产品功能以各自官方文档为准,无需运行
AI 编程工具的名字换得很快,每隔几个月就有新产品、新功能。但如果按"它能替你做多少事"来分,大致只有四种形态。弄清楚每种形态在做什么,比记住哪个产品有哪个按钮更有用:换了工具,这些判断依然成立。
一、补全
你在编辑器里打字,它在光标后面用灰色的文字预测你接下来要写什么,按 Tab 接受,继续打字就忽略。GitHub Copilot 最早让很多人熟悉了这种形态,现在大多数编辑器都内置了。以 Cursor 为例,它的补全功能就叫 Tab,官方的说法是根据你最近的修改、周围的代码和代码检查的报错来给出建议。
从第 01 模块的角度看,这就是"预测下一个词元"最直接的应用:把光标前后的代码作为输入,预测接下来的一段。
适合:你知道要写什么,只是不想一个字一个字敲。补一个函数的剩余部分、写重复的样板代码、按照上一行的模式写下一行。
不适合:你还没想清楚要写什么。补全只会顺着你开的头往下写,不会帮你想方案。
要注意:它补得很快、看起来很像样,很容易不经思考就按下 Tab。补全出来的参数名、函数名,是模型"预测"出来的,不一定真的存在(第 01 模块第 2 课的幻觉)。
二、对话
在一个聊天窗口里提问:"这个报错是什么意思?"、"帮我写一个解析 CSV 的函数"。可以是网页上的聊天机器人,也可以是编辑器侧边栏里的对话面板。
它和补全的区别是:你描述需求,它给出一整段代码或者一段解释,由你决定怎么用。它能看到的只有你粘贴给它的内容(编辑器里的对话面板通常能自动带上当前文件)。
适合:解释一段看不懂的代码、问一个概念、写一个独立的小函数、讨论几种方案的优劣。
不适合:需要同时了解和修改很多个文件的任务。你得手动把相关的文件都贴给它,再手动把它的回答改进对应的文件里,很容易漏。
三、编辑器里的智能体
在编辑器里给它一个任务,它自己去读项目里的文件、决定改哪些地方、直接修改文件,有的还能运行命令(跑测试、装依赖)。Cursor 的 Agent 模式、各种编辑器里的"智能体模式"都属于这一类。
这就是第 05 模块讲的智能体:一个模型加上一组工具(读文件、搜索代码、改文件、执行命令),在循环里自己决定下一步做什么。第 05 模块第 2 课那个一百多行的循环,就是它们的核心。
适合:跨多个文件的改动、需要先读懂代码才能动手的任务、改完要跑测试验证的任务。
要注意:它直接修改你的文件。改动都显示在编辑器里,你可以逐个接受或者撤销。改动一多,就要靠 git 来管理(第 3 课)。
四、命令行智能体
和上一种一样是智能体,只是不在编辑器里,而是在终端里运行。截至 2026 年 9 月,常见的有 Anthropic 的 Claude Code、OpenAI 的 Codex CLI 等。以 Claude Code 为例,按官方文档,在 macOS 或 Linux 上安装,然后在项目目录里启动:
curl -fsSL https://claude.ai/install.sh | bash
cd 你的项目
claude
Codex CLI 的安装方式之一是 npm install -g @openai/codex,装好后运行 codex。
命令行智能体和编辑器没有绑定,你可以用任何编辑器。它们也更容易放进脚本和自动化流程里,比如在持续集成里让它跑一个固定的任务。
适合:比较大的任务、需要大量执行命令的任务(跑测试、查日志、操作 git)、想让它连续工作一段时间的任务。
要注意:它能在你的电脑上执行命令。这是它最有用的地方,也是最需要小心的地方。
控制智能体能做什么
后两种形态都是智能体,都能动你的文件、执行命令。第 05 模块第 8 课讲过,能动手的智能体一定要限制权限。好在这些工具都提供了控制手段。以两个命令行工具为例(截至 2026 年 9 月的官方文档):
Claude Code 的权限模式,可以用 Shift+Tab 切换,也可以在启动时用 --permission-mode 指定:
| 模式 | 不用问你就能做的事 |
|---|---|
default(界面上叫 Manual) |
只能读文件,其他操作都要你确认 |
acceptEdits |
读文件、改文件,以及 mkdir、mv 这类常见的文件操作 |
plan |
只读,先提出计划,你批准之前不改任何文件 |
auto |
所有操作,由一个单独的模型在后台做安全检查 |
dontAsk |
只能用事先允许的工具,其他一律拒绝,适合自动化脚本 |
bypassPermissions |
所有操作,不做任何检查,官方说明只应在隔离的容器或虚拟机里使用 |
Codex CLI 的沙箱和审批,两个维度分开设置。沙箱决定它能动什么:read-only(只读)、workspace-write(只能在工作目录里写入,这是默认值)、danger-full-access(不设限制,官方不推荐)。审批策略决定什么时候要问你:默认的 on-request 在它要写工作目录以外的地方或者访问网络时会问你,never 则从不询问。
具体的模式名称以后可能会变,但思路是通用的,而且和第 05 模块第 8 课的结论完全一致:
- 陌生的项目、重要的改动,先用计划模式或只读模式。让它读代码、提出方案,你看过没问题再放开。
- 只让它在工作目录里写。不要让它能随意改你电脑上的其他文件。
- 需要"全部放开"时,放进容器或者虚拟机里。出了事,影响不到你的真实环境。
- 危险的操作要你确认。推送代码、删除文件、访问网络、安装依赖,这些不应该让它自己决定。
怎么选
| 任务 | 合适的形态 |
|---|---|
| 写代码时顺手补全 | 补全 |
| 看不懂一段代码、一个报错 | 对话 |
| 写一个独立的小函数或脚本 | 对话 |
| 改一个功能,涉及三五个文件 | 编辑器里的智能体 |
| 修一个要反复跑测试才能确认的 bug | 编辑器里或命令行的智能体 |
| 大范围的重构、升级依赖 | 命令行智能体,放在单独的 git 分支上 |
大多数人会同时用好几种:写代码时开着补全,遇到问题问对话,大一点的任务交给智能体。
形态之间的差别,本质上是你交出去的控制权有多少:补全只替你写几个字,每一个都要你按 Tab 确认;对话替你写一段,你决定要不要用;智能体替你决定改哪些文件、执行哪些命令。交出去的控制权越多,能省的事越多,你需要检查的东西也越多。下一课讲怎么让它更好地理解你的项目,第 3 课讲怎么检查它做的事。
练习
- 找一个你最近写过的小功能,分别用对话和智能体两种形态让 AI 实现一遍。比较一下:你花了多少时间描述需求、多少时间检查结果?
- 在你用的 AI 编程工具里,找到它的权限设置或沙箱设置。它默认允许做哪些事?哪些事会问你?把它调整到你觉得合适的程度。
- 在一个不重要的项目里,用计划模式(或者只让它读、不让它改)给智能体一个任务,只看它提出的方案,不让它动手。它的方案和你自己想的有什么不同?
自测
1. 补全、对话、智能体这三种形态,最根本的区别是什么?
交出去的控制权不同。补全只预测接下来的几个字,每次都要你确认;对话给出一段代码,由你决定怎么用;智能体自己决定读哪些文件、改哪些地方、执行哪些命令。控制权越多,省的事越多,需要检查的也越多。
2. 第一次让智能体处理一个陌生的项目,应该用什么样的权限设置?
先用计划模式或只读模式,让它读代码、提出方案,你检查过没问题再允许它修改。写入范围限制在工作目录里,推送、删除、联网、装依赖这类操作要你确认。
3. 为什么说智能体的"全部放开"模式只应该在容器或虚拟机里使用?
这种模式下它执行任何命令都不经过检查。一旦它做出错误的决定,或者被读到的内容诱导(第 05 模块第 8 课的提示词注入),就可能删掉文件、泄露密钥、改坏系统。放在隔离的环境里,出了问题也影响不到你真实的电脑和数据。