Hermes Agent 源码解析 · 第 15 讲
Hermes Agent 源码解析 第 15 讲:System Prompt 构建引擎与工具执行安全层 基于 Hermes Agent v0.16.0 源码 · 2026-06-24 一、System Prompt:Agent 的"灵魂" 前十四讲我们覆盖了 Hermes 从核心架构到认证系统的全部关键路径。这一讲我们进入 Hermes 的 System Prompt 构建引擎 ——每次对话开始前,Hermes 如何组装一个长达数千字的系统提示词,并保证它在整个会话生命周期内 字节级稳定 (byte-stable),以维持上游 LLM 的 prompt cache 命中。 📦 本讲核心文件 agent/system_prompt.py (446 行)— 三层提示词组装 agent/prompt_builder.py (1624 行)— 身份、技能索引、上下文文件 agent/prompt_caching.py (79 行)— Anthropic prompt caching agent/tool_executor.py (1428 行)— 工具执行调度 agent/tool_guardrails.py (475 行)— 工具调用安全护栏 二、三层 System Prompt 架构 system_prompt.py 实现了精妙的 三层架构 ——stable(稳定层)、context(上下文层)、volatile(易变层),通过 \n\n 拼接。这种分层设计使得只有 volatile 层在每轮对话中变化,stable 层和 context 层在整个会话中保持不变,最大化 prompt cache 命中率。 1. Stable 层:Agent 身份与行为准则 📄 system_prompt.py (第 85-183 行) def build_system_prompt_parts(agent, system_message=None): stable_parts: List[str] = [] # ── 身份层 ── # 优先加载 SOUL.md,回退到 DEFAULT_AGENT_IDENTITY _soul_content = _r.load_soul_md() if _soul_content: stable_parts.append(_soul_content) else: stable_parts.append(DEFAULT_AGENT_IDENTITY) # ── 帮助指南 ── stable_parts.append(HERMES_AGENT_HELP_GUIDANCE) # ── 任务完成指南(防幻觉)── if agent._task_completion_guidance and agent.valid_tool_names: stable_parts.append(TASK_COMPLETION_GUIDANCE) # ── 工具感知行为指南 ── tool_guidance = [] if "memory" in agent.valid_tool_names: tool_guidance.append(MEMORY_GUIDANCE) if "session_search" in agent.valid_tool_names: tool_guidance.append(SESSION_SEARCH_GUIDANCE) if "skill_manage" in agent.valid_tool_names: tool_guidance.append(SKILLS_GUIDANCE) # ── 工具使用强制执行 ── # 告诉模型必须真正调用工具,而非描述意图 if _inject: stable_parts.append(TOOL_USE_ENFORCEMENT_GUIDANCE) # ── 模型家族特定指南 ── if "gemini" in model_lower: stable_parts.append(GOOGLE_MODEL_OPERATIONAL_GUIDANCE) if "gpt" in model_lower or "grok" in model_lower: stable_parts.append(…