一天介绍一个项目|从零手搓一个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求职实录#
全部评论

相关推荐

03-25 18:24
已编辑
南京邮电大学 Java
1.必须要有实际的业务价值。最近发现身边很多同学朋友背景不同,经历不同,但是很多时候一些经历看似远远不如别人的同学却可以拿到更多面试机会。就是因为他会根据不同公司的招聘需求会对项目进行动态调整,以岗位要求为核心,努力让面试官一看就感觉到:这个同学的项目和我们的业务场景很贴切,一旦对项目感兴趣了,八股翻车的概率就大大降低了。面试官也会想:终于不是一个拿小破站烂大街项目海投的人了。面试通过的概率自然大大增加了。要是没有足够的时间准备可以对口的项目,也没有关系,你的项目至少要让面试官感觉,你是有思考的,不是纯粹的编程机器或者vibe coder。(当然了,最好的方式无疑就是做一个解耦的项目,可以在几个小时内快速改造。)2.在1的基础上展现自己的技术深度(贴合实际的业务场景)。这一点很好理解, 一个技术优秀的Agent项目无疑就是Agent部分足够优秀➕工程落地足够优秀。Agent部分就比如多智能体是怎么协作的,多步任务的执行能力,长期记忆短期记忆如何处理,Agent流程的可观测性,如何防幻觉等等,大家对这一点感兴趣可以看我上一个帖子。工程落地部分就比如在真实的业务场景下,你的项目的校验机制,多维权限,是否上线部署,性能与安全性,可观测性与拓展性等等,核心就是让面试官感觉这是一个完整的,可用的项目,而不是一个demo。3.在前两者的基础上展现自己的技术广度。这一点就更好理解了,比如前一个项目用多智能体协作,优秀的skill编排和记忆功能,好的MCP调用深耕一个业务场景。下一个项目就可以着重深挖RAG部分,比如 混合检索 + 重排, 多模态图像处理, 可视化管理 + 自动化评估, 三层测试体系, 全链路白盒化追踪。不过这一点依然是建立在前两者的基础上,比如投递的是RAG开发工程师,你洋洋洒洒的写上两个深挖Agent的项目加一个简单的知识库问答,这样无论你前两个项目有多优秀都很难通过初筛或初面。最后还是祝大家春招/实习顺利,offer多多。如果我说的有一点帮助,欢迎点个小星星/关注或收藏。
大厂面试问八股多还是项目...
点赞 评论 收藏
分享
评论
7
11
分享

创作者周榜

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