news 2026/10/15 16:33:23

为什么不用LangChain?agents-from-scratch 第一性原理哲学深度解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为什么不用LangChain?agents-from-scratch 第一性原理哲学深度解析

【免费下载链接】agents-from-scratch

Build AI agents from first principles using a local LLM - no frameworks, no cloud APIs, no hidden reasoning.

项目地址:https://gitcode.com/gh_mirrors/age/agents-from-scratch
点击查看免费下载

如果你正在学习AI Agent(智能体),大概率听过一句话:“直接上 LangChain 就行了”。但 agents-from-scratch 这个项目偏偏反其道而行之:不用任何框架、不依赖云端 API、没有隐藏的推理过程,仅凭一个本地 LLM,从第一性原理出发,一步步教你造出一个真正“看得见内部”的 AI Agent。这篇深度解析将带你看懂:为什么它敢对 LangChain 说不,以及这种哲学为什么更适合想真正搞懂 AI Agent 内部机制的新手。

一、先问一个问题:框架到底藏起了什么?

大多数教程教你怎么用Agent,而这个仓库教你理解 Agent如何工作。

LangChain、CrewAI、AutoGen 这些框架确实强大,但 PHILOSOPHY.md 开篇就点出了核心矛盾:

"Frameworks hide the mechanisms that make agents work. By the time you understand what they abstract, you no longer need them." (框架隐藏了让 Agent 运转的机制。等你搞懂了它抽象的东西,你就不再需要它了。)

用表格来对比两种路线,一目了然:

维度框架路线(如 LangChain)agents-from-scratch 路线
上手速度快,几行代码跑起来 demo慢一点,但每个环节都能解释
可调试性出错时常需翻框架源码每一步决策、状态转换都可见
学习成本先学框架概念,再学 Agent 概念直接学 Agent 的机制本身
依赖云端 API、API Key本地模型,无 API 费用、无速率限制

关键不是"框架不好",而是:在理解机制之前使用抽象,学到的只是"会用",而不是"懂了"。

二、第一性原理哲学:它明确拒绝的 4 件事

打开 PHILOSOPHY.md,作者把哲学浓缩成了"我们避免什么"。这 4 条拒绝,恰恰是对新手最有价值的部分:

  • 🚫 拒绝框架抽象—— 先理解机制,再决定是否需要框架
  • 🚫 拒绝拟人化语言—— Agent 不"思考"、不"理解",它只是处理文本、遵循模式、做结构化决策
  • 🚫 拒绝隐藏推理—— 每个决策显式、每个状态转换可见、每个 prompt 可读,"幕后没有任何事发生"
  • 🚫 拒绝过早自主—— 自主性是最后加的东西,不是第一件

这条"渐进自主"路径值得新手特别注意:

模型先会响应→ 再会决策→ 再会请求动作→ 最后由系统安全地执行。

这正对应仓库 12 课的教学顺序(见 README.md 中的课程表):第 1 课只是最普通的"文本进、文本出",第 6 课才出现循环,第 9 课才引入安全的原子化执行。复杂度是一层一层加上去的,而不是开头就给你一坨"魔法"。

三、Agent 不是性格,是一个循环

这是整个仓库最反直觉、也最核心的观点:

"Agents are not personalities. They are loops, state, and constraints."(Agent 不是性格。它是循环、状态和约束。)

很多人把 Agent 想象成一个"会思考的小助手"。但在这个仓库里,Agent 就是下面这个朴素的循环(来自 PHILOSOPHY.md):

while not done: observation = perceive(环境) decision = decide(观察, 状态) state = act(决策, 状态)

它不是人格,不是意识,就是一个循环。这个循环的完整形态如下图所示——从用户目标出发,构建上下文、LLM 推理、决定下一个动作、执行动作,直到达成目标或到达最大步数才结束:

理解了这一点,你就不会再问"Agent 在想什么",而是问"这一轮它的状态是什么、它决定做什么、为什么终止"。这正是从"神秘感"走向"机械式理解"的关键一步。

四、三个让可靠性落地的工程原则

