【AI Agent从零开始】Day1 - 规划狂魔的自救之路

前言

在这里插入图片描述

大家好,我是宸一,一名 28 岁的 Java 程序员。
坦白来说,我算是典型的规划狂魔。每次接触新兴技术都会满怀热忱,认认真真罗列满满学习计划,可大多时候止步于规划阶段,后续很难坚持落地。此前报名软考、数次立下深耕 AI 领域的目标,最后都没能坚持走完学习全程。
这一次,我打算彻底换一种学习方式。
不再独自闭门摸索,也不靠单凭意志力硬撑。我选择以 Hermes Agent 作为学习搭档,结伴开启 AI Agent 领域的探索之路。往后每天只定下轻量化学习任务,实操过程中和 Agent 交流探讨、同步钻研,完成当日内容后就整理复盘笔记发布出来,以公开打卡的方式督促自己稳步前行。
如果你也常常陷入做完规划就心生满足、难以持续深耕的困境,不妨一起同行。我们彼此监督,伴着搭档式学习模式,一起踏实进阶。


今天学了什么

今天是Day1,目标很简单:理解AI Agent到底是什么

别看这个目标小,但搞清楚这四个概念,后面的学习就有方向了:

  1. 对话历史(Agent的记忆)
  2. 工具调用(Agent的手脚)
  3. Function Calling(标准的工具调用方式)
  4. 规划能力(Agent的大脑)

一、对话历史:AI是怎么"记住"你说的话的?

你以为AI有记忆?其实没有。

每次调用API,我们都要把之前所有的对话重新发给它:

messages = [
    {"role": "user", "content": "我叫宸一"},
    {"role": "assistant", "content": "你好宸一!"},
    {"role": "user", "content": "我叫什么?"},  # 第二轮
]
# 把整个messages发给API,AI才能"记住"
response = client.chat.completions.create(messages=messages)

类比Java: 就像Session一样,服务器本身没有记忆,全靠你把数据带过去。

问题来了: 对话越来越长怎么办?

答案:滑动窗口,只保留最近N条:
在这里插入图片描述

MAX_HISTORY = 20

def trim_messages(messages):
    if len(messages) > MAX_HISTORY:
        # 保留系统提示 + 最近的消息
        return [messages[0]] + messages[-MAX_HISTORY:]
    return messages

二、工具调用:让AI不只是聊天

光会聊天不够,AI还得能干活

核心思路:告诉AI"你有哪些工具",让它自己决定用哪个。
在这里插入图片描述

# 系统提示词告诉AI有哪些工具
system_prompt = """
你有以下工具:
- get_weather(city): 查询天气
- calculate(expression): 数学计算

需要使用工具时,输出格式:[CALL: get_weather("北京")]
"""

# AI输出:[CALL: get_weather("北京")]

# Python解析这个标记,执行真正的函数
if "[CALL:" in ai_response:
    # 解析函数名和参数
    # 执行真正的get_weather("北京")
    # 把结果发回给AI

类比Java: 就像Controller层判断调用哪个Service,AI负责"决策",Python负责"执行"。


三、Function Calling:标准方式(别用笨办法)

上面那种用正则解析的方式是"笨办法",生产环境要用OpenAI官方的Function Calling:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=…%2Fassets%2Ffunction-calling.jpg&pos_id=img-vAMl9Ql8-177943560921在这里插入图片描述

# 用JSON Schema精确定义工具
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "查询天气",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string", "description": "城市名"}
                },
                "required": ["city"]
            }
        }
    }
]

# AI返回结构化数据,不用猜格式
response = client.chat.completions.create(
    messages=messages,
    tools=tools  # 关键参数
)

# 直接拿到函数名和参数
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name)       # "get_weather"
print(tool_call.function.arguments)  # '{"city": "北京"}'

类比Java: 笨办法 ≈ 字符串拼SQL,Function Calling ≈ PreparedStatement。都是为了安全可靠。


四、规划能力:Agent的大脑

这是最关键的概念。规划能力让AI从"执行者"变成"决策者"

没有规划能力:

用户:帮我组织生日派对
AI:你需要买蛋糕、订餐厅、邀请朋友...(直接给建议)

有规划能力:

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=..%2Fassets%2Ftask-dependency.jpg&pos_id=img-NmNCn6dx-1779435609210

