最小可用的 Agent 内核仅仅需要:一个 while 循环 + 一个工具。
说白了就是Agent 最本质的“大脑-手脚”循环
Java实现代码
这段代码包含了所有 AI Agent 的灵魂。
核心模式:ReAct 循环
代码中的 while 循环是 Agent 的心脏。它的逻辑是:
思考: 问 LLM “该做什么?”
行动: 如果 LLM 说要调工具(比如写代码、运行命令),代码就去执行这个工具
观察: 把工具执行的结果(输出、报错)再次告诉 LLM。
循环: LLM 根据结果决定是继续干,还是说“搞定了”。
状态管理
messages 列表。它不仅仅是聊天记录,它是 Agent 的短期记忆。
每次循环,我们都要把新的对话(无论是人的指令,还是工具的执行结果)
append进去。如果不把工具结果放回去,LLM 就不知道自己刚才执行的命令成功了没有,也就无法进行下一步。
工具定义的标准化
在 代码的 TOOLS 变量里,我们会定义了工具长什么样(名字、参数)。
关键点: LLM 不会真的“运行”代码,它只是输出一个符合这个格式的 JSON(比如 {"name": "bash", "arguments": {"command": "ls"}})。而代码才是负责解析这个 JSON 并真的去执行 Runtime.exec()。
安全围栏
代码里的 run_bash 函数不仅仅是执行命令,它还充当了防火墙。
重要: 永远不要让 LLM 直接拥有无限制的 Shell 权限。虽然这里的检查很简单(黑名单),但在生产环境中,可能会需要沙箱环境(Docker)来运行这些命令。