一、 引言:从“直接编码”到“审慎构建”的范式转变

摘要:DevEco Code 的 Plan+Build 模式通过「先审方案,再执行」的双阶段工作流,将 AI 智能辅助深度融入 HarmonyOS 应用开发。该模式在 Plan 阶段生成并评审技术方案,在 Build 阶段自动化落地代码,有效解决了传统「边想边写」开发模式导致的代码混乱、频繁返工等问题,显著提升了开发效率与代码质量。

在传统的软件开发流程中,开发者常常陷入「边想边写」的困局:需求明确后立即投入编码,缺乏系统的方案设计。这种模式在面对复杂业务逻辑或大型项目时,往往导致代码结构混乱、技术债务累积、后期返工频繁。DevEco Code 作为华为 HarmonyOS 生态的官方 IDE,创新地引入了 Plan+Build 模式,倡导「审慎构建」的工程理念。该模式将软件开发的严谨性前置,通过「先审方案,再执行」的智能工作流,帮助开发者从被动的代码实现者转变为主动的方案设计者与评审官。本文将深入剖析这一模式的核心原理、实践路径与变革价值,揭示其如何重塑 HarmonyOS 应用开发范式。

二、 Plan+Build 模式的核心概念解析

https://github.com/bbarridge2/yrhfrr/blob/main/GitHub%E5%90%8E%E7%AB%AF%E8%BD%BB%E9%87%8F%E5%8C%96%E5%BC%80%E6%BA%90%E5%B7%A5%E5%85%B7%E7%9B%98%E7%82%B9%EF%BC%8C%E6%8F%90%E5%8D%87%E5%BC%80%E5%8F%91%E6%95%88%E7%8E%87.md
 

2.1 什么是 Plan+Build?

Plan+Build 并非一个独立的工具,而是内嵌于 DevEco Code 工作流中的一种智能辅助开发范式。它强调在动手编写具体代码之前,先利用 AI 能力进行方案设计与评审。

2.2 核心双阶段工作流

  • Plan(规划/评审)阶段:开发者或 AI 助手(如小艺)根据需求描述,生成初步的代码实现方案、架构图或关键代码片段。此阶段的核心是“审”,评估方案的可行性、合理性及潜在风险。
  • Build(构建/执行)阶段:在方案通过评审或优化后,一键或分步骤地将方案转化为实际的项目文件、模块代码或配置。此阶段的核心是“建”,高效、准确地落地规划。

三、 Plan 阶段:智能方案生成与评审

https://github.com/bbarridge2/yrhfrr/commit/360afcdde3e947e7abefc09a2e2013d663d72bd4
 

3.1 触发方式与输入

  • 自然语言描述需求。
  • 选中现有代码片段,要求重构或优化方案。
  • 结合项目上下文(如 ArkTS/ArkUI 规范)进行约束性生成。

3.2 方案输出形式

  • 结构化代码大纲与文件树建议。
  • 关键类/方法/组件的伪代码或示例代码。
  • 数据流图、组件关系图(Mermaid 等)。
  • 依赖变更说明与配置建议。

3.3 评审要点(开发者与AI的协作)

  • 架构合理性:是否符合 HarmonyOS 应用分层架构?
  • 性能与安全:是否存在内存泄漏风险?数据传递是否安全?
  • 代码规范:是否遵循 ArkTS 语言规范与团队约定?
  • 可维护性:模块职责是否清晰?耦合度是否过高?

四、 Build 阶段:从方案到代码的自动化落地

https://github.com/bbarridge2/yrhfrr/blob/main/GitHub%E5%89%8D%E7%AB%AF%E4%BC%98%E8%B4%A8%E5%BC%80%E6%BA%90%E4%BB%93%E5%BA%93%E6%8E%A8%E8%8D%90%EF%BC%8C%E5%BC%80%E5%8F%91%E7%9B%B4%E6%8E%A5%E6%8B%BF%E6%9D%A5%E5%A4%8D%E7%94%A8.md
 

