上一篇文章讨论了如何把 AI Scaffold 做成开源项目。
从 README、示例项目、Roadmap、Issue 模板、贡献说明、License、测试和 CI 这些基础建设开始,一个脚手架项目才不只是作者自己的工具,而是可以被别人理解、试用、反馈和参与的开源项目。
到这里,AI Scaffold 系列可以做一个阶段性收官。
这 20 篇文章真正想回答的问题,其实只有一个:
AI 应用从 Demo 走向工程项目,中间到底差了什么?如果只看表面,差的是代码量。
但如果看工程本质,差的是结构、边界、治理、复用和持续维护能力。
AI Scaffold 这个系列,就是围绕这些问题展开的。
一、为什么从脚手架讲起
AI 应用开发一开始很容易让人产生错觉。
接一个模型 API。
写几句 Prompt。
做一个输入框和输出框。
一个 Demo 很快就能跑起来。
但 Demo 跑起来,不代表项目能长期维护。
真实项目里,问题会很快出现:
- 配置写死在代码里。
- Prompt 散落在函数中。
- 模型调用无法切换。
- Tool 调用没有边界。
- Workflow 逻辑越来越乱。
- 日志缺失,问题难以排查。
- 部署方式不清楚。
- 安全和权限没有治理。
所以这个系列从脚手架讲起。
因为脚手架不是为了炫技。
它是为了在项目一开始,就把工程边界立起来。
二、Demo 和工程项目的差别
Demo 关注的是:
能不能跑通?工程项目关注的是:
能不能维护? 能不能扩展? 能不能排查? 能不能部署? 能不能治理?这两者不是同一个层次的问题。
一个 AI Demo 可以把所有逻辑写在一个脚本里。
但一个 AI 工程项目不能这样做。
它需要有配置层、模型层、Prompt 层、Workflow 层、Tool 层、Repository 层、安全层、日志层和部署层。
这些内容单独看都不复杂。
但如果一开始没有组织好,后面就会不断变成维护成本。
AI Scaffold 解决的不是某一个模型调用问题。
它解决的是 AI 应用工程化的组织问题。
三、项目结构是第一道边界
一个项目的目录结构,决定了代码未来怎么长。
如果所有内容都放在一个文件里,项目很快会变成一团。
所以系列里专门讨论了:
- app 应该放什么。
- config 应该负责什么。
- prompts 为什么要独立。
- workflow 为什么要拆出来。
- tools 为什么不能散落在业务代码里。
- repository 为什么要隔离数据访问。
- tests 和 evals 为什么应该提前留位置。
项目结构不是形式主义。
它是在告诉开发者:
什么代码应该放在哪里。 什么职责不应该混在一起。这是工程化的起点。
四、配置管理决定项目能否迁移
AI 应用通常离不开配置。
例如:
- 模型名称。
- 模型供应商。
- API 地址。
- 数据库连接。
- 日志等级。
- 环境变量。
- 缓存配置。
- 部署参数。
如果这些内容写死在代码里,项目就很难从本地迁移到测试环境和生产环境。
所以配置系统是 AI 应用工程化里非常基础的一环。
它看起来不起眼。
但没有它,项目会越来越难部署,也越来越难协作。
脚手架的价值,就是把这些基础能力默认准备好。
五、LLM 抽象层解决模型依赖问题
AI 应用不应该把业务代码直接绑死在某一个模型供应商上。
今天用一个模型。
明天可能换另一个模型。
有些任务需要更强推理。
有些任务需要更低成本。
有些场景需要私有化模型。
如果没有统一抽象,每次切换模型都会牵动业务代码。
所以 LLM 抽象层的意义,是把模型调用变成一个清晰接口。
业务代码关心任务。
模型适配层关心具体供应商。
这就是分层。
六、Prompt 不是随手写的字符串
Prompt 在 AI 应用里不是临时文本。
它更像业务规则的一部分。
一个 Prompt 可能决定:
- 模型的角色。
- 回答的边界。
- 输出的格式。
- 工具调用的约束。
- 安全策略。
- 用户体验。
如果 Prompt 散落在业务代码里,就很难维护。
所以系列里强调:
Prompt 应该被模板化、参数化、版本化和集中管理。这不是把问题复杂化。
而是承认 Prompt 本身就是 AI 应用的重要资产。
七、Workflow 让复杂任务可控
很多 AI 应用不是一次模型调用。
它往往是多个步骤组合。
例如文档分析:
上传文档 -> 解析文本 -> 提取信息 -> 生成摘要 -> 生成报告 -> 保存结果如果这些步骤全部写在一个函数里,后面会很难修改。
Workflow 的价值,是让任务链路变得清楚。
每一步做什么。
输入是什么。
输出是什么。
失败怎么处理。
状态怎么传递。
这些都应该有明确设计。
AI 应用越复杂,Workflow 越重要。
八、Agent 不是魔法,而是调度层
Agent 经常被讲得很神秘。
但从工程角度看,Agent 首先是一层调度。
它围绕目标、上下文、工具和执行策略做决策。
所以系列里一直强调:
不要神化 Agent。 先把它当成工程调度层来设计。Agent 真正难的地方不是让模型“想一想”。
而是:
- 工具怎么选。
- 步骤怎么控。
- 失败怎么退。
- 权限怎么管。
- 日志怎么记。
- 循环怎么防。
这些问题都不是一句 Prompt 能解决的。
九、Tool Calling 必须有边界
AI 一旦能调用外部工具,能力会变强。
但风险也会变大。
工具可能访问数据库。
可能调用接口。
可能写文件。
可能触发业务操作。
所以 Tool Calling 不能只看“能不能调用”。
还要看:
- 工具是否注册清楚。
- 参数是否校验。
- 返回值是否规范。
- 权限是否控制。
- 高风险操作是否确认。
- 调用日志是否可追踪。
这就是为什么 Tool 需要工程化管理。
AI 能调用工具之后,安全边界就不能再靠运气。
十、Repository 让 AI 应用像正常后端项目
AI 应用也是应用。
它也会有用户、任务、会话、文档、日志、评测结果和业务数据。
既然有数据,就需要数据访问层。
Repository 的意义,是让业务逻辑不要直接依赖数据库细节。
今天用 SQLite。
明天换 MySQL 或 PostgreSQL。
业务层不应该大面积改动。
这和传统后端工程没有本质区别。
AI 应用不是因为接了大模型,就可以放弃基本的软件工程原则。
十一、Memory、日志和安全决定项目能否上线
Memory 解决的是上下文延续问题。
日志解决的是问题排查问题。
安全解决的是边界和风险问题。
这三个能力往往在 Demo 阶段被忽略。
但一旦进入真实项目,它们就会变得非常重要。
没有 Memory,多轮交互很难自然延续。
没有日志,线上问题很难定位。
没有安全治理,Agent 和 Tool 调用就可能带来风险。
所以 AI 应用上线,不是把服务部署出去就结束。
它还要能被观察、被审计、被限制、被复盘。
十二、实战篇把模块串起来
系列后面讨论了两个实战方向:
- 文档分析应用。
- 智能客服应用。
这两个场景不是随便选的。
因为它们能把前面很多工程模块串起来。
文档分析涉及:
- 文件上传。
- 文本解析。
- Workflow。
- Prompt。
- LLM 总结。
- 报告生成。
- 结果存储。
智能客服涉及:
- RAG。
- 多轮对话。
- Tool Calling。
- 会话记录。
- 人工兜底。
- 安全边界。
实战篇的意义,是让脚手架不只是概念。
而是能落到具体应用里。
十三、这个系列最终沉淀了什么
这 20 篇文章最终不是为了证明某个项目有多复杂。
而是为了沉淀一个判断:
AI 应用开发正在从“能跑”进入“能维护”的阶段。如果只追求能跑,写一个 Demo 就够了。
但如果要进入真实项目,就必须考虑工程化。
工程化不是把事情做复杂。
工程化是让复杂问题有结构。
AI Scaffold 作为脚手架,真正的价值就在这里。
它把 AI 应用里常见的工程问题提前组织好。
让开发者不是每次都从零开始。
也不是每次都在项目后期补救。
十四、总结
AI Scaffold 系列到这里收官。
从第一篇到最后一篇,主线其实一直很清楚:
AI 应用不是只要能回答就够了。 它还应该能维护、能扩展、能部署、能排查、能治理、能协作。这就是脚手架存在的意义。
它不是替开发者写完所有业务。
而是提供一个清晰、稳定、可复用的工程起点。
这个系列讨论过:
- 为什么 AI 应用需要脚手架。
- 项目目录应该怎么设计。
- 配置、模型、Prompt、Workflow 应该如何分层。
- Agent 和 Tool Calling 应该如何工程化。
- Repository、Memory、日志、安全为什么重要。
- AI 应用如何部署到生产环境。
- 如何用脚手架做文档分析和智能客服。
- 如何理解 AI Scaffold 与 LangChain、LangGraph 的关系。
- 如何把脚手架做成开源项目。
这些内容组合在一起,就是一个完整的 AI 应用工程化视角。
如果说 Demo 证明的是“这件事能不能做”。
那么工程化回答的是:
这件事能不能长期做、稳定做、协作做、持续做。AI Scaffold 的价值,也正是在这里。
它让 AI 应用从一次性的演示,走向可以持续维护的工程项目。
这就是本系列最核心的结论。