首页 › AI Agent › Agent搭建0-1企业级项目(已开源) › 第六节:别让 AI 直接开工,先把第一版写成开发任务书

第六节:别让 AI 直接开工,先把第一版写成开发任务书

​

产品原型告诉 AI 页面长什么样,技术选型告诉 AI 使用什么技术,却没有告诉它:先实现什么、后实现什么;每个阶段做到什么程度才能停;失败需要留下什么证据;什么情况必须交还给人决定。​

​

​

飞书文档 - 图片

​

PRD、技术选型和开发任务书,解决的是三类问题​

​

以企业售后工单 AI 工作台为例:​

​

•

PRD 规定“客服可以让 AI 起草回复,但高风险动作必须人工确认”。​

•

技术选型规定“使用独立 TypeScript API、PostgreSQL、模型适配层和服务端风险校验”。​

•

开发任务书继续把它变成可以执行的顺序:先有可靠的工单与知识数据,再接模型;先保存 AI 原稿,再实现人工终稿;确认、拒绝和转人工都能追溯后,才算 Human-in-the-loop 完成。​

•

任务书不是另一份需求文档。它是产品规则通往代码之间的施工顺序和验收合同。​

先写一份总任务书,冻结第一版终点​

第一版的终点不是“七个页面都能打开”,而是一条完整业务闭环:​

​

代码块​

Plain Text

登录​

→ 查看工单​

→ 检索企业知识​

→ AI 生成结构化建议​

→ 人工编辑 / 确认 / 拒绝 / 转人工​

→ 保存结果​

→ 审计追溯​

→ 固定评测​

​

这条链路只使用合成数据,可以公开演示,但不连接真实客户、支付、退款、改单或消息渠道。​

总任务书同时冻结两类边界。​

第一版要做:预置角色、七个页面、AI 分类与引用、人工确认、异常状态、审计和固定评测。​

第一版不做:自由注册、计费、复杂多租户、移动 App、真实外发和复杂多 Agent。​

把“不做什么”写进去非常重要。AI 很擅长根据常见产品模式补全功能。如果没有边界,它可能主动增加注册、通知、支付、组织管理,最后把一个可完成的第一版扩展成没有尽头的平台。​

再把第一版拆成 D01–D10​

我们最终得到 1 份总任务书、10 份阶段任务书和 1 份执行状态索引。​

​

飞书文档 - 图片

​

​

#dJxEQQzNswEK text { white-space: pre; }#dJxEQQzNswEK .fb0 { stroke: var(--N900-FG, 0.15); }#dJxEQQzNswEK .fb0 {stroke: rgba(31,35,41, 0.15)}#dJxEQQzNswEK .fx0 { stroke-miterlimit: 10; }#dJxEQQzNswEK .fx0 {stroke-miterlimit: 10}#dJxEQQzNswEK .fa1 { fill: rgb(187, 191, 196); }#dJxEQQzNswEK .fa1 {fill: rgb(187, 191, 196)}#dJxEQQzNswEK .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"; }#dJxEQQzNswEK .fx1 {font-style: normal}#dJxEQQzNswEK .fx2 { text-anchor: middle; }#dJxEQQzNswEK .fx2 {text-anchor: middle}#dJxEQQzNswEK .fx3 { dominant-baseline: central; }#dJxEQQzNswEK .fx3 {dominant-baseline: central}#dJxEQQzNswEK .fx4 { stroke: none; }#dJxEQQzNswEK .fx4 {stroke: none}#dJxEQQzNswEK .fc0 { fill: var(--text-caption); }#dJxEQQzNswEK .fc0 {fill: #646a73}#dJxEQQzNswEK .fa2 { fill: var(--text-link-disabled); }#dJxEQQzNswEK .fa2 {fill: rgb(187, 191, 196)}#dJxEQQzNswEK .fa3 { fill: rgb(239, 243, 244); }#dJxEQQzNswEK .fa3 {fill: rgb(239, 243, 244)}#dJxEQQzNswEK .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"; }#dJxEQQzNswEK .fx5 {font-style: normal}#dJxEQQzNswEK .fx6 { text-anchor: start; }#dJxEQQzNswEK .fx6 {text-anchor: start}#dJxEQQzNswEK .fx7 { dominant-baseline: alphabetic; }#dJxEQQzNswEK .fx7 {dominant-baseline: alphabetic}#dJxEQQzNswEK .fc1 { fill: rgb(15, 20, 25); }#dJxEQQzNswEK .fc1 {fill: rgb(15, 20, 25)}#dJxEQQzNswEK .fb1 { fill: var(--N900-FG, 0.15); }#dJxEQQzNswEK .fb1 {fill: rgba(31,35,41, 0.15)}#dJxEQQzNswEK .fb2 { fill: rgb(207, 217, 222); }#dJxEQQzNswEK .fb2 {fill: rgb(207, 217, 222)}#dJxEQQzNswEK .fa4 { fill: var(--bg-body); }#dJxEQQzNswEK .fa4 {fill: #fff}ABC1234567891011阶段D01D02D03D04D05D06D07D08D09D10开发任务书工程基础与数据访问登录与服务端权限工单核心业务企业知识库与检索AI 运行与流式输出Human-in-the-loop固定评测审计与管理全链路验收Demo 与部署完成后得到什么正式项目骨架、数据库迁移、ORM 结论可验证的身份、角色和资源权限可筛选、可写入、可处理并发冲突的工单可版本化、停用和引用的知识可追踪、可校验、可取消和降级的 AI 建议编辑、确认、拒绝和转人工闭环模型、提示词和知识版本可比较一张工单的完整责任链路七个页面与所有异常路径通过可初始化、可观察、可回滚的公开版本

