首页 › new-tools › 前两名都零依赖:本周HN集体退出框架

你还在为 LangChain 升级、Dify 配工作流、CrewAI 加角色而焦虑吗?但过去这一周(2026-06-28 到 06-30),Hacker News 上票数最高的两个 AI 项目,加起来 109 分,做的事情却出奇一致:一个是一个 Bash 文件就把 LLM API 跑通(56 分),另一个是纯 C/CUDA 从零手搓一个 GPT-2(53 分)。本文拆解本周 HN 上四把"反臃肿"新刀,告诉你一个国内还没人讨论的信息差:海外的 AI 工程审美,正在从"堆框架"急转向"压成一个你能读懂的文件"。

一、一个反常的信号:本周 HN 的票,投给了"做减法"的人

我用 HN 的 Algolia API 把 6 月最后这一周所有 Show HN 帖子拉了下来,按票数排序后筛 AI 相关项目。结果很反直觉:

把这些放在一起看,趋势不是"又出了什么酷炫 agent",而是一批人正在集体退出重型框架。这跟国内还停留在"LangChain / Dify / 各种 low-code 平台谁更全"的讨论,差了一个身位。下面逐个拆。

二、四把"反臃肿"新刀

🔪 第一刀:Bash4LLM+ —— 把整个 LLM 客户端压进一个 .sh 文件

它到底是什么:一个自包含、可审计的单文件 Bash 脚本。下载下来、chmod +x、export 一个 API key,就能开始用。模型列表是动态拉取的(GET /api/models),不写死任何模型名。支持流式 / 非流式输出、长输出自动存盘,还暴露一个 JSON 格式的 ui_state,方便接 Home Assistant 之类的 GUI。

为什么值得关注:它把"安全 by design"当卖点——不用 /tmp、不 eval、权限收紧、provider 校验严格。跑在 Linux / macOS / WSL / Cygwin / Termux(安卓) / BSD 上。这意味着:在一个你不信任任何二进制、又必须审计每一行 API 调用的场景(运维、嵌入式、内网、安全敏感环境),你终于有一个能 cat 完整个源码就敢上线的 LLM 客户端。

国内对比:国内开发者写个 LLM demo,默认路径是 pip install openai + 一个 .py,顺带拖进来一堆依赖、虚拟环境、版本冲突。Bash4LLM+ 的价值不是"功能更多",而是"我把整个工具的攻击面写在你能读完的一个文件里"。

适用人群:SRE / 运维、嵌入式和边缘设备开发者、安全合规敏感团队、想在安卓 Termux 上随手调模型的极客。

🔪 第二刀:NanoEuler —— 不用 PyTorch,纯 C 从零搓一个 GPT-2

它到底是什么:一个 GPT-2 量级的语言模型,完全用 C/CUDA 从零写出来——没有 PyTorch、没有 autograd、没有任何 ML 库。前向和反向传播都是手写并验证过的;整个训练 pipeline 都在这个 repo 里:手写的 byte-level BPE 分词器、在 books + web 语料上的预训练、再到 chat 模型的监督微调(SFT)(RLHF/DPO 在计划中)。CPU 上(libm + OpenMP)跑一个 ~0.76M 参数的小展示模型;完整的手写 CUDA 引擎(cuBLAS 矩阵乘、手写 FlashAttention、用整模型梯度检查对齐 CPU 参考)在单张 RTX 4070 上训一个 ~116M 参数的模型。

作者起名 "Euler" 也很有意思:残差块 x = x + f(x) 被读成数值积分里的前向欧拉法一步——x(t+Δt) = x(t) + Δt·f(x(t))。

为什么值得关注:作者非常诚实——这是一个 ~116M 参数、在单张消费级 GPU 上训出来的"类 GPT-2-small 文本生成器",没有真实世界知识、不是一个能用的 chatbot。它的价值是完整的、可被完全理解的训练 pipeline。make check 能让你亲眼验证反向传播的梯度检查(双精度)。

国内对比:国内算法圈一开口就是"万卡集群"、"千卡预训练"、"MoE"。而这里一个人、一张 4070,把从分词到 SFT 的全链路用纯 C 走通。对想真正吃透 Transformer 的人,这是比读十篇博客都有效的练手场——尤其是冲大厂算法岗、被面试官追问"手写反向传播"时。

适用人群:想从底层理解 LLM 的工程师、准备算法面试的应届生、做模型部署想搞懂每一步算子的 inference 工程师、嵌入式端侧推理(pure C 部署友好)开发者。

🔪 第三刀:TinyAgents —— 用 Rust 把"递归"写进 agent 的骨头里

它到底是什么:一个给 Rust 用的递归语言模型(Recursive Language Model, RLM)harness。它是一个有类型、可持久化(durable)的运行时:模型可以调用模型、agent 可以调用 agent、图可以跑图,甚至一个模型可以编写、编译并运行它正身处其中的那个 workflow——全部是可检查、可 checkpoint、受策略约束(policy-checked)的 Rust 代码。

为什么值得关注:它直接点名了主流 agent 框架的病——"大多数 agent 框架把所有东西塞进一个不断膨胀的上下文窗口,然后指望模型自己扛住"。RLM 的做法是把长 prompt 当成外部环境,模型通过一个 REPL 去探索它、分解它、递归地调用自己或子模型。这是对 LangGraph / CrewAI "一锅炖"思路的正面反叛。

国内对比:国内 Dify、Coze 这类平台强调"拖拽编排、低门槛",代价是黑盒、不可恢复、上下文一炸全完。TinyAgents 走的是相反极端——强类型、可 checkpoint、可策略审查,适合需要长期可观测、可中断续跑的严肃 agent 系统。

