2026了你还只会写点prompt?从AI提示词到可控自动化的演进之路

1、前言

简单总结一下个人使用AI的路线演进:

  • 定义prompt优化AI提示和补全效果
  • 定义规则rules约束AI生成的可控性
  • 定义工作流,让AI分步执行任务
  • 通过Agent实现AI自动化可控式迭代

前面3个步骤比较常见,这里避免啰嗦,直接最后一步;另外本文不涉及具体实现细节,只分享整体架构以及对应的演化思路。

2、最初的设想

graph TB A[线上系统运行] --> B[线上错误监控] A --> C[用户反馈] D[接口文档] E[需求文档] %% MCP 模块 B --> M[MCP Server] C --> M D --> M E --> M M --> F[AI Agent] F -->|自动分析与决策| G[生成 / 修改代码] G -->|自动提交| H[部署上线] H -->|形成闭环| A style M fill:#e3f2fd style F fill:#e1f5ff style G fill:#e1ffe1 style H fill:#fff4e1 style A fill:#ffe8e1

最初的想法很简单,就是把日常开发需要的东西全部丢给AI,自己做撒手掌柜,这里解决向AI传输数据的核心方式是通过MCP协议构建的MCP Server服务

MCP全称(Model Context Protocol),可以自己搜一下,主要是用来解决这些Prompt的问题:

  • 不可校验
  • 不可diff
  • 不可回滚
  • 不可组合
  • 不可规模化

为了解决这些个问题,大家不得不打成了共识。

3、遇到的问题

3.1、AI项目迭代的失控

如果大家有自己亲手尝试从零开始生成一个项目进行迭代,就会遇到一些很明显的场景:

  1. 初始生成,惊为天人
  2. 后续修改,逐渐崩溃
  3. 细节调整,开始混乱
  4. 对话过长,胡言乱语
  5. 问题修复,陷入循环

实际运行效果如下😅:

graph TB D1[Day 1: AI快速搭建系统] D2[Day 2: AI修改功能] P1[遗忘早期设计决策] P2[修Bug引入新Bug] P3[代码膨胀 5k -> 12k 40%冗余] P4[同一需求多次生成结果不一致] M3[Day 3: 不敢再让AI改代码] %% 主线 D1 --> D2 D2 --> P1 D2 --> P2 D2 --> P3 D2 --> P4 P1 --> M3 P2 --> M3 P3 --> M3 P4 --> M3

遇到问题就解决问题:

graph TB %% 起点 A[反思为什么失败] --> B[根本原因] %% 顿悟阶段 B --> C1[AI没有长期记忆] B --> C2[代码是唯一载体] B --> C3[每次都要重读代码] %% 永久记忆阶段 C1 --> D[思考&顿悟] C2 --> D[思考&顿悟] C3 --> D[思考&顿悟] %% 解决方案阶段 D --> E1[AI需要长期记忆] E1 --> E2[提取项目核心元数据 - AST] %% 产物阶段 E2 --> F1[AST是项目的基因] E2 --> F2[代码是基因编译的一次性产物] E2 --> F3[AI是基因编译实体的工具] %% APS-DSL诞生 F1 --> G[APS-DSL诞生] F2 --> G[APS-DSL诞生] F3 --> G[APS-DSL诞生]

然后我们的整体流程就变成了这样:

graph TB A[线上系统运行] --> B[线上错误监控] A --> C[用户反馈] D[接口文档] E[需求文档] %% MCP 模块 B --> M[MCP Server] C --> M D --> M E --> M M --> N[项目基因AST& AI_GUIDE.MD] N --> F[AI Agent] F -->|自动分析与决策| G[生成 / 修改代码] G -->|自动提交| H[部署上线] H -->|形成闭环| A style M fill:#e3f2fd style F fill:#e1f5ff style G fill:#e1ffe1 style H fill:#fff4e1 style A fill:#ffe8e1

这个流程里增加了核心模块AST,解决AI需要外部记忆系统的问题。后续项目的迭代,就成了以AST作为核心基因,进行基因表达式的演进流程

上面这个是最为关键的一步,应该算是独创的流程,没见过类似的。

这里AST可以理解为项目知识图谱Knowledge Graph,核心元数据等等,个人还是喜欢称为AST,和抽象语法树没关系。

AST的模版最初参考DSL选择了yaml,因为这个东西很像是容器里的DockerFile,目标是设想有了这个后,代码可以像容器一样随意删除。

后来便于AI校验和识别,以及便于阅读,改为json文件。

我这里定义了主要13个基础模版,细节就不展示了,仅供参考:

markdown 复制代码
**_meta.ast.json** - 📌 **入口文件**:项目元信息、技术栈、团队、架构,**包含所有AST文件清单**
**_ast_index.json** - AST索引文件:全局统计和关系图谱(最后生成)
**api.ast.json** - API接口定义 API 接口(基础信息:id, name, method, path, params, response)
**api.enhanced.ast.json** - API增强定义(含semantics、implementationHints等AI分析)
**config.ast.json** - 配置信息、环境变量、构建配置
**contexts.ast.json** - 应用上下文(认证、缓存、数据库连接等)
**domain.ast.json** - 数据模型、实体、字段、关系
**infrastructure.ast.json** - 中间件、工具函数、公共服务
**permission.ast.json** - 权限定义、角色、资源访问控制
**response-format.ast.json** - API响应格式标准、错误码定义
**ui-components.ast.json** - UI组件抽象定义(框架无关)
**ui.ast.json** - UI页面、路由、布局结构
**workflow.ast.json** - 业务流程、工作流定义

