☰
AI Agent实战:从Hermes登顶看开源Agent的本地部署与工具调用
2026/9/26 8:00:06 网站建设 项目流程

9月这波AI Agent热度,最让我意外的不是哪家又发了新模型,而是一份“9月AI Agent排行”里,排在第一名的是Hermes,把Claude Code、Codex这些大厂明星都甩在身后。如果你最近在逛开源社区,大概率已经刷到过这张榜单图:Hermes第一,Claude Code、Codex进前十,评论区吵成一团,有人觉得“开源项目终于扳回一局”,也有人质疑“这榜单到底怎么算的”。

我的看法比较朴素:排名本身不重要,重要的是榜单背后透出的风向——用户对AI Agent的期待已经从“演示很酷”变成了“装得上、跑得起、真能干活”。Hermes能登顶,恰恰说明这一轮的竞争焦点变了:不再是谁的模型参数大、谁的花活多,而是谁能让一个普通开发者用最小的成本把Agent跑起来。这篇就把榜单背后的逻辑、几个主角的真实情况,以及我自己从0到1搭Agent踩过的坑一次说清楚,干货偏实操,适合想真正上手AI Agent的朋友。

1. 榜单背后的三个信号:为什么第一会是一只“开源黑马”

1.1 先看这份榜到底在“榜”什么

网上流传的这份9月AI Agent排行,不同版本统计口径不太一样,有的是按话题热度、有的是按开源项目的Star增长和下载量、有的是按教程和模板的产出量,综合下来给了一个加权排名。所以严格来说它不是一个官方标准,但“Hermes第一、Claude Code和Codex进前十”这个结果,和我们过去一个月在社区里感受到的趋势是完全一致的。

我看这份榜单的时候,第一反应是:这哪里是模型排行榜,分明是“用户真实需求排行榜”。排在前面的项目,都有一个共同特征——上手门槛低到离谱,而且能直接对接现有工作流。这个信号比“谁家模型又刷新了benchmark”更有参考价值。

1.2 信号一:本地优先路线开始反超

Hermes能拿第一,最核心的原因就是“本地优先”这四个字。现在很多团队对数据的敏感程度已经不允许把代码、文档、业务数据随便往云端模型里塞,更别提那些要接入客户环境做私有化部署的场景。Hermes这类项目主打的就是你能在自己电脑上部署、自己掌控数据,同时它还保留了对云端模型(比如DeepSeek)的调用能力,等于“本地控制大脑、远程调用算力”两不误。

这种路线在一年前还是小圈子里的极客玩法,但在今年9月冲到第一名,说明“数据不出本地”已经从加分项变成了刚需。尤其对于国内开发者,用开源模型当底座、用本地或中立API做推理,是合规和成本双重压力下最自然的选择。

1.3 信号二:编程Agent从“玩具”变成“效率工具”

Claude Code和Codex进前十,很多人觉得不稀奇,毕竟是顶级AI公司的产品。但我要说的是,它们俩能同时进前十,标志着一个更重要的变化:编程类Agent已经不再是程序员之间互相炫耀的“玩具”,而是真的融进了日常开发流程。

我自己过去一个月里,Claude Code帮我处理了大量重构和测试代码的活,Codex则是写脚本、做小工具时的第一选择。这种“终端/IDE里的结对程序员”体验,和聊天机器人完全不同——它直接作用在代码库上,能干完活给你看diff,这种效率提升是肉眼可见的。榜单前十里有三个位置被这类编程Agent占据,说明开发者正在用脚投票。

1.4 信号三:用户开始关心“装得上、跑得起”

另一个被忽略的信号,藏在热搜词里。你去翻9月的搜索记录,“hermes安装”“claude code安装”“codex使用教程”“deepseek hermes桌面版”“vscode配置claude code”这些词的搜索量高得吓人。这说明什么?说明大批人不是来看热闹的,是想立刻上手干活的。

和一年前大家追着问“AI Agent是什么”完全不一样,现在的问题变成了“我到底怎么把它装到我电脑上”“怎么接DeepSeek”“怎么在VSCode里配置”。整个市场已经从“有没有”进入“怎么用”的阶段,排名靠前的项目恰恰是这些疑问的答案。