适用人群:Rust 开发者、做生产级长任务 agent 的后端、对"agent 可恢复性 / 可审计性"有硬要求的团队。

🔪 第四刀:Context Warp Drive —— 别再让 LLM 帮你"总结记忆"了

它到底是什么:一句话主张——"Stop summarizing your agent's memory."(别再总结你 agent 的记忆了)。它的逻辑链非常硬核:

  1. 每次做 compaction(压缩上下文)都要烧掉一次模型往返;
  2. 它改写了你的前缀,导致 provider 的 prompt cache 直接变冷(缓存命中率归零,下一次又得全量计费);
  3. 它会悄悄丢掉 agent 正需要的那些标识符(变量名、ID、文件路径)。

替代方案是确定性折叠(deterministic folding):让长函数调用 agent 会话不调用 LLM、不结束会话就维持在上下文窗口之内,同时保持 prompt cache 持续热,等 agent 再碰到被折叠的内容时原样分页回来。纯 CPU、零 I/O、相同输入产出字节级一致的输出,provider 无关(Anthropic 的 content blocks、OpenAI 的 tool_calls、Gemini 的 parts 都支持)。核心引擎通过 380+ 个确定性测试。

国内对比:国内做长上下文 agent,主流默认动作是"塞不下就让大模型总结一下"。Context Warp Drive 给的是一条更工程化的路:可重现、可测试、不烧 token、不毁缓存。注意,这和"语义缓存省钱"不是一回事——它的核心卖点不是省钱,而是确定性 + 正确性 + 缓存保热。

适用人群:跑长函数调用 agent 的生产系统、深度依赖 Anthropic/OpenAI prompt cache 想压成本的团队、对 agent 行为可复现有合规要求的场景。

三、信息差总结:你知道的 vs 别人不知道的

维度 你以为的"正确做法" 本周 HN 投票的"另一条路"
调 LLM pip install openai,拖一堆依赖 一个 Bash 文件,可审计每一行(Bash4LLM+)
学 Transformer 读论文 / 跑 PyTorch demo 纯 C/CUDA 手写前向+反向,单 4070 训 116M(NanoEuler)
做 agent LangChain/Dify 拖拽,全塞进一个上下文窗口 Rust 强类型、可 checkpoint、递归调用(TinyAgents)
上下文超长 让大模型"总结一下"压缩 确定性折叠,零 LLM、字节一致、保热缓存(Context Warp Drive)
底层审美 框架越全越好、抽象层越多越省事 零依赖、确定性、你能读懂并验证每一行

四、一张图看懂:主流框架栈 vs 本周 HN 极简栈

flowchart LR
    subgraph MAIN["主流框架栈(国内默认路径)"]
        direction TB
        M1["Python + 虚拟环境"] --> M2["LangChain / Dify / CrewAI"]
        M2 --> M3["LLM 做上下文压缩"]
        M3 --> M4["黑盒: 不可审计 / 不可复现 / 缓存易冷"]
    end
    subgraph HN["本周 HN 极简栈(反臃肿路径)"]
        direction TB
        H1["Bash4LLM+<br/>一个 .sh 文件"] --> H2["NanoEuler<br/>纯 C 手写算子"]
        H2 --> H3["Context Warp Drive<br/>确定性折叠, 零LLM"]
        H3 --> H4["TinyAgents<br/>Rust 可 checkpoint"]
        H4 --> H5["白盒: 零依赖 / 字节一致 / 缓存保热"]
    end
    MAIN -."抽象层越来越厚".-> X(("风险积累"))
    HN -."每层都能读懂".-> Y(("可控可复现"))
    style MAIN fill:#2b2b2b,color:#fff,stroke:#e06c75
    style HN fill:#1e2b1e,color:#fff,stroke:#98c379
    style X fill:#e06c75,color:#fff
    style Y fill:#98c379,color:#000

顺带一个反差点:大厂反而走向"更重的编排"。同一周 DoorDash 开源的 Agentic Orchestrator(CLI 名 agentico)走的是另一极端——把"研究 → 规划 → 实现 → code review → 提 PR"全做成一条并发流水线,目的是"一次描述大功能,监督关键 checkpoint 即可"。它的卖点恰恰是治理 AI slop。所以现在的格局很清楚:企业要编排治理,草根要极简白盒,两条路都成立,但国内目前只卷前者。

五、行动指南(你今晚就能做)

  1. 审计一下你最近的 LLM 调用:去 https://github.com/kamaludu/bash4llm clone 下来,对照它"不用 /tmp、不 eval"的安全约束,回头检查你自己的 Python 客户端有没有类似坑。
  2. 花一个周末跑通 NanoEuler 的 make check:亲手看一次手写反向传播的梯度检查。如果你最近要面算法岗,这是最值得的 2 小时投资。仓库:https://github.com/JustVugg/nanoeuler
  3. 检查你的长 agent 有没有"用 LLM 压缩上下文":如果有,把 Context Warp Drive 的思路(确定性折叠、保热 prompt cache)记进你的设计文档。仓库:https://github.com/dogtorjonah/context-warp-drive
  4. 如果你是 Rust 栈:把 TinyAgents 加进选型对比,重点看它的 checkpoint + policy-check 设计,对比你手头的 LangGraph 方案。仓库:https://github.com/tinyhumansai/tinyagents
  5. 建立一条选型原则:下次引入一个 AI 框架前,先问三句——它能不能压成一个我能读完的文件?它有没有引入新的非确定性?它的每一层我能不能验证? 这三问,就是本周 HN 给中国开发者的最大启示。

参考来源


本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入