4.1 一键生成与增量构建

  • 根据评审后的方案,自动创建文件、目录结构。
  • 生成基础代码骨架(如 Page 页面的生命周期、组件模板)。
  • 支持在现有代码基础上插入新功能模块。

4.2 智能代码填充与上下文集成

  • 自动导入所需的模块和依赖。
  • 根据项目中的类型定义,填充准确的类型注解。
  • 与 DevEco Code 的代码提示、实时预览等功能无缝衔接。

4.3 执行后的验证与迭代

  • 生成代码后,立即触发语法检查(Lint)。
  • 通过预览器快速查看 UI 效果。
  • 发现新问题可快速跳回 Plan 阶段进行方案调整。

五、 实战案例:使用 Plan+Build 开发一个 HarmonyOS 设置项页面

5.1 需求描述与 Plan 阶段

https://github.com/bbarridge2/yrhfrr/blob/main/GitHub%20SSH%E5%AF%86%E9%92%A5%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B%EF%BC%8C%E5%85%8D%E5%AF%86%E7%A0%81%E6%8E%A8%E9%80%81%E4%BB%A3%E7%A0%81%E5%AE%9E%E6%93%8D.md
 

假设我们需要开发一个 HarmonyOS 应用的设置页面,包含以下功能:

  • Wi-Fi 开关:可点击切换 Wi-Fi 开启/关闭状态
  • 蓝牙开关:可点击切换蓝牙开启/关闭状态
  • 通知设置项:点击跳转到通知设置详情页
  • 关于应用项:点击跳转到关于页面
  • 深色模式开关:可切换应用主题

在 DevEco Code 中,我们可以通过 Plan+Build 模式生成初步方案。以下是 Plan 阶段可能生成的 ArkTS/ArkUI 代码框架:https://github.com/bbarridge2/yrhfrr/commit/910cc445ef44d022d448a7c090774815d662d7aa

// SettingsPage.ets - 设置页面主文件
import router from '@ohos.router';
import { SettingsViewModel } from './SettingsViewModel';

@Entry
@Component
struct SettingsPage {
  // 状态变量
  @State wifiEnabled: boolean = true;
  @State bluetoothEnabled: boolean = false;
  @State darkModeEnabled: boolean = false;
  
  // 视图模型
  private viewModel: SettingsViewModel = new SettingsViewModel();

