Hermes Agent 与 Python 的碰撞,本质上是一个用 Python 构建的智能体框架,与其"母语"之间形成的深度共生关系。这种碰撞不仅体现在 Hermes 本身用 Python 编写,更在于它从架构底层就为 Python 开发者预留了丰富的嵌入和扩展能力。
🐍 碰撞的核心:将 Hermes 化为一个 Python 库
最直接的碰撞方式,是将 Hermes 作为一个 Python 库直接导入你的代码中,让 AI 能力成为你应用的一部分。
你可以像使用任何 Python 模块一样,直接导入 AIAgent 类并实例化,无需通过命令行界面。
python
from run_agent import AIAgent
agent = AIAgent(
model="anthropic/claude-sonnet-4",
quiet_mode=True, # 关键:嵌入时静默运行,避免干扰你的程序输出
)
response = agent.chat("用一句话解释 Python 的 GIL")
print(response)
chat() 方法会在内部处理完整的对话循环------包括工具调用、重试等所有复杂逻辑------最终只返回文本结果。这种方式非常适合将 AI 能力快速嵌入到脚本、Web 应用或自动化流水线中。
如果需要更精细的控制,可以使用 run_conversation() 方法,它会返回包含完整响应、消息历史和元数据的字典,让你能够跟踪每一次工具调用和对话轮次。
⚡ 碰撞的利器:execute_code 让 Agent 自己写 Python
Hermes 最独特的 Python 碰撞能力,是它的 execute_code 工具(程序化工具调用) 。它允许 Agent 自己编写 Python 脚本 来调用 Hermes 的工具,从而将多步骤工作流压缩到单次 LLM 对话轮次中完成。
工作原理 是:Agent 写一个 Python 脚本,脚本运行在子进程中,通过 Unix 域套接字 RPC 与 Hermes 通信。关键优势在于------只有脚本的 print() 输出会返回给 LLM,中间的工具调用结果永远不会进入上下文窗口,这能极大降低 Token 消耗。
Agent 可以在脚本中使用的工具包括 web_search、read_file、write_file、patch、terminal 等。实际应用场景非常广泛:
-
数据处理管道:批量搜索配置文件,提取数据库设置并汇总输出。
-
多步网络研究:搜索、提取网页内容、过滤和总结,一次性完成。
-
批量文件重构:找到所有使用废弃 API 的 Python 文件并批量替换。
-
构建与测试管道:运行测试,解析结果,生成报告。
当 Agent 遇到3 个以上工具调用且中间有处理逻辑 ,或者需要循环遍历结果、条件分支时,它会自动使用这个能力。
🔧 碰撞的延伸:用 Python 为 Hermes 创造新能力
Hermes 的插件系统允许你在不修改核心代码的情况下,用 Python 添加自定义工具和集成。
创建自定义工具 的流程很直接:在 ~/.hermes/plugins/ 下创建一个目录,放入 plugin.yaml 和你的 Python 代码即可。你需要编写工具模式(schemas.py) ------这是 LLM 用来判断何时调用你工具的"说明书"------以及工具处理器(tools.py),即实际执行的 Python 函数。
更强大的是,通过 hermes-acp-sdk,你可以将自己的 Python 函数直接交给 Agent 作为工具使用 。这些函数运行在你自己的进程中,能够完全访问你应用的状态 。SDK 还提供了默认拒绝(Deny-by-default) 的安全模型:权限默认被拒绝,文件系统和终端默认关闭,直到你明确选择开启。同时,Agent 生成的命令永远不会继承你的环境变量,有效防止了 API 密钥等敏感信息的泄漏。
🏗️ 碰撞的根基:Python 构建的智能体架构
Hermes Agent 本身就是基于 Python 构建的开源框架,这为开发者提供了从源码层面理解和二次开发的可能。
其核心架构中,AIAgent 类是核心编排引擎 ,所有 Agent 会话都经过这个类------无论是从 CLI、消息网关、批处理还是强化学习环境发起的。源码结构中,src/core/ 目录下包含推理引擎(engine.py) 、记忆系统(memory/) 、技能引擎(skills/) 和学习循环(learning/) 等核心模块。
对于希望深度定制的开发者,二次开发的切入点 包括:添加新工具(tools/ 目录,难度简单)、自定义记忆存储(core/memory/,中等难度)、修改学习策略(core/learning/,较难)等。
💎 总结
Hermes Agent 与 Python 的碰撞是多层次的:最轻量的方式 是将它作为库嵌入你的代码,最强大的方式 是利用 execute_code 让 Agent 自己编写 Python 脚本来完成复杂工作流,最深入的方式 是通过插件和 SDK 用 Python 为它创造新能力,最底层的方式则是直接参与这个 Python 框架的源码开发和贡献。无论你选择哪一种,Python 都是与 Hermes 协作的"第一语言"。