12-factor-agents
12-factor-agents 是一套基于经典 12-Factor App 理念打造的开源指南,旨在帮助开发者构建真正可靠、可投入生产环境的 LLM 应用。当前许多所谓的“智能体”项目实际上只是确定性代码中穿插 LLM 调用,缺乏足够的稳定性与代理能力,导致开发者常需自行搭建技术栈。12-factor-agents 正是为了解决这一痛点而生,它提供了一套标准化的原则,明确如何设计出既具备智能又足够稳健的软件系统。
这套资源特别适合致力于 AI 产品落地的开发者、初创团队创始人以及关注工程化实践的研究人员。它的独特之处在于超越了单纯的代码库,深入探讨了上下文工程、小模型专注任务等核心设计原则。通过遵循这些指导方针,团队能有效避开常见陷阱,实现从实验原型到生产级应用的平滑过渡,最终构建出用户真正信赖的智能体产品。
使用场景
某电商初创团队正在开发一个自动化退款审核代理,需处理复杂订单查询与政策匹配。该系统直接面对真实用户,对稳定性和可维护性有极高要求。
没有 12-factor-agents 时
- 代码逻辑混乱,LLM 调用和 API 请求硬编码混在一起,难以定位故障根源,测试覆盖率极低。
- 上下文窗口管理失控,长对话历史导致 Token 成本飙升且关键信息被遗忘,用户体验不稳定。
- 缺乏标准化配置,更换模型供应商或调整参数时需要重写大量业务代码,迭代效率低下。
- 错误处理脆弱,一旦外部服务波动整个流程就卡死,无法优雅降级,严重影响客户信任。
使用 12-factor-agents 后
- 遵循因子化原则分离状态与计算,核心逻辑清晰独立,大幅降低维护难度,新成员上手更快。
- 通过上下文工程最佳实践精准控制记忆长度,在保证效果的同时显著降低成本,预算更可控。
- 统一配置管理接口,支持快速切换不同大模型后端而不影响业务逻辑代码,技术选型更灵活。
- 内置可观测性标准,能完整追踪每个 Agent 步骤的输入输出,便于生产环境排查,运维更省心。
这套方法论将 AI 应用从脆弱的实验品转变为真正可靠的生产级软件。
运行环境要求
- 未说明
未说明
未说明

快速开始
12 因子智能体 - 构建可靠的大语言模型(LLM)应用程序的原则
秉承 12 因子应用 的精神。本项目的源代码公开于 https://github.com/humanlayer/12-factor-agents,欢迎提供反馈和贡献。让我们一起解决这个问题!
[!TIP] 错过了 AI 工程师世界博览会?在此观看演讲
正在寻找上下文工程(Context Engineering)相关内容?直接跳转到第 3 因子
想要为
npx/uvx create-12-factor-agent做贡献?请查看 讨论线程
你好,我是 Dex。我已经 钻研 AI 智能体 有一段时间了 (链接)。
我尝试过市面上所有的智能体框架,从即插即用(plug-and-play)的 crew/langchains,到“极简主义”的 smolagents,再到“生产级”的 langraph、griptape 等等。
我和许多非常优秀的创始人交谈过,无论是在 YC 内部还是外部,他们都在用 AI 构建令人印象深刻的事物。大多数人都是自己从头搭建技术栈(rolling the stack)。我在面向客户的生产环境中很少看到很多现成的框架。
令我惊讶的是,大多数自称是"AI 智能体”的产品其实并没有那么具备代理能力(agentic)。它们大多是确定性代码,只是在恰到好处的地方点缀了一些 LLM 步骤,以使体验真正变得神奇。
至少好的智能体不会遵循 "这是你的提示词,这是一堆工具,循环直到达成目标" 的模式。相反,它们主要由软件组成。
因此,我决定回答这个问题:
我们可以使用哪些原则来构建真正足够好、可以交付给生产环境客户的大语言模型(LLM)驱动的软件?
欢迎来到 12 因子智能体。正如自戴利(Daley)以来的每一位芝加哥市长一致在城市主要机场张贴的那样,很高兴你来到这里。
特别感谢 @iantbutler01、@tnm、@hellovai、@stantonk、@balanceiskey、@AdjectiveAllison、@pfbyjy、@a-churchill 以及旧金山 MLOps 社区对本指南的早期反馈。
简版:12 个因子
即使 LLM 继续以指数级变得更强大,仍有一些核心工程技术能使 LLM 驱动的软件更可靠、更具可扩展性且更易维护。
- 我们如何走到这一步:软件简史
- 因子 1:自然语言到工具调用
- 因子 2:掌控你的提示词
- 因子 3:掌控你的上下文窗口
- 因子 4:工具只是结构化输出
- 因子 5:统一执行状态与业务状态
- 因子 6:通过简单 API 启动/暂停/恢复
- 因子 7:通过工具调用联系人类
- 因子 8:掌控你的控制流
- 因子 9:将错误紧凑化至上下文窗口
- 因子 10:小型、专注的智能体
- 因子 11:随处触发,在用户所在之处与他们相遇
- 因子 12:让你的智能体成为无状态归约器
视觉导航
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
我们是如何走到这一步的
为了更深入地了解我的智能体之旅以及我们是如何走到这一步的,请查看 软件简史 - 这里有一个快速摘要:
智能体的承诺
我们将要谈论很多关于有向图 (DGs) 及其无环的朋友,即 有向无环图 (DAGs)。我首先要指出的是……嗯……软件本质上就是一个有向图。我们过去用流程图来表示程序是有原因的。

从代码到 DAGs
大约 20 年前,我们开始看到 DAG 编排器变得流行。我们说的是经典之作,如 Airflow、Prefect,一些前身,以及一些较新的项目,如 (dagster、inggest、windmill)。这些遵循相同的图模式,并增加了可观测性、模块化、重试、管理等好处。

智能体的承诺
我不是第一个说过这话的人,但我刚开始学习智能体时最大的收获是,你可以直接把 DAG 扔掉。与其让软件工程师编写每一个步骤和边界情况,你可以给智能体一个目标和一组转换:

然后让 大语言模型 (LLM) 实时做出决策来找出路径

这里的承诺是,你写的软件更少,你只需要给 LLM 图的“边”,让它去找出节点。你可以从错误中恢复,你可以写更少的代码,你可能会发现 LLM 能找到解决问题的新颖方案。
智能体即循环
正如我们稍后将会看到的,事实证明这并不完全奏效。
让我们再深入一步——有了智能体,你就有了一个由 3 个步骤组成的循环:
- LLM 确定工作流中的下一步,输出结构化的 json(“工具调用”)
- 确定性代码执行工具调用
- 结果被追加到上下文窗口中
- 重复直到下一步被确定为“完成”
initial_event = {"message": "..."}
context = [initial_event]
while True:
next_step = await llm.determine_next_step(context)
context.append(next_step)
if (next_step.intent === "done"):
return next_step.final_answer
result = await execute_step(next_step)
context.append(result)
我们的初始上下文只是起始事件(可能是用户消息,可能是 cron 触发,可能是 webhook 等),我们要求 LLM 选择下一步(工具)或确定我们已完成。
这是一个多步骤示例:
为什么是 12 因子智能体(Agents)?
归根结底,这种方法并没有达到我们预期的效果。
在构建 HumanLayer 的过程中,我至少与 100 位 SaaS 构建者(SaaS Builders,主要是技术创始人)交谈过,他们希望让自己的现有产品更具智能体(Agent)特性。这段旅程通常如下所示:
- 决定要构建一个智能体(Agent)
- 产品设计、用户体验(UX)映射、确定要解决的问题
- 想要快速推进,所以直接拿取 $FRAMEWORK 并开始构建
- 达到 70-80% 的质量标准
- 意识到对于大多数面向客户的功能来说,80% 还不够好
- 意识到要突破 80% 需要逆向工程框架(Framework)、提示词(Prompts)、流程等
- 从头再来
随机免责声明
免责声明:我不确定确切该在哪里说这个,但这里似乎和哪里一样好:这绝非意在贬低现有的众多框架(Frameworks),或是那些非常聪明的工作于其上的人们。它们实现了不可思议的事情,并加速了 AI 生态系统的发展。
我希望这篇文章的一个成果是,智能体框架的构建者能从我和其他人的经历中学习,使框架变得更好。
特别是对于那些想要快速推进但又需要深度控制的构建者而言。
免责声明 2:我不会谈论 MCP。我相信你能看出它放在哪里合适。
免责声明 3:我主要使用 TypeScript,出于某些原因,但这所有内容在 Python 或你喜欢的任何其他语言中都能工作。
总之,回到正题……
优秀大语言模型(LLM)应用的设计模式
在钻研了数百个 AI 库并与数十位创始人合作后,我的直觉是这样的:
- 有一些核心要素能让智能体(Agent)变得出色
- 完全押注一个框架(Framework),并构建本质上属于从零开始的重写,可能会适得其反
- 有一些核心原则能让智能体(Agent)变得出色,如果你引入一个框架,你将获得其中大部分/全部
- 但是,我所见过的构建者将高质量 AI 软件交付给客户的最快途径,是从智能体构建中提取小型、模块化的概念,并将它们整合到现有产品中
- 这些来自智能体(Agent)的模块化概念可以由大多数熟练的软件工程师定义和应用,即使他们没有 AI 背景
我所见过的构建者将优质 AI 软件交付给客户的最快途径,是从智能体构建中提取小型、模块化的概念,并将它们整合到现有产品中
12 因子(再次)
- 我们如何走到这一步:软件简史
- 因子 1:自然语言到工具调用
- 因子 2:掌控你的提示词(Prompts)
- 因子 3:掌控你的上下文窗口(Context Window)
- 因子 4:工具只是结构化输出
- 因子 5:统一执行状态和业务状态
- 因子 6:通过简单 API 启动/暂停/恢复
- 因子 7:通过工具调用联系人类
- 因子 8:掌控你的控制流(Control Flow)
- 因子 9:将错误紧凑化到上下文窗口
- 因子 10:小型、专注的智能体(Agents)
- 因子 11:从任何地方触发,在用户所在处相遇
- 因子 12:让你的智能体(Agent)成为无状态归约器(Stateless Reducer)
荣誉提名 / 其他建议
相关资源
- 在此 贡献本指南
- 我在 Tool Use 播客的一期节目中谈到了很多相关内容(2025 年 3 月)
- 我在 The Outer Loop 上撰写了一些相关内容
- 我与 @hellovai 一起举办关于 最大化 LLM(大语言模型)性能 的网络研讨会
- 我们使用此方法论构建 开源 (OSS) 智能体 (Agent)
- 我们无视了所有自己的建议,并构建了一个用于在 Kubernetes(容器编排系统)中运行分布式智能体 (Agent) 的框架
- 本指南的其他链接:
贡献者
感谢所有为 12-factor 智能体 (Agent) 做出贡献的人!
许可证
所有内容和图片均根据 CC BY-SA 4.0 许可协议 授权
代码根据 Apache 2.0 许可协议 授权
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。



























