首页 › AI Agent › Agent搭建0-1企业级项目(已开源) › 第二节:展开一份开发轻量PRD需求文档

第二节:展开一份开发轻量PRD需求文档

​

做完这次项目后,我的答案是:需要,但它不再是一份堆满功能描述的长文档。它更像 AI 执行时的业务合同。没有这份合同,AI 会根据当前一句话重新理解产品。今天它认为客服可以直接发送回复,明天又可能替管理员增加一个真实退款按钮。​

​

轻量 PRD 只保留会影响实现的内容​

我们只写七类信息:用户角色、核心流程、页面范围、数据对象、正常与异常状态、AI 和人工边界、验收条件。​

如果一句话不会影响页面、数据、权限、流程或验收,它未必需要进入第一版 PRD。​

发生冲突时,处理优先级也提前写清:安全与权限规则优先,其次是验收条件,再其次是页面业务规则,最后才是视觉表现。​

​

飞书文档 - 图片

​

先把角色权限写成表​

​

#QCuXxFmuEdTF text { white-space: pre; }#QCuXxFmuEdTF .fb0 { stroke: var(--N900-FG, 0.15); }#QCuXxFmuEdTF .fb0 {stroke: rgba(31,35,41, 0.15)}#QCuXxFmuEdTF .fx0 { stroke-miterlimit: 10; }#QCuXxFmuEdTF .fx0 {stroke-miterlimit: 10}#QCuXxFmuEdTF .fa1 { fill: rgb(187, 191, 196); }#QCuXxFmuEdTF .fa1 {fill: rgb(187, 191, 196)}#QCuXxFmuEdTF .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#QCuXxFmuEdTF .fx1 {font-style: normal}#QCuXxFmuEdTF .fx2 { text-anchor: middle; }#QCuXxFmuEdTF .fx2 {text-anchor: middle}#QCuXxFmuEdTF .fx3 { dominant-baseline: central; }#QCuXxFmuEdTF .fx3 {dominant-baseline: central}#QCuXxFmuEdTF .fx4 { stroke: none; }#QCuXxFmuEdTF .fx4 {stroke: none}#QCuXxFmuEdTF .fc0 { fill: var(--text-caption); }#QCuXxFmuEdTF .fc0 {fill: #646a73}#QCuXxFmuEdTF .fa2 { fill: var(--text-link-disabled); }#QCuXxFmuEdTF .fa2 {fill: rgb(187, 191, 196)}#QCuXxFmuEdTF .fa3 { fill: rgb(239, 243, 244); }#QCuXxFmuEdTF .fa3 {fill: rgb(239, 243, 244)}#QCuXxFmuEdTF .fx5 { font: 400 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#QCuXxFmuEdTF .fx5 {font-style: normal}#QCuXxFmuEdTF .fx6 { text-anchor: start; }#QCuXxFmuEdTF .fx6 {text-anchor: start}#QCuXxFmuEdTF .fx7 { dominant-baseline: alphabetic; }#QCuXxFmuEdTF .fx7 {dominant-baseline: alphabetic}#QCuXxFmuEdTF .fc1 { fill: rgb(15, 20, 25); }#QCuXxFmuEdTF .fc1 {fill: rgb(15, 20, 25)}#QCuXxFmuEdTF .fb1 { fill: var(--N900-FG, 0.15); }#QCuXxFmuEdTF .fb1 {fill: rgba(31,35,41, 0.15)}#QCuXxFmuEdTF .fb2 { fill: rgb(207, 217, 222); }#QCuXxFmuEdTF .fb2 {fill: rgb(207, 217, 222)}#QCuXxFmuEdTF .fa4 { fill: var(--bg-body); }#QCuXxFmuEdTF .fa4 {fill: #fff}ABCD12345角色体验访客一线客服客服主管系统管理员主要页面介绍页、只读 Demo工单列表、详情客服页面、评测页知识库、管理与日志允许操作浏览样例和预生成结果运行 AI、编辑并确认回复、反馈抽查、处理升级、复核运行结果管理账号、知识、角色和日志关键限制不可修改、上传或触发真实模型只能访问授权工单和知识范围不能修改系统级安全设置敏感配置不能显示明文

​

​

🔔

前端隐藏菜单不等于权限控制。接口、知识检索和工具调用都要再次校验当前身份。体验访客即使知道管理员页面地址,也不能读取页面数据。​

​

AI 过程要写成状态机​

这个产品的核心流程不是“发送消息—返回答案”,而是可以观察和恢复的状态链:​

​