2. 先把概念捋清楚:Agent、LLM和AI模型不是一回事

2.1 三个词的关系,一句话版本

关于AI Agent,我几乎每天都能在评论区看到同款问题:“Agent和LLM有什么区别?”“DeepSeek属于Agent吗?”“Hermes是不是又一个模型?”这里先用最简单的方式捋一遍:

  • AI模型是最大的集合。包括图像识别模型、语音合成模型、多模态模型、推荐模型等等,大语言模型(LLM)只是其中一类。
  • LLM是专攻自然语言理解和生成的那一类模型。拿DeepSeek来说,它本质上是一个LLM提供商——既开源权重,也对外提供API服务。你说“DeepSeek属于哪个”,答案就是:它属于LLM这个子类,它本身不是一个Agent框架,而是可以给Agent当“大脑”用的引擎。
  • Agent是建立在LLM之上的完整系统。它不只会聊天,还会自己规划、调用工具、观察结果、修正动作。类比成人:LLM是大脑,Agent是整个人,手和脚就是工具调用,记忆和思考循环就是它的工作方式。

这份榜单里排第一的Hermes,“Hermes”本身是一个Agent运行时/框架,它可以用Hermes系列模型,也可以接DeepSeek、Qwen这些外部LLM。所以别再把Agent和模型画等号了。

2.2 Agent凭什么比单纯调用模型更“聪明”

很多人第一次接触AI Agent时的困惑是:我之前直接用ChatGPT、直接用DeepSeek聊天,不也挺聪明的吗?为什么要多一个Agent层?

关键在于“使用工具”。单纯的模型调用,是你问我答,输出文字就结束了。Agent则多了一个闭环:你给它一个目标,它分解成步骤,遇到需要外部信息的情况,它主动调用你注册好的工具(查数据库、跑脚本、读写文件、请求API),拿到结果后再继续思考下一步,直到完成整个任务。

这个“规划—执行—观察—再规划”的循环,是Agent和普通AI助手的本质差异。开发里管这个叫Agent Loop,能力强的Agent还能把上次任务的结论存下来,形成长期记忆。市面上那些“AI自动写周报”“AI自动运维排障”的产品,底层都是这个逻辑:不是一次生成,而是一遍遍生成、执行、纠错。

3. Hermes凭什么排第一:开源Agent的完整度,终于到了能“直接下手”的阶段

3.1 Hermes是什么、第一名的能力拆解

关注开源社区的朋友,应该对Hermes这套体系不陌生。它的定位是“开箱即用的本地优先Agent运行时”,不是又一个套壳聊天软件,而是把这个几个部分拼得很完整:

  • Desktop端:提供图形界面,普通用户不用敲一行命令就能配置模型和技能,这是它能登顶的关键。过去开源Agent最难的就是安装配置劝退,Hermes把这一步做成了可视化界面。
  • Skill机制:Agent可以加载不同的“技能包”,比如代码执行、文档处理、网页抓取,每个技能就是一组指令加工具脚本,相当于给Agent装外挂。今年社区里已经有大量“skill开发指导”的教程,上手成本已经压得很低。
  • 模型无关:Hermes不强绑某个模型,你在配置里填哪个模型的API,它就变身成哪个模型驱动的Agent。这让DeepSeek等国产模型生态直接受益,也是它搜索热度里高频出现“deepseek hermes”的原因。

我实际用下来的感受是:Hermes把以前需要自己写框架、自己调Tool Calling、自己做记忆管理的一堆脏活累活,打包成了一个“装完就能跑”的成品。它拿第一不是偶然,是“完整度”的胜利。

3.2 最被低估的操作:让Hermes跑在DeepSeek上

在所有Hermes相关热搜里,最有含金量的一条是“deepseek hermes”。为什么大家这么执着于把Hermes和DeepSeek配对?三个原因:DeepSeek的中文能力好、API便宜、模型权重开放,适合本地二次开发。

