欢迎光临
我们一直在努力

AI时代“产品经理”必备技能分享

价值十万的“大厂高阶产品架构师+AI Agent协同”内部培训课。

融合传统大厂严谨PRD规范与最前沿AI Agent(Cursor/Cline)开发协议。


🚀 致入门PM:停止写“散文式”PRD!AI时代高阶需求逻辑闭环与Agent落地终极指南

前言:认清现实,你的PRD正在被研发和AI嘲笑 很多刚入门的产品经理,写PRD就像在写“散文”或“小说”:“用户点击按钮,系统判断一下,如果不对就提示错误,然后跳转到下一页……” 错!大错特错! 在研发眼里,这叫“天书”,充满了未定义的边界和黑洞;在 AI Agent(如 Cursor、Cline、Devin)眼里,这叫“乱码”,它根本不知道你的“判断一下”到底是写 If-Else 还是查数据库。 PRD的本质,不是功能说明书,而是「多边契约」与「机器可读的编译脚本」。 今天,我将用10年老兵的经验,从底层思维→图表降维→AI协议(Gherkin)→标准模板→全链路实操,逐层扒光你的“逻辑漏洞”,教你写出一份研发无法反驳、AI直接生成代码的终极PRD。


🩸 第一篇:认知重塑——为什么你写的PRD全是漏洞?

新手PM的逻辑漏洞,90%不是因为“没画流程图”,而是缺乏“防御性编程”思维。你只想着用户怎么“乖乖听话”(Happy Path),却忽略了真实世界的残酷。