#xUvQahQKUyGQ text { white-space: pre; }#xUvQahQKUyGQ .fb0 { stroke: var(--N900-FG, 0.15); }#xUvQahQKUyGQ .fb0 {stroke: rgba(31,35,41, 0.15)}#xUvQahQKUyGQ .fx0 { stroke-miterlimit: 10; }#xUvQahQKUyGQ .fx0 {stroke-miterlimit: 10}#xUvQahQKUyGQ .fa1 { fill: rgb(187, 191, 196); }#xUvQahQKUyGQ .fa1 {fill: rgb(187, 191, 196)}#xUvQahQKUyGQ .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#xUvQahQKUyGQ .fx1 {font-style: normal}#xUvQahQKUyGQ .fx2 { text-anchor: middle; }#xUvQahQKUyGQ .fx2 {text-anchor: middle}#xUvQahQKUyGQ .fx3 { dominant-baseline: central; }#xUvQahQKUyGQ .fx3 {dominant-baseline: central}#xUvQahQKUyGQ .fx4 { stroke: none; }#xUvQahQKUyGQ .fx4 {stroke: none}#xUvQahQKUyGQ .fc0 { fill: var(--text-caption); }#xUvQahQKUyGQ .fc0 {fill: #646a73}#xUvQahQKUyGQ .fa2 { fill: var(--text-link-disabled); }#xUvQahQKUyGQ .fa2 {fill: rgb(187, 191, 196)}#xUvQahQKUyGQ .fa3 { fill: rgb(239, 243, 244); }#xUvQahQKUyGQ .fa3 {fill: rgb(239, 243, 244)}#xUvQahQKUyGQ .fx5 { font: 400 16px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#xUvQahQKUyGQ .fx5 {font-style: normal}#xUvQahQKUyGQ .fx6 { text-anchor: start; }#xUvQahQKUyGQ .fx6 {text-anchor: start}#xUvQahQKUyGQ .fx7 { dominant-baseline: alphabetic; }#xUvQahQKUyGQ .fx7 {dominant-baseline: alphabetic}#xUvQahQKUyGQ .fc1 { fill: rgb(15, 20, 25); }#xUvQahQKUyGQ .fc1 {fill: rgb(15, 20, 25)}#xUvQahQKUyGQ .fb1 { fill: var(--N900-FG, 0.15); }#xUvQahQKUyGQ .fb1 {fill: rgba(31,35,41, 0.15)}#xUvQahQKUyGQ .fb2 { fill: rgb(207, 217, 222); }#xUvQahQKUyGQ .fb2 {fill: rgb(207, 217, 222)}#xUvQahQKUyGQ .fa4 { fill: var(--bg-body); }#xUvQahQKUyGQ .fa4 {fill: #fff}ABC123456789状态READYCLASSIFYINGNEEDS_INPUTRETRIEVINGTOOL_CALLINGDRAFTINGWAIT_CONFIRMCOMPLETED用户看到什么工单已加载,可以开始 AI 辅助正在理解客户问题明确列出缺失字段正在检索知识和候选来源工具名、只读参数和结果摘要正在生成,可取消建议、依据和风险同时出现最终结果和日志入口下一步开始分类补信息或检索补充后重跑或转人工调工具或起草起草或失败降级等待确认编辑、拒绝或确认结束或下一条

​

模型、检索或工具失败时进入 FAILED/FALLBACK,页面提供重试、基础规则或转人工。不能无限转圈,也不能猜测订单和企业政策。​

AI 很容易漏掉失败状态​

以“订单查询失败”为例,不写“系统应友好处理错误”,而是明确四件事:​

•

用户看到订单工具不可用,不显示任何猜测结果;​

•

系统保留已经完成的分类和知识检索;​

•

用户可以重试、使用基础模板或转人工;​

•

日志保存参数摘要、错误类型和耗时。​

同样的方法还要覆盖知识无命中、模型超时、会话过期、并发修改冲突、权限不足和疑似提示词注入。​

例如发生并发冲突时,系统不能直接覆盖另一位客服刚保存的内容。页面需要提示版本已经变化,展示差异入口,保留当前未保存文本,并要求刷新后重新确认。​

数据对象决定以后能不能评测和审计​

第一版至少涉及 User、Ticket、Customer、Order、KnowledgeDoc、KnowledgeChunk、AIRun、Feedback、EvalCase/Result 和 AuditLog。​

AIRun 不能只保存一段模型输出。它还要关联工单、当前状态、输入版本、知识与工具结果、风险、耗时和模型版本。​

Feedback 除了点赞点踩,还要保存原因,以及 AI 原稿和人工最终稿之间的差异。AuditLog 记录操作者、动作、目标、参数摘要、结果和时间,但不能泄露密钥、完整联系方式和内部提示词。​

最后写成可以判断通过或失败的验收项​

第一版有 12 条 P0 验收:公开入口、登录权限、工单列表、核心流程、知识引用、订单工具、人工确认、异常降级、知识管理、固定评测、审计安全和演示发布。​

其中几条是:​

•

样例工单必须从 READY 走到 COMPLETED,并保存人工最终结果;​

•

需要知识的回答能打开具体来源,无依据时明确说明不足;​

•

订单查询使用结构化只读参数,调用和结果可追踪;​

•

所有高风险动作都进入确认流程,不能自动执行;​

•

同一评测集可以重复运行,并定位到具体失败案例;​

•

公开 Demo 可以稳定访问,敏感配置不暴露在前端或代码中。​

PRD 写到这个程度,AI 才能继续拆页面、接口、数据库、组件和测试,而不是只生成一个看起来像客服系统的界面。​