smhanov/agentloop

AI 工程

一个 Go 库,把 LLM 工具调用循环、预算、钩子和调用追踪都处理好,让你直接构建 agent。

112
13
Go
MIT
创建于 1 天前

如果你用 Go 写 agent,而且每次都要重新实现“发请求—执行工具—回填结果—再发请求”这套循环,先看看 agentloop 再动手搭脚手架。它是一个小而聚焦的库,不是平台,主要价值在于循环本身和它的护栏已经定义好、可以被观察。

解决什么问题

开发者想要一个 Go 程序:向模型提问,执行模型请求的工具,把结果送回模型,直到得到最终回答。手写这套流程意味着分发调用、追加结果消息、限制迭代次数、汇总 token 用量——代码容易出细微错误,而且每做一个 agent 就要重复一遍。agentloop 改变的是这一步:你定义工具和选项,调用 Ask,拿回一个 Answer,里面有文本、工具调用轨迹和用量。最后得到的是带完整记录的可运行循环,而不是手搓的状态机。

有什么不同

模型访问交给姊妹项目 llmhub,因此同一份 agent 代码可以指向 OpenAI、Anthropic、Gemini、Ollama、xAI、OpenRouter、Z.AI 或自定义服务商,而不用直接对接厂商 API(项目说明)。最有特点的设计是单一的 Hooks 结构:日志、追踪、流式 UI、审批关卡、费用上限、引导和上下文压缩都写成围绕循环的钩子函数,自带的 search 和 bash 两个预设也是用同一套接口搭出来的。如果你预计之后要加可观测性或人工审批步骤,这一点很关键:你是在扩展这次运行,而不是去改内部循环。

代价是钩子同步执行,除了一种特定的跳过信号,钩子返回错误就会中止运行;事件只在钩子调用期间有效,需要保留的内容必须自己复制(项目说明)。这是一个窄接口的内核:每次运行都受工具调用次数和步数预算约束,对无人值守的 agent 合理,但长时间探索型任务需要有意识地提高上限。它不是通用的图编排系统,README 也没有把它说成那种东西。

谁值得试

适合:想在 Go 里做一个基于搜索问答的 agent 或 bash 风格的编码 agent,并且愿意自己维护工具实现的团队。自带的预设和 examples/ask 运行器提供了具体起点,运行提前停止时可以通过 Answer.Tools 里的轨迹排查。不适合:想要跨语言平台、可视化工作流编排,或者用 Python、TypeScript 写 agent 的人;agentloop 是 Go 库,API 参考也是 Go 的(API 参考)。如果你希望各家服务商的工具调用差异都被处理好,先确认 llmhub 的覆盖范围,因为 agentloop 继承的就是这条边界。

使用条件与边界

需要 Go 1.21 或更新版本,唯一依赖是 llmhub,search 预设运行时还需要 serper.dev 的 API key(项目说明,serper)。bash 预设另有一个注意点:对文本动作协议不擅长的模型可能反复出现格式错误,文档给出的办法是切到 tool 协议或降低温度。预算耗尽、重复调用导致停止都是正常结果,不是崩溃;故障排查说明建议提高 WithMaxToolCalls / WithMaxSteps,并检查工具输出大小。日常维护主要是按模型调预算和 watchdog 设置,并控制工具返回内容的大小,让模型有机会收尾。

HotRepo 点评

HotRepo 目前唯一有日期的观察,是 2026-10-27 新项目榜(不是总榜)上以 112 个总 star 排第 4,距创建仅一天。这个样本不足以判断热度能否持续。考虑到项目还很年轻,真正值得先确认的是 llmhub 是否覆盖你打算用的服务商和模型,因为这个循环好不好用取决于那层集成。

本文由 AI 根据项目 README 生成,更新于 2026年10月27日,以项目官方文档为准。