1.OpenClaw_构建你的第一个Agent
1.前言
大家好,欢迎大家来到OpenClaw代码讲解第一课。本次讲解代码参照https://github.com/shareAI-lab/claw0.git这个代码库。今天我们学习的是OpenClaw智能体最核心,最基础的部分,揭示了AI Agent运行的底层逻辑。
AI Agent的核心
在OpenClaw中,最核心的莫过于一个无限等待输入的循环,在这个循环中,包含了四个关键的步骤,分别是:
- 用户输入
- 将输入保存到历史对话中
- 调用LLM 获取回复
- 将LLM的回复存储在历史记录中
接下来我们将对代码进行解析,我们可以知道这个过程是怎么样的。
代码解析
whileTrue:# 1.--- 获取用户输入 ---try:user_input=input(colored_prompt()).strip()except(KeyboardInterrupt,EOFError):print(f"\n{DIM}再见.{RESET}")breakifnotuser_input:continueifuser_input.lower()in("quit","exit"):print(f"{DIM}再见.{RESET}")break# 2.把人类的消息追加到messages中 ---messages.append({"role":"user","content":user_input,})# --- 调用 LLM ---try:# 构建 LangChain 消息格式langchain_messages=[]# 添加系统消息ifSYSTEM_PROMPT:langchain_messages.append(SystemMessage(content=SYSTEM_PROMPT))# 转换历史消息formsginmessages:role=msg["role"]content=msg.get("content","")ifrole=="user":langchain_messages.append(HumanMessage(content=content))elifrole=="assistant":langchain_messages.append(AIMessage(content=content))# # 添加当前用户输入# langchain_messages.append(HumanMessage(content=user_input))# 3. 调用LLM 模型response=client.invoke(langchain_messages)# 提取响应文本assistant_text=""ifhasattr(response,'content'):assistant_text=response.contentelse:assistant_text=str(response)# 打印助手回复print_assistant(assistant_text)# 将LLM的消息添加到消息历史messages.append({"role":"assistant","content":assistant_text,})