多 Agent 系统配置同步的艺术:记一次模型与 Agent 协同调优
背景
在多 Agent 系统中,有两个层面的配置需要同步:
- 模型端(llama-server):决定实际推理能力
- Agent 端(agent.json):决定客户端行为
如果不同步,就会出现各种奇怪的故障。
典型案例:配置不同步导致的问题
场景一:上下文窗口不一致
模型端是 32K,Agent 端 max_input_length 却设成 128K。
结果:Agent 自信满满地发送了 35K 的请求,模型直接拒绝——“超过我能力了”。
教训: max_input_length 不应超过模型 --ctx-size,还要预留约 2K 给系统提示和输出。
场景二:压缩策略不匹配
模型端扩容到 48K 后,Agent 端的压缩策略也需要调整:
- 触发的阈值要从 80% 降到 70%(更早压缩、更从容)
- 保留比例要从 10% 提到 30%(避免压缩太狠丢了关键信息)
history_max_length要从 10000 减到 5000(源头控流)
场景三:修改后不同步重启
只改了配置没重启,旧进程还在用旧参数运行。
教训:模型端和 Agent 端需要同步重启,不能只改一边。
最佳实践
配置同步清单
□ 模型 --ctx-size 与 Agent max_input_length 对齐(预留余量)
□ 压缩阈值随上下文大小合理调整
□ 修改后两端同时重启
□ 重启后验证能正常处理长对话
推荐配置参考(20GB 显存 + 35B 模型)
| 层面 | 参数 | 推荐值 |
|---|---|---|
| 模型 | --ctx-size | 49152 (48K) |
| Agent | max_input_length | 49152 |
| Agent | compact_threshold_ratio | 0.7 |
| Agent | reserve_threshold_ratio | 0.3 |
| Agent | history_max_length | 5000 |
| Agent | pruning_recent_n | 3 |
总结
多 Agent 系统不是各管各的,模型端和 Agent 端的配置需要作为一个整体来考虑。拉齐参数、同步更新、联动重启,才能让系统稳定运行。