术语表
本书中使用的所有技术术语的中英文对照与定义。按拼音排序。
A
- Adapter Pattern(适配器模式)
一种结构型设计模式,用于将一个类的接口转换为客户端期望的另一个接口。 在 Hermes 中,用于将不同 LLM 提供商的 API 响应归一化为统一格式。 参见
SimpleNamespace。- Agent Loop(Agent 循环)
Agent 的核心执行循环,遵循 observe-think-act 模式:观察环境(接收输入)、 思考(调用 LLM)、行动(执行工具或返回响应)。Hermes 的实现在
run_agent.py:run_conversation()中。- API Key(API 密钥)
用于认证 API 调用的密钥字符串。Hermes 通过凭证池(Credential Pool) 管理多个 API Key,支持自动轮换和冷却。
- AST(Abstract Syntax Tree,抽象语法树)
Python 源代码的树状表示。Hermes 使用 AST 在不执行代码的情况下 判断一个工具文件是否包含注册调用(
tools/registry.py)。- asyncio
Python 标准库中的异步 I/O 框架。Hermes 刻意避免在主循环中使用
asyncio.run(),转而使用持久化事件循环来避免资源泄漏。
B
- Backoff(退避)
在重试失败操作时逐步增加等待时间的策略。Hermes 使用抖动指数退避 (jittered exponential backoff),避免多个会话同时重试造成的重试风暴。 参见
agent/retry_utils.py。- Budget(预算)
对 Agent 行为的资源限制。Hermes 实现了三种预算:迭代预算 (最大 API 调用次数)、Token 预算(输入输出 token 限制)、 结果预算(工具返回结果的大小限制)。
C
- Cache Control(缓存控制)
Anthropic API 的功能,允许标记特定消息为可缓存,避免重复计算。 Hermes 的 system_and_3 策略在系统提示词和最近 3 条消息上设置缓存断点。 参见
agent/prompt_caching.py。- Circuit Breaker(断路器)
一种容错模式,当连续失败次数超过阈值时,快速失败而非继续尝试。 Hermes 在 MCP 工具连接中使用了断路器模式。参见
tools/mcp_tool.py。- CLI(Command Line Interface,命令行界面)
Hermes 的主要用户界面之一。通过
cli.py和hermes_cli/包实现。- Context Compression(上下文压缩)
当对话历史超过模型的上下文窗口时,通过 LLM 生成摘要来减少消息数量。 Hermes 的实现在
agent/context_compressor.py中。- Context Window(上下文窗口)
模型单次调用能处理的最大 token 数量。不同模型的上下文窗口大小不同 (如 GPT-4o 为 128K,Claude 3.5 Sonnet 为 200K)。
- Credential Pool(凭证池)
管理多个 API Key 的组件,支持轮换策略(round-robin、fill-first、 least-used)和冷却机制。参见
agent/credential_pool.py。
D
- Delegate Tool(委派工具)
允许主 Agent 将子任务委派给子代理执行的工具。 子代理获得独立的迭代预算但共享凭证池。参见
tools/delegate_tool.py。
E
- Error Classifier(错误分类器)
将 API 错误分类为 11 种类型并推荐恢复策略的管线。 参见
agent/error_classifier.py和FailoverReason枚举。- Event Loop(事件循环)
asyncio 的核心调度器,负责执行协程和处理 I/O 事件。 Hermes 使用持久化事件循环(而非
asyncio.run())来避免资源泄漏。 参见model_tools.py:_get_tool_loop()。
F
- Failover(故障转移)
当主提供商失败时自动切换到备用提供商或备用凭证的过程。 Hermes 的错误分类器为每种错误类型提供故障转移建议。
- FailoverReason
Hermes 定义的 11 种错误原因枚举,包括 auth、billing、rate_limit、 timeout、context_overflow 等。每种原因对应不同的恢复策略。
- FTS5(Full-Text Search 5)
SQLite 的全文搜索扩展。Hermes 使用 FTS5 实现会话历史的全文搜索。 参见
hermes_state.py。- Function Calling(函数调用)
LLM 的能力之一,允许模型在响应中请求调用预定义的函数(工具)。 不同提供商的函数调用格式略有差异(OpenAI 使用
tool_calls, Anthropic 使用tool_use内容块)。
G
- Gateway(网关)
Hermes 的多平台服务模式,允许通过 RPC 同时服务 Telegram、Discord、 Web 等多个平台的用户。参见
gateway/目录。- Grace Call(宽限调用)
当迭代预算耗尽时,Hermes 给模型一次额外的 API 调用机会来生成最终总结。 这确保了 Agent 在预算耗尽时能给出有意义的结束响应。
H
- history_version(历史版本号)
TUI 网关中用于乐观并发控制的版本计数器。每次修改会话历史时递增, 用于检测 Agent 响应期间是否有并发修改。参见
tui_gateway/server.py。- Hook(钩子)
在特定生命周期事件触发时执行的处理器函数。Hermes 定义了 10 个生命周期 钩子(如 gateway:startup、session:start、agent:step 等)。 参见
gateway/hooks.py。
I
- IterationBudget(迭代预算)
控制 Agent 单次对话中最大 API 调用次数的线程安全计数器。 默认上限为 90 次。子代理获得独立的迭代预算(默认 50 次)。 参见
run_agent.py:IterationBudget。
J
- Jitter(抖动)
在退避间隔中添加的随机偏移,用于防止多个会话的重试请求同时到达 提供商(即"重试风暴")。参见
agent/retry_utils.py:jittered_backoff()。- JSON-RPC(JSON Remote Procedure Call)
基于 JSON 的远程过程调用协议。Hermes 的 TUI 网关使用 JSON-RPC over stdin/stdout 进行进程间通信。
K
- Key Rotation(密钥轮换)
当一个 API Key 失效或耗尽配额时,自动切换到下一个可用 Key。 Hermes 的凭证池支持多种轮换策略。参见
agent/credential_pool.py。
L
- LLM(Large Language Model,大型语言模型)
本书中指代所有通过 API 调用的大规模语言模型,包括 OpenAI GPT 系列、 Anthropic Claude 系列、AWS Bedrock 模型等。
M
- MCP(Model Context Protocol)
Anthropic 提出的标准化协议,用于 LLM 应用与外部工具/数据源的集成。 Hermes 实现了 MCP 客户端,可以动态发现和使用 MCP 工具服务器的工具。 参见
tools/mcp_tool.py。- Mermaid
一种基于文本的图表描述语言,支持流程图、序列图、思维导图等。 本书使用 Mermaid 绘制所有架构图。
- Monolith(单块架构)
所有功能运行在单个进程中的架构风格。与微服务(microservice)相对。 Hermes 选择单块架构,因为 Agent 的核心循环是顺序的,拆分不会带来性能收益。
N
- NEVER_PARALLEL
Hermes 定义的必须串行执行的工具集合(如 clarify)。 当一批工具调用中包含这些工具时,整个批次退化为串行执行。
O
- Observer Pattern(观察者模式)
一种行为型设计模式,定义了对象之间的一对多依赖关系。 在 Hermes 中,通过回调函数(stream_callback、tool_progress_callback 等) 实现了观察者模式,让外部系统可以监听 Agent 的运行事件。
- Optimistic Concurrency Control(乐观并发控制)
一种并发控制策略,假设冲突很少发生,在提交时检查是否有冲突。 Hermes 的 TUI 网关使用 history_version 实现乐观并发控制。
P
- PARALLEL_SAFE
Hermes 定义的安全并行工具集合(如 web_search、read_file)。 这些工具是只读的且没有共享可变状态,可以安全地并发执行。
- PATH_SCOPED
Hermes 定义的路径作用域工具集合(如 read_file、write_file)。 这些工具可以并行执行,但需要检查目标路径是否重叠。
- Preflight Compression(预压缩)
在进入主循环之前检查上下文大小,如果超过阈值则主动触发压缩。 避免了一次注定失败的 API 调用。
- Prompt Caching(提示词缓存)
利用 LLM 提供商的缓存机制,避免重复计算不变的系统提示词和对话前缀。 Hermes 的 system_and_3 策略报告约 75% 的输入 token 节省。
R
- RST(reStructuredText)
Python 文档生态中常用的标记语言。本书使用 Sphinx + RST 格式编写。
S
- Self-Registration(自注册)
一种设计模式,模块在加载时自动将自己注册到全局注册表。 Hermes 的工具系统使用此模式:每个工具文件在 import 时调用
registry.register()。- SimpleNamespace
Python
types模块中的轻量级类,支持动态属性访问。 Hermes 使用SimpleNamespace作为不同 LLM 提供商响应的统一中间格式。- Skin Engine(皮肤引擎)
允许用户通过 YAML 文件自定义 CLI 视觉外观的系统。 皮肤通过继承机制工作:用户定义的皮肤只覆盖需要改变的属性。 参见
hermes_cli/skin_engine.py。- SlashWorker
Hermes TUI 网关中的持久化子进程,负责处理斜杠命令。 通过 stdin/stdout 的 JSON-RPC 协议与主网关通信。 参见
tui_gateway/slash_worker.py。- Streaming(流式响应)
LLM API 的响应模式,服务器逐个 token 返回结果,而非等待全部生成后返回。 Hermes 支持流式响应,通过
stream_callback将文本增量传递给 TTS 管线。- Strategy Pattern(策略模式)
一种行为型设计模式,定义一系列算法并将每个算法封装在独立的类中。 在 Hermes 中,用于在运行时根据
api_mode选择不同的 LLM 调用策略。
T
- Token
LLM 处理文本的基本单位。一个 token 大约对应 0.75 个英文单词或 0.5 个汉字。 Token 数量影响 API 调用成本和上下文窗口使用量。
- Tool Registry(工具注册表)
集中管理所有工具 schema、handler 和元数据的单例对象。 参见
tools/registry.py:ToolRegistry。- Toolset(工具集)
一组相关工具的集合。工具集可以组合其他工具集(菱形依赖通过集合去重解决)。 参见
toolsets.py。- TUI(Terminal User Interface,终端用户界面)
在终端中运行的交互式界面。Hermes 的 TUI 通过
tui_gateway/模块实现。
W
- WAL(Write-Ahead Logging,预写式日志)
SQLite 的日志模式,允许并发读取和单个写入。 Hermes 在
hermes_state.py中启用 WAL 模式以支持多平台并发访问。