手把手带你上手鸿蒙应用开发利器 DevEcoCode
前言
接上篇 《手把手带你上手鸿蒙应用开发利器 DevEcoCli》
DevEcoCli 是一个面向 HarmonyOS 应用开发的统一命令行入口。
DevEcoCli将DevEco Studio工具链统一封装为一个CLI,内置ohpm、hvigor、hdc、emulator、hilog,同时集成 HarmonyOS 技能安装、项目脚手架、本地 HarmonyOS 文档检索和MCP服务。
虽然DevEcoCli提供了众多对标DevEco Studio工具的能力,但是如果直接使用DevEcoCli对于开发者来说,还是需要记忆不少相关命令,还是会出现记错、记漏以及太依赖开发者的主动性,不能完全发挥DevEcoCli的能力。
因此在目前流行的开发流程中,DevEcoCli一定是结合相关的AI工具(agent)来使用的。开发者可以选择自己习惯的AI工具,如Cursor、Trae、Codex等配合DevEcoCli来使用。
DevEcoCode 介绍
但是!但是!但是!万少这里是强烈推荐使用鸿蒙官方推出的DevEcoCode。
DevEcoCode 是一款面向 HarmonyOS 开发场景的 AI Agent 工具,支持代码编写、编译构建、设备运行、文档查阅、运行时调试及 ArkTS 问题修复等能力。
DevEcoCode 基于开源项目 OpenCode 扩展开发,保留了 OpenCode 的终端交互、配置体系、Provider / MCP / Skill / Plugin 等能力,并针对 HarmonyOS 工程增加了 DevEco Studio、Hvigor、HDC、Skill、HarmonyOS 知识库、ArkTS 检查和设备调试相关集成。
大白话总结就是——专门为 HarmonyOS 开发而生。
可以用下面这张图来理解 DevEcoCode 的整体能力架构,以及它与 DevEcoCli、DevEco Studio 工具链之间的调用关系:

另外需要注意的是,使用DevEcoCode之前,需要先安装好DevEcoCli,因为上面提到的大部分能力都是在底层通过mcp tool的方式调用了DevEcoCli的能力。

DevEcoCode 前置环境
目前提供 Windows 与 macOS 版本,暂不支持鸿蒙 PC(小道消息:Q4 可能会支持)
Node.js 22 及以上
DevEco Studio 6.1 及以上(编译构建、Hvigor、HDC、模拟器/真机运行)
已配置
DEVECO_HOME环境变量,指向 DevEco Studio 安装目录
DevEcoCode 安装
打开终端,输入命令进行安装。
npm install -g @deveco/deveco-code安装成功后,查看版本信息。
deveco --version
DevEcoCode 启动
启动命令如下
deveco需要注意的是,首次使用需要登录你的华为开发者账号。

登录之后,可以使用 DevEcoCode 提供的免费 GLM 5.1 模型,输入 /model 进行选择,另外免费模型在高峰期可能会出现排队的情况。

DevEcoCode 接入自己的模型
当然,DevEcoCode 也支持接入自己的大模型,进入 /model 后,按下 Ctrl + A 即可。

当前DevEcoCode 支持接入市场上大部分的大模型,列表如下。
DevEcoCode是基于opencode,支持的模型也是来自于opencode中定义的 https://models.dev/api.json
目前收录了 122 个 Provider。

大家可以根据自己已有的来选择接入,万少这里接入了智谱和 DeepSeek 的套餐,这里拿 DeepSeek 为例。
选择 DeepSeek。

然后会提醒你输入DeepSeek的API key

登录你的DeepSeek的API开发平台
复制或者新建一个API Key

把Api key 填写进去即可,按下Enter进行确认。

因为目前 DeepSeek 提供了 flash 和 pro 两个版本,开发者可以再次输入 /model 来选择和切换。

手动编辑配置文件接入模型
开发者也可以手动编辑配置文件来接入大模型
DevEcoCode 开发应用流程
因为DevEcoCode是基于开源的OpenCode二次封装的,所以OpenCode的大部分已有的功能DevEcoCode也支持。
这里以一个开发新的HarmonyOS为例。
整个开发流程可以用下图概括:

