用户目标
北京今天天气怎么样?
Agent 最小原理
模型负责决定下一步,代码负责执行工具。工具结果再回到模型,直到它不再调用工具。
看它循环一次
第一次模型要工具,第二次模型读到工具结果后才回答。
北京今天天气怎么样?
调用 get_weather(北京)
真正调用天气函数
北京:晴,24℃
最小代码
while True省略不同模型厂商的 HTTP 格式后,Agent 的核心就是这些。
def agent(question):
messages = [user(question)]
while True:
reply = model(messages, tools=SCHEMAS)
if not reply.tool_calls:
return reply.text # 结束
messages.append(reply)
for call in reply.tool_calls:
result = TOOLS[call.name](**call.args)
result_msg = tool_result(call.id, result)
messages.append(result_msg)
# 回到 while 开头,带着结果再问模型
模型只提议;TOOLS 里的普通代码才真正执行。
FlowLens
它守的是 Agent 与模型之间的通信,不是本地执行器。
检查 messages;工具结果也要等下一个 Loop 回来才看得到。 on_request
扫描或还原模型返回的内容。 create_transform
按工具名和参数阻断或改写。 on_tool_use
事后:on_response + capture 记录请求、原始响应和安全事件,但不能撤销。
边界:本地 shell、文件副作用、stdout 和 stdio MCP 不在这条链路里;真正执行前还要靠 mens permissions 或沙箱。