⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247553356&idx=1&sn=1bc975268d0d2e615f625119a525bc8f&poc_token=HHPr-2mjU68R9y2cqZLCpBxEofeLzwfFC32vhTzd 「null」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

最近刷到一个宝藏网站,叫 Learn Claude Code。名字看着挺像学习使用 Claude Code 的指南,但干的事却远比这要硬核——它要带你从零开始,手撸一个类似 Claude Code 的 AI 编程智能体。

别一听”智能体”就头大,这网站最骚的操作是:把复杂的 Agent 架构拆成了 12 个版本,代码从 84 行一路干到 694 行,每次只加一个机制,让你清清楚看到每一步解决了什么问题。

所有 Agent 的底层逻辑

网站上来就很直白地表示:所有 AI 编程 Agent,底层都是同一个循环。

while True:
response = client.messages.create(messages=messages, tools=tools)
if response.stop_reason != "tool_use":
break
for tool_call in response.content:
result = execute_tool(tool_call.name, tool_call.input)
messages.append(result)

翻译成人话就是:

  1. 调模型(给指令)
  2. 执行工具(读写文件、跑命令)
  3. 回传结果(告诉模型干了啥)
  4. 继续迭代(直到任务干完)

就这?就这。剩下的全是围绕这个循环的各种优化和补丁。

重要提醒:虽然网站用的是 Python 示例,但底层原理是语言无关的。你完全可以用 Java、Go、TypeScript 等任何语言复刻。

用 Java 来写,核心循环大概是这样:

while (true) {
MessageResponse response = client.messagesCreate(messages, tools);
if (!"tool_use".equals(response.getStopReason())) {
break;
}
for (ToolCall toolCall : response.getContent()) {
ToolResult result = executeTool(toolCall.getName(), toolCall.getInput());
messages.add(result);
}
}

看,逻辑一模一样。Python、Java、Go……语言只是工具,Agent 的核心设计模式才是精髓。

渐进式学习路径

网站将这 12 个阶段(s01-s12)归纳为五个核心能力的进阶,看看一个成熟的 Agent 系统是如何一步步被做出来的:

L1 工具与执行(s01-s02)

Agent 能做什么?基础层:工具赋予模型与外部世界交互的能力。

s01 The Agent Loop(84 行)

最小可用的 Agent 内核仅仅需要:一个 while 循环 + 一个工具。

核心思想:只要给 Agent 一个 Bash 工具,它就能读写文件、跑命令、操作 Git。

s02 Tools(120 行)

循环不变,通过一套规范的注册机制,你可以像搭积木一样给 Agent 塞入各种工具函数,让它的能力边界随插件无限延伸。

核心思想:每个工具一个处理函数,干净的注册机制。

L2 规划与协调(s03-s05,s07)

如何组织工作?从简单的待办列表到跨 Agent 共享的依赖感知任务板。

s03 TodoWrite(176 行)

发现问题了——Agent 干着干着就不知道自己在干啥。

核心思想:先列步骤,再执行。没有计划的 Agent 就像无头苍蝇。

s04 Subagents(151 行)

子任务污染主对话上下文怎么办?

核心思想:子 Agent 用独立的 messages[],保持主对话干净。

s05 Skills(187 行)

不要把所有规则都塞进 System Prompt,会撑饱上下文。

核心思想:按需加载,只有在特定场景下才通过工具返回(tool_result)喂入知识。

s07 Tasks(207 行)

多个任务之间有依赖关系怎么搞?

核心思想:利用基于文件的任务图,Agent 开始理解任务间的先后顺序与并行逻辑,成为真正的项目协调者。

L3 内存管理(s06)

在上下文限制内保持记忆。压缩策略让 Agent 可以无限工作而不失去连贯性。

s06 Compact(205 行)

对话一长,Token 烧得肉疼。

核心思想:三层压缩策略让无限会话成为可能:

  1. 滑动窗口:丢弃最早的消息
  2. 摘要压缩:把历史对话压缩成摘要
  3. 选择性保留:只保留关键信息

L4 并发(s08)

非阻塞执行。后台线程和通知总线实现并行工作。

s08 Background Tasks(198 行)

有些操作很慢,Agent 不能干等着。

核心思想:后台线程 + 通知。后台运行慢操作,Agent 继续思考下一步。

L5 协作(s09-s12)

多 Agent 协作。团队、消息传递和能独立思考的自主队友。

s09 Agent Teams(348 行)

一个 Agent 干不完怎么办?

核心思想:持久队友 + 异步邮箱。

什么是持久队友(Persistent Teammates)?它们是长期存活、有身份意识的 Agent,通过基于文件的邮箱(JSONL 格式)异步通信,能够处理跨越单个执行周期的复杂任务委托。

s10 Team Protocols(419 行)

多个 Agent 怎么协商?

核心思想:共享通信规则。一套请求-响应模式驱动所有团队协商。

s11 Autonomous Agents(499 行)

每次都要主 Agent 分配任务太累。

核心思想:扫描看板,认领任务。队友自己扫描任务板并认领任务,无需主 Agent 逐个分配。

s12 Worktree + Task Isolation(694 行)

多个 Agent 在同一目录干活会打架。

核心思想:按目录隔离。每个 Agent 在自己的目录工作;任务管理目标,工作树管理目录,通过 ID 绑定。

总结

为什么推荐这个网站?

  1. 渐进式学习:从 84 行到 694 行,每一步都清晰可见。
  2. 问题驱动:先戳痛点再给解药,让你明白为什么需要这个机制。
  3. 可视化强:任务看板、进度条、状态流转,抽象概念具象化。
  4. 代码透明:每课改动列得明明白白,拒绝黑箱。
  5. 即刻上手:命令和测试用例直接给,看完就能跑。
  6. 原理通用:Python 示例但思想语言无关,Java/Go/TS 都能复刻。
文章目录
  1. 1. 所有 Agent 的底层逻辑
  2. 2. 渐进式学习路径
    1. 2.1. L1 工具与执行(s01-s02)
    2. 2.2. L2 规划与协调(s03-s05,s07)
    3. 2.3. L3 内存管理(s06)
    4. 2.4. L4 并发(s08)
    5. 2.5. L5 协作(s09-s12)
  3. 3. 总结