Hermes Agent:修复 delegate_task 子 agent 401
贡献者 Vincent Lau · 2026-06-10 生产环境验证通过
症状
主 agent 工作正常,调用 delegate_task 派出子 agent 时失败:
Error code: 401 - {'error': {'message': 'invalid x-api-key'}, 'request_id': 'req_011C...'}子 agent status: failed、api_calls: 1,主 agent 用同一把 key 却正常。
根因
子 agent 被路由到了 Anthropic 官方端点 api.anthropic.com 而非 kitcoding.com。
Hermes 解析子 agent 凭证的优先级为:
delegation.base_url有值 → 直连该端点delegation.provider有值 → 走 credential pool- 两者都空 → 子 agent 完全继承父 agent
当设置了 delegation.provider = anthropic 时进入第 2 条,credential pool 记录的 base_url 因缺少 ANTHROPIC_BASE_URL 回落到 https://api.anthropic.com。子 agent 拿到正确的 key + 错误的官方端点 → 401。
如何区分官方端点 vs Kitcoding
Kitcoding 返回的 401 格式为 {"type":"new_api_error"} 且 request_id=None;官方 Anthropic 返回 req_011C... 格式。日志中出现 req_011C... 即表示请求被路由到了官方。
修复
清空所有 delegation 配置,让子 agent 继承父 agent。
hermes config set delegation.base_url ""
hermes config set delegation.provider ""
hermes config set delegation.api_mode ""
hermes config set delegation.api_key ""改完后重启 gateway:
/restart
# 或
hermes gateway run --replace原理
清空 delegation 后进入优先级第 3 条——子 agent 自动继承父 agent 的 model.base_url(https://kitcoding.com)、model.provider(anthropic)和 API key。主 agent 能正常工作,子 agent 就能正常工作。无需写死额外配置,也不存在切换后端时的遗留问题。
验证
派一个最小子 agent:
goal: 执行
echo delegation-ok并原样回报 stdout
判定标准:
- ✅ 子 agent
status: completed、api_calls >= 1 - ❌ 若仍看到
req_011C...,说明未重启生效
致谢
本文由社区用户 Vincent Lau 完成根因分析与生产环境验证,所有结论均附源码与日志依据。