一天介绍一个项目|从零手搓一个AGENT

今天介绍一个最近在 GitHub Trending 上爆火的开源项目——learn-claude-code,目前已经快 3 万星了。

项目地址:https://github.com/shareAI-lab/learn-claude-code

这个项目是干嘛的?

一句话概括:从零开始,手把手教你搓一个类似 Claude Code 的 AI Agent。

用过 Claude Code 的朋友应该都好奇过:它到底是怎么做到"你说一句话,它就能帮你改代码、跑命令、操作文件"的?这个项目就是来揭秘的。

作者的核心观点很直接——"Bash is all you need"。意思是,Agent 没有你想的那么复杂,本质就是一个循环:调 LLM → 拿到工具调用 → 执行 → 把结果喂回去 → 再调 LLM……如此反复。

用项目原话说:代理就是模型,代码只是支撑框架(harness)。

12 节课,从入门到能打

这个项目最牛的地方是它把学习路径拆成了 12 节循序渐进的课,每节课对应一个 Python 文件,跑起来就能看到效果。

第一阶段:搞懂基本循环(s01-s02)

这是最核心的部分。s01 教你写一个最简单的 Agent 循环——就是一个 while True,不断调 LLM,如果返回的是工具调用就执行,如果是普通文本就输出给用户。

s02 加入工具分发机制,把不同工具的处理函数注册到一个字典里,循环只管查字典调函数,加新工具完全不用改核心逻辑。

一句话总结:一个 while True 循环就是 Agent 的心脏。

第二阶段:让 Agent 不再瞎跑(s03-s06)

光有循环还不够,Agent 容易"跑偏"。这个阶段加了四个关键能力:

  • s03 规划系统:让 Agent 先想好怎么做,再动手,不会东一榔头西一棒槌
  • s04 子 Agent:复杂任务拆成小任务,每个子任务有独立的对话上下文,互不干扰
  • s05 技能系统:把常用操作封装成"技能文件",Agent 可以按需加载
  • s06 上下文压缩:聊久了上下文会爆,这节课教你用三层压缩策略(摘要层 + 核心记忆层 + 实时工作层)解决这个问题

第三阶段:跨会话记忆(s07-s08)

  • s07 任务持久化:把任务存到文件系统里,关掉程序再打开,之前的任务还在
  • s08 后台任务:用多线程让 Agent 可以同时干好几件事

第四阶段:团队作战(s09-s12)

这是进阶内容,教你搞多 Agent 协作:

  • s09-s10:多个 Agent 之间怎么通信(用 JSONL 邮箱协议),怎么自动认领任务
  • s11-s12:工作树隔离,每个 Agent 在独立目录里干活,互不干扰,最后合并

核心代码长啥样?

说了这么多,Agent 的核心骨架到底多简单?看这段代码就够了:

def agent_loop(messages):
    while True:
        response = client.messages.create(
            model=MODEL, system=SYSTEM,
            messages=messages, tools=TOOLS,
        )
        messages.append({"role": "assistant", "content": response.content})
        if response.stop_reason != "tool_use":
            return
        results = []
        for block in response.content:
            if block.type == "tool_use":
                output = TOOL_HANDLERS[block.name](**block.input)
                results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": output,
                })
        messages.append({"role": "user", "content": results})

就这么几行。调 LLM,拿到工具调用就执行,拿到文本就返回。这就是 Agent 的全部骨架。

怎么开始学?

动手只需要 5 步:

git clone https://github.com/shareAI-lab/learn-claude-code
cd learn-claude-code
pip install -r requirements.txt
cp .env.example .env  # 填入你的 ANTHROPIC_API_KEY
python agents/s01_agent_loop.py  # 从第一课开始跑

从 s01 开始,一节一节往后学,每节课都是一个独立可运行的 Python 文件。

另外项目还提供了一个 Next.js 做的可视化学习平台,可以在浏览器里看架构图和步进调试:

cd web && npm install && npm run dev
# 打开 http://localhost:3000

适合谁?

  • 想搞明白 Agent 到底是怎么回事的开发者
  • 用过 Claude Code 但好奇它内部原理的人
  • 想自己从零搓一个 Agent 的实践派
  • 刚入门 AI 应用开发,想找个靠谱教程的同学

最后

别光收藏,clone 下来跑一遍 s01,你会发现 Agent 真没那么神秘。

#AI项目实战##AI求职实录#
全部评论

相关推荐

头像
04-08 17:47
已编辑
门头沟学院 Java
上次面的美团食杂零售急头白脸面一个小时给我挂了又换个部门给我捞起来了。。。快手hr面完还在池子里面泡着,发发面经攒人品1.自我介绍2.手撕代码:三数之和,问了点边界情况3.从基础开始吧。你知道这个 string 啊, string buffer, string builder 这三个类有什么区别吗?4.队列的一些方法:插入用啥,查看队首用啥,出队用啥(?这是我ai面试问过的题)还有栈跟队列的区别(好久没见到那么酣畅淋漓的基础八股了5.双亲委派模型了解吗,设计的目的是啥(答了防止重复加载以及程序稳定性)它怎么防止重复加载?,有没有打破双亲委派模型的例子?(答了tomcat)为什么要打破呢?6.然后你用过反射吗?反射是什么?应用场景?7.所以你刚才说那个注解,那个注解的原理是什么?讲一下注解的原理8.然后 IOC 知道吗?讲一下 IOC。9.怎么声明一个对象?(@Autowired 和构造器)10.幂等性了解吗?怎么实现幂等性?11.线程跟进程的区别?12.线程池的参数?13.那核心线程数、最大线程数是表示什么含义呢?14.那他一般核心线程数怎么设置的?为什么要这么设置?15.一般保证多线程安全的方法有什么?16.synchronized和 volatile 的区别?synchronized底层原理?锁升级的机制?为什么要锁升级?17.ConcurrentHashMap怎么保证线程安全?18.ThreadLocal在项目中有用过吗?内存泄漏?19.常用的 SQL 优化的技巧?20.MySQL常用的两种引擎,区别?(只具体答了InnoDB,MyISAM只回答了个名字)21.redolog undolog22.什么叫不可重复读?23.那个我们怎么看一个 SQL 语句就是它的查询性能呢?24.OSI七层模型25.TCP和UDP的区别?为什么UDP传输比TCP快?26.缓存穿透,缓存击穿,缓存雪崩,布隆过滤器。27.项目中学到了什么,日志怎么做的?开发碰见问题一般处理步骤?反问:1.对实习生的期待:态度吧,比较看重稳重,毕竟是金融业务2.ai工具:这个说的时候走神了,没记住,就是公司给配额最后又问了句实习能到什么时候。4.8更新:已回到人才库
查看29道真题和解析
点赞 评论 收藏
分享
评论
7
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务