实际操作非常简单,我按自己的环境给你走一遍:

第一步,去DeepSeek开放平台申请一个API Key,这个没什么门槛。
第二步,打开Hermes Desktop,进入模型配置页。新增一个模型供应商,Base URL填https://api.deepseek.com/v1(有些版本要填/chat/completions结尾的地址,看你用的SDK版本,拿不准就填带/v1的那个),模型名填deepseek-chat,API Key填你刚申请的Key。
第三步,把Hermes的默认模型切到“deepseek-chat”,保存后重启应用。
第四步,测试一句话:“帮我写一个Python脚本,读取当前文件夹下所有CSV文件并合并。”如果它能调用代码执行技能,说明Agent链路已经通了。

本质上是把“模型供应商”解耦了:Hermes是Agent壳子,DeepSeek是推理大脑。这个组合跑起来之后,成本极低、中文表现好、数据流向可控,我认为它才是“Hermes第一”真正的基本盘。如果你也想复现第一名的体验,从这里入手是最快的。

4. Claude Code与Codex:终端派Agent为什么能挤进前十

4.1 Claude Code:终端里的结对程序员

Claude Code可以说是“终端派Agent”的教科书。它不需要图形界面,直接运行在命令行里,然后以你的代码库为上下文,完成读代码、改代码、跑测试、提交PR这一整条链路。

安装很直接,Node环境准备好之后一句命令:

npm install -g @anthropic-ai/claude-code

然后在项目目录里执行claude,它会读当前仓库的代码结构。首次运行会要求配置API Key,你可以用Anthropic官方Key,也可以接兼容OpenAI接口的第三方中转。这里有个重要提醒:国内开发者如果直接用官方Key,网络和计费都是实际问题,很多人选择在配置里指向DeepSeek或其他兼容API。改法是在启动前设置环境变量,或者用工具切换供应商配置。

在VSCode里用Claude Code,我建议直接装官方扩展,装完之后侧边栏多出一个面板,选中代码就能让Agent修改,每步改动都会有diff预览,确认后才写进文件。这个“人审AI改”的模式,是我认为编码Agent最靠谱的落地形态——不是全自动,而是人机协作。

4.2 Codex:从一个命令到一个Agent

Codex是OpenAI产品线里面向编码任务的新一代Agent。它的CLI版本可以和Claude Code做类似的事情:读取仓库、生成方案、改代码、跑命令。但Codex更强调“自主执行”,你给它一个任务,它能自己开终端跑测试、看结果、修bug,循环往复直到测试通过。

安装方式同样是npm:

npm install -g @openai/codex

配置方面,Codex默认用OpenAI的模型,但如果你在配置里把模型供应商指向DeepSeek——比如把base_url设为https://api.deepseek.com/v1,模型填deepseek-chat,Key换成DeepSeek的Key——它也能跑起来。很多朋友关心的“codex接入deepseek”,核心就是改OPENAI_API_KEY和base_url这两项,本质还是“Agent框架不变,换大脑”。

这里想多说一句:Codex的自主执行模式很强大,但也意味着风险更高。比如它可能会自作主张跑一些破坏性命令,所以第一次用一定要在小仓库、有版本控制的环境里试验,别一上来就扔进生产仓库。

4.3 这两个工具怎么选:我的取舍标准

对比维度Claude CodeCodex
核心场景仓库级代码重构、代码解释、提交审查自主任务闭环、自动调试、修bug
安装方式npm全局安装npm全局安装
运行形态命令行 + VSCode扩展面板命令行 + 云端任务
执行风格偏保守,改完给你看diff偏自主,自己跑命令验证
接DeepSeek改环境变量兼容接口改base_url和模型名
适合谁喜欢把控每一行改动的开发者愿意放手让AI自己折腾的场景

我的习惯是:写新功能、做重构用Claude Code,因为它每次改动都经过我确认;处理“脚本死活跑不通、帮我找出哪里错了”这类闭环问题时用Codex,因为它自己能跑测试自己修,省心很多。两者都进了前十,本质上是因为它们占据了“终端/IDE里干活”这条最有粘性的赛道。

