AI 工程实战:一套可复用的提示词库与质量门禁,如何让 AI 辅助研发「可验证、可沉淀」

AI 工程实战:一套可复用的提示词库与质量门禁,如何让 AI 辅助研发「可验证、可沉淀」

摘要:本文从"AI 工程"的认知边界出发,拆解 AI 幻觉的成因,提出一套 通用的 AI 辅助研发方法论:用「标准提示词库 + 文档模板库 + 语言适配层 + 质量清单」六道约束,把 AI 从"聊天工具"变成"可验收的研发环节"。同时给出贯穿 12 个阶段的角色分工、瀑布/敏捷双流程调度,以及一套可落地的 AI 输出验证标准。


目录

  • [一、我对 AI 工程的认识](#一、我对 AI 工程的认识)
  • [二、AI 幻觉从哪来,我如何规避](#二、AI 幻觉从哪来,我如何规避)
  • [三、全链路 AI 辅助研发工作流](#三、全链路 AI 辅助研发工作流)
  • 四、提示词模板的沉淀与设计
  • [五、如何验证 AI 的输出](#五、如何验证 AI 的输出)
  • [六、阶段 × 角色 × 任务的拆解分析](#六、阶段 × 角色 × 任务的拆解分析)
  • 七、总结与展望

一、我对 AI 工程的认识

1.1 先厘清三个概念:模型 / Harness / AI 工程

很多人把"用 AI 干活"笼统地叫"提示词工程",其实这个认知会把自己的工作价值读窄。我理解的技术栈分四层:

是什么 谁负责 举例
模型层 LLM 本体 厂商 GPT / DeepSeek / Claude
Harness 层 Agent 运行时:工具调用、子代理派发、工作流编排、沙箱 平台/框架作者 LangGraph、Cursor Agent、各类 Harness
AI 工程层 给 Agent 装配"大脑":角色规范、提示词、模板、知识库、流程、质量门禁 开发者(我) 本文的方法论资产包
└ 提示词工程 上面这一层中的一个子集:设计 prompt prompts/

结论:我做的不是 Harness 工程,也不只是提示词工程,而是 Agent 工程 / 上下文工程(Context Engineering)。

Harness 是"引擎",提示词是"汽油",我做的是"整车的驾驶规范与标准流程"------决定 AI 在什么场景、以什么角色、按什么结构、交付什么标准、如何自检。

1.2 T 型人才:AI 负责深度,人负责广度

AI 打破了知识的壁垒,但没有打破"决策责任"和"场景上下文"的壁垒。我的核心判断是:

  • AI 擅长深度:给定明确的边界和上下文,它能比人更快、更细地生成代码、文档、用例。
  • 人必须负责广度 :用什么项目管理方法、为什么这时候用、有什么取舍;用什么存储、什么时候上云、成本与风险如何权衡;不同公司有不同的权限体系,某个按钮为什么不能对某个角色显示......这些是 AI 拿不到的、也是它不该替人拍板的东西。

这些"场景上下文 + 决策责任",必须由懂业务的人先对需求进行拆解,再喂给 AI。所以我的定位很明确:AI 是辅助,我是第一责任人,输出必须过我的审查。


二、AI 幻觉从哪来,我如何规避

2.1 幻觉的本质

AI 幻觉(Hallucination)不是 bug,而是概率生成 + 缺约束的必然产物。具体三个来源:

  1. 上下文不足:AI 不知道你的项目背景、权限体系、历史决策,只能"脑补"。
  2. 约束不足:prompt 太随意,AI 不知道该按什么结构、什么边界、什么风格输出。
  3. 缺乏验证闭环:生成了就交付,没有人或机制去校验,错误自然沉淀下来。

2.2 我的规避方法论:六道约束

对抗幻觉的本质是给 AI 加约束、加边界、加验证。我沉淀了六道约束:

# 约束 作用 落点
1 模板约束 结构对齐:产出物套固定章节骨架,禁止自由发挥 templates/
2 角色约束 身份对齐:固化 system 角色 + 职责边界 + 禁止行为 每个 prompt 的「角色定义」
3 少样本约束 风格对齐:给示例片段,让 AI 对齐颗粒度与写法 每个 prompt 的「少样本示例」
4 质量清单 交付门禁:生成后逐项自检,不达标重写 每个 prompt 的「质量清单」
5 契约传递 可追溯:上一阶段产出 = 下一阶段输入 方法论的工作流定义
6 事实源单一 规则不冲突:通用规范只定义一次,语言规范只定义一次 方法论 + 适配层

其中 「质量清单」是把隐性质量要求显式化为可勾选项,这是"保证输出质量"最直接的方法,也就是让AI自行根据标准检查一遍自己的输出内容。


三、全链路 AI 辅助研发工作流

我把研发链路拆成 12 个阶段,分成需求侧、设计侧、开发侧三大块:
#mermaid-svg-23VVhZayidnVrjjH{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-23VVhZayidnVrjjH .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-23VVhZayidnVrjjH .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-23VVhZayidnVrjjH .error-icon{fill:#552222;}#mermaid-svg-23VVhZayidnVrjjH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-23VVhZayidnVrjjH .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-23VVhZayidnVrjjH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-23VVhZayidnVrjjH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-23VVhZayidnVrjjH .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-23VVhZayidnVrjjH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-23VVhZayidnVrjjH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-23VVhZayidnVrjjH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-23VVhZayidnVrjjH .marker.cross{stroke:#333333;}#mermaid-svg-23VVhZayidnVrjjH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-23VVhZayidnVrjjH p{margin:0;}#mermaid-svg-23VVhZayidnVrjjH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-23VVhZayidnVrjjH .cluster-label text{fill:#333;}#mermaid-svg-23VVhZayidnVrjjH .cluster-label span{color:#333;}#mermaid-svg-23VVhZayidnVrjjH .cluster-label span p{background-color:transparent;}#mermaid-svg-23VVhZayidnVrjjH .label text,#mermaid-svg-23VVhZayidnVrjjH span{fill:#333;color:#333;}#mermaid-svg-23VVhZayidnVrjjH .node rect,#mermaid-svg-23VVhZayidnVrjjH .node circle,#mermaid-svg-23VVhZayidnVrjjH .node ellipse,#mermaid-svg-23VVhZayidnVrjjH .node polygon,#mermaid-svg-23VVhZayidnVrjjH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-23VVhZayidnVrjjH .rough-node .label text,#mermaid-svg-23VVhZayidnVrjjH .node .label text,#mermaid-svg-23VVhZayidnVrjjH .image-shape .label,#mermaid-svg-23VVhZayidnVrjjH .icon-shape .label{text-anchor:middle;}#mermaid-svg-23VVhZayidnVrjjH .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-23VVhZayidnVrjjH .rough-node .label,#mermaid-svg-23VVhZayidnVrjjH .node .label,#mermaid-svg-23VVhZayidnVrjjH .image-shape .label,#mermaid-svg-23VVhZayidnVrjjH .icon-shape .label{text-align:center;}#mermaid-svg-23VVhZayidnVrjjH .node.clickable{cursor:pointer;}#mermaid-svg-23VVhZayidnVrjjH .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-23VVhZayidnVrjjH .arrowheadPath{fill:#333333;}#mermaid-svg-23VVhZayidnVrjjH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-23VVhZayidnVrjjH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-23VVhZayidnVrjjH .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-23VVhZayidnVrjjH .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-23VVhZayidnVrjjH .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-23VVhZayidnVrjjH .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-23VVhZayidnVrjjH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-23VVhZayidnVrjjH .cluster text{fill:#333;}#mermaid-svg-23VVhZayidnVrjjH .cluster span{color:#333;}#mermaid-svg-23VVhZayidnVrjjH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-23VVhZayidnVrjjH .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-23VVhZayidnVrjjH rect.text{fill:none;stroke-width:0;}#mermaid-svg-23VVhZayidnVrjjH .icon-shape,#mermaid-svg-23VVhZayidnVrjjH .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-23VVhZayidnVrjjH .icon-shape p,#mermaid-svg-23VVhZayidnVrjjH .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-23VVhZayidnVrjjH .icon-shape .label rect,#mermaid-svg-23VVhZayidnVrjjH .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-23VVhZayidnVrjjH .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-23VVhZayidnVrjjH .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-23VVhZayidnVrjjH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 开发侧
设计侧
需求侧
用户原始需求
① 用户路线图
② 用户画像
③ BRD 商业需求
④ PRD 产品需求
⑤ 功能开发说明书
⑥ 产品开发说明书
⑦ HLD 概要设计
⑧ 接口规范
⑨ 数据流图 + ER图
⑩ 代码生成
⑪ 代码审查
⑫ 测试用例

3.1 每个阶段的输入 / 输出 / 角色

# 阶段 输入 输出 负责角色
用户路线图 原始需求 商业目标 → 功能落地路径 业务分析师
用户画像 需求 + 路线图 目标用户 / 痛点 / 场景 业务分析师
BRD 路线图 + 画像 为什么做、值不值得做 业务分析师
PRD BRD 做什么(产品需求) 产品经理
功能开发说明书 PRD 拆出的功能点 单功能:需求→交互→接口→验收 产品经理
产品开发说明书 PRD + 架构决策 产品级开发总纲 产品经理/架构师
HLD PRD + 开发说明书 概要设计:分层/模块/选型 架构师
接口规范 HLD API 契约:路径/入参/出参/错误码 架构师
数据流图 + ER图 HLD + 接口规范 数据建模(Mermaid) 架构师
代码生成 设计文档 + 表结构 + 目标语言 目标语言代码 开发工程师
代码审查 代码 + 接口规范 审查报告 审查工程师
测试用例 说明书 + 接口规范 + 代码 正常/异常/边界用例 测试工程师

3.2 多种管理方法:瀑布 / 敏捷双模式

关键设计理念:资产包是"可复用积木",瀑布 / 敏捷只是"调度节奏不同" 。提示词、模板、角色、质量清单完全复用,区别只在于什么时候执行哪些阶段

瀑布模式(需求明确、范围稳定):按 ①→⑫ 全量依次执行,一次跑完整个链路。

敏捷模式(需求持续变化、增量交付):

  • 立项跑一次:① 路线图 → ② 画像 → ③ BRD → ④ PRD 总纲 → ⑥ 产品开发说明书 → ⑦ HLD 总体架构
  • 每个 Sprint 循环:从 Backlog 取用户故事 → ⑤ 功能开发说明书 → ⑦ 局部 HLD → ⑧ 接口规范 → ⑨ 增量更新数据流/ER → ⑩ 代码生成 → ⑪ 代码审查 → ⑫ 测试用例 → 评审 → 下一 Sprint

这种"流程与资产解耦"的设计,让同一套方法论既能驾驭瀑布也能驾驭敏捷,这是它区别于一次性 prompt 的地方。


四、提示词模板的沉淀与设计

4.1 从"随手写 prompt"到"沉淀模板"的三步

  1. 发现问题:每次让 AI 写文档,格式漂移、质量忽高忽低、无法复用。
  2. 抽象共性:任何一次高质量产出,都离不开"角色 + 任务 + 结构 + 示例 + 检查"这几样东西。
  3. 固化为模板:把共性抽成固定结构,每类产出物对应一个 prompt 文件,从此只填空、不重写。

4.2 资产包的四层结构

复制代码
ai-dev-workflow/
├── 方法论.md          # 语言无关、流程无关的"宪法"
├── adapters/          # 语言适配层(换语言只换这里)
│   ├── java.md
│   ├── csharp.md
│   └── python.md
├── templates/         # 文档模板库(产出物骨架,语言无关)
│   ├── BRD模板.md
│   ├── PRD模板.md
│   ├── HLD模板.md
│   ├── 接口规范模板.md
│   └── ...(共 12 个)
└── prompts/           # 提示词库(每阶段固定 prompt)
    ├── BRD.md
    ├── PRD.md
    ├── 代码生成.md
    ├── 代码审查.md
    └── ...(共 12 个)

四层的分工:

回答的问题 语言/管理方法相关?
方法论 整体怎么流转、怎么保证质量 无关
提示词库 AI 怎么生成 无关(代码项引用适配层)
模板库 产出物长什么样 无关
语言适配层 命名/分层/代码骨架 相关

4.3 单个 prompt 的「六段式」结构

每个提示词文件固定六段,这是我的模板设计核心:

markdown 复制代码
# {阶段} 提示词

## 角色定义          ← 你是谁、职责、禁止(角色约束)
## 输入要求          ← 需要喂什么、缺信息就提问(防止脑补)
## 任务              ← 具体生成指令(指向目标)
## 输出模板          ← 引用 templates/ 的骨架(模板约束)
## 少样本示例        ← 对齐风格(少样本约束)
## 质量清单          ← 生成后逐项自检(交付门禁)

六段式对应六道约束里的前四道,再配合"契约传递 + 事实源单一",就构成了完整的质量体系。

4.4 语言无关的关键设计:适配层

早期版本我把 Java 命名规范直接写进方法论,导致换语言就得改核心。后来我把语言相关的三样东西------命名规范、分层目录、代码骨架------从核心剥离,下沉到 adapters/{语言}.md

  • Java:方法 camelCase,分层 controller/service/mapper
  • C#:方法 PascalCase,接口前缀 I,分层 Controllers/Services/Repositories
  • Python:snake_case,分层 routers/services/repositories

换语言只换一个适配文件,核心方法论、全部模板和提示词都不动。 这是"语言无关、可扩展"的落地方式,也是最有工程感的点。


五、如何验证 AI 的输出

这是最容易被追问、也最能体现方法论深度的问题。我的答案是三层验证法:态度层 + 硬手段层 + 兜底学习层。

5.1 第一层:人机协同(Human in the loop)

AI 是辅助,我是第一责任人,输出必须过我的审查,绝不直接拿来用。 这是安全底线。

5.2 第二层:硬手段(按产出物分标准)

代码类

  1. 先看能不能编译、能不能运行、单测过不过
  2. 再过静态检查(Lint / SonarQube 等);
  3. 然后人工审查四件事------
    • 安全性(SQL 注入、敏感信息泄露)
    • 性能(循环查库、N+1)
    • 规范(命名、分层是否符合适配层)
    • 正确性(入参出参是否对齐接口契约、边界条件是否覆盖)

文档类

  • 核心看验收标准是否可量化、可验证 。例如:
    • ❌ 错误:优化首页按钮布局
    • ✅ 正确:将首页 6 个按钮合并为一行水平排列,间距 8px,超出宽度自动换行
  • 再看是否与上游需求对齐、可追溯(PRD 是否对应 BRD,接口是否对应 HLD)。

通用类(质量清单门禁)

我给每类产出物定了一个可勾选的质量清单,AI 生成后先逐项自检,我再按清单验收。以代码生成为例:

markdown 复制代码
## 质量清单(生成后逐项自检)
- [ ] 命名、分层符合 adapters/{目标语言}.md
- [ ] 控制层不含业务逻辑、业务层承担事务、数据层只做数据访问
- [ ] 接口路径/入参/出参与接口规范完全一致
- [ ] 统一返回体 {code, message, data}
- [ ] 入参有校验(非空/格式)
- [ ] 实体含通用字段 id/create_time/update_time
- [ ] 未引入未确认的第三方依赖

交叉验证:存疑的地方,让 AI 给出依据、去查官方文档;重要代码我会开第二个会话/换模型做复核。

5.3 第三层:兜底 + 学习

开发中不可避免会碰到没碰过的技术。这时判断的前提是先建立判断基准

  • 至少让 AI 逐行讲清楚它为什么这么写、考虑了哪些边界、我的顾虑它怎么处理;
  • 相当于把每条内容完整过一遍,也当自己学一遍;
  • 这次慢,但下次生成同类内容时,就回到第一层的"审查"了。

这三点是递进的:自己懂的走审查,不懂的先建立基准再审查。 长期目标是------AI 负责深度,我负责广度。


六、阶段 × 角色 × 任务的拆解分析

把 12 个阶段按"角色职责"和"任务类型"再拆一层,能更清楚地看到"人机分工"的边界:

角色 负责阶段 核心任务 AI 能做 人必须把关
业务分析师 ①②③ 路线图、画像、BRD 结构化拆解、生成文档 商业目标、用户价值、可行性结论
产品经理 ④⑤⑥ PRD、功能/产品开发说明书 模块拆分、规则细化 需求边界、验收标准、优先级
架构师 ⑦⑧⑨ HLD、接口规范、数据流图/ER 分层设计、图生成、契约定义 技术选型、取舍、风险决策
开发工程师 代码生成 按规范生成代码 代码正确性、是否脑补需求
审查工程师 代码审查 发现问题、定位 问题分级、是否放行
测试工程师 测试用例 生成用例、覆盖核对 场景完整性、验收对应

按"任务类型"的三类拆解

任务类型 阶段 AI 的价值 人的价值 验证重点
决策类(为什么做) ①③⑥ 提供分析框架、罗列维度 拍板、担责 结论是否明确、是否有理由
定义类(做什么) ②④⑤⑧ 结构化、补细节 定边界、定验收 验收标准是否可量化
执行类(怎么做) ⑦⑨⑩⑪⑫ 高速产出、查错 审查、放行 是否对齐契约、是否安全合规

这个拆解的洞察是:越靠"决策",人的权重越高;越靠"执行",AI 的权重越高。 所以方法论的正确姿势不是"AI 全包",而是"人定标准与边界,AI 做高速执行,人做质量验收"。


七、总结与展望

这套方法论解决的核心问题是:让 AI 的产出从"一次性、不可控"变成"可复用、可追溯、可验收"。

  • 认知上:区分了 AI 工程 / Harness / 提示词工程,定位自己是"做 AI 工程"。
  • 方法上:用六道约束(模板/角色/少样本/质量清单/契约传递/事实源单一)对抗幻觉。
  • 工程上:用四层资产包(方法论 + 提示词库 + 模板库 + 语言适配层)实现语言无关、流程无关。
  • 验证上:用三层验证法(态度 + 硬手段 + 兜底学习)守住输出质量。

未来展望

  1. 把这套资产包进一步"产品化"成可交互的 Web 工具,让不懂 AI 的同事也能复用;
  2. 引入更重的多 Agent 编排(子代理派发、审核门禁自动化),把"人验"逐步变成"机验 + 人抽查";
  3. 沉淀更多语言适配层(前端 Vue/React、Go 等),扩大通用性。

AI 不会淘汰工程师,但它会淘汰"只会用 AI 输出、不会验证 AI 输出"的工程师。判断力,才是人永远不可替代的部分。

相关推荐
雪隐1 小时前
个人电脑玩AI-16让5060 Ti给你打工——5060Ti 16G 跑 MiniMax-Music-3:从下载到 60s 出歌的全流程
前端·人工智能·后端
watersink1 小时前
机器学习PCA
人工智能·机器学习
海兰1 小时前
【agent应用】DeepSeek Harness (dsh)介绍及安装部署(Ubuntu24.04)使用指南
人工智能·agent
逻辑君1 小时前
科技逆向外语|20260808
人工智能·科技·机器学习
Dawson Zhu1 小时前
面向AI自动化分析的数据仓库建模实践
人工智能·语言模型·架构·制造
民乐团扒谱机1 小时前
【微实验】谐波乘积谱(HPS)算法深度解析:原理、数学与代码实现
开发语言·人工智能·python·算法·语音识别·音乐
tech讯息1 小时前
Agentic BI 云方案选型:哪些平台可支持业务人员自然语言查数并分析原因?
人工智能
黄焖鸡能干四碗1 小时前
信息安全保障方案(Word文件)
大数据·网络·人工智能·架构·区块链
致Great1 小时前
Anthropic 终于把 Claude Code 怎么省 Token 讲明白了。
人工智能