3.2、信息源造成的混乱

实际场景

js 复制代码
Sentry说:User.save()报错
Swagger说:POST /user需要email字段
用户反馈说:注册后没收到邮件
老代码说:User模型有username字段

→ AI整合4个信息源,生成了"看似正确"的代码
→ 实际运行:逻辑冲突,更多Bug

解决思路

graph TB A[多信息源] --> B[Sentry错误] A --> C[用户反馈] A --> D[Swagger文档] A --> E[现有代码] B & C & D & E -->|AI提取| F[AST元数据] F -->|AI自动化审核| G{完备性检查} G -->|62%| H[生成缺失报告] H --> I[详细清单:
- 32个参数缺说明
- 18个缺验证规则] I -->|补充| F G -->|>95%| J[唯一可信源] J -->|自动生成| K[代码] J -->|自动生成| L[文档] J -->|自动生成| M[测试] style F fill:#fff4e1 style G fill:#ffe1f5 style J fill:#e1ffe1 style K fill:#e1f5ff style L fill:#e1f5ff style M fill:#e1f5ff

这个流程增加了核心模块:AST完备性检查,用来确认数据是否冲突,是否完整,等等。

3.3、无法保证生成结果的一致性

失败案例

diff 复制代码
需求:实现User注册接口

AI第1次生成:
- POST /api/user/register
- 使用bcrypt加密密码
- 返回JWT token

AI第2次生成(同一需求):
- POST /api/v1/users
- 使用md5加密密码
- 返回session cookie

AI第3次生成:
- POST /register
- 明文存储密码(!)
- 返回user_id

→ 同一需求,3种完全不同的实现!

根本原因

  • AI的生成过程包含随机性
  • 缺乏标准化约束
  • 没有确定性生成机制
  • 没有明确指示的,AI就会漂移摇摆不定

解决思路

graph LR A[AST定义] -->|标准化| B[134个预定义动作] B --> C[禁止AI自创] A -->|模板引擎| D[自定义模板] D -->|决定性生成| E[代码输出] E -->|10次生成| F[哈希验证] F -->|完全一致| G[diff = 0] H[失败方案] -->|AI自由发挥| I[每次不同] style A fill:#fff4e1 style B fill:#e1ffe1 style G fill:#e1ffe1 style I fill:#ffe1e1

到这里大家可能会发现一个问题,怎么搞模版了,这是不是变成了类似'低代码平台'JSON Schema类似的东西,恭喜你猜对了一半,给你点个👍。

其实到这一步确实遇到了偏离最初设想的问题

我们想要:有限的基因AST + 无限制的语言/框架/库/工具 === 去实现有限的结果输出。

但是: 1+无限=无限, 1x无限=无限

在这种要求下,我们只能通过迭代流程等要素,无限趋近于100%的实现有限和一致的输出,但是就像圆周率永远算不尽,永远没有绝对光滑的圆,我们也只能实现有一定波动的输出。

这种波动并非没有意义,比如我们用来重构项目时,更换一下框架语言,升级一下依赖和运行环境版本等,实现一个95%完成率的重构项目,也是很有价值的,具体不再过多讨论。

3.4、现有项目的知识流失

真实案例

复制代码
核心开发人员离职 
  ↓
业务逻辑散落在代码中,难以理解
  ↓
文档缺失或已过时
  ↓
新人上手需要2-3周,频繁踩坑
  ↓
维护成本越来越高,不敢重构

根本原因

  • 业务逻辑隐藏在代码实现细节中
  • 文档与代码分离,容易不同步
  • 缺乏结构化的知识沉淀机制
  • 项目知识随人员流失而消失

解决思路(反向提取)

graph TB A[现有源码项目] -->|AI分析提取| B[AST元数据] B --> C[13类结构化知识] C --> C1[API定义] C --> C2[数据模型] C --> C3[业务流程] C --> C4[权限规则] C --> C5[UI组件] C --> C6[配置项] C1 -->|自动生成| E[API文档] C2 -->|自动生成| F[ER图] C3 -->|自动生成| G[流程图] B -->|自动生成| H[架构图] C4 -->|自动生成| I[权限矩阵] E & F & G & H & I & C -->|综合生成| D[项目接手指南] D --> D1[架构图] D --> D2[API列表] D --> D3[ER图] D --> D4[业务流程图] D --> D5[权限模块] D --> D6[源码核心摘要] D --> D7[开发流程/注意事项] B -->|可追溯| J[源码位置记录] J --> K[文件路径+行号] style A fill:#e1f5ff style B fill:#fff4e1 style D fill:#e1ffe1 style E fill:#e1ffe1 style F fill:#e1ffe1 style G fill:#e1ffe1 style H fill:#e1ffe1 style I fill:#e1ffe1 style K fill:#ffe8e1

这个流程其实只是增加了一些文档: PROCESS_PROJECT_ONBOARDING_DOC_GENERATION.md,用于生成项目使用指南。 AI_GUIDE_V2.md ,迭代后的AI指引入口文档,用于让AI参考指定的文件分步执行流程。

总结

其实还有很多细节。

比如:如何进行AI流程开发的调试工作,如何生成AI修改报告等,网上也能搜到,这里就不再赘述了。

以上就是个人总结的一些思路,希望对大家有所帮助。

写文章太痛苦了,有用的话点个赞,掘金的mermaid图貌似版本有点低?后面该画图的我都省了。

相关推荐
崔庆才丨静觅7 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60618 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了8 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅8 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅8 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅9 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment9 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅9 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊9 小时前
jwt介绍
前端
爱敲代码的小鱼9 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax