Java程序员学AI Agent:用AI老师学AI是什么体验
【AI Agent从零开始】Day1 - 规划狂魔的自救之路
前言

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

# 用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:你需要买蛋糕、订餐厅、邀请朋友...(直接给建议)
有规划能力:

用户:帮我组织生日派对
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 ✅,下次见。
更多推荐




所有评论(0)