Hermes 与 Claude CodeHermes 与 Claude Code第 13 章 · 14 章Chapter 13 of 14
13 · 术语表
按概念分组排列,不按字母序 —— 因为相关的术语放在一起更容易理解。每条都标了「哪一章详细讲」。
13.1 模型与调用
| 术语 | 含义 | 详见 |
|---|---|---|
| 大语言模型 Large Language Model,缩写 LLM |
一个「文字续写器」:给它一段文字,它预测最可能的下一个字,然后接上去继续预测。最关键的性质是它完全没有记忆 —— 两次调用之间不保留任何信息。 | 1.1 |
| token 也译作「词元」 |
模型处理文字的最小单位,也是计费单位。粗略估算:中文约「汉字数 × 1.5~2」,英文约「单词数 × 1.3」。输入 token 便宜、输出 token 贵,但智能体的成本大头是输入(因为每轮都要重发全部历史)。 | 1.2 |
| 上下文 context |
你这一次念给模型听的全部内容:系统设定 + 工具清单 + 历史对话 + 工具执行结果 + 新问题。 | 1.3 |
| 上下文窗口 context window |
模型一次最多能接受多少 token 的硬性上限。目前主流是 200,000。可以想象成一张固定大小的桌子。 | 1.3 |
| 系统提示词 system prompt |
上下文最开头那段设定身份和规则的文字。因为在最开头,它是缓存最先比对的部分,绝对不能随意改动。 | 1.9 |
| 轮次 turn |
一次「调用模型 → 执行工具」的完整往复。 | 1.5 |
| 流式输出 streaming |
模型一个 token 一个 token 往外吐,不是憋足了一次给你。这不是动画效果,是它真实的工作方式。它带来一个优化机会:第一张便条一到手就可以开始执行,不用等整个响应结束。 | 1.6 |
| API Application Programming Interface 应用程序接口 |
一个程序向另一个程序提供服务的约定方式。这份文档里「调用 API」几乎总是指「把上下文通过网络发给模型服务商的服务器,拿回结果」。一次调用通常耗时 2~30 秒。 | 1.7 |
| 思考块 thinking block |
较新的模型在正式回答前会做一段内部推理,这段推理可以被返回给调用方。它带有和模型绑定的加密签名 —— 换模型重放会被拒绝。而且它必须在整条模型轨迹内保持完整,这直接约束了所有压缩实现。 | 4.5 |
13.2 提示词缓存(全文最重要的概念组)
| 术语 | 含义 | 详见 |
|---|---|---|
| 提示词缓存 prompt cache |
服务端把上次处理过的内容缓存起来。这次请求进来时从头逐字比对,开头一致的部分直接复用缓存结果,跳过重新计算。命中部分的价格通常只有原价 10%。 | 1.8 |
| 前缀匹配 prefix matching |
缓存比对的方式。一旦某个位置对不上,从那里往后的全部内容都要重新处理。10 万 token 的上下文,在第 100 个 token 处改一个空格,后面 99,900 个全部作废。 | 1.8 |
| 缓存冷热 | 缓存有有效期(常见 5 分钟)。热=刚请求过、缓存还在;凉=超过有效期、缓存已清除。这个状态应该成为压缩策略的输入 —— 热的时候别动前缀,凉的时候大刀阔斧清。 | 1.8 / 6.3 |
| 缓存分界点 cache breakpoint |
服务端在上下文的某个位置放一个标记,表示「到这里为止的内容可以作为一个缓存单元」。Claude Code 里内建工具和外部工具分区排序,就是为了让这个分界点稳稳落在两者之间。 | 5.3 |
| 缓存编辑 cache editing / cache_edits |
Anthropic 的私有能力:客户端本地一个字不改,只附带一条指令让服务端在自己的缓存里删掉某几条工具结果。这样前缀完全没变,缓存全部命中。全文最精彩的一处设计。 | 6.3 |
13.3 智能体与工具
| 术语 | 含义 | 详见 |
|---|---|---|
| 智能体 Agent,也译作「代理」 |
会调用外部工具、自己拆解任务、多轮往复直到完成的系统。和聊天机器人的区别是:聊天机器人只会说话,智能体会动手做事。 | 1.4 |
| 工具调用 tool_use |
模型写的一张「便条」,内容是「请帮我执行某个操作,参数是……」。模型自己不能执行任何操作,它只能写便条让外部程序去做。每张便条有唯一的 id。 | 1.5 |
| 工具结果 tool_result |
外部程序执行完便条上的操作后,回给模型的结果。每一个 tool_use 都必须有一个带相同 id 的 tool_result 与之配对,否则 API 直接报格式错误。这是中断处理的核心难点。 | 1.5 / 4.4 |
| 子智能体 subagent |
主智能体创建的独立智能体实例,被派去做某个子任务。它的首要价值是上下文隔离(用一次性的上下文换一个结论),并行只是副产品。 | 8.1 |
| 分叉 fork |
一种特殊的子智能体:完整继承父的对话历史和系统提示词。用于并行探索同一问题的多个方向。它为了缓存一致性做了四个「不优雅」的妥协。 | 8.3 |
| 渐进式披露 progressive disclosure |
「目录常驻(便宜)+ 内容按需展开(贵)」的模式。在工具、技能、MCP、记忆四个场景反复出现,是智能体系统的通用扩展范式。 | 9.4 |
| 工具集 toolset |
Hermes 的概念:工具的投放策略(在什么场景下让模型看到哪些工具),和工具的实现彻底分离。按信任边界配置工具面是最有效的安全手段。 | 3.2 |
| MCP Model Context Protocol 模型上下文协议 |
一个让智能体接入外部工具服务的开放标准。接进来的工具名会加前缀,比如 mcp__服务名__工具名。 |
9.4 |
| 钩子 hook |
让用户在特定时机(工具执行前、执行后、会话开始、结束前等)插入自己的脚本。Claude Code 有 10 类钩子事件。 | 9.4 |
13.4 上下文治理
| 术语 | 含义 | 详见 |
|---|---|---|
| 压缩 / 摘要 compact / autocompact |
让模型把前面一大段对话总结成短摘要,用摘要替换原文。有损、不可逆,所以是五级阶梯里的最后一级。 | 6.4 |
| 微压缩 microcompact |
按工具调用 id 精确删除旧的工具执行结果,不调用模型,成本为 0。是阶梯的第 3 级。 | 6.3 |
| 上下文折叠 context collapse |
把一段交互折叠成可展开的摘要,保留结构和可重放性。比整段摘要温和,是阶梯的第 4 级。 | 6.1 |
| 413 / prompt_too_long | 上下文超过窗口上限时 API 返回的错误。后面章节里「413」就是指这个。另有一个 400 错误表示「请求格式不合法」(比如工具调用和结果没配对)。 | 1.3 |
| 保护窗口 | 压缩时必须原样保留的头部和尾部消息。Hermes 的默认值是头 3 条、尾 6 条。切点必须落在思考块轨迹的缝隙上,不能落在轨迹中间。 | 4.5 / 6.6 |
| 草稿纸模式 | 让模型先写一段带标签的思考(<analysis>),消费端把这段剥掉只保留结论。付一次输出 token 的钱,省掉后续每轮的输入 token。 |
6.4 |
| 死亡螺旋 death spiral |
源码里的原话。指「上下文超长 → 质量检查钩子要求重试 → 钩子自己又往上下文注入反馈 → 更超了」这类恢复逻辑互相触发的无限循环。 | 6.5 |
13.5 编程与架构概念
| 术语 | 含义 | 详见 |
|---|---|---|
| 状态机 state machine |
把程序的运行情况归纳成有限的几个具名状态,并明确规定「什么条件下从哪个状态跳到哪个」。好处是可以穷举所有路径并逐条测试。 | 4.2 |
| 幂等 / 幂等锁 idempotent |
一个操作执行一次和多次效果相同。这份文档里主要指「幂等锁」—— 一个标记,确保某个恢复动作在一轮里只做一次。没有幂等锁 = 生产事故。 | 4.2 |
| fail-closed 失败时闭合 |
出问题时倒向「拒绝 / 保守」而不是「放行 / 乐观」。Claude Code 的工具默认值全部如此:忘了声明并发安全 → 当成不安全;忘了声明只读 → 当成会写。 | 5.1 |
| 中止信号 AbortController / abort signal |
可以在程序各处传递的「取消开关」。用户按 Ctrl+C 时拉一下,所有正在进行的操作都能感知并停下。关键陷阱:中止时必须为每个未完成的工具调用补齐合成结果。 | 1.9 / 4.4 |
| 两级中止作用域 | 建一个「子开关」专管一批工具。批内失败拉子开关杀兄弟进程,父开关不动所以本轮不结束,模型还能收到错误并重试。 | 5.5 |
| 抽象基类 Abstract Base Class,缩写 ABC |
编程里的「插座标准」:规定「任何想接进来的东西必须提供哪几个功能」,但不规定怎么实现。Hermes 大量使用这个模式,这是它和 Claude Code 最根本的架构差异。 | 1.9 / 6.6 |
| 横切关注点 cross-cutting concern |
穿透所有分层、没法归到任何一层的逻辑。这份文档里指四类:中断、预算、可观测、缓存保护。 | 3.4 |
| 正则表达式 regular expression |
用特殊符号描述「文字模式」的写法。Hermes 用 59 条正则拦截危险命令,难点不在写正则,而在避免误伤(把参数里的字面量当成命令)。 | 1.9 / 7.3 |
| 沙箱 sandbox |
权限被严格限制的隔离运行环境。程序在里面跑,就算想删系统文件也删不掉,因为根本没有那个权限。纵深防御里唯一真正的硬边界。 | 1.9 / 7.4 |
| 提示词注入攻击 prompt injection |
攻击者把恶意指令藏在智能体会读到的内容里(issue 标题、文件名、错误消息回显)。智能体无法区分「这是数据」和「这是新指令」,可能真的照做。目前没有完美解法,只能靠收窄工具面。 | 3.2 / 7.5 |
13.6 两个系统的关键模块名
| 模块名 | 属于哪个系统 / 干什么 | 详见 |
|---|---|---|
queryLoop | Claude Code 的智能体主循环。整个系统的心脏,1,730 行。 | 4.2 |
QueryEngine | Claude Code 的会话层。一场对话一个实例,持有全部跨轮次状态。 | 2.2 |
Tool<I,O,P> | Claude Code 的工具接口契约。40 多个成员,分七组正交能力。 | 5.1 |
StreamingToolExecutor | Claude Code 的流式工具执行器。边流边执行,含兄弟中止控制器。 | 5.5 |
run_conversation | Hermes 的智能体主循环,8,676 行。入口条件就带三个预算约束。 | 4.6 |
Gateway | Hermes 独有的网关层。长驻进程,把 22 个聊天平台的差异抹平。1.55 MB 单文件。 | 9.5 |
ContextEngine | Hermes 的上下文引擎抽象基类。可整体替换。select 与 compress 是两个正交动词。 | 6.6 |
HARDLINE_PATTERNS | Hermes 的 12 条无条件安全红线。用户配了什么都没用,永远拦。 | 7.3 |
HRRHolographic Reduced Representations | Hermes 的全息记忆技术。用 SHA-256 确定性生成向量,跨机器完全一致,但没有语义泛化能力。 | 9.2 |
FTS5Full-Text Search 5 | SQLite 内置的全文搜索引擎。做词法检索(关键词精确匹配),不理解语义。 | 9.1 |
如果这份术语表里还有你不理解的条目 —— 选中那一行文字,点「提问」。我会展开讲。