新建一个鸿蒙工程
使用DevEcoCode不像之前的DevEcoCli需要记住命令,这里开发者直接使用自然语言即可。
在当前目录下帮我创建一个API版本为21的HarmonyOS应用的工程
然后根据提示完成其他流程操作即可。


启动工程和预览


自然语言实现功能
然后你可以使用自然语言去实现你的功能,当DevEcoCode碰到自己不是很了解的知识时,它自己会调用DevEcoCli搜索文档的能力在本地的SDK库中去寻找资料,所以很快也很准确可以获取到技术,这个如果是用其他的AI agent可能默认会调用内置的Fetch工具在互联网上搜索资料,这样就太慢和笼统了,很容易失败!
帮我使用系统组件 沉浸式光感的tab实现 首页、分类、我的 ,其中的tab的图标帮我优先使用内置的图标,如果没有,帮我创建svg,不要使用emoji图标
需要注意的是,因为沉浸式光感是API23才有的,API21的工程不支持,这一点,DevEcoCode也识别出来了。

实际开发中,你可以直接中断对话,然后补上你的要求,及时调整方向。
当devecocode明确方案后,便会开始执行任务。

得到效果。

执行构建
需要注意的是,刚刚创建的工程使用的是自动签名。如果想要运行到真机,或者进行构建打包等操作,最后都先配置成手动签名,然后继续在已有的工程内开发。
想要执行构建,也是直接用自然语言对话即可。
帮我构建生产环境下的 APP 包 xxxxx多模态
DevEcoCode 登录华为账号时,默认使用内置的 Qwen3-VL 多模态模型进行 UI 检查,该模型只能用于 UI 检查(非主动调用)。如果开发者想要在自然语言对话中使用多模态能力,目前只支持接入 Qwen 系列的多模态模型。
DevEcoCode 开发方式
DevEcoCode 支持 3 种开发方式,默认是 Build(按 Tab 进行切换)。
Build:默认模式,适合工程生成、代码生成、配置修正、测试执行、推包运行和发布执行。Plan:适合需求拆解、技术方案、发布规划、测试规划和文档生成。- 不会改动文件,只做计划和方案。
Goal:适合 SDD 五阶段从需求到实现与构建验证的端到端特性交付。- 适合复杂任务。
按照任务的复杂度来使用:
- 简单的直接使用Build模式。
- 稍微复杂的,先 Plan 做好计划,再切换到 Build 模式。
- 最复杂的任务使用Goal模式。
三种开发方式的对比如下图所示:

