1. 引言:为什么我们需要"审方案再执行"?
在企业级应用开发中,修改配置文件、更新依赖或调整构建参数看似简单,但一旦出错往往会导致线上故障。传统的"直接修改-观察结果"循环,在复杂的 DevOps 场景下风险极高。DevEco Code 的 Plan+Build 模式正是为解决这一痛点而生。本章将引入"声明式意图"与"审批式执行"的理念,阐述它如何像一份待审查的施工蓝图,在落地之前给予开发者充分的审视与确认机会。
2. 核心概念:Plan 与 Build 的职责边界
要理解该模式,必须先严格区分 Plan(计划) 与 Build(执行) 两个阶段。本章将解构两者的定义:
- Plan(方案生成与审查) :不只是生成计划文本,而是通过 AI 理解自然语言需求,自动生成结构化的原子操作序列(如修改
.json5配置、添加依赖声明、创建资源目录)。重点在于:只生成方案,不修改任何文件。 - Build(执行与回滚) :将审批通过的
plan.json严格落地的过程。具备原子性------失败时可精准回滚到构建前的干净状态,拒绝半成品污染项目。
3. 架构揭秘:Plan+Build 的技术骨架
Plan+Build 并非简单的"先问后做",其底层是一套严谨的协同机制。本节将通过 Mermaid 图展示其核心流程:
#mermaid-svg-B8FiXCCTTPpToaDi{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-B8FiXCCTTPpToaDi .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-B8FiXCCTTPpToaDi .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-B8FiXCCTTPpToaDi .error-icon{fill:#552222;}#mermaid-svg-B8FiXCCTTPpToaDi .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-B8FiXCCTTPpToaDi .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-B8FiXCCTTPpToaDi .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-B8FiXCCTTPpToaDi .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-B8FiXCCTTPpToaDi .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-B8FiXCCTTPpToaDi .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-B8FiXCCTTPpToaDi .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-B8FiXCCTTPpToaDi .marker{fill:#333333;stroke:#333333;}#mermaid-svg-B8FiXCCTTPpToaDi .marker.cross{stroke:#333333;}#mermaid-svg-B8FiXCCTTPpToaDi svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-B8FiXCCTTPpToaDi p{margin:0;}#mermaid-svg-B8FiXCCTTPpToaDi .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-B8FiXCCTTPpToaDi .cluster-label text{fill:#333;}#mermaid-svg-B8FiXCCTTPpToaDi .cluster-label span{color:#333;}#mermaid-svg-B8FiXCCTTPpToaDi .cluster-label span p{background-color:transparent;}#mermaid-svg-B8FiXCCTTPpToaDi .label text,#mermaid-svg-B8FiXCCTTPpToaDi span{fill:#333;color:#333;}#mermaid-svg-B8FiXCCTTPpToaDi .node rect,#mermaid-svg-B8FiXCCTTPpToaDi .node circle,#mermaid-svg-B8FiXCCTTPpToaDi .node ellipse,#mermaid-svg-B8FiXCCTTPpToaDi .node polygon,#mermaid-svg-B8FiXCCTTPpToaDi .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-B8FiXCCTTPpToaDi .rough-node .label text,#mermaid-svg-B8FiXCCTTPpToaDi .node .label text,#mermaid-svg-B8FiXCCTTPpToaDi .image-shape .label,#mermaid-svg-B8FiXCCTTPpToaDi .icon-shape .label{text-anchor:middle;}#mermaid-svg-B8FiXCCTTPpToaDi .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-B8FiXCCTTPpToaDi .rough-node .label,#mermaid-svg-B8FiXCCTTPpToaDi .node .label,#mermaid-svg-B8FiXCCTTPpToaDi .image-shape .label,#mermaid-svg-B8FiXCCTTPpToaDi .icon-shape .label{text-align:center;}#mermaid-svg-B8FiXCCTTPpToaDi .node.clickable{cursor:pointer;}#mermaid-svg-B8FiXCCTTPpToaDi .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-B8FiXCCTTPpToaDi .arrowheadPath{fill:#333333;}#mermaid-svg-B8FiXCCTTPpToaDi .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-B8FiXCCTTPpToaDi .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-B8FiXCCTTPpToaDi .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-B8FiXCCTTPpToaDi .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-B8FiXCCTTPpToaDi .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-B8FiXCCTTPpToaDi .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-B8FiXCCTTPpToaDi .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-B8FiXCCTTPpToaDi .cluster text{fill:#333;}#mermaid-svg-B8FiXCCTTPpToaDi .cluster span{color:#333;}#mermaid-svg-B8FiXCCTTPpToaDi 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-B8FiXCCTTPpToaDi .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-B8FiXCCTTPpToaDi rect.text{fill:none;stroke-width:0;}#mermaid-svg-B8FiXCCTTPpToaDi .icon-shape,#mermaid-svg-B8FiXCCTTPpToaDi .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-B8FiXCCTTPpToaDi .icon-shape p,#mermaid-svg-B8FiXCCTTPpToaDi .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-B8FiXCCTTPpToaDi .icon-shape .label rect,#mermaid-svg-B8FiXCCTTPpToaDi .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-B8FiXCCTTPpToaDi .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-B8FiXCCTTPpToaDi .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-B8FiXCCTTPpToaDi :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 生成原子操作
用户确认或修改
拒绝/取消
批准
成功
失败
用户输入:在项目中集成云存储SDK
Plan 阶段:AI 需求解析
Plan 审查:可视化 Diff 面板
审批通过?
操作终止,项目无污染
Build 阶段:原子事务执行
项目就绪
自动回滚至执行前状态
4. 实操演练:在 DevEco Code 中发起一次 Plan+Build
理论离不开实践。本章将以一个常见的"配置网络权限"场景为例,演示完整过程:
- 任务描述 :
ohos.permission.INTERNET权限声明缺失,需要补充。 - Plan 触发:在 DevEco Code 中输入自然语言指令:"为 entry 模块添加网络权限"。
- 审查关键点 :AI 生成的 Plan 包含了哪个文件(
module.json5),以及具体要插入的字段内容。此时可点击查看 Diff 对比。 - 执行 Build:确认无误,一键执行。若中途因语法冲突失败,项目将自动回退到修改前的状态。
5. 进阶实践:秒级网络仓库部署(场景化深度案例)
对于追求高阶效率的团队,Plan+Build 的价值不仅限于代码修改。本章将展示一个高阶应用------通过"万物皆服务"理念快速搭建网络仓库:
- Plan 生成:指示 DevEco Code 将当前项目配置为可部署的云服务包。
- 构建产物:生成标准化部署包,而非传统的本地编译 App。
- 效果对比:展示从"传统手动打包上传"到"Plan+Build 一键部署"的效率跃迁,将部署时间压缩至分钟甚至秒级。
6. 使用建议与避坑指南
Plan+Build 虽强,但并非万能。本章提供实战建议:
- 适用场景:配置文件修改、依赖增删、项目结构调整、模板化代码生成。
- 不适用场景:复杂业务逻辑的算法重写(更适合手动编码)。
- 最佳实践:养成"先描述目标,审查 Diff,最后执行"的肌肉记忆,避免盲目信任生成结果,Plan 审查步骤不可省略。
7. 总结与展望
Plan+Build 模式重新定义了开发工具与开发者的协作方式------让 AI 负责繁琐但有章可循的"脏活累活",而人类专注于方案审查与逻辑创新。随着 DevEco Code 的迭代,未来的 Plan 阶段可能集成更强大的上下文感知能力,让"审方案再执行"成为下一代智能 IDE 的标配工作流。