本地编码智能体(以及它们如何与 Claude 搭配)
本地编码智能体是一个运行在你自己机器上的程序,它读取你的仓库,并替你编辑文件。你用自然语言描述一处改动;智能体规划它、跨多个文件编写代码、运行你的测试、读取失败信息,然后再试一次 —— 这是一个循环,而不是一次性的回答。浏览器标签页里的聊天助手递给你一段代码让你粘贴;而编码智能体会在你的仓库内部自己完成粘贴、运行和修复。
让本页值得一读的关键洞见:几乎所有这些工具都是模型无关的(model-agnostic)。智能体(触碰你文件的那个循环)与模型(决定写什么的大脑)是分离的。所以同一个工具既可以指向 Claude 以获得最佳的代码质量,也可以指向通过 Ollama 运行的本地开放权重模型,让你的代码永不离开你的笔记本电脑。你根据工具与工作流的契合度来挑选智能体,根据质量与隐私的权衡来挑选模型 —— 两者互相独立。
- 理解编码智能体这一原型:一个读取你仓库、规划、编辑文件、运行测试并迭代的智能体循环
- 了解真正的开源工具 —— Aider、Cline、Continue、OpenHands —— 以及 Anthropic 自家的 Claude Code 如何定位
- 把握“模型无关”为什么重要:把一个智能体指向 Claude 以追求质量,或指向本地模型以保护隐私
- 理解隐私维度 —— 本地模型意味着你的代码永不离开你的机器
- 沿两条轴做选择:IDE 集成 vs CLI vs 自主,以及 Claude 驱动 vs 完全本地
原型:一个智能体循环,而非聊天框
本页上的每个工具都是同一个循环的变体。一旦你看清这个循环,每个工具就只是围绕它的不同形态:
- 读取(Read) —— 智能体收集上下文:你指给它的文件、仓库结构,有时还有测试输出或错误日志。
- 规划(Plan) —— 它决定改什么、在哪些文件里改,通常会在动手之前先提出一个计划。
- 编辑(Edit) —— 它把改动写入磁盘上真实的文件(通常以一个由你批准的 diff 形式展示)。
- 运行(Run) —— 它执行命令:你的测试套件、构建、linter、脚本。
- 观察并迭代(Observe and iterate) —— 它读取发生了什么(测试通过了?还是一个堆栈跟踪?),然后回到第 2 步继续循环,直到任务完成,或它把控制权交还给你。
这与智能体式的 tool use 是同一种形态:模型被赋予工具(读文件、编辑文件、运行命令),并自行决定何时调用它们。工具之间的差别,主要在于这个循环拥有多大的自主权,以及它生活在哪里 —— 你的终端、你的编辑器,或一个自行运行的沙箱环境。
那个循环中间的模型是可替换的。这正是单个智能体能服务两类截然不同用户的全部原因:想要尽可能最强代码的人(把它指向 Claude),以及在法律上不能让代码离开自己网络的人(把它指向本地模型)。
为什么“模型无关”是头条特性
智能体与模型是分离的两块。智能体拥有循环 —— 读取文件、应用 diff、运行测试。模型拥有判断力 —— 写什么、为什么写、何时停止。把它们解耦,就给了你两个独立的旋钮:
- **质量旋钮 → Claude。**对于困难的推理、多文件重构和长上下文工作,像 Claude 这样的前沿模型能产出明显更好的编辑,并更可靠地从失败中恢复。这些工具中的大多数都把 Claude 列为推荐或默认选择。(该选哪个 Claude 档位是另一个决定 —— 见选择模型。)
- **隐私旋钮 → 本地模型。**把同一个智能体指向一个运行在 Ollama 下的开放权重模型,你的代码、提示词和 diff 就永不离开你的机器 —— 没有 API 调用,没有第三方,线路上什么都没有。对于受监管的、气隙隔离的或机密的代码库,这就是决定性因素。诚实的权衡是:一个小到能在笔记本电脑上运行的模型,在最困难的任务上与前沿模型不在同一个量级。你是在用一部分能力换取对数据的完全掌控。
- 模型无关并不意味着每个模型都一样好。循环运行方式相同,但弱模型会做出更糟的编辑、误读测试失败、并在无效循环中打转。隐私与能力确实此消彼长 —— 按任务选择,而不是一次定终身。
真正的工具(已验证)
五个值得了解的工具。前四个是开源且模型无关的;第五个是 Anthropic 自家的智能体,收录进来是为了让你看到 Claude 原生体验的定位。
Aider —— CLI 结对程序员
Aider 运行在你的终端里,围绕 git 构建:它编辑你仓库中的文件,并为每次改动自动提交一条合理的提交信息,所以每一次 AI 编辑都是一个你可以审查、撤销或回退的 diff。它是模型无关的 —— 它与像 Claude 这样的前沿模型配合最佳,也能通过 Ollama 连接本地模型(aider --model ollama_chat/<model>)。如果你活在终端里、又想要严格的 git 卫生,Aider 是标准的 CLI 之选。
Cline —— 你 IDE 里的智能体
Cline 是一个开源编码智能体,生活在你的编辑器里(VS Code 和 JetBrains),同时也提供一个终端/CLI 界面。它创建文件、运行命令、使用工具,并带有人类在环审批 —— 你会看到并批准每一步。它是模型无关的,并明确支持 Claude 以及通过 Ollama 或 LM Studio 运行的本地模型。当你想要一个不用离开编辑器的、有点自主性的智能体时,就选 Cline。
Roo Code 是 Cline 一个广为人知的分支,加入了自定义“模式”(例如用于规划的 Architect 模式,用于编辑的 Coder 模式)。它同样是模型无关的。请注意下面它的状态 —— 它已不再是曾经那个安全的默认选择。
Continue —— 开源 IDE 助手
Continue 是一个面向 VS Code 和 JetBrains(外加一个 CLI)的开源助手,涵盖聊天、编辑、自动补全和一个智能体模式。它是彻底模型无关的:其文档列出了 Anthropic(Claude)、用于本地模型的 Ollama,以及许多其他提供商,还可以为不同角色(聊天、编辑、自动补全)指定不同的模型。如果你想要一个可配置的助手,并亲手接线决定哪个模型做什么,它是一个强力之选。
OpenHands —— 自主智能体
OpenHands(前身为 OpenDevin)是这四者中最自主的:一个面向 AI 软件开发智能体的平台,它们在沙箱环境中工作,把一个任务(例如一个 GitHub issue)拆解开来,并以更少的逐步审批将其端到端地完成。它是模型无关的 —— “与任何 LLM 一起使用”,Claude 也在其中 —— 并且可以自托管。当你想把一整个任务交出去、稍后再回来查看,而不是逐个批准每次编辑时,就选 OpenHands。
Claude Code —— Anthropic 自家的智能体
Claude Code 是 Anthropic 官方的智能体式编码工具:它读取你的代码库、编辑文件、运行命令和测试,并跨越你的终端、IDE、桌面应用和网页工作。与上面四者不同,它不是“把它指向任何模型” —— 它围绕 Claude 构建并为之调优,这正是为什么它的循环感觉更紧凑、在困难任务上编辑更常一次到位。如果你的首要目标是最佳的 Claude 驱动编码体验,而非最大的模型可替换性,这就是那条原生路径。完整细节见 什么是 Claude Code。
如何选择
两条轴决定了几乎一切:
轴 1 —— 智能体生活在哪里:
- CLI / 终端(Aider、Claude Code)—— 可脚本化、对 git 友好、可管道接入其他工具。如果你活在 shell 里,这是最佳选择。
- IDE 集成(Cline、Continue、Claude Code 的编辑器界面)—— 在你的编辑器内进行 diff 与审批,代码就在手边。日常编辑的最佳选择。
- 自主 / 沙箱(OpenHands)—— 把一整个任务交出去,然后审查结果。批量或放手不管的工作的最佳选择。
轴 2 —— Claude 驱动 vs 完全本地:
- Claude 驱动 —— 最佳质量,尤其在困难的多文件或长上下文任务上。你的代码会被发送到模型 API。当质量最重要、且你的代码可以发送给提供商时,选它。
- 完全本地(Ollama) —— 你的代码永不离开机器;运行免费;可离线工作。当隐私、监管或气隙隔离没有商量余地时,选它 —— 并接受一个笔记本电脑规模的模型在最困难的任务上会更弱。
经久耐用的做法:**根据契合你工作流的界面挑选智能体,然后按任务挑选模型。**没有什么能阻止你在机密仓库上用本地模型跑一个 IDE 智能体,而在其他一切上用同一个智能体跑 Claude。
挑选并配置一个编码智能体
- CLI(Aider、Claude Code)、IDE 集成(Cline、Continue)或自主(OpenHands)。把它匹配到你已经工作的地方 —— 终端 vs 编辑器 vs 交出去再审查。
- Claude 追求最佳质量(代码会发送到 API),或一个本地 Ollama 模型追求完全隐私(代码永不离开机器)。除 Claude Code 外,每个工具的这一选择都与智能体无关;而 Claude Code 是 Claude 原生的。
- 遵循该工具的文档。Aider 通过 pip 安装;Cline 和 Continue 从 VS Code 或 JetBrains 市场安装;OpenHands 自托管;Claude Code 通过其官方安装器安装。
- 对于 Claude,设置你的 Anthropic API 密钥(或为 Claude Code 登录)。对于本地,先安装 Ollama 并拉取一个模型 —— 见《用 Ollama 在本地运行模型》—— 然后把智能体指向它。
- 跑一个有界的任务(修一个失败的测试、加一个小函数)。在批准之前审查每一个 diff。只有在你亲眼看到循环在你的仓库上表现良好之后,才更多地信任它的自主性。
一个具体的首次运行,把 Aider 指向一个本地模型(隐私、免费、离线)—— 先用 Ollama 拉取模型,然后:
在本地 Ollama 模型上运行 Aider(代码留在你的机器上)
aider --model ollama_chat/qwen3
要把同一个工具改为指向 Claude(最佳质量,代码发送到 API),你设置你的 Anthropic 密钥并选择一个 Claude 模型 —— 智能体循环完全一致;改变的只是大脑:
export ANTHROPIC_API_KEY=sk-ant-...
aider --model sonnet
那个切换 —— 一个参数,两种截然不同的隐私/质量画像,同一个智能体 —— 就是本页的全部要点。
自我检查
0/4- 编码智能体在你的机器上运行一个循环 —— 读仓库、规划、编辑文件、运行测试、迭代 —— 而不是递给你一段段代码去粘贴。
- 几乎所有这些工具都是模型无关的:智能体与模型是分离的,所以你可以在不改变循环的情况下替换大脑。
- 两个旋钮:Claude 追求最佳代码质量,或通过 Ollama 的本地开放权重模型追求完全隐私 —— 你的代码永不离开机器。
- Aider = CLI/git;Cline = 你 IDE 里的智能体;Continue = 可配置的 IDE 助手;OpenHands = 自主/沙箱;Claude Code = Anthropic 自家的 Claude 原生智能体。
- 沿两条轴选择 —— 智能体生活在哪里(CLI vs IDE vs 自主)以及 Claude 驱动 vs 完全本地 —— 并按任务挑选模型,而非一次定终身。