5. 从0到1搭建一个能跑的最小Agent:我的练手路线

5.1 两条路线怎么选:现成框架 vs 手写闭环

很多人问“AI Agent怎么搭建”,这个问题其实可以先拆成两条路:

路线A:用Hermes这类现成Agent框架,填好模型配置,再加几个官方技能包,你已经拥有一个能对话、能调用工具、能处理文档的Agent。优点是快,缺点是内部逻辑得黑盒使用。

路线B:自己用代码写一个“最小Agent闭环”,模型用DeepSeek的API,工具就注册一个计算器和当前时间函数,总共几十行代码。优点是原理全透明,后面想加什么功能都能自己改。

我的建议是两条都走:先用路线B把Agent的工作原理吃透,再回到路线A去玩Hermes的高级能力。别一上来就啃复杂框架,你会被“配置地狱”劝退的。

5.2 手写最小Agent实战:几十行代码跑通Agent Loop

我们直接写一个最小的Agent核心循环,代码主要做三件事:接收用户任务、让模型决定调哪个工具、执行工具并把结果回喂给模型。

import json from openai import OpenAI client = OpenAI( api_key="你的DeepSeek_API_Key", base_url="https://api.deepseek.com/v1" ) # 1. 准备两个最简单的工具 def add(a: float, b: float) -> float: """加法运算""" return a + b def get_current_time() -> str: """返回当前时间字符串""" from datetime import datetime return datetime.now().strftime("%Y-%m-%d %H:%M:%S") tools = [ { "type": "function", "function": { "name": "add", "description": "计算两个数字相加的结果", "parameters": { "type": "object", "properties": { "a": {"type": "number"}, "b": {"type": "number"} }, "required": ["a", "b"] } } }, { "type": "function", "function": { "name": "get_current_time", "description": "获取当前日期和时间", "parameters": {"type": "object", "properties": {}} } } ] # 2. 工具分发表 tool_map = { "add": add, "get_current_time": get_current_time } # 3. 核心循环:让模型决定调用工具,执行后回填结果 messages = [{"role": "user", "content": "现在几点了?顺便帮我算一下 23.5 加 76 等于多少?"}] for _ in range(5): # 最多循环5轮,防止死循环 resp = client.chat.completions.create( model="deepseek-chat", messages=messages, tools=tools, tool_choice="auto" ) msg = resp.choices[0].message if msg.tool_calls: messages.append(msg) for tc in msg.tool_calls: args = json.loads(tc.function.arguments) result = tool_map[tc.function.name](**args) messages.append({ "role": "tool", "tool_call_id": tc.id, "content": json.dumps(result, ensure_ascii=False) }) continue # 模型不再调用工具,直接输出最终回答 print(msg.content) break

这个代码跑出来,DeepSeek会先决定调用get_current_time和add两个工具,得到结果后再组织语言回答用户。整个链路就是你搭Agent的最小骨架:模型负责“思考和决策”,你负责“提供工具和执行动作”。

5.3 跑通之后可以再升级什么

这个最小闭环跑通之后,后面就都是增量工作:

  • 加更多工具:把文件读写、HTTP请求、数据库查询、PLC寄存器读写(做工业控制端的Agent很吃这个)都注册进来,每个工具就是一段函数和一份JSON描述。
  • 加长期记忆:用一个SQLite或JSON文件把重要的对话结论存下来,下次任务开始时加载进上下文。
  • 加技能封装:把一组相关工具和提示词打包成“技能包”,这就是Hermes里Skill机制的思路。
  • 加人审环节:在执行高风险工具(如删除文件、执行Shell命令)前,加一个二次确认,这也是生产环境Agent必须具备的安全阀。

6. 跑起来之后避不开的坑:我的排查记录

6.1 “cc switch local proxy failed while handling codex endpoint /responses”怎么解

