一个很典型的现象:现在讨论 Coding Agent,话题基本都集中在 Claude Code、Codex、Gemini CLI 这类命令行工具上,反而很少有人再吹"用 ChatGPT 网页聊着天把代码写完"了。我自己从去年开始把大量开发工作迁到终端 Agent,回头看这个变化其实一点都不意外。今天借 Claude Code 和 Hermes Agent 这两个代表性项目,把这个趋势拆开聊聊:为什么顶级 Coding Agent 都放弃了纯 Chat 模式?
先说结论:纯 Chat 不是不好,而是它的定位是"问答",不是"干活"。写代码恰恰是最需要"干活"的场景——改文件、跑命令、看报错、再改,这是一个闭环动作,不是一次性对话。Claude Code 把 Agent 搬进终端,Hermes Agent 把多个 Agent 塞进一个桌面工作台,它们在做的事本质上都是同一件:把"聊天"变成"工作"。
这篇文章我分四块讲:纯 Chat 模式为什么撑不起编码工具,顶级 Agent 的"工作台式"设计到底多做了什么,怎么把这套东西装到自己的机器上并接上不同模型,以及我在实操里踩过的坑和排查记。你可以当成一篇工具选型笔记,也可以当成一份上手手册,最重要的是理解藏在工具背后的设计逻辑——理解了逻辑,换任何新工具你都能自己判断它行不行。
1. 纯 Chat 模式为什么撑不起编码工具
1.1 Chat 的天然短板:上下文是聊出来的,不是干出来的
很多人对 AI 编程的第一印象,就是打开一个聊天窗口,把报错贴进去,然后复制粘贴答案。这个流程看起来没问题,但做几次你就会发现,它有两个致命弱点。
第一个弱点是:Chat 窗口里的上下文是"聊出来的"。你得一段一段把报错、代码、文件结构喂给模型,模型看不到你的项目,它就像一个只能听你口述的外包程序员。你说漏一个依赖、少说一个文件路径,它给的方案可能就完全跑偏。而真正尴尬的是,你发现自己一半时间在"打字描述项目",而不是在写代码。
第二个弱点是:Chat 窗口无法主动去看、去试、去执行。模型给你的建议是"你应该改 X 文件、执行 Y 命令",但实际上改没改、执行成功没成功,它完全不知道。你就像一个传话筒,在模型和终端之间来回搬运信息。一次两次可以,十次二十次之后,整个人都会变成 Copy 机器。
我举个具体场景。你让 Chat 帮你在一个 Express 项目里加一个文件上传中间件。它给出代码后,你得手动建文件、手动改路由、手动 npm install、手动启动服务、手动发一个请求测试。整个过程里模型是"瞎子",它看不到你装依赖是不是报错了,看不到你的路由写没写对。这不是 Chat 的错,是它的架构决定了它没有"手"和"眼睛"。
1.2 信息密度决定了 Chat 只能当"问答窗口"而不是"开发环境"
再深入一层,Chat 模式还有一个更隐蔽的问题:信息密度太低。
写代码的上下文包括什么?项目目录结构、现有代码风格、依赖版本、配置文件内容、历史报错、环境差异……这些信息想要用自然语言全部描述清楚,几乎是不可能的。你要不就花十分钟打一段巨长的 prompt,要不就指望模型猜。任何一个做过真实项目的人都会告诉你:模型猜的,大概率不对。
而 Claude Code 这类工具的做法是反过来的——它直接站在项目目录里。它能看到你所有的文件,能执行命令,能查看报错结果。它不是靠你"告诉"它项目长什么样,而是靠自己去"读取"项目长什么样。这就是信息密度的本质差异:Chat 模式的信息密度取决于你打字的细致程度,Agent 模式的信息密度取决于项目的真实状态。
用一句话总结:不是 Chat 不好,而是场景不对。Chat 适合解决"单点问题"——比如"这个正则表达式什么意思""这段代码哪里会越界",但做"整块工作"——比如"实现一个功能""重构这个模块""跑完测试修完报错"——就需要 Agent 模式上场。
2. 顶级 Coding Agent 的共识答案:从"对话框"走向"工作台"
2.1 Claude Code:把 Agent 搬进终端,而不是搬进聊天窗
Claude Code 是 Anthropic 官方出的命令行编程 Agent。你安装完之后,在项目目录里敲一个claude,它就起来了——不是把你带到网页聊天框,而是在你的终端里给你开一个交互式会话。
这个设计的选择非常关键。终端意味着什么?意味着它能直接读你项目里的文件、直接执行你的命令、直接看到执行结果。它和你的工作现场是零距离的。Chat 网页模式永远是"外面"的,而 Claude Code 是"里面"的。
我第一次用的时候最震撼的一点是,它可以自动接受文件修改。你在配置里允许它自动编辑文件,它就会直接动手改代码,改完之后还会告诉你改了什么、为什么这么改。如果你想更激进一点,还可以开启自动执行命令模式——它跑测试、装依赖、运行构建脚本,全程不需要你手动敲一条命令。
配合CLAUDE.md文件还能实现"项目记忆"。你可以在这个文件里写下项目的技术栈、代码规范、目录约定,Claude Code 每次启动都会读取它。这意味着你只需要维护一份文档,Agent 就会长期遵守你的工程规矩,而不是每次都要你在 prompt 里重新交代一遍。
2.2 Hermes Agent:第三方工作台的差异化打法
如果说 Claude Code 是"终端派",那 Hermes Agent 就是"桌面工作台派"。它是一个社区开发的第三方客户端,核心思路是把多个底层 Agent 聚合到一个可视化的环境里。你在 Hermes Agent 里可以调起 Claude Code,也可以调起 OpenAI 的 Codex,还可以接其他命令行 Agent,统一在一个界面里管理。
这个工具能火起来,是因为它解决了几个实实在在的痛点。第一是会话管理——终端里的 Claude Code 会话关了就是关了,但 Hermes Agent 会把每个任务记录下来,你可以随时回去翻历史任务,看当时是怎么处理的。第二是多 Agent 调度——你可以把一个大任务拆给不同的模型去跑,对比它们的产出,选出更合适的一个。
最有意思的是它对 Obsidian 的集成。Hermes Agent 允许你把每次任务的上下文沉淀成 Markdown 文档,存到你指定的位置。这意味着 Agent 产生的知识不再是聊天记录里的一堆文本,而是变成了可检索、可复用的个人知识库。这个设计我非常欣赏——它把"会话"变成了"资产",本质上也是在对抗纯 Chat 模式那种"聊完就丢"的毛病。
2.3 从 Chat 到 Agent,到底多做了什么
总结下来,Claude Code 和 Hermes Agent 做的其实是三件 Chat 做不到的事:
| 能力维度 | 纯 Chat 模式 | Agent 模式(Claude Code / Hermes Agent) |
|---|---|---|
| 项目感知 | 靠用户打字描述,信息丢失严重 | 直接读取文件系统、目录结构、配置文件 |
| 执行能力 | 只给建议,用户自己复制粘贴跑命令 | 能自动编辑文件、执行命令、查看结果 |
| 工作记忆 | 对话历史散落在聊天记录里,不可检索 | 通过 CLAUDE.md 或任务文档沉淀为可复用知识 |
这三件事的底层逻辑是:工具应该站在工作现场,而不是站在工作现场之外。Chat 模式就像用一个对讲机指挥别人干活,Agent 模式则是让一个员工坐到你的工位上,直接碰你的键盘、屏幕和终端。
还有一个行业信号值得注意:OpenAI 后来也推出了自己的命令行 Coding Agent(Codex CLI),GitHub Copilot 也在往 Agent 方向走。大家不约而同地去做 CLI、做 Agent,不是巧合,是市场验证了同一个方向——干代码活,就要到代码里去。
3. 真正落地:从安装到接上不止一个模型
理解了设计逻辑,接下来讲实操。这一部分我把环境准备、第三方模型接入、VS Code 集成三块拆开,每个步骤都标注了我实际验证过的细节。
3.1 环境准备:把 Claude Code 装到三种系统里
Claude Code 官方推荐通过 npm 安装。前提是你机器上有 Node.js 环境,建议 Node 18 以上,我实测在 Node 20 上最稳。
| 系统 | 安装命令 | 额外注意事项 |
|---|---|---|
| macOS / Linux | npm install -g @anthropic-ai/claude-code | 如果遇到权限报错,检查 npm 全局目录是否可写 |
| Windows | npm install -g @anthropic-ai/claude-code | 建议用 PowerShell 执行,避免旧版 CMD 的编码问题 |
| 任何系统 | 安装后先运行claude --version | 确认命令已进入 PATH,找不到就检查 npm 全局 bin 目录 |
安装完成后,在项目目录下运行claude就能进入交互模式。如果你是第一次用,它会引导你登录——可以用 Claude 账号登录,也可以配置 API Key 走第三方。
我的建议是:如果你只是尝鲜,先别急着登录官方账号。先把它跑起来,用/help看看有哪些斜杠命令,重点记这几个:/init(初始化项目并生成 CLAUDE.md)、/model(切换模型)、/clear(清空当前会话)、/compact(压缩上下文)。
3.2 用 CC Switch 把模型供应商换成 DeepSeek / Qwen / GLM
很多朋友卡在一步:没有 Claude 官方账号,或者想用国内模型跑 Claude Code。这就要用到第三方 API 和 CC Switch 工具了。
CC Switch 是一个社区配置工具,核心逻辑是"一键切换供应商"。它会帮你改写 Claude Code 的配置文件(路径一般在~/.claude/settings.json),把默认的请求地址和凭证换掉。你只需要在 CC Switch 里添加一个供应商,填上 API 请求地址和密钥,再选择它为默认供应商,重启 Claude Code 就生效了。
这里我必须强调一个最常见的坑:协议匹配问题。Claude Code 走的是 Anthropic 兼容协议,所以第三方供应商必须提供 Anthropic 格式的 API 端点,而不是 OpenAI 格式的/chat/completions端点。很多 DeepSeek、Qwen、GLM 的聚合服务商会同时提供两种协议,你接 Claude Code 时一定要选 Anthropic 那一类端点。
| 供应商类型 | 协议格式 | 请求路径特征 |
|---|---|---|
| Anthropic 兼容 | Anthropic Messages API | 一般是/v1/messages |
| OpenAI 兼容 | OpenAI Chat Completions API | 一般是/chat/completions |
| 聚合平台 | 看具体厂商文档 | 通常会在控制台里明确标注 |
配置好之后,模型名也要对得上。以 DeepSeek、Qwen、GLM 各自的官方文档为准,确认你填的模型标识符确实存在。我见过不少朋友配置完之后报model not found,排查半天发现是模型名写错了,比如把平台显示名直接当成了 API 模型标识符。
3.3 让 Claude Code 跑在 VS Code 里
命令行用熟练了之后,你会发现"边看代码边跟 Agent 对话"的需求很强烈。这时候可以走 VS Code 集成路线。
一种方式是直接在 VS Code 的终端里打开 Claude Code,这样你左侧看代码、右侧跑 Agent,窗口布局自己控制。另一种方式是安装社区插件,把 Claude Code 作为侧边栏面板接入。两者我都用过,结论是:插件面板更顺手,但配置更敏感;终端方式更朴素但零依赖。
插件配置的核心其实就是三点:可执行文件路径指向你 npm 全局安装的claude;认证方式跟命令行保持一致(要么账号登录要么 API Key);模型供应商也跟 CC Switch 的全局配置保持一致。插件的原理是帮你把请求转发给本地 Claude Code 进程,所以底层能力并没有缩水。
一个实用的小建议:如果你在 VS Code 里装了 GitHub Copilot 这类 chat 插件,不要把它们的角色和 Claude Code 搞混。Copilot Chat 本质还是"问答式"的,适合解释代码、生成单文件片段;而 Claude Code 适合做跨文件的多步改造。两者是互补关系,不是替代关系。
4. 常见报错与排查技巧实录
4.1 无权限类报错:Unexpected endpoint or method (POST /chat/completions)
这个报错几乎是我见过频率最高的,而且 80% 出在"用 OpenAI 格式的端点接 Anthropic 客户端"这个误操作上。Claude Code 本身要求 Anthropic Messages 协议,但配错端点后,它会把你正在使用的模型 API 请求发到/chat/completions,于是返回这个错误。
排查思路很简单:先查你的 base URL 到底是哪个协议,再确认 URL 末尾有没有/v1/messages这个路径。很多聚合平台会给你两个地址,记得用Anthropic那一列,别用OpenAI那一列。如果确认端点没问题,再看模型名是否完整。
4.2 地区不可用提示:Claude Code might not be available in your country
这是第二个高频问题。官网对部分地区限制了运行,你启动时可能会看到这个提示。我的建议是:先冷静判断你的网络出口环境是不是真的在官方支持范围内,如果确实不在,最务实的路线是换第三方 API 通道,用 CC Switch 把供应商换成 DeepSeek、Qwen、GLM 这一类的 Anthropic 兼容接口,绕过模型访问层面的限制。
这里特别提醒一句:不要看到报错就急着改系统环境变量乱试,先把claude --version跑一下确认基础命令正常。"命令能跑"和"模型能通"是两个不同的层级,拆开排查会快很多。
4.3 Hermes Agent 任务执行到一半停住
Hermes Agent 聚合了多个底层 Agent,任务执行到一半不动了,通常是这几类原因:第一,底层模型服务商限流,尤其是用免费或低价 API 时很常见;第二,上下文超长触发单次请求的 token 上限;第三,某个子 Agent 的鉴权过期了。
我的建议是先在 Hermes Agent 的日志面板里看是哪一层出了问题。如果确定是上下文超长,就用它的会话压缩功能,把之前的讨论压成摘要再继续;如果是限流,就等一下或者换一个限流更宽松的供应商;如果是鉴权过期,就重新配置一下该供应商的 API Key。
4.4 其他典型问题速查表
我把一些零散的坑整理成一张速查表:
| 问题现象 | 可能原因 | 解决方向 |
|---|---|---|
claude命令找不到 | npm 全局目录没进 PATH | 重装 npm 或手动把全局 bin 目录添加到 PATH |
| 启动后一直转圈不回复 | 网络不通或端点填错 | 先 curl 测一下 API 端点是否可达 |
| CC Switch 切换后没生效 | 配置文件路径不对或缓存未刷新 | 确认~/.claude/settings.json被正确改写,重启终端后再试 |
安装时报EACCES权限错误 | npm 全局目录权限不足 | 用 nvm 管理 Node 环境,避免直接用 root 权限硬刚 |
5. Agent 好用,但别神化 Agent:边界与经验
5.1 什么时候用 Chat、什么时候用 Agent
说了这么多 Agent 的好话,但我必须泼一盆冷水:Agent 不是银弹,Chat 也不是废物。我自己的分工是这样的:
适合用 Chat / 网页模型的场景:解释一个陌生概念、让你快速理解一段难懂的代码、做方案头脑风暴——这些不需要动项目文件,纯粹是"知识问答",Chat 的即时性和轻量反而是优势。
适合用 Agent(Claude Code / Hermes Agent)的场景:跨文件重构、批量改测试、按 CLAUDE.md 规范实现新功能、报错迭代调试——这些都需要"动项目"的能力,必须让 Agent 站在项目现场里干活。
这个判断标准很朴素:如果这个任务需要你频繁地"看文件、改文件、跑命令",那就是 Agent 的活;如果只需要"动嘴问",Chat 完全够用。别让工具承担它不擅长的角色,这才是效率的源头。
5.2 我踩过的几个坑,说给你听
第一个坑是过于信任自动编辑。我试过让 Claude Code 自动接受文件编辑,结果它在改一个路由文件时,顺带把我另一个模块的缩进全部格式化了。虽然逻辑没坏,但 diff 看起来非常吓人。后来我的习惯是:默认只允许它自动编辑指定文件,涉及面大的改动,我会先让它出一个改动清单,我确认后再让它动手。
第二个坑是 YOLO 模式。YOLO 模式会让 Agent 自动执行终端命令,非常爽,但也非常危险。我有一次让它跑一个清理脚本,它直接执行了一条带递归删除的命令,差点把整个工作区删掉。那次之后我把规则改成:所有带rm、drop、clean这类高危词的命令,必须停下来问我。这个规则现在写在我的 CLAUDE.md 里。
第三个坑是密钥泄露。如果你是靠第三方 API Key 接的 Claude Code,那个 key 可能会出现在会话记录或者 CLAUDE.md 里。我建议把 API Key 通过环境变量注入,而不是直接写进配置文件的明文里。CC Switch 这类工具虽然方便,但它在持久化配置时要小心别把密钥同步到公开仓库。
5.3 如果你要跑更大的项目,工作流可以这样搭
最后给一个我目前在用的组合方案,算是对这篇文章的实操收拢:
- 项目根目录维护一份
CLAUDE.md,把技术栈、目录规范、命令脚本全部写进去,让每个 Agent 会话默认继承项目记忆; - 日常小改动、单文件功能,直接在 Claude Code 终端里做,让它跑测试确认通过;
- 大的多步骤任务,用 Hermes Agent 建一个任务卡片,把需求拆成子任务,让 Agent 分步执行,避免上下文被垃圾信息撑爆;
- 做完一个里程碑,把关键决策和踩坑记录沉淀到 Obsidian 或项目 wiki,让下一次 Agent 启动时能读到这些历史经验。
这个组合的本质,是把"聊天记录"变成"工程资产"。用不上几天,你会发现 Agent 帮你省下的不只是敲代码的时间,还有大量"重新解释上下文"的沟通成本。我的个人看法是:纯 Chat 不会消失,它会退回到自己擅长的位置——做问答入口、做方案讨论;而真正动手写代码的事情,正在肉眼可见地向 Claude Code 这类 Agent 工作流迁移。这套切换逻辑,值得每个还在纯 Chat 里挣扎的开发者试试。