  build() {
    Column({ space: 0 }) {
      // 页面标题
      Text('设置')
        .fontSize(24)
        .fontWeight(FontWeight.Bold)
        .margin({ top: 20, bottom: 20 })
        .width('100%')
        .textAlign(TextAlign.Center)

      // 设置项列表
      List({ space: 10 }) {
        // Wi-Fi 设置项
        ListItem() {
          Row({ space: 12 }) {
            Image($r('app.media.ic_wifi'))
              .width(24)
              .height(24)
            Text('Wi-Fi')
              .fontSize(18)
              .fontWeight(FontWeight.Medium)
            Blank()
            Toggle({ type: ToggleType.Switch, isOn: this.wifiEnabled })
              .onChange((isOn: boolean) => {
                this.wifiEnabled = isOn;
                this.viewModel.toggleWifi(isOn);
              })
          }
          .padding({ left: 16, right: 16, top: 12, bottom: 12 })
          .width('100%')
        }

        // 蓝牙设置项
        ListItem() {
          Row({ space: 12 }) {
            Image($r('app.media.ic_bluetooth'))
              .width(24)
              .height(24)
            Text('蓝牙')
              .fontSize(18)
              .fontWeight(FontWeight.Medium)
            Blank()
            Toggle({ type: ToggleType.Switch, isOn: this.bluetoothEnabled })
              .onChange((isOn: boolean) => {
                this.bluetoothEnabled = isOn;
                this.viewModel.toggleBluetooth(isOn);
              })
          }
          .padding({ left: 16, right: 16, top: 12, bottom: 12 })
          .width('100%')
        }

        // 通知设置项(可跳转)
        ListItem() {
          Row({ space: 12 }) {
            Image($r('app.media.ic_notifications'))
              .width(24)
              .height(24)
            Text('通知')
              .fontSize(18)
              .fontWeight(FontWeight.Medium)
            Blank()
            Image($r('app.media.ic_arrow_right'))
              .width(16)
              .height(16)
          }
          .padding({ left: 16, right: 16, top: 12, bottom: 12 })
          .width('100%')
          .onClick(() => {
            router.pushUrl({ url: 'pages/NotificationSettings' });
          })
        }

        // 关于应用项(可跳转)
        ListItem() {
          Row({ space: 12 }) {
            Image($r('app.media.ic_info'))
              .width(24)
              .height(24)
            Text('关于')
              .fontSize(18)
              .fontWeight(FontWeight.Medium)
            Blank()
            Image($r('app.media.ic_arrow_right'))
              .width(16)
              .height(16)
          }
          .padding({ left: 16, right: 16, top: 12, bottom: 12 })
          .width('100%')
          .onClick(() => {
            router.pushUrl({ url: 'pages/AboutPage' });
          })
        }

        // 深色模式开关
        ListItem() {
          Row({ space: 12 }) {
            Image($r('app.media.ic_dark_mode'))
              .width(24)
              .height(24)
            Text('深色模式')
              .fontSize(18)
              .fontWeight(FontWeight.Medium)
            Blank()
            Toggle({ type: ToggleType.Switch, isOn: this.darkModeEnabled })
              .onChange((isOn: boolean) => {
                this.darkModeEnabled = isOn;
                this.viewModel.toggleDarkMode(isOn);
              })
          }
          .padding({ left: 16, right: 16, top: 12, bottom: 12 })
          .width('100%')
        }
      }
      .layoutWeight(1)
      .width('100%')
    }
    .width('100%')
    .height('100%')
    .backgroundColor(this.darkModeEnabled ? Color.Black : Color.White)
  }
}
// SettingsViewModel.ets - 视图模型文件
import { wifiManager, bluetoothManager } from '@ohos.settings';

export class SettingsViewModel {
  // 切换 Wi-Fi 状态
  toggleWifi(enabled: boolean): void {
    if (enabled) {
      wifiManager.enableWifi();
      console.info('Wi-Fi 已开启');
    } else {
      wifiManager.disableWifi();
      console.info('Wi-Fi 已关闭');
    }
  }

  // 切换蓝牙状态
  toggleBluetooth(enabled: boolean): void {
    if (enabled) {
      bluetoothManager.enableBluetooth();
      console.info('蓝牙已开启');
    } else {
      bluetoothManager.disableBluetooth();
      console.info('蓝牙已关闭');
    }
  }

  // 切换深色模式
  toggleDarkMode(enabled: boolean): void {
    // 实际项目中可能需要调用系统API或应用主题管理
    console.info(`深色模式已${enabled ? '开启' : '关闭'}`);
    
    // 这里可以触发全局主题变更事件
    // AppStorage.setOrCreate('darkMode', enabled);
  }

  // 获取当前设置状态
  getSettingsState(): object {
    return {
      wifi: wifiManager.isWifiActive(),
      bluetooth: bluetoothManager.isBluetoothEnabled(),
      // 其他设置状态...
    };
  }
}

5.2 方案评审与优化

https://github.com/bbarridge2/yrhfrr/commit/e290902e0e7453737efa487a28fb040c420ae8ee
 

在 Plan 阶段生成的方案基础上,开发者可以进行以下评审与优化:

  1. 架构合理性评审:检查是否符合 HarmonyOS 应用分层架构
    • UI 层(SettingsPage.ets)负责视图渲染和用户交互
    • 业务逻辑层(SettingsViewModel.ets)处理状态管理和设备交互
    • 数据层(可扩展)负责持久化存储设置项
  2. 状态管理优化:使用 AppStorage 实现全局状态共享
// 优化后的状态管理 - 使用 AppStorage 替代局部 @State
import { AppStorage } from '@ohos.data.storage';

// 在视图模型中统一管理全局状态
export class EnhancedSettingsViewModel {
  // 使用 AppStorage 管理全局设置状态
  static setDarkMode(enabled: boolean): void {
    AppStorage.setOrCreate('darkMode', enabled);
  }

