AI / 自动化

为什么 8B 开源模型跑 Agent 总死循环?Hermes 三个硬核调参(2026)

Mac 上 Hermes Agent 调优 Llama 3.1 8B 与 Qwen 2.5 7B 稳定函数调用

2026 年,本地跑 Llama 3.1/3.2 8BQwen 2.5 7BHermes 3 8B 看起来很划算——直到 Agent 进入死循环:工具 JSON 格式错误、反复调用 terminal,或一直说「我现在去跑测试…」却从不真正调工具。GPU 往往没问题,真正失控的是采样 + 上下文 + 工具面

Hermes AgentNousResearch/hermes-agent,MIT)面向前沿模型设计,但同样支持 OpenRouterOllama 及国内常见的 OpenAI 兼容推理框架。本文说明小模型在 Agent 场景为何容易崩,并给出三个硬核调参七步实操,帮助在 16–24 GB 显存 的 Mac 或 Linux 上稳定长跑任务。

说明:ProxyMac 发布 Mac 托管类指南;Hermes 本身厂商中立。配置以 2026 年 6 月 Hermes 官方文档 为准。诚实说明:config.yaml 里的用户级 temperature 仍未完全开放(#17565),请同时在 Ollama/推理服务端设采样,并配合下文 reasoning 与工具强制项。

为什么 8B 在函数调用上容易「翻车」

小尺寸 Instruct 模型多按单轮对话训练,而不是五十轮工具轨迹。Agent 循环会放大三类弱点:

弱点Hermes 中的表现为何烧 token
结构化输出漂移工具 JSON 夹带废话、键名错误或纯文本「假调用」解析重试;模型反复重读整段线程
注意力稀释早期 HTML/日志 把原始目标挤出窗口忘记停止条件,重复同一计划
高熵采样用不同措辞重复同一方案curl/grep 仅改微小参数

可引用定义:在 Hermes 中,「工具调用」指运行时解析并执行的结构化消息;8B 若输出叙述性文字而非该结构,循环无法推进,上下文会被重复计划塞满。

大模型靠体量自愈;8B 必须收窄工具菜单、压低 reasoning 开销、 aggressively 做上下文卫生。请配合 轨迹压缩,避免中段膨胀放大死循环。统一内存规划可参考 Apple Mac mini 规格

架构:Hermes 每轮实际发送什么

层级路径 / 命令对小模型的影响
模型端点hermes modelconfig.yaml model:context_length 设错会过早压缩或溢出
工具面hermes tools / agent.disabled_toolsets工具越少,prompt 里 JSON schema 越少
Skills~/.hermes/skills/hermes chat -s a,b每个 skill 增加指令;8B 建议最多 2 个
强制调用agent.tool_use_enforcement推动 Llama/Qwen 真调工具 而非口述
Reasoningagent.reasoning_effort + /reasoning默认 medium 在部分路由会加隐藏「思考」token
上下文卫生compression.*tool_output.*在巨型 stdout 填满窗口前截断

Hermes 内部对部分模型有固定 temperature 契约。本地请在推理服务端设采样(Ollama PARAMETER temperature 0.2、llama.cpp --temp 0.2),在 YAML 暴露 temperature 之前,以 reasoningtool 配置为主(#17565)。

三个比单纯调温更重要的设置

调参 1 — 关掉隐藏 reasoning(reasoning_effort: none

默认 reasoning 为 medium,对 Opus 级有用,却常让本地 8B 膨胀

agent: reasoning_effort: none # or minimal for light planning

display: show_reasoning: false

/reasoning /reasoning none

典型症状缓解:长时间空白「思考」后出现畸形工具 JSON。

调参 2 — 强制真实工具调用(tool_use_enforcement

8B 版 Llama/Qwen 爱「口述操作」。Hermes 可注入强制提示:

agent: tool_use_enforcement: true

provider_routing: require_parameters: true

默认 "auto" 仅对 GPT/Gemini 族开启——本地 8B 默认关闭,需手动打开。路由见 provider routing

调参 3 — 技能节食:两 skill、最小 toolset

Skill 虽渐进披露,索引 alone 约 3k token;可选 MCP 目录还会再加。

8B 启动示例:

hermes chat --toolsets "terminal,file" \ -s github-pr-workflow,plan \ -m "qwen/qwen-2.5-7b-instruct"

  • 预加载≤2 个 skill-s a,b),其余按需手动加载
  • 全局禁用重型 toolset(见下方片段)
  • 8B 机器不要装齐 optional-mcps/——每个 MCP 增加 schema 与失败面(MCP Mac 指南

agent: disabled_toolsets: - web - browser - image_gen - moa - memory

可选:创建 profile 时清空 skill:

hermes profile create local-8b --no-skills

显存档位:Mac / 单卡 Linux 怎么选

同样是「8B」,Q4 与 Q8 量化、是否挂浏览器 MCP、网关是否常开,对稳定性的影响往往大于模型名字本身。

硬件模型示例Hermes 配置稳定工具轮次(经验值)
16 GB 统一内存(Mac mini M4)Qwen2.5-7B Q4 + 8k 上下文terminal,file + 1 个 skill6–12 次后建议手动 /compress
24 GB(M4 Pro 等)Llama-3.1-8B Q5 + 16k2 个 skill + compression.threshold: 0.40约 12–20 次
32 GB+ 或独显 12 GB+8B Q6 + 32k最多再加 1 个 MCP可尝试更长重构任务

若 X 则 Y:连续两次 JSON 工具调用失败 → 减到 1 个 skill 并减半 tool_output.max_bytes。若已开 enforcement + 低温采样仍循环,该任务更适合 14B+ 或云端只做规划。

三种常见死循环与对策

  • 解析循环 — JSON 非法反复重试。对策:enforcement、减工具、推理端降温。
  • 空转计划 — 只复述计划不调工具。对策:reasoning_effort: none,提示词写明最多 N 次工具。
  • 日志循环 — 反复读巨大 stdout。对策:压低 tool_output、40% 触发压缩、终端先 head

七步实操:Hermes 上稳定跑 8B Agent

第 1 步 — 安装并设真实上下文长度

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash source ~/.zshrc hermes doctor

model.context_length 设为本地真实上限(如 819216384),勿填营销上的 128k:

model: context_length: 16384

前置:Hermes Mac 安装指南

第 2 步 — 指向本地端点

hermes model hermes chat -q "Reply OK only" -m "your-local-model-id"

第 3 步 — 在 config.yaml 应用三项调参

agent: reasoning_effort: none tool_use_enforcement: true disabled_toolsets: - web - browser - image_gen - memory compression: enabled: true threshold: 0.40 tool_output: max_bytes: 20000 max_lines: 500 file_read_max_chars: 30000

阈值宜低于默认——小窗口填满很快。

第 4 步 — 服务端采样(在 YAML 暴露 temperature 前)

Ollama Modelfile 或 API 使用低 temperature 与适中 top_p

PARAMETER temperature 0.2 PARAMETER top_p 0.9

Hermes 仍可能有 per-model 覆盖;服务端低熵有助于减少 JSON 幻觉。

第 5 步 — 用两个 skill 跑有界工具任务

hermes chat --toolsets "terminal,file" \ -s plan \ -m "your-local-model-id"

Task: list top 5 largest files in ./src, write paths to /tmp/top5.txt. Rules: max 8 tool calls; if stuck, stop and report blocker.

观察状态栏上下文百分比;自动压缩前若变橙可手动 /compress

第 6 步 — 用 /usage/stop 早发现循环

/usage /stop

若相同参数的工具调用重复三次,应中止并收窄 prompt——8B 很少能无人干预自行纠正。

第 7 步 — 可选:常开 Mac mini 跑 gateway

24/7 自动化可把 gateway 放在不睡眠的机器上;8B 推理仍在 GPU,gateway 吃 CPU。循环稳定后再看 定时 Discord 日报——定时任务会放大失控开销。

排错

每次工具调用都 JSON 解析失败

现象:Failed to parse tool call 或工具名出现在正文里。

处理:开启 tool_use_enforcement: true;toolset 缩至 terminal,file;降低服务端 temperature;换面向工具微调的量化(如 Qwen2.5-Instruct)。避免在 prompt 里要求并行多工具。

无限「我将要…」却不调工具

现象:模型描述步骤;TUI 无终端图标。

处理:同上,并在 SOUL.md 写明:「必须调用工具,禁止承诺未来操作。」skill 减至 1 个;确认非 reasoning_effort: high

16K 模型第 4 轮就上下文爆满

现象:上下文条变红;回答混乱。

处理:compression.threshold: 0.35、减小 tool_output.max_bytes、禁用 web/browser,并养成 轨迹压缩 习惯(大段粘贴前先 /compress)。

常见问题

Hermes 3 8B 算官方支持吗?+
Hermes 可路由任意 OpenAI 兼容模型 ID。体验取决于量化、上下文与工具微调,而非品牌名。上生产 cron 前请先跑通七步实操。
现在能在 config.yaml 里设 temperature 吗?+
截至 2026 年 6 月,用户级 temperature 仍有限;请用本地服务端采样,并设 reasoning_effort: nonetool_use_enforcement。关注 #17565
与 Trajectory Compressor 什么关系?+
Compressor 面向已完成轨迹的训练/导出;运行时 compression.*/compress 控制在线窗口——8B 主机建议两者并用。
Agent 用 Llama 3 还是 Qwen 2.5?+
Qwen2.5-Instruct 在 7B–8B 上对 JSON 工具略稳;Llama 3.1 8B 更依赖强制调用 + 极小 toolset。请用你的任务实测,别看聊天榜。
开了 GitHub MCP 还能只挂两个 skill 吗?+
MCP 会增加工具与 token。8B 上宜二选一:要么聚焦的 MCP,要么两个 skill——不要全装。稳定 10 轮后再扩展。

需要常开 Mac 跑本地 Agent?

可选 Mac mini 让 Hermes 网关在 GPU 跑 8B 推理时仍在线。