1.1 新手PM的“五大绝症”

  • 只写正常流,无视“系统级异常”:只写“支付成功发货”,不写“网络超时、微信接口宕机、用户疯狂连点5次提交”怎么办。
  • 毫无“边界感”:不写 Out of Scope(本期绝对不做的事),导致研发自由发挥,测试无据可依,需求无限蔓延。
  • 权限黑洞:只写“管理员可删除”,不写“普通用户看到删除按钮是隐藏还是置灰?越权调用接口怎么拦截?”
  • 状态机混乱:订单有10个状态,全靠脑子记,没有状态流转矩阵,最后研发写出死循环Bug。
  • 散文式描述:大量使用“体验流畅”、“界面美观”、“大概”、“可能”等主观词汇,AI和研发直接看懵。
  • 1.2 高阶PM的“防御性思维”(核心内功)

    在你动笔写任何一个功能前,脑子里必须条件反射般闪过这三个系统级防御机制:

    • 幂等性(防重):用户网卡了,狂点10次“提交订单”,系统是扣10次钱,还是只认第1次?(PRD必须规定:前端按钮防抖置灰+后端流水号唯一校验)。
    • 并发控制(防覆盖):两个管理员同时编辑同一篇文章,谁保存听谁的?(PRD必须规定:引入乐观锁,后保存者提示“数据已被修改,请刷新”)。
    • 降级与熔断:调用的第三方实名认证接口挂了,主流程是直接白屏崩溃,还是允许“跳过/延后处理”?

    🗡️ 第二篇:逻辑闭环的“四维手术刀”(告别低级漏洞)

    不要再去背什么空洞的“五大维度”了,真正能落地的逻辑校验,只有以下四把手术刀。

    维度一:边界锁死法(In/Out Scope)

    任何需求开篇,必须用表格划定红线。

    范围类型详细描述备注
    In Scope (本期做) 1. 手机号+验证码登录2. 密码错误5次锁定账号 核心MVP闭环
    Out of Scope (绝不做) 1. 微信/苹果第三方授权登录2. 扫码登录3. 多语言适配 统一放到二期,研发敢做直接打回

    维度二:状态流转矩阵表(抛弃蜘蛛网状态图)

    专家警告:当实体状态超过5个,Mermaid的State图就会变成一团乱麻,AI读不懂,研发看不清。高阶PM只用“状态流转矩阵表”!

    以“企业级审批工单”为例,这才是真正的无歧义契约:

    当前状态 \\ 触发动作提交审批审批通过审批驳回申请人撤回超时未处理(系统触发)
    草稿 变为[待审批] ❌ 不允许 ❌ 不允许 ❌ 不允许 ❌ 不允许
    待审批 ❌ 不允许 变为[已通过] 变为[已驳回] 变为[已撤回] 变为[已超时]+催办
    已驳回 变为[待审批] ❌ 不允许 ❌ 不允许 ❌ 不允许 ❌ 不允许
    已通过 ❌ 不允许 ❌ 不允许 ❌ 不允许 ❌ 不允许 ❌ 不允许

    (注:表格中的 ❌ 和 触发的系统动作,就是 AI Agent 生成代码时最需要的 If-Else 逻辑边界!研发看到这张表,绝对对你心服口服。)

    维度三:异常兜底穷举法(5大异常场景)

    写功能时,强制自己填空以下5个异常场景:

  • 网络异常:断网、弱网、接口超时(>3秒)怎么提示?
  • 数据异常:列表为空(缺省页)、数据加载失败、数据量达到极限(如10万条分页)。
  • 输入异常:包含特殊字符、SQL注入词、超长文本、Emoji表情。
  • 权限异常:无权限访问页面(403)、Token过期(强制登出)。
  • 依赖异常:短信网关宕机、OSS存储满了、第三方API限流。
  • 维度四:RBAC权限矩阵(防越权漏洞)

    角色页面访问权数据查看权操作按钮权备注说明
    超级管理员 全部 全部 全部(含硬删除) 系统内置,不可删除
    部门主管 本部门数据 仅本部门 新增/编辑/软删除 跨部门数据自动隐藏
    普通员工 仅个人数据 仅个人 新增/查看 无编辑和删除权限

    📊 第三篇:图表降维打击——什么时候画什么图?

    很多新手为了显得专业,画了一堆图,结果全是错的。结合 Mermaid(目前对 AI 和 Markdown 最友好的代码绘图工具),你必须记住以下 “PM 绘图三定律”。

    1. 业务流转:跨角色泳道图(Flowchart)

    用途:梳理跨角色、跨系统的业务主干,防止流程断链。 Mermaid 高阶代码(直接复制到语雀/飞书/Markdown):

    #mermaid-svg-CmIFmZ74lmtxdg0I{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-CmIFmZ74lmtxdg0I .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CmIFmZ74lmtxdg0I .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CmIFmZ74lmtxdg0I .error-icon{fill:#552222;}#mermaid-svg-CmIFmZ74lmtxdg0I .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CmIFmZ74lmtxdg0I .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CmIFmZ74lmtxdg0I .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CmIFmZ74lmtxdg0I .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CmIFmZ74lmtxdg0I .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CmIFmZ74lmtxdg0I .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CmIFmZ74lmtxdg0I .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CmIFmZ74lmtxdg0I .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CmIFmZ74lmtxdg0I .marker.cross{stroke:#333333;}#mermaid-svg-CmIFmZ74lmtxdg0I svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CmIFmZ74lmtxdg0I p{margin:0;}#mermaid-svg-CmIFmZ74lmtxdg0I .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-CmIFmZ74lmtxdg0I .cluster-label text{fill:#333;}#mermaid-svg-CmIFmZ74lmtxdg0I .cluster-label span{color:#333;}#mermaid-svg-CmIFmZ74lmtxdg0I .cluster-label span p{background-color:transparent;}#mermaid-svg-CmIFmZ74lmtxdg0I .label text,#mermaid-svg-CmIFmZ74lmtxdg0I span{fill:#333;color:#333;}#mermaid-svg-CmIFmZ74lmtxdg0I .node rect,#mermaid-svg-CmIFmZ74lmtxdg0I .node circle,#mermaid-svg-CmIFmZ74lmtxdg0I .node ellipse,#mermaid-svg-CmIFmZ74lmtxdg0I .node polygon,#mermaid-svg-CmIFmZ74lmtxdg0I .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CmIFmZ74lmtxdg0I .rough-node .label text,#mermaid-svg-CmIFmZ74lmtxdg0I .node .label text,#mermaid-svg-CmIFmZ74lmtxdg0I .image-shape .label,#mermaid-svg-CmIFmZ74lmtxdg0I .icon-shape .label{text-anchor:middle;}#mermaid-svg-CmIFmZ74lmtxdg0I .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CmIFmZ74lmtxdg0I .rough-node .label,#mermaid-svg-CmIFmZ74lmtxdg0I .node .label,#mermaid-svg-CmIFmZ74lmtxdg0I .image-shape .label,#mermaid-svg-CmIFmZ74lmtxdg0I .icon-shape .label{text-align:center;}#mermaid-svg-CmIFmZ74lmtxdg0I .node.clickable{cursor:pointer;}#mermaid-svg-CmIFmZ74lmtxdg0I .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CmIFmZ74lmtxdg0I .arrowheadPath{fill:#333333;}#mermaid-svg-CmIFmZ74lmtxdg0I .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CmIFmZ74lmtxdg0I .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CmIFmZ74lmtxdg0I .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CmIFmZ74lmtxdg0I .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CmIFmZ74lmtxdg0I .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CmIFmZ74lmtxdg0I .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CmIFmZ74lmtxdg0I .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CmIFmZ74lmtxdg0I .cluster text{fill:#333;}#mermaid-svg-CmIFmZ74lmtxdg0I .cluster span{color:#333;}#mermaid-svg-CmIFmZ74lmtxdg0I 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-CmIFmZ74lmtxdg0I .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CmIFmZ74lmtxdg0I rect.text{fill:none;stroke-width:0;}#mermaid-svg-CmIFmZ74lmtxdg0I .icon-shape,#mermaid-svg-CmIFmZ74lmtxdg0I .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CmIFmZ74lmtxdg0I .icon-shape p,#mermaid-svg-CmIFmZ74lmtxdg0I .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CmIFmZ74lmtxdg0I .icon-shape .label rect,#mermaid-svg-CmIFmZ74lmtxdg0I .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CmIFmZ74lmtxdg0I .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CmIFmZ74lmtxdg0I .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CmIFmZ74lmtxdg0I :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    财务系统

    业务网关

    用户端

    凭证合规

    凭证违规

    通过

    驳回

    成功

    失败

    发起退款申请

    上传凭证

    创建退款工单

    拦截并提示重传

    财务人工审核

    调用微信退款API

    更新工单为已拒绝

    通知用户退款到账

    进入异常重试队列

    2. 系统交互:业务时序图(Sequence Diagram)

    ⚠️ 专家警告:绝对不要画“前端->后端->MySQL”的技术底层时序图!那是架构师的活! PM只画跨端、跨系统、跨第三方的业务时序图,界定“谁负责提供什么数据,谁负责承担什么风险”。

    微信支付API

    订单系统

    业务网关

    用户终端

    微信支付API

    订单系统

    业务网关

    用户终端

    #mermaid-svg-sn39JzhLabNjXS6z{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-sn39JzhLabNjXS6z .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-sn39JzhLabNjXS6z .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-sn39JzhLabNjXS6z .error-icon{fill:#552222;}#mermaid-svg-sn39JzhLabNjXS6z .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sn39JzhLabNjXS6z .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-sn39JzhLabNjXS6z .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sn39JzhLabNjXS6z .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sn39JzhLabNjXS6z .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-sn39JzhLabNjXS6z .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sn39JzhLabNjXS6z .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sn39JzhLabNjXS6z .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sn39JzhLabNjXS6z .marker.cross{stroke:#333333;}#mermaid-svg-sn39JzhLabNjXS6z svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sn39JzhLabNjXS6z p{margin:0;}#mermaid-svg-sn39JzhLabNjXS6z .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-sn39JzhLabNjXS6z text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-sn39JzhLabNjXS6z .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-sn39JzhLabNjXS6z .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-sn39JzhLabNjXS6z .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-sn39JzhLabNjXS6z .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-sn39JzhLabNjXS6z #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-sn39JzhLabNjXS6z .sequenceNumber{fill:white;}#mermaid-svg-sn39JzhLabNjXS6z #sequencenumber{fill:#333;}#mermaid-svg-sn39JzhLabNjXS6z #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-sn39JzhLabNjXS6z .messageText{fill:#333;stroke:none;}#mermaid-svg-sn39JzhLabNjXS6z .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-sn39JzhLabNjXS6z .labelText,#mermaid-svg-sn39JzhLabNjXS6z .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-sn39JzhLabNjXS6z .loopText,#mermaid-svg-sn39JzhLabNjXS6z .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-sn39JzhLabNjXS6z .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-sn39JzhLabNjXS6z .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-sn39JzhLabNjXS6z .noteText,#mermaid-svg-sn39JzhLabNjXS6z .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-sn39JzhLabNjXS6z .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-sn39JzhLabNjXS6z .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-sn39JzhLabNjXS6z .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-sn39JzhLabNjXS6z .actorPopupMenu{position:absolute;}#mermaid-svg-sn39JzhLabNjXS6z .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-sn39JzhLabNjXS6z .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-sn39JzhLabNjXS6z .actor-man circle,#mermaid-svg-sn39JzhLabNjXS6z line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-sn39JzhLabNjXS6z :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    异步回调阶段

    1. 发起支付请求(订单号, 金额)

    2. 校验库存并锁定(防超卖)

    3. 返回锁定成功

    4. 请求预支付参数

    5. 返回支付凭证(PaySign)

    6. 唤起收银台

    7. 异步通知支付结果

    8. 更新订单状态为已支付

    3. 数据字典:ER图与字段规则表

    不要只写“输入框”,必须用表格锁死数据格式,这是前端校验和后端建表的唯一依据。

    字段名称字段Code数据类型必填校验规则/正则默认值备注说明
    手机号 phone String(11) ^1[3-9]\\d{9}$ 需做唯一性校验
    昵称 nickname String(20) 禁止包含 < > & 等特殊字符 用户ID 超长截断…

    🤖 第四篇:核武器降临——BDD与Gherkin语法(AI Agent秒懂协议)

    这是整篇文章最值钱、最能拉开你与普通人差距的部分! 在 AI Agent(Cursor/Cline)时代,大模型有“上下文遗忘”和“幻觉”问题。你丢几万字散文给它,它写出来的代码绝对跑偏。 高阶PM必须掌握行为驱动开发(BDD)的标准语法——Gherkin。使用 Given (前提) – When (动作) – Then (结果) 的结构,你的 PRD 将直接变成 AI 可以执行的自动化测试脚本。

    实战:用 Gherkin 定义“购物车结算”逻辑

    把这段代码直接贴进你的 Markdown PRD 中,然后丢给 Cursor,它会惊呼“你太懂我了”:

    Feature: 购物车结算逻辑闭环与并发控制

    Scenario: 正常结算且库存充足
    Given 用户购物车中有商品A (数量: 2, 单价: 100)
    And 商品A的当前系统库存为 10
    When 用户点击"去结算"并成功支付
    Then 订单状态变更为"待发货"
    And 商品A的系统库存扣减为 8
    And 购物车清空商品A

    Scenario: 结算时库存不足 (并发兜底)
    Given 用户购物车中有商品A (数量: 2)
    And 商品A的当前系统库存为 1 (被其他用户抢先购买)
    When 用户点击"去结算"
    Then 系统拦截支付请求
    And 弹出强提醒"商品A库存不足,已为您自动移除"
    And 页面跳转回购物车,并刷新商品A状态为"失效"

    Scenario: 网络超时导致的状态未知 (幂等与重试)
    Given 用户已提交订单并唤起支付
    When 支付网关回调超时 (超过 5 秒未收到成功信号)
    Then 订单状态保持为"支付中" (绝不变更为失败)
    And 触发后台定时任务,主动轮询支付网关查询真实结果

    为什么这很牛?

  • 彻底消灭歧义:没有任何主观形容词,逻辑绝对闭环。
  • 测试左移:测试工程师可以直接拿这段代码生成自动化测试用例(Selenium/Cypress)。
  • AI 完美理解:AI Agent 会根据 Scenario 自动生成对应的 Controller 层代码和异常捕获逻辑。

  • 📝 第五篇:标准严谨PRD架构模板(直接Copy套用)

    抛弃Word,拥抱 Markdown + Mermaid + 本地代码库。你的标准PRD目录必须是这样的:

    1. 文档元数据与术语字典

    • 版本记录:V1.0 -> V1.1 修改了什么?影响了哪些接口?
    • 术语字典:统一语言。比如“封禁”和“黑名单”在全文必须统一叫“账号风控限制”。

    2. 全局通用规则(写一次,全文复用)

    • 全局交互:所有列表加载必须显示骨架屏(Skeleton);所有成功提示用 Toast(2秒消失),所有失败提示用 Dialog(需手动关闭)。
    • 全局报错:HTTP 401 统一跳转登录页;HTTP 500 统一提示“服务器开小差,请稍后再试”。
    • 时间格式:全局统一为 YYYY-MM-DD HH:mm:ss。

    3. 核心业务模块设计(单功能标准模板)

    以“文件上传与解析”为例:

    【功能名称】 Excel批量导入用户数据

  • 前置条件:用户具备“人事管理员”权限;已下载标准模板。
  • 输入规则:仅支持 .xlsx 格式,最大 5MB,单次最多 1000 条数据。
  • 主流程:选择文件 -> 前端校验格式/大小 -> 调用上传接口 -> 后端异步解析 -> 返回解析结果(成功X条,失败Y条及原因)。
  • 异常兜底:
    • 文件超过5MB:前端直接拦截,提示“文件过大”。
    • 解析中途服务器崩溃:记录失败日志,页面提示“导入失败,请联系管理员查看日志”。
    • 包含重复手机号:跳过重复行,在结果报告中列出“第X行手机号重复”。
  • 后置状态:导入成功的用户状态默认为“未激活”,并触发短信邀请。
  • 4. 非功能需求(决定软件生死)

    • 性能:列表接口响应时间 < 500ms;导出10万条数据支持异步任务,不阻塞主线程。
    • 安全:所有敏感数据(密码、身份证)脱敏展示(如 138****1234);防 SQL 注入。
    • 埋点:统计“导入按钮”的点击率、导入失败的原因分布。

    5. 验收标准(Gherkin 脚本)

    (直接贴入第四篇写的 Gherkin 代码)


    🛠️ 第六篇:AI Agent 协同开发 SOP(Cursor/Cline落地指南)

    在 AI 时代,产品经理不再只是“画图仔”,而是 “规则定义者+AI调度员”。以下是利用 AI Agent 开发完整成品软件的标准 SOP:

    步骤 1:环境搭建(本地代码库化)

    不要用微信传Word文档给AI! 建立一个本地的 Markdown 文件夹:

    • PRD.md (业务背景、边界、数据字典)
    • flow.mmd (Mermaid 流程图)
    • test.feature (Gherkin 验收脚本)

    步骤 2:喂给 AI 的终极 Prompt 模板

    打开 Cursor 或 Windsurf,将上述文件作为 @Context 喂给 AI,使用以下高阶 Prompt:

    # Role
    你是一个拥有10年经验的资深全栈架构师兼测试专家。

    # Context
    请仔细阅读 @PRD.md 中的业务规则、数据字典,以及 @test.feature 中的 Gherkin 验收脚本。

    # Task
    1. 请使用 Python (FastAPI) + Vue3 编写“Excel批量导入用户”的前后端代码。
    2. 核心要求:
    – 必须严格遵循 @PRD.md 中的【异常兜底】规则(如文件过大、重复手机号处理)。
    – 必须实现并发控制,防止多个管理员同时导入导致的数据覆盖。
    – 代码结构必须符合 Clean Architecture。
    3. 请根据 @test.feature 中的 Scenario,自动生成对应的 Pytest 自动化测试用例,并确保代码能 100% 跑通这些测试。

    # Output
    先输出你的技术方案和防重/并发设计思路,确认无误后再输出核心代码。

    步骤 3:PM 的底线与验收

    • 底线:绝对不能让 AI 决定业务规则!如果 AI 问你“库存不足要不要允许超卖?”,你必须依据 PRD 给出明确指令,而不是让 AI 自己猜。
    • 验收:不要只看界面,直接运行 AI 生成的自动化测试脚本。全绿(Pass),才算需求闭环!

    🛡️ 第七篇:全栈工具栈与避坑 Checklist

    7.1 现代 PM 神兵利器

    • 文档与知识库:Obsidian / Notion / 飞书文档(原生支持 Markdown 和 Mermaid,对 AI 抓取极其友好)。
    • 图表绘制:Mermaid Live Editor(代码生成图表,随时修改) + Draw.io(处理极度复杂的跨部门泳道图)。
    • 原型设计:Figma(配合 FigJam 做前期脑暴) + 墨刀/Axure(复杂交互)。
    • AI 协同 IDE:Cursor / Windsurf(直接把 PRD 喂给 AI 写代码的终极利器)。

    7.2 高阶 PM 避坑自查清单(Checklist)

    每次提交 PRD 评审前,逐条打勾,少一个都不准开会:

    • 是否明确了 In Scope 和 Out of Scope?
    • 是否提供了状态流转矩阵表,而不是模糊的状态图?
    • 是否穷举了网络超时、并发冲突、第三方宕机的兜底方案?
    • 是否定义了所有输入框的正则校验、极限长度、特殊字符拦截规则?
    • 是否提供了权限矩阵表,明确了越权访问的拦截提示?
    • 是否将核心验收标准转化为了 Gherkin (Given-When-Then) 脚本?
    • 是否定义了**空数据(缺省页)和加载态(骨架屏)**的UI表现?

    🩸 老兵的最后忠告

    作为入门 PM,你现在的迷茫,是因为你试图用 “文科生的散文思维” 去指挥 “理科生的机器”。

  • 戒掉“我觉得”:在 PRD 里,不要出现“大概”、“可能”、“体验好一点”。用数据、用阈值、用矩阵表、用 Gherkin 说话。
  • 守住业务底线,不干涉技术实现:你定义“库存不能超卖,必须防并发”,至于研发是用 Redis 分布式锁还是数据库乐观锁,那是他们的事,不要越界。
  • 把 AI 当成你的“杠精测试员”:每次写完需求,先让 AI 扮演极端用户,用各种变态场景(断网、狂点、并发)去攻击你的逻辑,直到它无话可说。
  • 真正的严谨,不是写了几万字的废话文档,而是你的逻辑像数学公式和代码脚本一样,无懈可击,机器可编译。

    把这篇万字长文吃透,用状态矩阵和 Gherkin 语法去重写你手头的第一个需求。当你看到 AI Agent 一次性跑出毫无 Bug、且完美符合你业务兜底逻辑的代码时,你会回来感谢我的。

    去战斗吧,让行业看看什么是真正的 AI 时代高阶产品经理!

    赞(0)
    未经允许不得转载:171主机测评 » AI时代“产品经理”必备技能分享
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址