背景:为什么我要聊这个项目

2025年3月,一个叫 Dex 的开发者(HumanLayer 创始人)在 GitHub 上发了一个项目,叫 12-Factor Agents。短短几个月,19,400 颗星,1,474 个 Fork。

这个数字什么概念?比同期的 LangChain 官方 repo 增长还快。

它不是框架,不是代码库,是一套构建生产级 LLM 应用的工程原则。灵感来自 Heroku 的经典 12-Factor App。

核心问题是这个:

什么样的 LLM 应用,才真正值得放到用户手里?


核心立场:Agent 其实大部分是软件

Dex 观察到一个反直觉的现象:

大多数标榜自己是"AI Agent"的产品,其实大部分是确定性代码,只是在关键节点嵌入了 LLM,让体验变得"神奇"。

好的 Agent 不是"给你一个 prompt + 一袋工具 → 循环到天荒地老"这个模式。

好的 Agent 是:大部分是软件,只在真正需要推理的地方,让 LLM 做决策

这个立场,值 19,400 颗星。


12条原则,核心是这3条

项目里有 12 条原则,但真正构成骨架的只有 3 条:

Factor 3:Own Your Context Window

上下文工程,比模型选择重要。

LLM 是无状态的函数:输入 → 输出。想得到好输出,就得给好输入。

"好输入"包括:

  • Prompt 和指令
  • RAG 检索来的外部数据
  • 工具调用历史
  • 跨会话的记忆
  • 关于输出格式的说明

文档里有一句很扎心的话:"At any given point, your input to an LLM is 'here's what's happened so far, what's the next step'"

这就是 Agent 的全部本质。

更重要的是:文档建议你不用标准 message 格式,可以自定义 context 格式,把整个 context window 压成一个 custom user message, token 效率和注意力分配由你控制。

Factor 8:Own Your Control Flow

控制流是软件的责任,不是 LLM 的。

Agent 框架最大的诱惑,是让 LLM 决定下一步做什么、怎么循环。但这个模式的失败率在生产环境高得离谱。

12-Factor Agents 提倡的是:LLM 只负责"决策",软件负责"控制"

while True:
    next_step = await llm.determine_next_step(context)
    # 这里的判断全是软件逻辑
    if next_step.intent == 'request_clarification':
        await send_to_human(next_step)
        break  # 退出循环,等待人类响应
    elif next_step.intent == 'fetch_data':
        result = await execute(next_step)
        context.append(result)
        continue  # 同步步骤,继续循环
    elif next_step.intent == 'high_stakes_action':
        await request_approval(next_step)
        break  # 高风险操作,退出等审批

LLM 给出 intent,软件决定怎么处理。这才是合理的分工。

Factor 12:Make Your Agent a Stateless Reducer

Agent 是无状态 reducer:输入 thread → 输出 event → 追加到 thread。

这条原则把整个 Agent 架构推到最干净的形式:

  • 状态 = thread(一个有序的事件列表)
  • Agent = pure function: thread → event
  • Thread 可序列化、可恢复、可 fork

这就是为什么 Factor 5 强调 unify execution state and business state:执行状态和业务状态不需要分开管理,thread 就是唯一真相源。


在 2026 年的今天,还有意义吗?

核心工程原则依然正确。

  • 上下文工程 > 模型调参 ✓
  • 控制流归软件 ✓
  • 小而专注的 Agent(3-20步)✓
  • Thread as source of truth ✓
  • Compact errors,不要盲目重试 ✓

需要自己补全的。

  • MCP:文档写于 MCP 出现之前,README 直言 "I'm not going to talk about MCP",但 2025 年下半年 MCP 已是事实标准
  • Reasoning Models:OpenAI o-series / Claude extended thinking 的 API 设计(reasoning ID 传递、thinking block 处理),GitHub 上有人提了 Issue 但没有合并进正文
  • 多 Agent 协作:只有单 Agent 模式,复杂场景需要自己设计

最大的问题是:项目已经 7 个月没更新了。

最后一次 commit 是 2025 年 9 月。Reasoning models 的问题、MCP 的整合,这些 2025 下半年出现的新范式,文档都没有覆盖。


怎么用这个项目

把它当作工程思维读物,而不是 API 手册。

重点读这三篇:

  1. Factor 3 — Context Engineering
  2. Factor 8 — Control Flow
  3. Factor 12 — Stateless Reducer

Factor 1 和 Factor 2 相对基础,有经验的开发者可以跳过。

然后结合两份材料一起看:

  • Anthropic 的 Building Effective Agents
  • MCP 文档(Model Context Protocol)

Dext 的博客 The Outer Loop 也值得订阅。


一句话评价

12-Factor Agents 的核心思想依然是最清醒的 Agent 工程声音:Agent 是软件,控制流归软件,LLM 只做决策。

但文档本身已经落后于 2025 年下半年出现的 MCP 和 Reasoning Models 范式。

把它当作思维框架来读,结合最新的行业实践来用。

项目地址:https://github.com/humanlayer/12-factor-agents
作者:Dex (@dexhorthy),HumanLayer 创始人