  static getDarkMode(): boolean {
    return AppStorage.get('darkMode') || false;
  }

  // 监听设置变化
  static watchDarkMode(callback: (value: boolean) => void): void {
    AppStorage.addChangeListener('darkMode', (newValue: boolean) => {
      callback(newValue);
    });
  }
}

// 在页面中使用全局状态
@Component
struct EnhancedSettingsPage {
  // 从 AppStorage 同步状态
  @StorageLink('darkMode') darkModeEnabled: boolean = false;

  build() {
    Column() {
      // ... 其他组件
      Toggle({ type: ToggleType.Switch, isOn: this.darkModeEnabled })
        .onChange((isOn: boolean) => {
          EnhancedSettingsViewModel.setDarkMode(isOn);
        })
    }
    .backgroundColor(this.darkModeEnabled ? Color.Black : Color.White)
  }
}
  1. 组件复用优化:提取可复用的设置项组件
  2. https://github.com/bbarridge2/yrhfrr/commit/32833685175854bd4140d276e91560c0c62f6d63
     
// SettingItem.ets - 可复用的设置项组件
@Component
export struct SettingItem {
  // 组件参数
  @Prop icon: Resource;
  @Prop title: string;
  @Prop hasToggle: boolean = false;
  @Prop toggleState: boolean = false;
  @Prop hasArrow: boolean = false;
  @Prop onClick: () => void = () => {};

  // 事件回调
  @Event onToggleChange: (isOn: boolean) => void;

  build() {
    Row({ space: 12 }) {
      // 图标
      if (this.icon) {
        Image(this.icon)
          .width(24)
          .height(24)
      }

      // 标题
      Text(this.title)
        .fontSize(18)
        .fontWeight(FontWeight.Medium)
        .layoutWeight(1)

      // 右侧控件
      if (this.hasToggle) {
        Toggle({ type: ToggleType.Switch, isOn: this.toggleState })
          .onChange((isOn: boolean) => {
            this.onToggleChange(isOn);
          })
      } else if (this.hasArrow) {
        Image($r('app.media.ic_arrow_right'))
          .width(16)
          .height(16)
      }
    }
    .padding({ left: 16, right: 16, top: 12, bottom: 12 })
    .width('100%')
    .onClick(() => {
      if (!this.hasToggle) {
        this.onClick();
      }
    })
  }
}

5.3 Build 执行与效果验证

在 DevEco Code 中执行 Build 阶段,一键生成完整的项目文件结构:

# 生成的项目文件结构
src/main/ets/
├── entryability/
│   └── EntryAbility.ets
├── pages/
│   ├── Index.ets          # 应用首页
│   ├── SettingsPage.ets   # 设置页面(主文件)
│   ├── NotificationSettings.ets  # 通知设置页
│   └── AboutPage.ets      # 关于页面
├── viewmodel/
│   └── SettingsViewModel.ets  # 视图模型
├── components/
│   └── SettingItem.ets    # 可复用组件
└── resources/
    └── media/             # 图标资源
        ├── ic_wifi.png
        ├── ic_bluetooth.png
        ├── ic_notifications.png
        ├── ic_info.png
        ├── ic_dark_mode.png
        └── ic_arrow_right.png

Build 阶段自动生成的配置文件:

// module.json5 - 模块配置文件
{
  "module": {
    "name": "entry",
    "type": "entry",
    "description": "$string:module_desc",
    "mainElement": "EntryAbility",
    "deviceTypes": [
      "phone",
      "tablet"
    ],
    "pages": "$profile:main_pages",
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:icon",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:icon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true
      }
    ]
  }
}

执行 Build 后,开发者可以立即:

  1. 语法检查:DevEco Code 自动进行 Lint 检查,确保代码符合 ArkTS 规范
  2. 实时预览:在预览器中查看设置页面的实际效果
  3. 交互测试:点击开关测试状态切换,点击列表项测试页面跳转
  4. 性能分析:使用 DevEco Studio 的性能分析工具检查页面渲染性能