用户:帮我组织生日派对
AI思考:
  1. 先确定时间和预算(前置条件)
  2. 然后订餐厅(依赖预算)
  3. 同时买蛋糕和邀请朋友(可以并行)
  4. 最后确认出席人数(依赖邀请结果)

AI输出:
{
  "goal": "组织生日派对",
  "steps": [
    {"step": 1, "action": "确定时间和预算", "depends_on": []},
    {"step": 2, "action": "订餐厅", "depends_on": [1]},
    {"step": 3, "action": "买蛋糕", "depends_on": [1]},
    {"step": 4, "action": "邀请朋友", "depends_on": [1]},
    {"step": 5, "action": "确认出席人数", "depends_on": [4]}
  ]
}

类比Java: 规划能力 ≈ Service编排层,工具调用 ≈ 具体Service执行。Controller规划 → Service执行。


五、组合起来才是真正的Agent

单独看,四个概念都不复杂。但组合起来,就是一个完整的Agent:

在这里插入图片描述

┌─────────────────────────────────────────┐
│              真正的Agent                 │
├─────────────────────────────────────────┤
│  ① 对话历史(记忆)                      │
│     → 记住之前说过什么                    │
├─────────────────────────────────────────┤
│  ② 规划能力(大脑)                      │
│     → 分解任务,确定顺序和依赖            │
├─────────────────────────────────────────┤
│  ③ 工具调用(手脚)                      │
│     → 执行具体操作,获取外部信息          │
├─────────────────────────────────────────┤
│  ④ 循环执行(心跳)                      │
│     → 思考→行动→观察→再思考...           │
└─────────────────────────────────────────┘

补充说明

为什么要讲这个?

这篇文章讲的是 AI Agent 的技术原理,但我的学习方法本身也值得分享。

因为我正在用 Hermes Agent 学习 AI Agent,这个过程有点"元"——用 AI 学 AI。


Hermes Agent 学习模式是什么?

简单说,就是把 AI Agent 当成你的学习搭档,不是搜索引擎,不是问答机器人,而是一个能陪你学习的伙伴。

每天只需要做3件事:
在这里插入图片描述

1️⃣ 接收任务
   → Hermes Agent 根据我的水平,拆解当天的学习任务
   → 任务很轻量,30分钟以内能完成

2️⃣ 边学边聊
   → 有不懂的直接问,Agent 会从我的角度解释
   → 遇到报错,Agent 帮我分析原因
   → 学完以后,让 Agent 帮我总结要点

3️⃣ 输出复盘
   → 把今天学的内容写成笔记
   → 发布出来,用公开打卡的方式督促自己

Hermes Agent 的教学风格

引导式教学,不直接塞答案

  • 不懂就问,它会从我的角度解释
  • 用我熟悉的 Java 思维类比新概念
  • 难度循序渐进,不会一上来就劝退

督促机制,温柔但有压力

  • 每天布置一个小任务,5分钟就能开始
  • 没完成也不骂你,先理解原因再调整
  • 完成了就夸你,让你有成就感

记得住、跟得上

  • 记住我们聊过的内容,前后衔接
  • 记录我常踩的坑,下次主动提醒
  • 陪我对抗拖延,把想法变成现实

这种模式解决了什么问题?

传统学习的痛点 Hermes Agent 模式的解法
遇到问题卡住,没人问 随时问,Agent 给你分析
一个人学太孤独,容易放弃 有"搭档"陪伴,有仪式感
学完容易忘,没有输出 强迫自己写出来、教别人
计划列了一大堆,完成率很低 任务拆得很小,每天只做一点点

这个系列打算怎么走?

Day1  → 理解 AI Agent 是什么(今天)
Day2  → 写一个代码片段小助手
Day3  → ...
Day30 → 回头看这段学习旅程

每个阶段都会:
- 有具体的小项目
- 有踩坑记录
- 有复盘总结

明天预告

明天要写一个代码片段小助手,把今天学的四个概念全部串起来:

  • 保存代码片段
  • 搜索代码片段
  • 自动分类和打标签

如果你也是Java程序员,这个小工具可能会对你有用~


写在最后

我知道很多人和我一样,每次看到新技术就热血沸腾,列一堆计划,然后就没有然后了。

这次我想试试不一样的方式:每天学一点,写一点,发出来让大家监督

如果你也是一个"规划狂魔",欢迎在评论区留下你的目标,咱们互相监督。

Day1 ✅,下次见。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