DevEcoCode 常见能力
DevEcoCode是基于OpenCode,因此常见的一些能力,如agent、skill、mcp等也都支持和通用。
/init— OpenCode 文档 中提供的引导式工程初始化命令,让 AI 自动扫描仓库并生成 AGENTS.mdAGENTS.md— OpenCode 官方约定 中定义的 AI 工程说明书,向 AI 描述仓库的代码风格、构建方式和开发约定- agent(代理) — OpenCode Agent 系统 中的专职子代理机制,主 Agent 可将特定任务(调试、编码、验证)委托给它独立完成
- Skill(技能) — OpenCode Skill 机制 中用 Markdown 编写的专业知识包,AI 在需要时按名称加载使用
- MCP — Model Context Protocol 开放标准,让 AI 通过统一协议接入外部工具服务器
- plugins — 编写自己的插件来扩展 DevEcoCode。
DevEcoCode 常见命令一览
DevEcoCode 斜杠命令
| 命令 | 别名 | 分类 | 描述 | 来源 |
|---|---|---|---|---|
/init | — | 工程 | 引导式 AGENTS.md 生成,让 AI 自动分析工程并输出工程规范文件 | 内置 command |
/debug | — | 调试 | 以运行时证据驱动 ArkTS 问题调试 | 内置 command |
/review | — | 审查 | 审查代码变更(支持 commit / branch / PR,默认未提交变更) | 内置 command |
/editor | — | 会话 | 在外部编辑器中编写提示内容 | 内置 tui |
/new | /clear | 会话 | 启动一个新的会话 | 内置 tui |
/exit | — | 会话 | 关闭 DevEcoCode | 内置 tui |
/skills | — | 提示 | 列出所有可用的 Skill 并按需加载 | 内置 command |
/status | — | 系统 | 查看当前系统状态(MCP 连接、Workspace 等) | 内置 tui |
/models | /mo | Agent | 切换当前使用的模型和 Provider | 内置 tui |
/agents | — | Agent | 切换 Agent(build / goal 等) | 内置 tui |
/mcps | — | Agent | 管理 MCP 服务器启用/禁用 | 内置 tui |
/variants | — | Agent | 切换当前模型的变体(如 effort 级别) | 内置 tui |
/connect | — | Provider | 连接 AI Provider(登录/添加 API Key) | 内置 tui |
/sessions | /resume, /continue | 会话 | 切换/恢复历史会话 | 内置 tui |
/org | /orgs, /switch-org | 账号 | 切换组织(仅登录后可见) | 内置 tui |
/workspaces | — | 工作区 | 管理工作区(实验性功能) | 内置 tui |
| 用户自定义命令 | — | 工程 | 在 deveco.jsonc 的 command 段中配置的自定义命令,可绑定 Agent、模型 | 配置 |
| MCP 注册命令 | /:name:mcp | 扩展 | 已连接的 MCP Server 通过 Prompt 能力注册为斜杠命令 | MCP |
| Skill 注册命令 | — | 技能 | 工程内 SKILL.md 自动注册为可调用的斜杠命令(不与其他命令重名时) | Skill |
DevEcoCode CLI 终端命令
| 命令 | 描述 |
|---|---|
deveco | 不带参数时启动 TUI 交互界面(默认入口) |
deveco run [message..] | 直接以指定消息运行 DevEcoCode(非交互模式) |
deveco serve | 启动无头(headless)DevEco 服务器 |
deveco web | 启动服务器并在浏览器中打开 Web 界面 |
deveco attach <url> | 连接到正在运行的 DevEco 服务器 |
deveco acp | 启动 ACP(Agent Client Protocol)服务器 |
deveco models [provider] | 列出所有可用模型,可按 Provider 过滤 |
deveco providers | 管理 AI Provider 和认证凭据 |
deveco login [url] | 登录 DevEcoCode / OpenCode 账号 |
deveco mcp | 管理 MCP(Model Context Protocol)服务器 |
deveco session | 管理会话(列表、查看、删除等) |
deveco agent create | 创建新的 Agent |
deveco export [sessionID] | 将会话数据导出为 JSON |
deveco import <file> | 从 JSON 文件或 URL 导入会话数据 |
deveco plugin <module> | 安装插件并更新配置 |
deveco pr <number> | 拉取并切换到 GitHub PR 分支,然后启动 deveco |
deveco stats | 查看 Token 用量和费用统计 |
deveco db [query] | 打开交互式 SQLite shell 或执行查询 |
deveco generate | 生成代码/配置(内置脚手架) |
deveco upgrade [target] | 升级 DevEcoCode 到最新或指定版本 |
deveco uninstall | 卸载 DevEcoCode 并清除所有相关文件 |
DevEcoCode 配置文件
DevEcoCode支持3种配置文件,优先级如下:
- 项目目录下
.deveco/deveco.jsonc - 项目目录下
deveco.jsonc - 用户目录下
.config/deveco/deveco.jsonc
完整配置一览:
{
// 推荐始终声明,编辑器会据此做实时校验
"$schema": "https://opencode.ai/config.json",
// ── 基础 ──────────────────────────────────────────
"username": "alice",
"shell": "/bin/zsh", // 终端和 bash 工具用的默认 shell
"logLevel": "INFO", // DEBUG | INFO | WARN | ERROR
"model": "anthropic/claude-sonnet-4-6", // 始终带 provider 前缀
"small_model": "anthropic/claude-haiku-4-5",
"default_agent": "build", // 必须指向一个非隐藏的 primary agent
"autoupdate": "notify", // true | false | "notify"
"share": "manual", // "manual" | "auto" | "disabled"
"snapshot": true, // 文件快照(undo/revert),默认 true
// ── 指令 / 技能 / 引用 ───────────────────────────
"instructions": ["AGENTS.md", "docs/style.md"],
"skills": { // 注意是对象,不是数组
"paths": [".deveco/skills", "/abs/path"],
"urls": ["https://example.com/.well-known/skills/"]
},
"references": { // 以别名建立 @ 自动补全的上下文
"docs": { "path": "../docs", "description": "产品文档" },
"sdk": { "repository": "Effect-TS/effect", "branch": "main", "hidden": true }
},
"watcher": { "ignore": ["**/dist/**"] },
// ── Agent(单数,对象)────────────────────────────
// 键名可以是内置:plan/build/general/explore/title/summary/compaction
// 也可以是自定义 agent 名
"agent": {
"build": { "model": "anthropic/claude-sonnet-4-6" },
"my-reviewer": {
"description": "审查 PR 风格问题",
"mode": "subagent", // "primary" | "subagent" | "all"
"model": "anthropic/claude-sonnet-4-6",
"variant": "default",
"temperature": 0.2,
"top_p": 1.0,
"steps": 50, // 最大迭代轮数
"color": "#FF5733", // 或 primary/secondary/...
"hidden": false,
"disable": false,
"permission": { "edit": "deny", "bash": "ask" }
// prompt 建议写在 .deveco/agent/<name>.md 文件里,而非内联
}
},
// ── Command(单数,对象)──────────────────────────
"command": {
"deploy": {
"template": "执行部署:$ARGUMENTS", // 必填,命令正文;$ARGUMENTS/$1/$2...
"description": "部署当前工程",
"agent": "build",
"model": "anthropic/claude-sonnet-4-6",
"variant": "default",
"subtask": false
}
},
// ── Provider(单数)──────────────────────────────
"enabled_providers": ["anthropic"], // 设置后,仅这些 provider 生效
"disabled_providers": ["openai"],
"provider": {
"anthropic": {
"name": "Anthropic",
"api": "https://api.anthropic.com/v1",
"env": ["ANTHROPIC_API_KEY"],
"npm": "@ai-sdk/anthropic",
"options": {
"apiKey": "sk-...",
"baseURL": "https://api.anthropic.com/v1",
"timeout": 60000, // ms;设 false 关闭超时
"headerTimeout": 10000,
"chunkTimeout": 5000
},
"models": { // 模型覆盖/自定义
"claude-sonnet-4-6": {
"name": "Claude Sonnet 4.6",
"attachment": true,
"reasoning": true,
"tool_call": true,
"limit": { "context": 200000, "input": 190000, "output": 8000 },
"cost": { "input": 3.0, "output": 15.0 }
}
}
}
},
// ── MCP(单数,对象)──────────────────────────────
"mcp": {
"playwright": { // 本地进程型
"type": "local", // 必填
"command": ["npx", "-y", "@playwright/mcp"], // 数组,不是字符串
"cwd": ".",
"environment": { "BROWSER": "chromium" },
"enabled": true,
"timeout": 5000
},
"remote-thing": { // 远程型
"type": "remote",
"url": "https://mcp.example.com/sse",
"headers": { "Authorization": "Bearer {env:TOKEN}" }, // {env:VAR} / {file:path} 插值
"oauth": { "clientId": "...", "scope": "..." }, // 或 false 关闭自动探测
"enabled": true
},
"old": { "enabled": false } // 关闭继承自父配置的服务器
},
// ── Plugin(数组!)──────────────────────────────
"plugin": [ // 数组,不是对象
"opencode-gemini-auth", // npm 包名
"opencode-foo@1.2.3", // 锁定版本
"./local-plugin.ts", // 相对路径
["opencode-bar", { "key": "val" }] // [name, options] 元组
],
// ── Permission ───────────────────────────────────
"permission": { // 或顶层字符串 "allow"(很少用)
"edit": "deny",
"bash": { "git *": "allow", "rm *": "deny", "*": "ask" }, // 对象内插入顺序重要,取最后匹配
"external_directory": { "~/secrets/**": "deny", "*": "allow" },
"todowrite": "allow", // 这些只接受扁平 action:todowrite/question/webfetch/websearch/doom_loop
"read": "allow"
},
// ── 输出 / 压缩 / 附件 / 服务 ────────────────────
"tool_output": { "max_lines": 2000, "max_bytes": 51200 },
"compaction": { "auto": true, "prune": false, "tail_turns": 2, "reserved": 1000 },
"attachment": { /* 图片大小限制、缩放行为 */ },
"formatter": true, // false | true | { 覆盖项 }
"lsp": true,
"server": { // opencode serve / web
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "deveco.local",
"cors": ["https://app.example.com"]
},
// ── 实验性 ───────────────────────────────────────
"experimental": {
"batch_tool": true,
"openTelemetry": false,
"primary_tools": ["edit"],
"continue_loop_on_deny": false,
"mcp_timeout": 30000,
"disable_paste_summary": false,
"policies": []
},
// ── DevEcoCode 特有:合规/法律(可选,全部回退到内置默认值)──
"agreement": {
"tms_url": "",
"privacy_url": "",
"terms_url": "",
"privacy_id": "",
"terms_id": ""
}
// ── 已废弃字段(能用但建议迁移)─────────────────
// "mode": { ... } → 用 "agent"
// "reference": { ... } → 用 "references"
// "autoshare": true → 用 "share": "auto"
// "tools": { "edit": true } → 用 "permission"
// "layout": "stretch" → 已固定为 stretch
// "maxSteps" → 用 "steps"
}总结
本文从 DevEcoCli 的使用痛点出发,介绍了鸿蒙官方推出的 AI Agent 工具 DevEcoCode,要点回顾如下:
- 产品定位:DevEcoCode 基于开源 OpenCode 扩展,专为 HarmonyOS 开发而生,底层通过 MCP 调用 DevEcoCli,复用 DevEco Studio 全套工具链(ohpm、hvigor、hdc、emulator、hilog)。
- 核心优势:相比直接使用 DevEcoCli 死记命令,DevEcoCode 用自然语言对话即可完成新建工程、编码、构建、运行和调试,门槛更低、效率更高,也更能释放工具链的全部能力。
- 上手路径:备齐前置环境(Node.js 22+、DevEco Studio 6.1+、
DEVECO_HOME环境变量)与 DevEcoCli → 执行npm install -g @deveco/deveco-code安装 → 输入deveco启动并登录华为账号 → 按需选择自带免费模型或接入自己的大模型。 - 开发方式:根据任务复杂度,在 Build(默认,直接执行)/ Plan(只规划不改文件)/ Goal(端到端 SDD 五阶段) 三种模式间选择,用 Tab 切换。
- 生态能力:天然继承 OpenCode 的 agent、skill、mcp、plugin 等机制,并可通过
deveco.jsonc灵活配置 Provider、Agent、Command、权限等。
一句话概括:DevEcoCode = DevEcoCli 的工具能力 + OpenCode 的 AI 交互体验,让鸿蒙开发真正进入"动嘴就能开发"的阶段。如果你已经在用 DevEcoCli,强烈建议搭配 DevEcoCode,把精力从记命令转移到业务本身。
参考文献
- DevEco Studio 工具概览:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-tools-overview
- DevEcoCode:鸿蒙专属AI智能体:https://atomgit.com/openharmony-sig/deveco-code
- @deveco/deveco-cli · npm:https://www.npmjs.com/package/@deveco/deveco-cli
- HarmonyOS 7新特性:https://developer.huawei.com/consumer/cn/features/?ha_source=51cto&ha_sourceId=70000008
- HarmonyOS AI开发提效工具:DevEco Code & DevEco CLI:https://developer.huawei.com/consumer/cn/forum/topic/0202216647056043902?ha_source=51cto&ha_sourceId=70000008
- 社区干货合集:一帖看全,高效查阅 https://developer.huawei.com/consumer/cn/forum/topic/0201215860119833282?ha_source=51cto&ha_sourceId=70000008
- opencode:OpenCode 是一个开源的 AI 编码代理。它提供终端界面、桌面应用和 IDE 扩展等多种使用方式。