如果发现任何问题(如布局错位、状态管理不完善),可以快速返回 Plan 阶段调整方案,然后再次执行 Build,形成完整的「Plan-Build-Debug」闭环。

六、 Plan+Build 模式的优势与最佳实践

https://github.com/bbarridge2/yrhfrr/blob/main/2026GitHub%E9%AB%98%E5%88%86AI%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E6%B1%87%E6%80%BB%EF%BC%8C%E9%99%84%E6%BA%90%E7%A0%81%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B.md
 

6.1 核心优势

  • 降低认知负荷:将复杂设计决策可视化,减少思维盲区。
  • 提升代码质量:前置评审避免后期大规模重构。
  • 加速开发流程:自动化生成减少重复性手工劳动。
  • 促进知识沉淀:方案本身成为可复用的设计资产。

6.2 适用场景

  • 新功能模块开发。
  • 旧代码重构与优化。
  • 复杂交互逻辑的实现。
  • 团队新人上手熟悉项目架构。

6.3 实践建议

  • 明确需求描述,越具体越好。
  • 将评审环节作为必需的开发步骤,而非可选项。
  • 结合 DevEco Code 的实时预览、调试工具,形成“Plan-Build-Debug”闭环。
  • 积累并复用优秀的方案模板。

七、 总结与展望

DevEco Code 的 Plan+Build 模式代表了 AI 赋能开发工具的新方向——从简单的代码补全,升级为全流程的智能辅助设计与构建。它要求开发者转变角色,成为方案的“评审官”与“决策者”,而将重复、规范的执行工作交给工具。掌握这一模式,不仅能提升 HarmonyOS 应用的开发效率与质量,更能培养系统化的软件设计思维,应对日益复杂的软件开发挑战。

DevEco Code Plan+Build 模式:审方案再执行的技术实践
一、模式核心定义与设计思想
DevEco Code 是华为面向 HarmonyOS 开发的 AI Agent 工具,Plan+Build 是其核心人机协同流水线,核心理念为先出方案、人工审核确认、再自动化执行,区别于直接生成代码的纯自动 Build 模式,主打「可控、可审、可回溯、零未知改动」,解决大需求 AI 代码跑偏、架构失控、改动不可预期的痛点51CTO。