​

这个顺序不是按页面排列,而是按依赖排列。​

D05 的 AI 运行依赖 D03 的工单和 D04 的知识;否则模型只能面对临时拼接的数据。​

D06 的人工确认依赖 D05 已经保存 AI 原稿;否则无法比较 AI 建议和人工终稿。​

D07 的固定评测依赖知识版本和 AI 运行版本;否则两次得分没有可比性。​

D09 全链路验收通过以后,D10 才允许部署。只要出现越权、敏感泄露、数据静默覆盖、伪来源或人工确认被绕过,就停止部署,回到对应阶段修复。​

任务书真正管理的不是待办事项,而是依赖和风险。​

每份任务书都使用同一套结构​

为了让 AI 可以稳定执行,D01–D10 都包含这些内容:​

阶段目标。​

前置输入和依赖。​

本阶段做什么。​

本阶段明确不做什么。​

涉及的数据、接口、页面和状态。​

需要交付的代码、文档与截图。​

验收标准和停止条件。​

需要人选择的事项。​

可直接交给 AI 的执行 Prompt。​

例如 D04“企业知识库与检索”不是一句“接入 RAG”。任务书要求使用至少 10 份合成知识和 20 条中文查询,验证直接命中、近义表达、旧政策、停用文档、无答案和相似但错误的知识。​

每个结果必须返回文档 ID、版本和片段 ID;停用文档不能进入新检索;没有可靠答案时必须允许“无命中”,不能拿相似文本凑答案。​

只有真实中文召回通过,pgvector 才能从“首选候选”变成正式选择。​

再比如 D05“AI 运行与流式输出”,不只要求模型能说话,而是要覆盖:正常流式、主动取消、超时、结构解析失败、非法来源、风险强制升级和安全降级。​

模型返回的来源必须在本轮检索白名单里。质量、退换货、安全、补偿、个人信息和外发等场景,由服务端强制进入人工确认,模型不能自行降级。​

这就是任务书的价值:把“接入 AI”变成一组可检查的业务事实。​

不是所有任务都要提前写到函数级别​

先完成所有任务书,不等于采用僵硬的瀑布开发。​

我们提前冻结的是目标、依赖、边界、验收和证据;不会提前规定每个函数名、文件名和实现细节。​

因为真正进入 D01 后,ORM 的实际验证可能改变数据访问方式;进入 D04 后,中文召回结果可能改变检索方案;进入 D10 后,部署实验可能改变平台选择。​

任务书应该允许实现根据证据变化,但不允许产品责任和验收标准悄悄消失。​

每个阶段都有一道“人工闸门”​

状态索引只允许五种状态:未开始、进行中、待人工验收、已冻结、阻塞。​

AI 写完代码并跑完自测,只能把阶段改成“待人工验收”。​

人确认范围、证据、失败和已知限制后,它才能变成“已冻结”。只有前置阶段全部冻结,下一阶段才能开始。​

​

​

​

代码块​

JavaScript

读取任务书和前置证据​

→ AI 列出影响文件、风险和验收动作​

→ AI 实现当前范围​

→ 自动测试 + 页面验收​

→ 保存成功和失败证据​

→ 人工验收​

→ 冻结后进入下一阶段​

​

人的工作不再是逐行指导 AI 写代码,而是做四种选择:范围是否正确、验收是否足够、风险是否可以接受、是否允许进入下一阶段。​

可以直接交给 AI 的总控 Prompt​

​

代码块​

Plain Text

你正在执行《企业售后工单 AI 工作台》第一版开发任务书。​

​

先读取 D00 总任务书、当前 D0X 阶段任务书、技术选型交付物、AI 工程规范和产品原型。一次只执行当前阶段,不提前扩建后续功能。​

​

​

这段 Prompt 的重点不是让 AI 更努力,而是让 AI 知道自己什么时候应该停、应该证明什么、什么时候必须把决定还给人。​

这个阶段最终交付了什么​

目前,我们已经完成:​

•

D00 第一版开发总任务书。​

•

D01–D10 十份阶段开发任务书。​

•

一份任务书索引与执行状态表。​

•

每个阶段的范围、依赖、验收、证据、人工选择点和 AI Prompt。​

正式开发还没有开始。D00 当前是“待人工验收”,D01–D10 是“未开始”。​

这个状态不是项目停滞,而是说明:我们已经知道接下来每一步为什么做、做到什么算完成、发现什么问题必须停下来。​

AI 时代的开发能力,不只是让 AI 一次生成更多代码。​

更重要的是,把一个复杂项目拆成 AI 能执行、人能判断、失败能追溯的连续任务。​