"没有魔法"不是一句口号,它落在三个具体的工程做法上(详见 PHILOSOPHY.md 的 "What We Focus On" 一节):

  1. 显式状态(Explicit State)状态不藏在对话历史里,而是一个可以检查、修改、推理的普通 Python 对象——agent/state.py 里的AgentState从第 9 行起就直白地维护着steps(步数)和done(是否完成)等字段。

  2. 结构化输出(Structured Outputs)自由文本是概率性的、不可靠的;结构化输出是契约,可以被校验、重试、信任。LLM 每次只允许返回 JSON,解析失败就重试——这就是"把概率组件变成可靠组件"的手法。

  3. 数据驱动的计划(Planning as Data)计划不是"想法",而是数据结构。计划变成数据后,就可检查、可修改、可安全执行。

把这三点拼在一起,就是仓库中那个"持续进化"的 Agent 的完整架构——它只有一个大脑(Agent 编排层)和三类组件(LLM 负责推理、Memory 负责状态、Tools 负责执行),没有任何隐藏模块:

而 Memory 组件的工作方式同样直白:每轮先加载记忆构建上下文,推理后再评估"这条信息值得存吗",值得就存,不值得就遗忘(forget),不存在任何黑盒向量库:

五、为什么选本地模型?

PHILOSOPHY.md 给出的答案非常朴素:

  • 零 API 成本—— 放心大胆地做实验
  • 无速率限制—— 快速迭代
  • 完全控制—— 看到实际发生的一切
  • 隐私—— 数据不出本机
  • 学习—— 理解完整技术栈

一句话总结:"云端 API 适合生产环境,本地模型适合学习。" 配合 QUICKSTART.md 的指引,你只需要安装依赖、下载一个 GGUF 模型到models/目录,运行python complete_example.py就能看到 12 课所有概念的完整演示。

六、那到底什么时候才该用 LangChain?

这个问题仓库自己也回答了,而且是正向的回答(见 PHILOSOPHY.md 的 "When to Use Frameworks"):

学完这个仓库之后,你会知道框架抽象了什么、什么时候这种抽象有帮助、什么时候有害、以及如何调试它们。那时,框架会成为工具,而不是魔法盒子。

换句话说:不是"不用 LangChain",而是先不用。当你能在一下午从零搭出一个 Agent、能解释每个部件的工作原理、能系统性地调试失败时,你再回头看框架源码,那些"魔法"都会现出原形——那不过是循环、状态和约束。

七、结语:Confident, Mechanical Understanding

这个仓库的目标只有五个:

  1. 一下午从零构建一个简单 Agent
  2. 能解释它每个部分如何工作
  3. 能系统性地调试 Agent 失败
  4. 能评估"该不该用框架"
  5. 能读懂框架源码并理解它

它的最后两句话,也是整本哲学的注脚:

"Not hype. Not magic. Just systems." (不是炒作,不是魔法,只是系统。)

如果你受够了"just use LangChain",想真正搞懂 AI Agent 到底怎么运转,这份课程清单就是起点:从 01_basic_llm_chat.md 到 12_telemetry.md,一课只加一个新概念,代码始终写在同一个 agent/agent.py 里,像真实开发一样逐步生长。打开任何一个文件,你都会发现——这里没有隐藏逻辑,只有可以被读透的系统。

【免费下载链接】agents-from-scratch

Build AI agents from first principles using a local LLM - no frameworks, no cloud APIs, no hidden reasoning.

项目地址:https://gitcode.com/gh_mirrors/age/agents-from-scratch
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 16:32:21

CRC-IBM 16校验算法详解:参数模型、比特级手算与代码实现

1. 从一次串口通信翻车说起:CRC-IBM 16 到底在算什么做嵌入式或者工控上位机的朋友,大概率都遇到过这种场景:设备明明在线,数据也一帧一帧地往上传,但上位机解析出来的数值就是飘的,偶尔还会整帧丢弃。我第…

作者头像 李华
网站建设 2026/10/15 16:31:22

四足机器人控制协议设计:从帧结构到同步与容错实践

1. 先把“控制协议”这个词解构清楚 每年一到毕业设计季,总有四足机器人项目的同学跑来问我:“控制协议应该怎么写?”然后打开聊天窗口贴上几段零散的代码或者一张截图。问得多了,我发现大部分卡住的点其实不在“代码怎么写”&…

作者头像 李华
网站建设 2026/10/15 16:29:06

嵌入式硬件抽象层(HAL)设计指南:从寄存器到可移植接口

1. 从寄存器到接口:HAL到底在解决什么问题刚接触嵌入式开发那会儿,我最怕的一件事就是换芯片。项目本来在A型号上跑得好好的,老板突然说B型号便宜三毛钱,换。于是接下来两周我都在干同一件事:把原来直接操作寄存器的那…

作者头像 李华