Plan+Build完整流程
两大核心 Agent 分工
Plan Agent(规划大脑,只出方案不写代码)
接收自然语言需求,读取当前工程结构、依赖、鸿蒙 API 规范,完成需求拆解、架构设计、任务拆分,输出标准化可审阅开发计划,标记每一步要调用的工具、修改文件、变更范围,必须人工确认后才流转至 BuildCSDN博...。
Build Agent(执行流水线,严格按计划落地)
仅接收审核通过的 Plan 任务列表,串行执行代码生成、静态检查、编译构建、打包、设备部署、自动修复,全程不新增计划外文件 / 逻辑,保证改动完全可控。
与另外两种模式对比
表格
模式    流程特点    适用场景    核心差异
Build(默认)    需求→直接编码构建,无方案审核    小功能、改 bug、单页面快速开发    无前置方案,全自动执行
Plan+Build    需求→生成方案→人工审阅修改→确认后执行流水线    中大型需求、模块改造、多设备适配、团队协作开发    强制方案评审,可控改动
Goal    Spec 文档驱动,自动规划 + 执行 + 闭环验证    完整项目交付、规范驱动开发    全自动闭环,人工介入少
二、Plan+Build 完整技术流程(审方案再执行闭环)
阶段 1:需求输入与 Plan 生成
开发者输入完整业务需求(支持自然语言、简易需求文档);
Plan Agent 加载工程上下文:现有 ArkTS 代码、路由、权限配置、Hvigor 构建脚本、鸿蒙分布式能力依赖;
四层拆解输出标准化方案文档:
需求校验:识别需求漏洞、缺少参数、多设备适配缺失;
整体架构:模块划分、Ability / 服务 / 卡片分层、数据流转方案;
细分任务清单:按「新建文件 / 修改文件 / 配置变更 / 测试验证」分类;
执行约束:每步调用 Skill 工具、修改文件路径、风险点、验收标准。
前端展示完整 Plan 方案,支持逐条展开、查看待修改文件清单。
阶段 2:人工审阅 & 迭代修正(核心「审方案」环节)
这是 Plan+Build 最关键的管控节点,支持多种交互操作:
逐条查看任务:确认新增页面、接口、权限、分布式逻辑是否符合预期;
交互式修改 Plan:增删任务、调整执行顺序、删减风险文件变更、修改架构方案;
风险拦截:AI 标记高危操作(修改 entry 入口、新增敏感权限、修改构建脚本),需人工二次确认;
确认放行:方案无误后,点击「批准执行」,Plan 固化为不可修改任务列表,流入 Build 流水线。
核心约束:未审核 / 驳回的 Plan,Build Agent 不会执行任何代码改动,杜绝 AI 私自新增逻辑、修改无关文件。
阶段 3:Build 流水线自动化执行(严格遵循审核后的 Plan)
获批 Plan 进入固定 Pipeline,全程无自主新增任务:
代码生成:按任务清单生成 ArkTS 声明式 UI、业务逻辑、服务、路由、权限配置,支持 C/C++ 原生模块;
静态语法检查:调用check_ets_files批量校验类型、规范、鸿蒙 API 兼容性;
代码自修复:自动修复编译、语法错误,修复日志绑定对应 Plan 任务;
构建打包:调用 Hvigor 执行工程构建,生成 hap/app 包;
设备推送验证:自动推送到模拟器 / 真机,执行 UI 自动化校验;
执行日志全留存:每一步修改文件、构建日志、报错信息绑定原始 Plan,可回溯审计。
阶段 4:人工验收与迭代
AI 完成流水线后,开发者真机 / 模拟器验证功能,如需调整可重新发起 Plan 迭代,重复「规划 - 审核 - 执行」流程。
三、核心技术特性(保障「审方案再执行」落地)
1. 变更范围强隔离,零计划外改动
Build Agent 拥有文件白名单机制:仅允许修改 Plan 中明确列出的文件路径,若 AI 生成逻辑需要新增未在方案中声明的文件,会直接中断流水线并抛出异常,等待重新更新 Plan 审核,杜绝无预期代码侵入51CTO。
2. 工程上下文感知规划
Plan Agent 深度集成 DevEco Studio 工程模型:
解析oh-package.json5、hvigor 构建脚本、module 模块划分;
读取现有路由表、权限清单、数据库存储方案;
基于鸿蒙知识库校验分布式流转、万能卡片、折叠屏适配合规性;
避免方案脱离现有工程,出现架构冲突。
3. 可审计的 Plan 固化机制
人工确认后的 Plan 会持久化存储:
记录原始需求、修改记录、审核人、审批时间;
所有 Build 阶段代码变更、构建日志与 Plan ID 绑定;
适合团队协作、代码评审、上线合规审计。
4. 风险分级提示机制
Plan 生成时自动标记高 / 中 / 低风险任务:
高危:修改工程入口、新增敏感权限、修改原生 C 模块、变更应用签名配置;
中危:新增跨设备分布式能力、修改全局状态管理;
低危:新增页面组件、工具类函数;
高危任务强制弹窗确认,防止误操作。
5. Skill 工具标准化调度
Plan 中每一项任务绑定对应鸿蒙 Skill 工具(创建工程、代码检查、构建、HDC 设备调试、日志采集),Build 仅按绑定工具执行,不随意调用额外工具,流程标准化、可管控。
四、落地技术实践方案(工程实战)
实践 1:中大型业务模块开发(推荐标准流程)
场景:新增鸿蒙分布式待办模块(跨手机 / 平板流转、桌面卡片、本地存储)
切换至 Plan 模式,输入完整需求;
AI 输出完整 Plan:架构分层(UI 层 / 数据层 / 分布式服务 / 卡片模块)、12 项细分任务、待新建 / 修改文件清单、所需权限;
人工审阅:删减多余存储字段、调整分布式任务执行顺序、取消不必要后台权限;
确认 Plan,自动进入 Build 流水线,一次性生成全部代码并构建;
模拟器验证,少量微调后交付。
收益:提前规避分布式 API 误用、权限冗余、架构分层混乱,一次性构建通过率提升 60%+。
实践 2:团队协作规范落地(代码评审前置)
研发流程改造:需求评审→DevEco Code 生成 Plan→小组评审方案→审批后 AI 生成代码→代码入库评审
Plan 作为架构设计初稿,替代口头需求沟通;
团队统一查看 AI 输出的任务与文件变更,提前拦截架构问题;
代码生成完全基于评审后的方案,入库评审仅关注代码细节,大幅缩短评审时长。
实践 3:存量大型工程改造(风险管控)
场景:改造原有 App 首页,重构状态管理、适配折叠屏
Plan Agent 扫描存量代码,梳理原有页面依赖、全局状态;
输出改造方案,区分「修改原有文件」「新增组件」「废弃旧逻辑」;
人工剔除高风险全局变量修改任务,调整重构步骤;
Build 仅执行审批后的局部改动,不会全量重构存量代码,避免线上逻辑崩溃。
实践 4:DevEco CLI + Plan+Build 自动化流水线
命令行集成,支持 CI 流程嵌入:
bash
运行
# 1. 生成规划方案
devecocli plan --input "新增用户登录页面,支持账号密码+生物认证" --output plan.md
# 2. 人工审核plan.md后,审批固化方案
devecocli plan approve --file plan.md
# 3. 基于审批后的方案执行构建流水线
devecocli build --use-plan plan.md
适合自动化发布、持续集成场景,实现方案评审纳入 CI 门禁。
五、Plan+Build 模式相比直接 Build 的核心价值
架构可控,避免 AI 自由发挥
复杂需求直接 Build 容易出现分层混乱、多余功能、不合规 API 调用;前置方案评审从架构层拦截问题。
改动透明,无隐形代码变更
所有待修改文件、配置提前展示,开发者清楚 AI 会改动哪些代码,不会出现写完后大量未知文件变更。
降低重构 / 存量项目风险
改造老工程时,可提前删减高危变更,限制 AI 修改范围,保障存量业务稳定。
团队协作标准化
Plan 可作为需求交付物,统一前后端、产品、开发对实现方案的认知,减少返工。
提升首次构建通过率
方案阶段提前校验权限、依赖、多设备适配问题,减少 Build 阶段编译报错、功能不匹配。
六、落地避坑实践要点
需求输入必须完整
不要仅输入模糊需求(如 “做一个设置页”),需补充设备类型、存储方案、权限、交互逻辑,Plan 方案才具备参考价值。
高危任务务必逐条核对
新增ohos.permission敏感权限、修改工程 build 配置、原生模块变更,必须人工确认必要性。
大需求拆分多轮 Plan
全应用重构不要一次性提交,拆分为「首页改造、数据层重构、分布式适配」多份 Plan 分步审核执行。
Plan 迭代及时更新
若驳回方案、调整架构,需重新生成 Plan,不要直接让 Build 强行执行旧方案。
配套代码规范校验
Plan 阶段同步检查鸿蒙 ArkTS 编码规范、分布式开发最佳实践,提前规范代码产出。
七、适用与不适用场景
推荐使用 Plan+Build
新增完整业务模块、跨设备分布式功能;
存量项目大规模重构、页面架构改造;
团队协作、需要架构评审的开发任务;
涉及权限、原生模块、全局构建配置修改。
直接使用 Build 模式即可
单页面简单组件开发、修复编译 bug;
小型工具函数、接口封装;
临时调试、快速原型验证。
总结
DevEco Code Plan+Build 模式本质是将软件研发「先设计、后编码」的传统规范植入 AI 开发流水线,通过双 Agent 分离规划与执行,强制增加人工方案评审关卡,实现AI 提效 + 人工管控平衡。在鸿蒙中大型应用、存量改造、团队协作场景下,可有效解决 AI 代码不可控、架构跑偏、改动风险不可预知的行业痛点,是企业级鸿蒙 AI 开发标准化落地的核心实践方案。
 

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