这个报错是我在折腾Codex接入DeepSeek时遇到的,搜索热度很高,说明很多人都卡在这一步。英文报错翻译过来就是“在尝试处理codex endpoint的/responses请求时,本地转发配置切换失败”。遇到它不用慌,按照下面这个顺序排查,绝大多数情况能解决。

先理解它为什么会发生。Codex会把请求发到某个端点的/responses路径,如果这个端点指向本地服务(比如你配置了http://localhost:xxxx),而本地这个端口根本没有正常监听,或者请求被本机其他网络转发软件截走了,就会出现这个报错。

我的排查流程:

第一步,用curl直接测试目标地址能不能通。假设你配置的Base URL是http://127.0.0.1:8080,那就执行:

curl http://127.0.0.1:8080/v1/models

如果这个命令超时或返回拒绝连接,问题就出在本地服务本身。

第二步,查环境变量。HTTP_PROXY、HTTPS_PROXY这类变量如果配置了,会直接影响请求转发路径。执行env | grep -i proxy看有没有多余设置,有的话先清掉再试。

第三步,检查Codex的配置文件。确认base_url有没有多余的空格、模型名是否正确。这里最常见的问题是把Base URL填成了.../v1/chat/completions这样一个完整路径,而Codex需要的是域名级的.../v1,多写一段就会导致端点和请求路径拼接出错。

第四步,把本机无关的HTTP转发软件关掉。这个坑最隐蔽,我折腾了一晚上,最后发现是本机一个工具把localhost请求转发走了,导致Codex实际连到的根本不是我自己起的服务。关掉之后问题直接消失。

如果你的报错场景是“Codex跑着跑着突然报local proxy failed”,多半是网络环境切换(比如换了Wi-Fi、开了热点)导致的本地连接中断,重启Codex进程一般就能恢复。

这个问题完整的排查对照表:

现象可能原因解决办法
curl本地地址拒绝连接本地服务没启动/端口被占重启本地服务,换个端口
curl通但Codex报错Base URL路径多写了一段改成https://api.deepseek.com/v1
报错带proxy字样本机有HTTP转发软件干扰排查并关闭无关的网络转发
换网络后突然报错网络环境变化导致连接断开重启Codex进程,重新握手
偶尔通偶尔不通环境变量配置冲突清掉HTTP_PROXY/HTTPS_PROXY

6.2 另外三个高频坑,我替你们先踩了

除了上面这个local proxy报错,还有三个坑几乎每天都有朋友来问,这里一起说掉。

坑一:模型根本不调用工具。症状是Agent像个普通聊天机器人,你说“帮我算个加法”,它直接口算出结果,根本不走Tool Calling。排查方向有两个:一是工具描述写得不够明确,模型不知道什么时候该调它;二是模型本身的Function Calling能力弱,或者配置里没启用tools参数。解决办法是把每个工具的描述写清楚,“只有在用户需要计算时才调用”,基本能治一半的问题。

坑二:上下文被工具返回结果撑爆。Agent写文件、抓网页时,工具返回内容动不动上千行,多轮循环下来上下文直接溢满。我的做法是给所有工具的输出统一加一个截断包装:超过2000字符的内容,只保留开头和末尾,中间提示“已省略”。

坑三:环境变量不生效。在Shell里设置了export OPENAI_API_KEY=xxx,但程序跑起来还是报401。这个坑通常是终端会话缓存导致的——在VSCode里改了终端配置,必须完全重启终端(不是清空命令行),并且不要在.zshrc里写死多个同名变量。设置完先跑一句echo $OPENAI_API_KEY确认确实生效,再启动Agent。

最后一个经验分享:这段时间密集折腾下来,我最大的体会是,AI Agent的排名也好、新框架也好,都不如自己亲手跑通一个闭环学到的多。工具会一直迭代,今天的第一名下个月可能就被替代,但Agent的核心——模型决策加工具执行这个循环——不会变。如果你现在还没动手,建议直接照我第五节的代码跑一遍最小Agent,再用十分钟把Hermes装起来接上DeepSeek,你的体感会比任何榜单分析都真实。等你自己亲手搭出一个能调工具的Agent,再回头看这份9月排行,思路会完全不一样。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询