Hermes Agent高效指南:避免盲目自嗨的5个关键步骤
切断Agent自主通道:强制工具白名单与系统指令硬隔离
第一步:编辑~/.hermes/config.yaml,找到 tool_whitelist 配置项。
第二步:将默认的 ["*"] 或空列表替换为精确的工具名称列表,例如:["git_status", "curl_get", "python_exec", "ls_tree"]。务必手动写入固定值,禁止保留任何通配符。
第三步:打开 agent/prompt_builder.py,定位 build_system_prompt() 函数,在返回语句之前添加一行:prompt += "\n\n你只能基于以下工具返回的结果作答,禁止推测、编造或跳过工具调用。"。此声明并非装饰,而是强制执行的边界约束。
【工具白名单若设为 ["*"],所有防幻觉机制将立即失效】
强制Agent仅反馈工具输出:禁用自由文本生成兜底策略
方法一:调整run_agent.py 的主循环收敛判断。
定位 if not tool_calls: 分支中的默认响应代码(通常包含 model.generate(...)),将整个代码块注释,并替换为:raise RuntimeError("No tool call detected. Aborting response.")。
方法二:在 environments/agent_loop.py 中开启严格模式。
将 strict_tool_following: false 修改为 true,并确认 AgentConfig.from_yaml() 正确加载该配置。此开关将禁止任何未绑定工具的输出分支执行。
若不执行此步骤,Agent 在工具调用失败时将自动回退至闲聊模式,将错误伪装成“建议”输出。
验证生效情况:使用 hermes doctor 执行三项强制检查
① 执行hermes doctor --check tool-whitelist,验证输出包含 ✅ Whitelist contains 4 explicit tools, no wildcards。
② 执行 hermes doctor --check system-prompt-integrity,确认已检测到你刚插入的边界声明语句。
③ 执行 hermes doctor --check strict-mode-enabled,结果必须为 ✅ Strict mode is active and enforced at runtime。
三项全绿方表示自由通道已彻底切断。任何一项出现红标,则说明仍有配置处于松动状态。
