-
鸿蒙开发火爆却苦于硬件设备限制无法体验?身为一名鸿蒙开发新手,因环境配置繁复入门太难?你的机会来啦!华为鸿蒙云手机现全面升级,现正式面向开发者开放公测!🔥无需购置实体设备,畅享原生鸿蒙生态的全场景开发体验,随时随地完成鸿蒙应用的调试与测试。鸿蒙云手机是基于华为鸿蒙操作系统(HarmonyOS)的云端虚拟化手机服务,通过云计算技术将手机功能迁移至云端,为用户提供跨终端、高性能的移动体验。区别于传统开发模式,开发者无需投入成本购置鸿蒙实体设备,无需耗时进行本地环境配置,只需通过网络接入,就能获得与物理鸿蒙手机一致的操作体验,轻松实现鸿蒙应用的开发、调试、测试全流程操作,真正打破硬件与空间的双重限制。 ✨ 【云手机优势】✅ 云端真机级体验,随时随地调试鸿蒙应用✅ 零门槛上手,快速感受HarmonyOS能力✅ 弹性高效,生态开放,安全可靠 👇 【体验入口】鸿蒙云手机公测申请:华为开发者空间 - 鸿蒙云手机专区(戳这里,超链直达) 📘 【操作指南】华为开发者空间-鸿蒙云手机操作指导手册(Windows):cid:link_0华为开发者空间-鸿蒙云手机操作指导手册(macOS):cid:link_1 📮【问题反馈】云手机使用问题反馈问卷:cid:link_2
-
案例介绍CodeArts Doer是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts Doer是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本文基于华为开发者空间-云开发环境(容器)使用VS Code版CodeArts Doer快速开发马年运势预测小游戏,旨在展示如何利用智能化开发工具,快速实现一个有趣的运势预测小游戏,为用户提供个性化的马年运势预测服务。1.2 适用对象前端开发爱好者和初学者希望快速开发小游戏的开发者对运势预测类应用感兴趣的开发者想了解华为开发者空间和CodeArts Doer的开发者高校学生和教育机构1.3 案例时间本案例总时长预计30分钟。1.4 案例流程说明:用户使用VS Code远程连接云开发环境并安装CodeArts Doer代码智能体;在VS Code中,利用CodeArts Doer的"智能体模式",通过Prompt指令引导,快速开发马年运势预测小游戏;实现用户信息输入、运势算法、结果展示等功能模块;运行小游戏并测试其功能,验证运势预测的准确性和趣味性。1.5 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)云开发环境(容器)鲲鹏通用计算增强型 kc1 2vCPUs 4G HCE免费30CodeArts服务免费体验版免费30VS Code免费下载免费30二、环境和资源准备2.1 安装插件打开VS Code,点击下图图标,搜索Huawei Developer Space,点击Install,安装插件。2.2 登录安装完成后,点击Huawei Developer Space插件图标,点击登录。确认打开外部网站。点击确认授权。显示登录成功后,返回VS Code中,允许打开此URL,至此VS Code端工作准备就绪。2.3 创建云开发环境(容器)进入网页端的开发者空间中。按照如下步骤创建容器开发环境。默认为从空白开始创建,开发者可自行选择对应语言的开发环境。选择后会生成一个默认的名称,用户也可自行定义。CPU默认为鲲鹏系列,不可更改。规格可选择2c4g,4c8g,8c16g,16c32g,真的是非常非常良心了!高级配置中镜像名称其实指的就是基础环境配置的镜像,保持All in One即可。环境变量可视用户要求自定义。选择完成后,我们点击创建。回到个人空间中,我们可以看到已经创建成功了。2.4 远程连接云开发环境(容器)回到VS Code端,我们可以看到刚才开设的容器服务器。将鼠标置于其上,可以看到出现运行的按钮,点击开始运行。开机成功后,点击Open in Current Window,连接远程开发环境(容器)。此时会提示安装远程的拓展,我们点击安装即可。安装完成后,会弹出平台操作系统选择,我们选择Linux。连接成功后,如下图所示。执行命令测试一下,可以确认已经连接成功了。2.5 安装CodeArts Doer代码智能体点击Extensions图标,搜索CodeArts Doer for Coding,选择在该容器环境中安装。【注意】此处的工作空间已经切换,即使本地安装了CodeArts Doer,此处也不会显示,我们仍然可以选择在容器环境中安装。安装完成之后,我们点击左侧如图所示的图标,可以看到登陆界面,点击选择华为云账号登录。选择同意批准登录。回到VS Code端中进行测试,看到正常回复,至此,全部环境准备工作完成。三、基于华为开发者空间-云开发环境(容器)使用VS Code版CodeArts Doer快速开发马年运势预测小游戏3.1 需求分析与架构设计我们先把思路丢给CodeArts Doer,让其帮我生成一个需求分析和架构设计框架,然后自己改动后内容如下:**技术细节**: - 技术栈选择:HTML/CSS/JavaScript作为前端开发语言,使用Vue.js或React构建单页应用,Node.js作为后端服务(可选) - 运势算法:基于用户输入的信息(如姓名、出生日期),结合马年的生肖特点和传统运势理论,生成运势预测结果 - 数据存储:使用本地存储(localStorage)或小型数据库(如SQLite)存储用户信息和运势结果 - 部署方案:使用Docker容器化部署,支持快速上线和扩展 **功能模块划分**: - 用户信息输入模块:负责收集用户的姓名、出生日期等信息 - 运势算法模块:负责基于用户信息生成马年运势预测结果 - 结果展示模块:负责将运势预测结果以可视化方式展示给用户 - 分享功能模块:支持用户将运势结果分享到社交媒体 - 后台管理模块:负责管理运势算法和内容更新(可选) **关键指标定义**: - 开发时间:从项目初始化到上线的总时间≤30分钟 - 系统响应时间:页面加载时间≤2秒 - 用户体验:用户满意度评分≥4.5分(满分5分) - 功能覆盖率:功能需求的实现比例≥95% **详细内容说明**: - 用户信息输入模块:提供友好的输入界面,支持日期选择器、下拉菜单等交互组件 - 运势算法模块:实现灵活的运势算法,支持不同类型的运势预测(事业、财运、感情、健康等) - 结果展示模块:使用生动的视觉设计,展示运势结果,包括文字描述、图标、颜色等 - 分享功能模块:集成社交媒体分享接口,支持一键分享 - 后台管理模块:提供简单的后台界面,方便更新运势内容和算法 针对于其中一些细节,我们可以再次细化CodeArts Doer会基于此给出详细的前端模块和后端模块的树形结构图前端模块如下:src/ ├── components/ # 组件目录 │ ├── UserInput.vue # 用户输入组件 │ ├── FortuneResult.vue # 运势结果展示组件 │ ├── ShareDialog.vue # 分享对话框组件 │ └── HistoryList.vue # 历史记录组件 ├── views/ # 页面视图 │ ├── Home.vue # 首页 │ ├── Result.vue # 结果页 │ └── History.vue # 历史页 ├── services/ # 服务层 │ ├── fortuneService.js # 运势计算服务 │ └── apiService.js # API服务 ├── utils/ # 工具类 │ ├── chineseZodiac.js # 生肖计算 │ └── fortuneAlgorithm.js # 运势算法 └── store/ # 状态管理 └── index.js # Pinia store后端模块如下:server/ ├── routes/ # 路由 │ ├── fortune.js # 运势相关路由 │ └── user.js # 用户相关路由 ├── services/ # 服务层 │ ├── fortuneService.js # 运势计算服务 │ └── userService.js # 用户服务 ├── models/ # 数据模型 │ ├── User.js # 用户模型 │ └── Fortune.js # 运势记录模型 ├── middleware/ # 中间件 │ ├── auth.js # 认证中间件 │ └── validator.js # 验证中间件 └── config/ # 配置 └── database.js # 数据库配置整体框架图如下:3.2 基于CodeArts Doer快速开发实现到了这一步,我们继续在智能体模式下给出prompt:上述框架无误,请你按照上述内容帮我实现前后端构建!可以看到,此时已经开始进行项目构建了,我们稍等一会儿~等到生成完成后,我们可以看到文件目录如下所示:但是这时我们不了解项目结构,怎么启动呢?问题不大,我们给出如下prompt:请你帮我启动web服务,我要看看效果!此时CodeArts Doer就会开始自动安装环境依赖,最终自行执行启动操作等到项目启动完成之后,我们本地访问效果如下:我们随意填入一个信息,点击开始预测:生成结果如下:我们点击分享运势,还可以下载成图片分享给朋友~四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践:https://bbs.huaweicloud.com/forum/thread-0212720434463368503-1-1.html?fid=557
-
基于华为开发者空间云开发环境搭建CodeArts代码智能体,实现探途AI智能旅行规划助手一、概述1.1 适用对象企业开发者个人开发者高校学生1.2 案例介绍CodeArts代码智能体(CodeArts Doer)是面向 DevSecOps 全流程的智能化解决方案,当前已开放 CodeArts Doer for Coding 功能模块。本案例将指导您完成以下目标:通过 VS Code 远程连接华为开发者空间云开发环境(容器)集成 CodeArts Doer for Coding 插件搭建代码智能体利用智能体模式快速构建"探途AI"智能旅行规划助手1.3 案例流程流程说明:VS Code 远程连接云开发环境(容器)VS Code 集成 CodeArts Doer for Coding 插件,搭建 CodeArts 代码智能体配置智能体模式,快速构建探途AI智能旅行规划助手1.4 资源总览本案例预计花费 1元。案例完成后请及时释放资源,避免产生额外费用。资源名称规格单价(元)时长(分钟)华为开发者空间 - 云开发环境(容器)通用计算增强型 kc1 | 4vCPUs | 8G | HCE免费60CodeArts代码智能体(CodeArts Doer)系统标配免费60华为开发者空间 - DeepSeek-R1/V3 千万Tokens代金券DeepSeek-R1-64K/DeepSeek-V3-64K1160二、环境和资源准备2.1 领取华为云MaaS平台商用大模型Tokens福利参考案例华为云MaaS平台商用大模型Tokens领取使用指导最后获取到模型的API地址、模型名称和API Key。请妥善记录 API Key、API 地址以及模型名称,后续步骤将会使用。2.2 远程连接云开发环境我们进入 华为云开发者平台 创建容器。选择 All in one,点击确定。输入开发环境名称,选择规格后点击创建开发环境。选择创建好的容器,点击更多 > 开机。2.2.2 连接开发容器打开 VS Code 插件市场,搜索Huawei Developer Space,点击Install,安装插件。若本地尚未安装 VS Code,请自行下载安装。插件安装完成后,左侧新增 Huawei Developer Space 图标。点击图标,点击Sign in。提示打开开发者空间官网授权登录,选择Open。若账号处于登录状态,在确认授权页面确认授权后,提示登录成功。若账号位处于未登录状态,则在确认授权页面点Authorize,跳转华为云登录界面。页面提示登录成功。回到VS Code,显示登录成功欢迎界面。这样就连接成功了。平台操作系统选择Linux。点击Trust Folder & Continue。2.2.3 安装 CodeArts Agent 插件在 VS Code 插件市场搜索并找到CodeArts Agent插件,点击Install。安装结束后,重启 VS Code,重新连接云开发环境(容器)。重启后,状态如下:2.2.4 登录 CodeArts 代码智能体此时 CodeArts 代码智能体还不能直接使用,需要进行登录,点击华为账号登录,弹出窗口提示:是否打开外部网站,点打开。浏览器自动打开“批准登录”确认页面。若此时未登录账号,则跳转华为账号登录。若账号已登录,则选中并点登录。若为首次使用 CodeArts 代码智能体,会进入开通页面。需要勾选**“我已阅读并同意”后,单击“立即开通”**,等待套餐开通完成。返回 VS Code,显示登陆成功:2.2.5 配置智能体模式在 CodeArts 代码智能体对话框下侧点 Agent 模式,在弹出的菜单最后侧点设置按钮。在设置界面,点“自动批准”右侧的已启用。进入授权所有自动化操作界面,分别勾选读取文件和目录、编辑文件、执行命令、更新代办。配置完成后测试智能体:“你好,请自我介绍一下”3.1 投喂架构设计文档将以下架构设计及开发计划文档输入给代码智能体,让其理解项目需求:# 探途AI - 项目架构与开发计划 > **项目名称**:探途AI - 智能旅行规划助手 > **技术栈**:Go (后端) + Vue 3 (前端) > **预计开发时间**:2-3天 --- ## 一、项目概述 ### 1.1 项目目标 构建一个智能旅行规划助手 Web 应用,用户输入目的地、出行天数、预算和偏好后,AI 自动生成个性化旅行攻略。 ### 1.2 核心功能 | 功能模块 | 描述 | |---------|------| | 🎯 智能行程规划 | 根据用户输入生成每日详细行程 | | 🏛️ 景点推荐 | 推荐热门景点及游玩建议 | | 🍜 美食攻略 | 推荐当地特色美食和餐厅 | | 💰 预算规划 | 智能分配交通、住宿、餐饮等费用 | | 💬 智能对话 | 支持追问和行程优化 | | 📱 响应式设计 | 支持PC和移动端访问 | --- ## 二、技术架构 ### 2.1 架构图 ```text ┌─────────────────────────────────────────────────────────────────┐ │ 用户浏览器 │ │ (Vue 3 SPA / 响应式UI) │ └─────────────────────────────────────────────────────────────────┘ │ │ HTTP/HTTPS ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Nginx (可选) │ │ 静态资源 + 反向代理 │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Go Backend (Gin) │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ Router │ │ Handler │ │ Service │ │ │ │ 路由层 │─▶│ 控制层 │─▶│ 业务层 │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────┐ │ │ │ AI Client │ │ │ │ DeepSeek │ │ │ └──────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ │ HTTPS ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 华为云 ModelArts │ │ DeepSeek-R1/V3 API │ └─────────────────────────────────────────────────────────────────┘``` ### 2.2 技术选型 #### 后端 (Go) | 组件 | 技术选型 | 说明 | |------|---------|------| | Web框架 | **Gin** | 轻量高性能,适合API开发 | | 配置管理 | **Viper** | 支持多种配置格式 | | HTTP客户端 | **net/http** | 标准库,调用AI API | | 日志 | **Zap** | 高性能结构化日志 | | 热重载 | **Air** | 开发时自动重载 | #### 前端 (Vue 3) | 组件 | 技术选型 | 说明 | |------|---------|------| | 框架 | **Vue 3** | 组合式API,响应式 | | 构建工具 | **Vite** | 极速开发体验 | | UI组件 | **原生CSS** | 自定义渐变主题 | | Markdown | **marked.js** | 渲染AI返回的Markdown | | HTTP | **Axios** | API请求 | --- ## 三、项目结构 ### 3.1 整体目录结构 ```text tantu-ai/ ├── backend/ # Go后端 │ ├── cmd/ │ │ └── server/ │ │ └── main.go # 程序入口 │ ├── internal/ │ │ ├── config/ │ │ │ └── config.go # 配置管理 │ │ ├── handler/ │ │ │ ├── handler.go # Handler接口 │ │ │ └── travel.go # 旅行规划Handler │ │ ├── service/ │ │ │ ├── service.go # Service接口 │ │ │ └── ai_service.go # AI服务(调用DeepSeek) │ │ ├── model/ │ │ │ └── travel.go # 数据模型 │ │ └── router/ │ │ └── router.go # 路由配置 │ ├── pkg/ │ │ └── deepseek/ │ │ └── client.go # DeepSeek API客户端 │ ├── config.yaml # 配置文件 │ ├── go.mod │ └── go.sum │ ├── frontend/ # Vue前端 │ ├── src/ │ │ ├── assets/ │ │ │ └── styles/ │ │ │ └── main.css # 全局样式 │ │ ├── components/ │ │ │ ├── TravelForm.vue # 输入表单组件 │ │ │ ├── ResultCard.vue # 结果展示组件 │ │ │ └── Loading.vue # 加载动画组件 │ │ ├── views/ │ │ │ └── Home.vue # 主页 │ │ ├── api/ │ │ │ └── travel.js # API封装 │ │ ├── App.vue │ │ └── main.js │ ├── index.html │ ├── vite.config.js │ └── package.json │ ├── docs/ # 文档 │ └── api.md # API文档 │ ├── Makefile # 构建脚本 ├── docker-compose.yml # Docker编排(可选) └── README.md``` ### 3.2 后端分层说明 ```text ┌─────────────────────────────────────────────────┐ │ Router │ │ 路由注册和中间件 │ └─────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ Handler │ │ 请求解析、参数校验、响应封装 │ └─────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ Service │ │ 业务逻辑、Prompt构建 │ └─────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────┐ │ DeepSeek Client │ │ HTTP调用AI API │ └─────────────────────────────────────────────────┘``` --- ## 四、API设计 ### 4.1 接口列表 | 方法 | 路径 | 描述 | |------|------|------| | POST | `/api/v1/plan` | 生成旅行规划 | | POST | `/api/v1/chat` | 追问对话 | | GET | `/api/v1/health` | 健康检查 | ### 4.2 接口详情 #### POST /api/v1/plan **请求体**: ```json { "destination": "成都", "days": 3, "budget": "中等", "preference": "美食探店" }``` **响应体**: ```json { "code": 0, "message": "success", "data": { "plan": "## 🌟 行程概览\n...", "destination": "成都", "days": 3, "generated_at": "2026-01-29 12:00:00" } }``` #### POST /api/v1/chat **请求体**: ```json { "question": "第二天下午还有什么推荐?", "context": "之前生成的行程内容..." }``` **响应体**: ```json { "code": 0, "message": "success", "data": { "answer": "除了武侯祠,您还可以..." } }``` --- ## 五、核心模块设计 ### 5.1 DeepSeek Client ```go // pkg/deepseek/client.go type Client struct { baseURL string apiKey string modelName string httpClient *http.Client } type ChatRequest struct { Model string `json:"model"` Messages []Message `json:"messages"` Temperature float64 `json:"temperature"` MaxTokens int `json:"max_tokens"`} type Message struct { Role string `json:"role"` Content string `json:"content"`} func (c *Client) Chat(ctx context.Context, req *ChatRequest) (*ChatResponse, error)``` ### 5.2 Travel Service ```go // internal/service/ai_service.go type TravelService struct { aiClient *deepseek.Client } func (s *TravelService) GeneratePlan(ctx context.Context, req *model.PlanRequest) (*model.PlanResponse, error) { // 1. 构建Prompt // 2. 调用DeepSeek API // 3. 解析响应 // 4. 返回结果 }``` ### 5.3 Prompt模板 ```go const TravelPlanPrompt = `你是"探途AI",一位专业的旅行规划师。 【用户需求】 - 目的地:{{.Destination}} - 天数:{{.Days}}天 - 预算:{{.Budget}} - 偏好:{{.Preference}} 请生成详细的旅行攻略,包含: 1. 行程概览 2. 每日详细行程(景点、美食、交通) 3. 预算分配 4. 温馨提示 ```` --- ## 六、开发计划 ### Phase 1: 项目初始化 (Day 1 上午) - [ ] 创建Go项目结构 - [ ] 初始化go.mod,安装依赖(Gin、Viper、Zap) - [ ] 创建Vue项目(Vite) - [ ] 配置开发环境(Air热重载) ### Phase 2: 后端核心开发 (Day 1 下午) - [ ] 实现DeepSeek Client - [ ] 实现配置管理(config.yaml) - [ ] 实现Travel Handler - [ ] 实现Travel Service + Prompt模板 - [ ] 配置路由和中间件(CORS、日志) ### Phase 3: 前端开发 (Day 2 上午) - [ ] 设计整体布局和样式(渐变主题) - [ ] 实现TravelForm组件 - [ ] 实现Loading组件 - [ ] 实现ResultCard组件(Markdown渲染) - [ ] API封装和联调 ### Phase 4: 集成测试 (Day 2 下午) - [ ] 前后端联调 - [ ] 不同目的地测试 - [ ] 响应式适配测试 - [ ] 错误处理优化 ### Phase 5: 部署与文档 (Day 3) - [ ] 编写README - [ ] 编写API文档 - [ ] 准备案例截图 - [ ] 更新案例文档 --- ## 七、配置文件示例 ### backend/config.yaml ```yaml server: port: 8080 mode: debug # debug / release deepseek: base_url: "https://api.modelarts.cn-southwest-2.huaweicloud.com/v1/infers/你的推理服务ID" api_key: "你的API_Key" model: "DeepSeek-R1-64K" timeout: 120s max_tokens: 3000 log: level: info format: json``` --- ## 八、部署方案 ### 8.1 本地开发 ```bash # 后端 cd backend go run cmd/server/main.go # 前端 cd frontend npm run dev``` ### 8.2 生产部署 ```bash # 后端编译 cd backend go build -o tantu-ai cmd/server/main.go # 前端构建 cd frontend npm run build # 将 dist/ 目录部署到Nginx或由Go serve``` --- ## 九、风险与注意事项 | 风险 | 缓解措施 | |------|---------| | API调用超时 | 设置合理超时时间(120s),添加重试机制 | | Token消耗过快 | 优化Prompt,限制max_tokens | | 前后端跨域 | Gin配置CORS中间件 | | 敏感信息泄露 | API Key存储在配置文件,不提交到Git | --- ## 十、扩展规划(可选) - [ ] 用户收藏功能 - [ ] 行程导出PDF - [ ] 多语言支持 - [ ] 接入地图API展示路线 - [ ] 接入酒店/机票API 输入完成后,点击"开始开发"按钮,智能体将自动生成项目代码。代码生成完成后的效果如下图所示:点击"全部接受"按钮,将生成的代码应用到项目中。3.2 首次运行后端服务步骤一:配置API密钥打开 config.yaml 文件,填写之前申请的 API Key、调用地址和模型名称:步骤二:安装依赖并启动服务执行以下命令安装 Go 依赖:go get ./...当控制台输出以下信息时,表示后端服务启动成功:2026/01/30 14:39:45 Server starting on port 8080...3.3 首次运行前端服务启动前端开发服务器,当控制台输出以下信息时,表示前端服务启动成功: VITE v7.3.1 ready in 227 ms ➜ Local: http://localhost:5173/ ➜ Network: use --host to expose ➜ press h + enter to show help 在浏览器中访问以下地址:http://127.0.0.1:5173/即可看到前端UI界面的初始版本:3.4 项目优化3.4.1 前端UI界面优化向智能体发送以下优化指令:前端UI 字体显示进行相关细节优化优化后的界面字体更加清晰:3.4.2 前后端联调测试在前端界面中填写测试数据:字段值目的地北京出行天数3天预算豪华型旅行偏好历史文化、美食探店AI 生成的行程规划结果如下:3.4.3 局部细节优化向智能体发送优化指令,进一步完善前后端功能:还有什么细节上的优化吗?包括前后端本次优化新增了以下5项功能:3.5 成果验收输入测试数据进行功能验收。前端交互优化:新增生成进度条组件,解决了用户点击"生成计划"按钮后等待期间右侧内容区域空白的问题,提升了用户体验。流式响应:后端实现了流式响应机制,AI 生成的行程规划可以实时展示:四、释放资源云开发环境(容器)开机状态,会持续消耗华为开发者空间核时,在案例结束后需要进行关机操作。左侧打开开发者空间,在对应的容器后侧点关机。根据弹窗提示,点确认,当前云开发环境(容器)自动断开连接。若该环境后续不再使用,可对其进行删除操作。五、总结本案例演示了如何基于华为开发者空间云开发环境,利用 CodeArts 代码智能体快速构建一个完整的 AI 应用。通过智能体模式,开发者可以:高效开发:通过自然语言描述需求,智能体自动生成前后端代码快速迭代:通过对话式交互持续优化和完善功能降低门槛:无需深入掌握每个技术栈的细节,即可构建完整应用【案例相关源码】: 【https://gitcode.com/weixin_52568491/Tantu_AI_Demo】希望本案例能够帮助您快速上手 CodeArts 代码智能体,开启智能化开发之旅!我正在参加 【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践
-
案例介绍今天领导要做一个工作,把批量摘取word表格内容为excel的,word有几百个,摘取内容为根据word最后总结各项,取上面章节与总结各项对应的表格,一个word里摘取的表格也有几十上百个,问有没有会写程序的,灵光一闪我写的不好但是有CodeArts 代码智能体,本案例基于华为开发者空间 - 云开发环境(容器)与 VS Code 版 CodeArts 代码智能体,基于 Python 语言,快速开发一款批量摘取 Word 表格内容到 Excel 的程序。该程序可自动遍历指定文件夹下的所有 Word 文档,识别并提取文档中的所有表格数据,按统一格式汇总到 Excel 文件中,减少人工操作。一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本案例基于华为开发者空间 - 云开发环境(容器)与 VS Code 版 CodeArts 代码智能体,基于 Python 语言,快速开发一款批量摘取 Word 表格内容到 Excel 的程序。该程序可自动遍历指定文件夹下的所有 Word 文档,识别并提取文档中的所有表格数据,按统一格式汇总到 Excel 文件中,大幅减少人工操作。1.2 适用对象行政 / 财务 / 人事等需要批量处理文档表格的办公人员初级 Python 开发者(零基础可上手)中小企业数据整理岗工作人员需要自动化办公提效的职场人群1.3 案例时间本案例总时长预计120分钟。1.4 案例流程说明:在 CodeArts 代码智能体中输入精准 Prompt,生成核心提取程序代码。分析需求,编写Prompt提示词调试代码,适配不同格式的 Word 表格(合并单元格、不规则行列等)。运行程序,批量处理 Word 文档并验证 Excel 汇总结果。1.5 资源总览本案例预计花费1.85元。资源名称规格单价(元)时长(分钟)云开发环境(容器)鲲鹏通用计算增强型 kc1 2vCPUs 4G HCE免费60CodeArts服务免费体验版免费60VS Code免费下载免费60二、环境和资源准备2.1 安装插件打开VS Code,点击下图图标,搜索Huawei Developer Space,点击Install,安装插件。2.2 登录安装完成后,点击Huawei Developer Space插件图标,点击登录。确认打开外部网站。点击确认授权。显示登录成功后,返回VS Code中,允许打开此URL,至此VS Code端工作准备就绪。2.3 创建云开发环境(容器)在CLOUD DEV ENV(CONTAINER)页签,点击创建云开发环境,创建云开发环境。输入云开发环境名称:banjin(名称可以自拟),然后回车。注:必填项,可包含数字、字母、下划线,不能以数字开头,长度不超过15个字符。容器镜像选择All in One,然后回车。注:必填项,根据其预置工具不同,公共模板包含All In One、Go、Java、Python、Node等云开发环境(容器)模板,开发者可根据实际情况进行选择。选择规格,云开发环境(容器)提供了四个配置规格,分别为2vCPUs 4Gib、4vCPUs 8Gib、8vCPUs 16Gib、16vCPUs 32Gib。配置环境变量,若无则直接回车。注:选填项,多个键值对之间使用英文分号分隔,如:key1=value1;key2=value2;变量名称只能由字母、数字和下划线组成,且只能以字母或下划线开头,变量名称与变量值长度不能超过128个字符;最多可添加50个环境变量。2.4 远程连接云开发环境(容器)回到VS Code端,我们可以看到刚才开设的容器服务器。将鼠标置于其上,可以看到出现运行的按钮,点击开始运行启动容器环境开机成功后,点击在当前窗口链接,连接远程开发环境(容器)。此时会提示安装远程的拓展,我们点击安装即可。安装完成后,会弹出平台操作系统选择,我们选择Linux。连接成功后,如下图所示。执行命令测试一下,可以确认已经连接成功了。2.5 安装CodeArts代码智能体点击Extensions图标,搜索CodeArts Doer for Coding,选择在该容器环境中安装。【注意】此处的工作空间已经切换,即使本地安装了CodeArts Doer,此处也不会显示,选择ssh仍然选择在容器环境中安装。安装完成之后,我们点击左侧如图所示的图标,可以看到登陆界面,点击选择华为云账号登录。此时CodeArts代码智能体还不能直接使用,需要进行登录,点击华为账号登录,弹出窗口提示:是否打开外部网站,点打开。浏览器自动打开“批准登录”确认页面。若此时未登录账号,则跳转华为账号登录。若账号已登录,则选中并点登录。注:若为首次使用CodeArts代码智能体,会进入开通页面。需要勾选**“我已阅读并同意”后,单击“立即开通”**,等待套餐开通完成。至此,全部环境准备工作完成。2.6 配置智能体模式在CodeArts代码智能体对话框下侧点Agent模式,在弹出的菜单最后侧点设置按钮。在设置界面,点“自动批准”右侧的已启用。进入授权所有自动化操作界面,分别勾选读取文件和目录、编辑文件、执行命令、更新代办、执行task工具、使用浏览器。三、基于华为开发者空间+CodeArts代码智能体高效构建自动化代码审计助手3.1 需求分析与 Prompt 指令设计核心需求梳理:从第六章《输入输出表证单书》里提取各个项然后在第五章查找对应的表格,提取到excel1、批量读取指定文件夹下所有.docx 格式 Word 文档,自动跳过无表格、损坏的文档;2、精准提取每个 Word 文档中的所有表格,处理合并单元格(填充合并后空值);3、文件内容中定位标题为《输入输出表证单书》的章节取所有项名称对应项;4、定位文件中《五、业务处理流程及规则》板块下的《受理》子章节查找对应列表;5、将提取的表格汇总至 Excel:每个 Word 的表格单独占一个工作表,工作表名格式为 “文档名_表格序号”;6、显示处理进度,生成日志记录(成功 / 失败的文档、表格数量、错误原因);7、代码添加详细注释,便于新手修改和调试。编辑一个prompt指令帮我用python写有个程序,通过doc文件来取出文件内《输入输出表证单书》里对应《输入》和《输出》项里名称,然后在《五、业务处理流程及规则》里《受理》下,在内容里查找上面对应项名称加上“数据项处理规则”名称,然后取下方的表格,例如”《异常监控指标清单》“在《五、业务处理流程及规则》里《受理》下内容中,查找 ”《异常监控指标清单》数据项处理规则“ ,不要查找表格中的名称列,在内容里查找然后取下方的表格,查找当前目录下的doc文件优化下prompt提示词请使用Python开发一个程序,满足以下核心需求,代码需具备可运行性、鲁棒性,并添加详细注释:### 核心功能要求1. 文件读取:遍历当前运行目录下的所有.doc格式文件(若需兼容.docx也可同时支持),跳过无相关内容的文件;2. 第一步提取名称: - 从文件内容中定位标题为《输入输出表证单书》的板块; - 精准提取该板块下《输入》项和《输出》项中所有的名称(如:《异常监控指标清单》,保存为名称列表;3. 第二步查找并提取表格: - 定位文件中《五、业务处理流程及规则》板块下的《受理》子板块; - 仅在《受理》板块的**纯文本内容**中(不查找表格内的名称列),依次查找第一步提取的每个名称 + “数据项处理规则”的完整字符串(如《异常监控指标清单》数据项处理规则); - 找到匹配字符串后,提取该字符串**正下方**对应的表格数据(保留表格行列结构);4. 结果输出:将提取的表格数据按“文件名-名称-表格数据”的结构汇总,支持保存为Excel文件(或CSV),并生成处理日志(记录成功/失败的文件及原因)。### 技术要求1. 处理.doc文件优先使用python-docx2txt、pywin32(win32com)等成熟库,确保能解析老版本.doc格式;2. 增加异常处理:跳过损坏的doc文件、无目标板块/内容的文件,程序不中断;3. 兼容常见格式问题:如标题换行、空格、特殊符号(()《》)、板块层级缩进不一致等;4. 代码注释清晰,关键步骤(如板块定位、名称匹配、表格提取)需单独封装函数,便于调试和修改;5. 输出结果需保留表格原有行列结构,空单元格填充为空字符串,避免数据错位。3.2 代码构建我们进入智能体模式下,执行如上提示词,可以看到,智能体开始自动构建任务步骤,全程不需要我们操作,根须需求的难易程度等待时间长度不等。等待 10几分钟后代码完成,来尝试运行一下代码python extract_io_data.py可以看到数据都串行了我们交给 CodeArts智能体帮我们修复中间多次测试程序异CodeArts智能体修复记录不再记录3.3 运行生成的代码体验成果运行最终代码体验成果python extract_io_data.py这里已经按照需求提取了word里的表格生成了对应的excel3.4 封装代码python代码需要准备python环境安装各种依赖,在win下使用比较不辨,来封装一个可执行文件便于使用和分享这里输入提示词:帮我把程序打包成exe测试生成的可执行exe,更方便的提取excel结果了 生成代码:#!/usr/bin/env python# -*- coding: utf-8 -*-"""提取doc文件中的输入输出表证单书名称和对应的数据项处理规则表格输出到Excel文件"""import osimport refrom tika import parserimport openpyxlfrom openpyxl.styles import Font, Alignment, Border, Side, PatternFilldef find_section_start(lines, section_name): """查找章节起始位置""" for i, line in enumerate(lines): if section_name in line: return i return -1def find_subsection_start(lines, start_idx, subsection_name): """从指定位置开始查找子章节起始位置""" for i in range(start_idx, len(lines)): if subsection_name in lines[i]: return i return -1def extract_io_names(lines): """提取《输入输出表证单书》中《输入和输出》项的名称(包括括号内容)""" io_names = [] # 查找"六、输入输出表证单书"章节 section_start = find_section_start(lines, "六、输入输出表证单书") if section_start == -1: print("未找到'六、输入输出表证单书'章节") return io_names # 查找"七、"章节(六、章节的结束位置) section_end = -1 for i in range(section_start + 1, len(lines)): if lines[i].strip().startswith('七、'): section_end = i break if section_end == -1: section_end = min(section_start + 100, len(lines)) # 查找"(一)输入"部分 input_start = find_subsection_start(lines, section_start, "(一)输入") # 查找"(二)输出"部分 output_start = find_subsection_start(lines, section_start, "(二)输出") # 在六、章节和七、章节之间提取所有名称 for i in range(section_start, section_end): line = lines[i].strip() # 匹配两种格式: # 1. 《名称》 # 2. 《名称》(中文括号内容) # 3. 《名称(中文括号内容)》 # 先尝试匹配《名称》(中文括号内容)格式 # 注意:中文括号是()不是() # 使用字符串处理而不是正则表达式 found_paren_format = False if '《' in line and '》' in line and '(' in line and ')' in line: # 检查是否有《...》(...)的格式 start_idx = line.find('《') while start_idx != -1: end_idx = line.find('》', start_idx) if end_idx != -1: # 检查》后面是否有( after_bookmark = line[end_idx + 1:].strip() if after_bookmark.startswith('('): # 找到完整的《名称》(内容)格式 paren_end = after_bookmark.find(')') if paren_end != -1: name = line[start_idx:end_idx + 1] + after_bookmark[:paren_end + 1] # 排除表头 if name not in ["《输入和输出》", "《输入》", "《输出》"]: if name not in [n[0] for n in io_names]: # 判断是输入还是输出 if output_start != -1 and i >= output_start: io_names.append((name, '输出')) elif input_start != -1 and i >= input_start: io_names.append((name, '输入')) found_paren_format = True start_idx = line.find('《', end_idx + 1) if end_idx != -1 else -1 # 如果没有匹配到括号格式,再尝试匹配《...》格式 if not found_paren_format: start_idx = line.find('《') while start_idx != -1: end_idx = line.find('》', start_idx) if end_idx != -1: name = line[start_idx:end_idx + 1] # 排除表头 if name not in ["《输入和输出》", "《输入》", "《输出》"]: if name not in [n[0] for n in io_names]: # 判断是输入还是输出 if output_start != -1 and i >= output_start: io_names.append((name, '输出')) elif input_start != -1 and i >= input_start: io_names.append((name, '输入')) start_idx = line.find('《', end_idx + 1) if end_idx != -1 else -1 return io_namesdef extract_table_below(lines, start_idx): """提取从指定位置开始的表格内容""" table_data = [] i = start_idx # 找到表格开始(查找表头) header_found = False while i < min(start_idx + 2000, len(lines)): # 增加表格提取范围到2000行 line = lines[i] # 检查是否是表格表头(包含序号、数据项名称等关键字) if not header_found: # 检查这一行或接下来的几行是否包含表头信息 if '序号' in line: # 检查接下来的几行是否是表头 is_header = False j = i header_lines = [] while j < min(i + 10, len(lines)): stripped = lines[j].strip() if stripped and ('序号' in stripped or '数据项名称' in stripped or '数据项代码' in stripped or '处理方式' in stripped or '采集规则' in stripped or '备注' in stripped): header_lines.append(stripped) is_header = True j += 1 elif stripped.startswith('\t'): # 可能是表头的后续行 header_lines.append(stripped) j += 1 else: break if is_header and len(header_lines) >= 3: header_found = True i = j continue # 如果表头已找到,开始收集表格行 if header_found: # 检查是否表格结束(遇到新的章节或新的数据项处理规则标题) stripped = line.strip() # 检查是否遇到新的数据项处理规则标题 if '数据项处理规则' in stripped and '《' in stripped: # 检查这一行是否是数据项处理规则的标题(通常是单独一行) # 如果是,则停止提取 if stripped.startswith('《'): break # 检查是否遇到数字开头的段落(如"1.")且不是纯数字 # 只匹配中文句点,不匹配英文句点 if re.match(r'^\d+[.、]', stripped) and not stripped.isdigit(): break # 检查是否遇到新的主章节(七、八、九、十等) if re.match(r'^[七八九十]+、', stripped): break # 跳过空行 if not stripped: i += 1 continue # 将每一行都作为一个单独的元素添加到表格数据中 table_data.append([stripped]) i += 1 return table_datadef find_data_item_processing_rule(lines, io_name): """ 在《五、业务处理流程及规则》中《受理》下查找对应项名称+数据项处理规则, 然后提取下方的表格 """ # 查找"五、业务处理流程及规则"章节 section_start = find_section_start(lines, "五、业务处理流程及规则") if section_start == -1: return None # 查找"(二)受理"部分 accept_start = find_subsection_start(lines, section_start, "(二)受理") if accept_start == -1: return None # 查找受理部分的结束位置(下一个主章节或六、章节) accept_end = -1 for i in range(accept_start + 1, len(lines)): if lines[i].strip().startswith('(三)') or lines[i].strip().startswith('六、'): accept_end = i break if accept_end == -1: accept_end = min(accept_start + 20000, len(lines)) # 增加搜索范围 # 构造要查找的字符串 search_text = io_name + "数据项处理规则" # 在受理部分查找该字符串 for i in range(accept_start, accept_end): if search_text in lines[i]: # 找到了,提取下方的表格 table_data = extract_table_below(lines, i + 1) return { 'name': io_name, 'found_at': i, 'table': table_data } return Nonedef export_to_excel(io_names, results, output_file): """将结果导出到Excel文件""" # 创建工作簿 wb = openpyxl.Workbook() wb.remove(wb.active) # 删除默认的sheet # 创建样式 header_font = Font(name='微软雅黑', size=11, bold=True, color='FFFFFF') header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid') header_alignment = Alignment(horizontal='center', vertical='center', wrap_text=True) data_font = Font(name='微软雅黑', size=10) data_alignment = Alignment(horizontal='left', vertical='center', wrap_text=True) thin_border = Border( left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin') ) # Sheet1: 输入输出表证单书列表 ws1 = wb.create_sheet('输入输出表证单书', 0) # 设置表头 headers1 = ['序号', '类型', '名称', '是否有数据项处理规则'] ws1.append(headers1) # 设置表头样式 for col in range(1, len(headers1) + 1): cell = ws1.cell(1, col) cell.font = header_font cell.fill = header_fill cell.alignment = header_alignment cell.border = thin_border # 填充数据 for idx, (name, io_type) in enumerate(io_names, 1): # 检查是否有数据项处理规则 has_rule = any(r['name'] == name for r in results) rule_status = '是' if has_rule else '否' ws1.append([idx, io_type, name, rule_status]) # 设置数据样式 for col in range(1, len(headers1) + 1): cell = ws1.cell(idx + 1, col) cell.font = data_font cell.alignment = data_alignment cell.border = thin_border # 调整列宽 ws1.column_dimensions['A'].width = 8 ws1.column_dimensions['B'].width = 10 ws1.column_dimensions['C'].width = 50 ws1.column_dimensions['D'].width = 20 # Sheet2: 数据项处理规则详细表格 ws2 = wb.create_sheet('数据项处理规则', 1) # 设置表头 headers2 = ['表单名称', '序号', '数据项名称', '数据项代码', '处理方式', '采集规则', '备注'] ws2.append(headers2) # 设置表头样式 for col in range(1, len(headers2) + 1): cell = ws2.cell(1, col) cell.font = header_font cell.fill = header_fill cell.alignment = header_alignment cell.border = thin_border # 填充数据 row_num = 2 for result in results: if result['table']: # 跳过表头行(如果存在) table_rows = result['table'] if len(table_rows) > 0 and '序号' in str(table_rows[0]): table_rows = table_rows[1:] # 先将所有行展平成一个列表,跳过空行 all_values = [] for row in table_rows: for val in row: if val: # 跳过空值 all_values.append(val) # 按照数据项格式重新组织 # 格式:序号, 数据项名称, 数据项代码, 处理方式, 采集规则, 备注 # 但是有些数据项可能没有备注或数据项代码,所以需要动态判断 i = 0 while i < len(all_values): # 初始化所有字段为空 seq_num = '' data_name = '' data_code = '' process_mode = '' collect_rule = '' remark = '' # 检查第一个值是否是序号 if all_values[i].isdigit(): # 这是序号行 seq_num = all_values[i] i += 1 # 接下来应该是数据项名称(非数字) if i < len(all_values) and not all_values[i].isdigit(): data_name = all_values[i] i += 1 # 接下来可能是数据项代码(以06开头)或处理方式 if i < len(all_values): if all_values[i].startswith('06'): data_code = all_values[i] i += 1 # 数据项代码之后应该是处理方式 if i < len(all_values) and not all_values[i].isdigit(): process_mode = all_values[i] i += 1 # 处理方式之后应该是采集规则 if i < len(all_values) and not all_values[i].isdigit(): collect_rule = all_values[i] i += 1 # 采集规则之后可能是备注 if i < len(all_values) and not all_values[i].isdigit(): remark = all_values[i] i += 1 else: # 没有数据项代码,直接是处理方式 process_mode = all_values[i] i += 1 # 处理方式之后应该是采集规则 if i < len(all_values) and not all_values[i].isdigit(): collect_rule = all_values[i] i += 1 # 采集规则之后可能是备注 if i < len(all_values) and not all_values[i].isdigit(): remark = all_values[i] i += 1 # 在表单名称中添加"数据项处理规则" form_name = result['name'] if '数据项处理规则' not in form_name: form_name = form_name + "数据项处理规则" ws2.append([form_name, seq_num, data_name, data_code, process_mode, collect_rule, remark]) # 设置数据样式 for col in range(1, len(headers2) + 1): cell = ws2.cell(row_num, col) cell.font = data_font cell.alignment = data_alignment cell.border = thin_border row_num += 1 else: # 不是序号,跳过 i += 1 # 调整列宽 ws2.column_dimensions['A'].width = 40 ws2.column_dimensions['B'].width = 8 ws2.column_dimensions['C'].width = 25 ws2.column_dimensions['D'].width = 18 ws2.column_dimensions['E'].width = 12 ws2.column_dimensions['F'].width = 15 ws2.column_dimensions['G'].width = 40 # 保存文件 wb.save(output_file) print("结果已导出到Excel文件: " + output_file)def main(): """主函数""" # 查找当前目录下的doc文件 current_dir = os.getcwd() doc_files = [f for f in os.listdir(current_dir) if f.endswith('.doc')] if not doc_files: print("当前目录 " + current_dir + " 下没有找到.doc文件") return print("找到以下.doc文件:") for doc_file in doc_files: print(" - " + doc_file) # 处理每个doc文件 for doc_file in doc_files: doc_path = os.path.join(current_dir, doc_file) print("\n正在处理文件: " + doc_file) try: # 使用tika解析doc文件 parsed = parser.from_file(doc_path) content = parsed['content'] lines = content.split('\n') # 步骤1:提取《输入输出表证单书》中《输入和输出》项的名称 print("\n步骤1:提取输入输出表证单书中的名称...") io_names = extract_io_names(lines) print("共找到 " + str(len(io_names)) + " 个名称:") for name, io_type in io_names: print(" - " + name + " (" + io_type + ")") # 步骤2和3:查找数据项处理规则并提取表格(包括输入和输出) print("\n步骤2-3:查找数据项处理规则并提取表格...") results = [] for name, io_type in io_names: result = find_data_item_processing_rule(lines, name) if result: results.append(result) print(" [OK] 找到 " + name + " 的数据项处理规则表格,共 " + str(len(result['table'])) + " 行") else: print(" [X] 未找到 " + name + " 的数据项处理规则表格") # 步骤4:将结果输出到Excel文件 print("\n步骤4:将结果输出到Excel文件...") output_excel = os.path.splitext(doc_file)[0] + "_提取结果.xlsx" export_to_excel(io_names, results, output_excel) # 同时也输出到文本文件 #output_txt = os.path.splitext(doc_file)[0] + "_提取结果.txt" # with open(output_txt, 'w', encoding='utf-8') as f: # f.write("文件: " + doc_file + "\n") # f.write("=" * 80 + "\n\n") # # f.write("一、输入输出表证单书中的名称(共" + str(len(io_names)) + "个)\n") # f.write("-" * 80 + "\n") # for name, io_type in io_names: # f.write(name + " (" + io_type + ")\n") # # f.write("\n二、数据项处理规则表格(共" + str(len(results)) + "个)\n") # f.write("-" * 80 + "\n\n") # # for result in results: # f.write("名称: " + result['name'] + "\n") # f.write("-" * 40 + "\n") # # if result['table']: # f.write("表格内容(共" + str(len(result['table'])) + "行):\n") # for row in result['table']: # f.write("\t".join(row) + "\n") # else: # f.write("(未找到表格)\n") # # f.write("\n" + "=" * 80 + "\n\n") # # print("结果已保存到: " + output_txt) except Exception as e: print("处理文件 " + doc_file + " 时出错: " + str(e)) import traceback traceback.print_exc()if __name__ == "__main__": main() 至此用例全部结束感触我只能算是个业余爱好的开发者,曾经写一个程序要个程序需要各种查,各种翻文档来强记语法,像当前的这个程序我可能需要好几天才能开发出来,在CodeArts代码智能体下,两三个小时只需要验证结果就行了,异常只需要交给CodeArts代码智能体就可以,希望要善待开发者 我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践cid:link_0
-
案例介绍CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;本案例基于华为开发者空间 - 云开发环境(容器)与 VS Code 版 CodeArts 代码智能体,快速构建个性化学习计划应用。该应用旨在解决传统学习计划千人一面、缺乏动态调整机制、无法适配个人学习节奏与目标的核心痛点,帮助用户高效制定并执行学习方案。一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。GaussDB:华为自主创新研发的分布式关系型数据库。该产品支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。本案例基于华为开发者空间 - 云开发环境(容器)与 VS Code 版 CodeArts 代码智能体,快速构建个性化学习计划应用。该应用旨在解决传统学习计划千人一面、缺乏动态调整机制、无法适配个人学习节奏与目标的核心痛点,帮助用户高效制定并执行学习方案。1.2 适用对象在校学生职场技能提升人群在线教育机构高校学生个人开发者与技术爱好者1.3 案例时间本案例总时长预计120分钟。1.4 案例流程说明:用户通过 VS Code 远程连接云开发环境,并安装 CodeArts 代码智能体插件。在 VS Code 中开启 CodeArts 代码智能体的 “智能体模式”,通过 Prompt 指令引导构建个性化学习计划应用的核心功能。实现用户画像构建、学习目标设定、智能计划生成、进度跟踪等功能模块。迭代代码,使用gaussdb数据库。运行应用并测试不同场景下功能,CodeArts 代码智能体。1.5 资源总览本案例预计花费1.85元。资源名称规格单价(元)时长(分钟)云开发环境(容器)鲲鹏通用计算增强型 kc1 2vCPUs 4G HCE免费120CodeArts服务免费体验版免费120VS Code免费下载免费120gaussdb按需1.8560二、环境和资源准备2.1 安装插件打开VS Code,点击下图图标,搜索Huawei Developer Space,点击Install,安装插件。2.2 登录安装完成后,点击Huawei Developer Space插件图标,点击登录。确认打开外部网站。点击确认授权。显示登录成功后,返回VS Code中,允许打开此URL,至此VS Code端工作准备就绪。2.3 创建云开发环境(容器)在CLOUD DEV ENV(CONTAINER)页签,点击创建云开发环境,创建云开发环境。输入云开发环境名称:banjin(名称可以自拟),然后回车。注:必填项,可包含数字、字母、下划线,不能以数字开头,长度不超过15个字符。容器镜像选择All in One,然后回车。注:必填项,根据其预置工具不同,公共模板包含All In One、Go、Java、Python、Node等云开发环境(容器)模板,开发者可根据实际情况进行选择。选择规格,云开发环境(容器)提供了四个配置规格,分别为2vCPUs 4Gib、4vCPUs 8Gib、8vCPUs 16Gib、16vCPUs 32Gib。配置环境变量,若无则直接回车。注:选填项,多个键值对之间使用英文分号分隔,如:key1=value1;key2=value2;变量名称只能由字母、数字和下划线组成,且只能以字母或下划线开头,变量名称与变量值长度不能超过128个字符;最多可添加50个环境变量。2.4 远程连接云开发环境(容器)回到VS Code端,我们可以看到刚才开设的容器服务器。将鼠标置于其上,可以看到出现运行的按钮,点击开始运行启动容器环境开机成功后,点击在当前窗口链接,连接远程开发环境(容器)。此时会提示安装远程的拓展,我们点击安装即可。安装完成后,会弹出平台操作系统选择,我们选择Linux。连接成功后,如下图所示。执行命令测试一下,可以确认已经连接成功了。2.5 安装CodeArts代码智能体点击Extensions图标,搜索CodeArts Doer for Coding,选择在该容器环境中安装。【注意】此处的工作空间已经切换,即使本地安装了CodeArts Doer,此处也不会显示,选择ssh仍然选择在容器环境中安装。安装完成之后,我们点击左侧如图所示的图标,可以看到登陆界面,点击选择华为云账号登录。此时CodeArts代码智能体还不能直接使用,需要进行登录,点击华为账号登录,弹出窗口提示:是否打开外部网站,点打开。浏览器自动打开“批准登录”确认页面。若此时未登录账号,则跳转华为账号登录。若账号已登录,则选中并点登录。注:若为首次使用CodeArts代码智能体,会进入开通页面。需要勾选**“我已阅读并同意”后,单击“立即开通”**,等待套餐开通完成。至此,全部环境准备工作完成。2.6 配置智能体模式在CodeArts代码智能体对话框下侧点Agent模式,在弹出的菜单最后侧点设置按钮。在设置界面,点“自动批准”右侧的已启用。进入授权所有自动化操作界面,分别勾选读取文件和目录、编辑文件、执行命令、更新代办、执行task工具、使用浏览器。2.7 gaussdb数据库准备在开发者空间页面打开云数据库GAUSSDB,点击立即前往点击购买数据库实例选择购买数据库实例选项,本次案例选择按需的最小实例、集中式、单副本、通用型4c16g点击购买实例点击登录实例创建数据库三、基于CodeArts 代码智能体构建个性化学习计划应用3.1 需求分析与架构设计传统学习计划存在明显痛点:模板化内容无法匹配个人基础、学习目标模糊且缺乏拆解、计划执行过程中没有动态调整机制、学习进度难以直观跟踪。因此,本应用旨在构建个性化学习计划一站式平台:用户输入个人基础信息、学习目标、每日可投入时长等内容,系统通过智能算法生成定制化学习计划;支持按学科 / 技能拆分学习任务,设置阶段性里程碑;实时跟踪学习进度,根据完成情况自动调整后续计划;提供学习资源推荐、进度可视化报表等功能。系统架构设计,核心模块包括:用户模块:负责用户注册、登录、个人信息管理画像模块:构建用户学习基础、目标、时间等维度画像计划生成模块:基于用户画像智能生成学习计划与任务拆分进度跟踪模块:记录任务完成情况,支持手动打卡与自动统计资源推荐模块:根据学习计划匹配对应的课程、资料等资源可视化模块:以图表形式展示学习进度与完成率3.2 代码构建在 CodeArts 智能体模式下,输入以下 Prompt 指令,引导智能体完成应用开发:设计并开发一个"个性化学习计划应用",该应用需实现以下完整功能流程:1. 用户端:支持注册登录,填写个人基础(学历/当前技能水平)、学习目标(如考研/考公/技能考证)、每日可投入时长、学习偏好(如碎片化/整段时间学习);2. 智能计划生成:根据用户画像,自动拆分总目标为阶段性里程碑(按月/周拆分),再拆解为每日学习任务,明确任务内容、时长、优先级;3. 进度跟踪:支持用户手动打卡任务完成情况,系统自动统计每日/每周完成率,当连续3天未完成任务时,自动调整计划难度;4. 资源推荐:根据学习任务匹配对应的免费学习资源(如B站课程链接、电子书地址),支持用户手动添加资源;5. 可视化报表:以柱状图/折线图展示学习进度、完成率,支持导出PDF格式学习报告;6. 技术要求:使用python,确保界面简洁易用此时可以看到,智能体开始自动构建任务,生成开发方案、编写代码。在生成完项目代码后,CodeArts 智能体会对代码功能进行测试,测试中发现的问题会自我修复等待智能体完成需求分析与任务拆分,最终生成的项目架构如下:learning_plan_app/├── main_ui.py # 主界面(28KB)├── database.py # 数据库管理(18KB)├── plan_generator.py # 智能计划生成(13KB)├── progress_tracker.py # 进度跟踪(5.5KB)├── resource_manager.py # 资源管理(9.0KB)├── report_generator.py # 报表生成(13KB)├── run.py # 启动文件├── test_app.py # 测试脚本├── requirements.txt # 依赖列表├── README.md # 项目说明├── PROJECT_OVERVIEW.md # 项目概览├── USER_GUIDE.md # 使用指南├── SUMMARY.md # 项目总结├── start.sh / start.bat # 启动脚本├── data/ # 数据目录├── reports/ # 报告输出└── resources/ # 资源目录3.3.测试生成的代码打开TERMINAL窗口,进入项目目录先安装依赖pip install -r requirements.txt 运行调试代码python main_app.py生成的第一次代码进行运行,遇到了异常进行修复,关联上下文选择terminal,让CodeArts 智能体使用其他方式来实现3.4 优化迭代默认生成项目方案使用的时sqlite3,为了便于管理我们使用gaussdbCodeArts 智能体,帮我们修改为使用 gaussdb:帮我把数据库使用gaussdb来实现等待生成完成后检查项目文件可以看到已经成成gaussdb对应信息了修改数据库配置使用第二步创建的gaussdb数据,修改数据库配置信息,填写数据库ip、端口、用户、密码3.5 启动测试验证至此所有优化完成,运行优化后的代码 [root@b2f383fbe96e4f899ec5318ba02b6d4e personalized_learning_app]# python3 run_web.py正在启动个性化学习计划应用(Web版本)...============================================================ Web 界面已启动!============================================================访问地址: 本地: http://localhost:5000 远程: http://0.0.0.0:5000按 Ctrl+C 停止服务器============================================================ * Serving Flask app 'web_ui' * Debug mode: onWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:5000 * Running on http://172.10.56.231:5000Press CTRL+C to quit * Restarting with watchdog (inotify)正在启动个性化学习计划应用(Web版本)...============================================================ Web 界面已启动!============================================================访问地址: 本地: http://localhost:5000 远程: http://0.0.0.0:5000 点击在浏览器中打开,访问启动的个性化学习应用我们先来注册并登录设置个人信息创建学习计划测试打卡功能,进行今天的打卡学习资源推荐查看数据表信息功能测试完成,功能测试都正常当所有测试结束后,进行资源清理,如后续继续使用可酌情忽略至此案例基于华为开发者空间+CodeArts Doer代码智能体构建个性化学习计划应用全部完成四、一点心得 AI 编码工具并不能一步到位生成完美可用的应用,需要开发者通过精准的 Prompt 指令引导,结合实际需求不断迭代优化。这个 “开发者与智能体结对编程” 的过程,不仅能高效完成应用开发,更能让开发者聚焦于需求设计与功能优化,这也是未来开发模式的重要方向。 我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践cid:link_0
-
案例背景本案例基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发。1、项目开发目的本项目依托华为云 CodeArts 代码智能体的 AI 原生开发能力,快速开发儿童跳绳视频智能计数系统,通过 AI 视觉技术实现跳绳动作的自动识别与精准计数,核心解决传统人工计数、自主数绳的痛点,解放家长与教师的双眼双耳,让儿童专注跳绳运动本身;同时快速落地轻量、易用的智能计数产品,适配家庭日常锻炼、校园体育教学等核心场景,满足高效、精准的计数需求。2、项目开发意义实践应用意义:彻底改变传统跳绳计数模式,解决人工计数精准度低、耗时耗力,以及儿童自主数绳分心的问题,为家庭、校园提供低成本、高便捷性的智能计数工具,让跳绳运动更专注、高效,落地 “智慧体育” 在儿童运动场景的轻量应用。技术实践意义:验证 CodeArts 代码智能体在计算机视觉轻量系统开发中的落地价值,借助其快速开发能力大幅缩短研发周期、降低研发成本,为同类 AI 视觉轻量产品的开发提供可复用的技术路径与实践参考。教育体育意义:响应 “健康中国 2030” 与 “双减” 政策导向,助力校园智慧体育教学落地,减轻体育教师的教学辅助工作量,让教师更专注于运动指导;同时以科技赋能儿童运动,激发儿童跳绳运动兴趣,推动儿童日常体育锻炼的常态化开展。 一、概述1. 案例介绍CodeArts代码智能体是一款集IDE、Code Agent、代码大模型为一体的智能编码产品。它面向项目级代码生成、代码续写、研发知识问答、单元测试用例生成、代码解释、代码注释、代码调试、代码翻译、代码检查、代码优化等场景功能,为开发者提高研发效率,提供极致的智能化编码体验。本案例基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发。2. 适用对象个人开发者高校学生3. 案例时间本案例总时长预计45分钟。4. 案例流程说明:用户下载安装CodeArts代码智能体;登录CodeArts代码智能体,输入指令自动生成儿童跳绳视频计数系统代码;浏览器体验儿童跳绳视频计数系统。5. 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)CodeArts代码智能体通用体验版免费45二、基础环境与资源准备1. 下载安装CodeArts代码智能体参考教程,下载安装IDE:2. 登录CodeArts代码智能体安装完成之后,点击打开文件夹或新建项目,用于存放项目文件:登录CodeArts代码智能体:注意:如果已经登录华为账号,直接跳转至登录授权页面,否则,直接拉起华为账号登录界面。自动拉起华为账号登录界面,输入账号和密码:首次使用CodeArts代码智能体,会进入开通页面(若已经开通,会进入批准登录界面)。需要勾选“我已阅读并同意”后,单击“立即开通”,等待套餐开通完成。开通完成后,跳转至登录授权页面,点击确认授权:CodeArts代码智能体登录成功:登录成功之后,返回CodeArts代码智能体,即可体验使用。3. 验证CodeArts代码智能体输入问题:“你好,请介绍自己!”,验证CodeArts代码智能体:三、儿童跳绳视频计数系统代码实战1. CodeArts代码智能体生成代码输入以下指令,点击发送:接上文情况的优化情况,在TestDemo_06文件夹下实现一个jishu的Web应用,要求生成的界面简洁、美观、易用,针对待办应用的基础功能齐全。使用方法:直接在浏览器中打开 TestDemo_06/index.html 文件即可使用。请设计一款儿童跳绳视频自动计数程序,核心需求与技术方向如下:1. 功能目标:支持视频上传(兼容常见格式),自动完成跳绳次数统计并输出结果,区分跳绳中断重新起跳的情况,流程简洁易操作;2. 核心技术路径:优先基于音频分析实现计数,提取视频中跳绳落地的特征声纹,通过识别声音的时间间隔、重复节奏,判定单次跳绳动作并累加计数,规避环境杂音干扰;3. 辅助方案:可选视觉识别作为补充(如识别跳绳摆动轨迹/身体跳跃动作),无需复杂算法,满足基础计数兜底即可;4. 输出要求:需精准输出跳绳总次数,额外增加视频处理、动作分析、同步计数等附加功能。优化补充:定位具体问题,建议你在代码中加入以下调试步骤:1. 可视化: 画出提取出的波形图,标记出你程序认为的“击打点”。如果图上一片空白或者标记点全在波谷,那就是阈值问题。2. 试听: 将提取出来的 .wav 音频文件保存下来,用耳机听一听,确认人耳能清晰分辨节奏。如果人耳都听不清,算法更做不到。3. 打印中间值: 打印出当前帧的最大音量、计算出的能量值,看看到底是多少,是不是比你的阈值小几个数量级。建议考虑视觉方案,这通常是更稳健的路线:姿态估计: 使用 MediaPipe 或 OpenPose 检测手腕或脚踝的关键点轨迹。物体检测: 检测跳绳本身或人的整体 bounding box 的上下移动。光流法: 计算画面的整体运动像素变化。 注意修复报错信息: (1)Cannot set properties of null (setting 'textContent');(2)drawConnectors is not defined,CodeArts代码智能体通过规划任务,开始创自动生成项目代码:注意:涉及变更文件的时候,我们点击全部接受。大约几分钟之后,CodeArts代码智能体帮助我们在当前工作目录下,创建了一个完整的儿童跳绳视频计数Web应用:2. 测试体验儿童跳绳视频计数系统在浏览器中打开index.html文件或者在agent中右键打开预览:点击或拖拽上传视频或者音频,选择检测类型:点击开始分析,等待分析结果,可多调试几次,调整阈值:(未接入大模型,及深度开发,无法自行优化)3.实际验证部分: 注意:点名签到系统应用是由Agent自动生成,每次提问生成的代码及最后的运行结果均存在出入,开发者可根据自己的需求,调教模型生成自己想要的结果。若想体验与案例一样的结果,请下载源码至本地运行。详见附件。至此,基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发的案例已全部完成。四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
-
案例背景本案例基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发。1、项目开发目的本项目依托华为云 CodeArts 代码智能体的 AI 原生开发能力,快速开发儿童跳绳视频智能计数系统,通过 AI 视觉技术实现跳绳动作的自动识别与精准计数,核心解决传统人工计数、自主数绳的痛点,解放家长与教师的双眼双耳,让儿童专注跳绳运动本身;同时快速落地轻量、易用的智能计数产品,适配家庭日常锻炼、校园体育教学等核心场景,满足高效、精准的计数需求。 2、项目开发意义实践应用意义:彻底改变传统跳绳计数模式,解决人工计数精准度低、耗时耗力,以及儿童自主数绳分心的问题,为家庭、校园提供低成本、高便捷性的智能计数工具,让跳绳运动更专注、高效,落地 “智慧体育” 在儿童运动场景的轻量应用。技术实践意义:验证 CodeArts 代码智能体在计算机视觉轻量系统开发中的落地价值,借助其快速开发能力大幅缩短研发周期、降低研发成本,为同类 AI 视觉轻量产品的开发提供可复用的技术路径与实践参考。教育体育意义:响应 “健康中国 2030” 与 “双减” 政策导向,助力校园智慧体育教学落地,减轻体育教师的教学辅助工作量,让教师更专注于运动指导;同时以科技赋能儿童运动,激发儿童跳绳运动兴趣,推动儿童日常体育锻炼的常态化开展。 一、概述1. 案例介绍CodeArts代码智能体是一款集IDE、Code Agent、代码大模型为一体的智能编码产品。它面向项目级代码生成、代码续写、研发知识问答、单元测试用例生成、代码解释、代码注释、代码调试、代码翻译、代码检查、代码优化等场景功能,为开发者提高研发效率,提供极致的智能化编码体验。本案例基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发。2. 适用对象个人开发者高校学生3. 案例时间本案例总时长预计45分钟。4. 案例流程说明:用户下载安装CodeArts代码智能体;登录CodeArts代码智能体,输入指令自动生成儿童跳绳视频计数系统代码;浏览器体验儿童跳绳视频计数系统。5. 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)CodeArts代码智能体通用体验版免费45二、基础环境与资源准备1. 下载安装CodeArts代码智能体参考教程,下载安装IDE:2. 登录CodeArts代码智能体安装完成之后,点击打开文件夹或新建项目,用于存放项目文件:登录CodeArts代码智能体:注意:如果已经登录华为账号,直接跳转至登录授权页面,否则,直接拉起华为账号登录界面。自动拉起华为账号登录界面,输入账号和密码:首次使用CodeArts代码智能体,会进入开通页面(若已经开通,会进入批准登录界面)。需要勾选“我已阅读并同意”后,单击“立即开通”,等待套餐开通完成。开通完成后,跳转至登录授权页面,点击确认授权:CodeArts代码智能体登录成功:登录成功之后,返回CodeArts代码智能体,即可体验使用。3. 验证CodeArts代码智能体输入问题:“你好,请介绍自己!”,验证CodeArts代码智能体:三、儿童跳绳视频计数系统代码实战1. CodeArts代码智能体生成代码输入以下指令,点击发送:接上文情况的优化情况,在TestDemo_06文件夹下实现一个jishu的Web应用,要求生成的界面简洁、美观、易用,针对待办应用的基础功能齐全。使用方法:直接在浏览器中打开 TestDemo_06/index.html 文件即可使用。请设计一款儿童跳绳视频自动计数程序,核心需求与技术方向如下:1. 功能目标:支持视频上传(兼容常见格式),自动完成跳绳次数统计并输出结果,区分跳绳中断重新起跳的情况,流程简洁易操作;2. 核心技术路径:优先基于音频分析实现计数,提取视频中跳绳落地的特征声纹,通过识别声音的时间间隔、重复节奏,判定单次跳绳动作并累加计数,规避环境杂音干扰;3. 辅助方案:可选视觉识别作为补充(如识别跳绳摆动轨迹/身体跳跃动作),无需复杂算法,满足基础计数兜底即可;4. 输出要求:需精准输出跳绳总次数,额外增加视频处理、动作分析、同步计数等附加功能。优化补充:定位具体问题,建议你在代码中加入以下调试步骤:1. 可视化: 画出提取出的波形图,标记出你程序认为的“击打点”。如果图上一片空白或者标记点全在波谷,那就是阈值问题。2. 试听: 将提取出来的 .wav 音频文件保存下来,用耳机听一听,确认人耳能清晰分辨节奏。如果人耳都听不清,算法更做不到。3. 打印中间值: 打印出当前帧的最大音量、计算出的能量值,看看到底是多少,是不是比你的阈值小几个数量级。建议考虑视觉方案,这通常是更稳健的路线:姿态估计: 使用 MediaPipe 或 OpenPose 检测手腕或脚踝的关键点轨迹。物体检测: 检测跳绳本身或人的整体 bounding box 的上下移动。光流法: 计算画面的整体运动像素变化。 注意修复报错信息: (1)Cannot set properties of null (setting 'textContent');(2)drawConnectors is not defined,CodeArts代码智能体通过规划任务,开始创自动生成项目代码:注意:涉及变更文件的时候,我们点击全部接受。大约几分钟之后,CodeArts代码智能体帮助我们在当前工作目录下,创建了一个完整的儿童跳绳视频计数Web应用:2. 测试体验儿童跳绳视频计数系统在浏览器中打开index.html文件或者在agent中右键打开预览:点击或拖拽上传视频或者音频,选择检测类型:点击开始分析,等待分析结果,可多调试几次,调整阈值:(未接入大模型,及深度开发,无法自行优化)3.实际验证部分: 注意:点名签到系统应用是由Agent自动生成,每次提问生成的代码及最后的运行结果均存在出入,开发者可根据自己的需求,调教模型生成自己想要的结果。若想体验与案例一样的结果,请下载源码至本地运行。详见附件。至此,基于CodeArts代码智能体,快速完成儿童跳绳视频计数系统开发的案例已全部完成。四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
-
还在为手动刷资讯、错过行业热点发愁?想拥有一个能 24 小时盯紧指定网站、自动推送新闻摘要的 AI 助手?基于近期爆火的OpenClaw来搭建你的专属AI助手吧~~ OpenClaw通过你常用的聊天软件(如飞书、Telegram、WhatsApp等)和你对话,并可以直接操控你本地的文件、软件甚至执行命令,就像一个住在你电脑里的“数字管家”。以下案例指导开发者,在华为开发者空间-云开发环境上快速启动OpenClaw并接入飞书搭建AI助手,实现热门新闻主动推送功能。一、概述1. 适用对象企业个人开发者高校学生2. 案例时间本案例总时长预计60分钟。3. 案例流程开发者创建云开发环境;领取模型tokens,快速启动OpenClaw;OpenClaw接入飞书开放平台;飞书APP发送指令,实现热门新闻主动推送功能。4. 资源总览本案例预计花费0或1元。说明:以下代金券价格不一但均可使用,每个账号在活动期间只可领取使用1次。资源名称规格单价(元)华为开发者空间 - 云开发环境(开发桌面)鲲鹏通用计算增强型 kc2 | 4vCPUs | 8G | Ubuntu0.00DeepSeek-R1/V3.2千万Tokens代金券DeepSeekV3.21.00ModelArts Studio大模型(DS/K2/Q3等)通用代金券DeepSeekV3.20.00二、环境资源准备2.1 创建云开发环境(开发桌面)登录华为开发者空间,点击菜单开发平台 > 云开发环境 > 开发桌面,创建云开发环境 - 开发桌面。创建完成后,操作开发桌面开机,然后打开远程桌面。2.2 领取华为云MaaS平台大模型Tokens福利(任选其一)方式一: 登录华为开发者空间,参考案例《华为开发者空间 - ModelArts Studio大模型通用代金券领取使用指导》中的“二、 开通MaaS平台大模型”章节内容领取代金券,获取到模型的API地址、模型名称和API Key。方式二: 登录华为开发者空间,参考案例《华为云MaaS平台大模型Tokens领取使用指导》中的“二、 领取MaaS平台大模型Tokens”章节内容,领取MaaS平台DeepSeek V3系列大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通模型服务,最后获取到模型的API地址、模型名称和API Key。注意:记录API Key、API地址以及模型名称留作后面步骤使用。2.3 免安装快速启动OpenClaw进入开发桌面,打开桌面上的OpenClaw(Moltbot)启动器,将提示输入apiKey:参数说明:apikey:替换成“2.2 领取华为云MaaS平台大模型Tokens福利”章节中获取的API Key。即可体验OpenClaw能力:注意:MaaS平台中的DeepSeekV3.2模型需保持开通状态。如果出现OpenClaw断连的情况,请重新启动OpenClaw。三、接入飞书实现热门新闻主动推送功能3.1 创建应用并添加机器人安装飞书插件,实现OpenClaw与飞书的配置链接。输入以下命令:openclaw plugins install @m1heng-clawd/feishu火狐浏览器输入:https://open.feishu.cn/app?lang=zh-CN,扫码登录飞书开放平台。注意:确保手机中已安装飞书App并处于登录状态。输入应用名称和应用描述,创建企业自建应用:添加机器人:3.2 配置权限并接入OpenClaw添加成功后,配置权限。允许机器人拥有获取信息等基础能力。选择左侧菜单的权限管理,单击批量导入/导出权限:导入以下权限:{ "scopes": { "tenant": [ "contact:contact.base:readonly", "contact:user.base:readonly", "im:message", "im:message.group_at_msg:readonly", "im:message.p2p_msg:readonly", "im:message:send_as_bot", "im:resource" ], "user": [] }}确认导入权限:确认权限可访问的数据范围:全体成员发布版本。单击页面左上方的创建版本,填写版本号(如1.0.0)、更新说明,单击保存后确认发布。 3.3 获取凭证并添加事件获取凭证。选择左侧菜单的凭证与基础信息,复制App ID、App Secret用于下一步。执行以下命令,接入飞书。其中appId和appSecret以上一步的实际值为准。openclaw config set channels.feishu.appId "your_appId"openclaw config set channels.feishu.appSecret "your_appSecret"openclaw gateway restart注意:your_appId:替换为您应用的appId。your_appSecret:替换为您应用的appSecret。配置事件回调:选择左侧菜单的事件与回调,在事件配置页签点击订阅方式,选择使用长连接接收事件。 首次点击保存,提示错误:应用未建立长连接。我们需要使用官方SDK启动长连接飞书客户端。打开开发桌面的CodeArts IDE for Python工具,新建Python项目,在CodeArts IDE终端中安装飞书官方Python SDK。pip install lark-oapi -U代码请参考飞书官方SDK,本案例使用Python SDK。替换main.py文件中的代码,完整代码如下:import lark_oapi as lark## P2ImMessageReceiveV1 为接收消息 v2.0;CustomizedEvent 内的 message 为接收消息 v1.0。def do_p2_im_message_receive_v1(data: lark.im.v1.P2ImMessageReceiveV1) -> None: print(f'[ do_p2_im_message_receive_v1 access ], data: {lark.JSON.marshal(data, indent=4)}')def do_message_event(data: lark.CustomizedEvent) -> None: print(f'[ do_customized_event access ], type: message, data: {lark.JSON.marshal(data, indent=4)}')event_handler = lark.EventDispatcherHandler.builder("", "") \ .register_p2_im_message_receive_v1(do_p2_im_message_receive_v1) \ .register_p1_customized_event("这里填入你要自定义订阅的 event 的 key,例如 out_approval", do_message_event) \ .build()def main(): cli = lark.ws.Client("YOUR_APP_ID", "YOUR_APP_SECRET", event_handler=event_handler, log_level=lark.LogLevel.DEBUG) cli.start()if __name__ == "__main__": main()注意:YOUR_APP_ID:替换为您应用的appId。YOUR_APP_SECRET:替换为您应用的appSecret。点击右上角运行按钮,执行main.py文件:执行成功后,重新点击保存即可建立长连接。注意:与飞书建立长连接时,此工程不可停止运行。点击添加事件:添加接受消息的事件:添加完成:再次发布版本: 3.4 实现热门AI新闻主动推动功能在飞书APP中的开发者小助手对话框中可以看到版本发布成功的提示,单击打开应用即可进入机器人的聊天窗口,可以与机器人直接对话测试效果。在飞书手机端,发送以下对话:@OpenClaw 去访问以下两个网站(https://www.leikeji.com/)、(https://tech.gmw.cn),如果有任何关于“科技”领域的新闻,立刻把最新的摘要推送给我。注意:需在对话前@OpenClaw(OpenClaw是在飞书开放平台定义的机器人名称)。发送后可同时在OpenClaw客户端查看到返回信息。当然,如果觉得一直更新太频繁,我们可以让OpenClaw每隔一段时间给我们更新各个领域的热点新闻,也可以要求OpenClaw保存获取到的新闻至本地,我们只需要在飞书App上发送相应指令即可。注意:若不再使用OpenClaw,请在终端中执行以下命令,停止OpenClaw网关服务。openclaw gateway stop如果未关闭服务,会消耗tokens。至此,基于华为开发者空间,零部署OpenClaw接入飞书实现热门新闻主动推送功能的案例已全部完成。四、反馈改进建议除了新闻推送,OpenClaw还能拓展文件管理、系统操作等更多功能,欢迎在华为开发者空间动手进行更多尝试!如果您在实操过程中遇到问题或有改进建议,欢迎前往开发者空间论坛交流反馈,我们会及时响应处理,一起解锁更多AI助手新技能吧~~
-
一、概述1. 产品介绍最近开发者圈爆火的OpenClaw,是一个运行在你个人电脑或服务器上的AI助手。它通过你常用的聊天软件(如Telegram、WhatsApp等)和你对话,并可以直接操控你本地的文件、软件甚至执行命令,就像一个住在你电脑里的“数字管家”。现在,重磅福利来袭!华为开发者空间已正式集成OpenClaw(原 Clawdbot/Moltbot)。这款超火的开源自主 AI 助手,无需复杂配置,在云开发桌面就能一键部署使用,让云端开发效率直接拉满💥华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每个开发者提供一个云开发桌面、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根生态高效便捷的知识学习、技术体验、应用创新。2. 案例流程创建云开发环境并领取模型tokens;配置并运行OpenClaw;3. 资源总览资源名称规格单价(元)华为开发者空间 - 云开发环境(开发桌面)鲲鹏通用计算增强型 kc2 | 4vCPUs | 8G | Ubuntu0.00DeepSeek-R1/V3.2千万Tokens代金券DeepSeekV3.21.00ModelArts Studio大模型(DS/K2/Q3等)通用代金券DeepSeekV3.20.00二、环境资源准备2.1 创建云开发环境(开发桌面)登录华为开发者空间,点击菜单开发平台 > 云开发环境 > 开发桌面,创建云开发环境 - 开发桌面。创建完成后,操作开发桌面开机,然后打开远程桌面。2.2 领取华为云MaaS平台大模型Tokens福利(任选其一)方式一: 登录华为开发者空间,参考案例《华为开发者空间 - ModelArts Studio大模型通用代金券领取使用指导》中的“二、 开通MaaS平台大模型”章节内容领取代金券,获取到模型的API地址、模型名称和API Key。方式二: 登录华为开发者空间,参考案例《华为云MaaS平台大模型Tokens领取使用指导》中的“二、 领取MaaS平台大模型Tokens”章节内容,领取MaaS平台DeepSeek V3系列大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通模型服务,最后获取到模型的API地址、模型名称和API Key。注意:记录API Key、API地址以及模型名称留作后面步骤使用。三、运行OpenClaw3.1 免安装快速启动OpenClaw进入开发桌面,打开桌面上的OpenClaw(Moltbot)启动器,将提示输入apiKey:参数说明:apikey:替换成“2.2 领取华为云MaaS平台大模型Tokens福利”章节中获取的API Key。即可体验OpenClaw能力:注意:在MaaS平台中的DeepSeekV3.2模型需保持开通状态。 现在进入华为开发者空间,在云开发环境(开发桌面) 就能快速上手 OpenClaw。让这款 AI 助手成为你的云端专属开发搭档,把重复工作交给 AI,专注核心开发创作!👉体验路径:登录华为开发者空间→开发平台→云开发环境→开发桌面,即可开始体验~欢迎大家在评论区交流OpenClaw使用技巧、开发场景,一起解锁云端AI开发新玩法!
-
为深化教育教学改革,推动信息技术与教育教学深度融合,天津农学院依托教育部产学合作协同育人项目,于 2025 年 11 月 22 日成功举办了华为云数据库GaussDB师资培训。这次培训吸引了 30 余位骨干老师积极参与,旨在通过前沿技术平台与教学实践的对接,赋能教师队伍,探索应用型人才培养的新路径。 本次培训聚焦GaussDB核心技术与教学实践应用,邀请行业资深老师进行专题授课,四位主讲老师的分享各具亮点:何玲老师围绕“GaussDB发展历程、双集群架构及数据库设计规范”展开分享,深度解读了GaussDB“五高两易”的技术优势,以及集中式与分布式部署的形态差异,帮助教师建立了对GaussDB技术体系的整体认知。赵娜老师通过对比不同数据库对象的差异,讲解了模式schema、分区表及索引与视图等核心操作,结合DN主备倒换与三权分立机制,深化了教师对GaussDB安全架构的理解。甄爱军老师重点演示了GaussDB实例部署、ECS弹性服务器配置及GSQL、Navicat等工具的实操技巧,涵盖数据更新、查询与优化的关键环节,让教师们掌握了从环境搭建到数据操作的全流程技能。 吴凯老师围绕备份恢复策略、数据迁移方法及应用系统开发流程展开,为教师们梳理了从技术落地到项目实践的完整链路,助力其将技术能力转化为教学与项目实践成果。 此次培训通过前沿技术与教学实践的精准对接,有效提升了教师的技术能力与教学水平,为探索应用型人才培养新路径、深化产教融合奠定了坚实基础。未来,天津农学院将继续与华为云深化产学研合作,推动数据库技术融入高校教学体系,为数字经济发展培养更多高素质技术人才。
-
案例介绍CodeArts Doer是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts Doer是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本文基于华为开发者空间-云开发环境(容器)使用VS Code版CodeArts Doer快速二开黄金大盘实时监测系统,旨在解决传统黄金市场监测中数据获取不及时、分析效率低、可视化效果差等痛点,1.2 适用对象黄金投资者和交易员金融分析师和研究人员金融科技企业开发人员个人开发者、技术爱好者高校学生和研究人员1.3 案例时间本案例总时长预计30分钟。1.4 案例流程说明:用户使用VS Code远程连接云开发环境并安装CodeArts Doer代码智能体;在VS Code中,利用CodeArts Doer的"智能体模式",通过Prompt指令引导,快速二开黄金大盘实时监测系统;实现黄金市场数据实时采集、分析、可视化展示等功能模块;运行系统并测试其对黄金市场数据的监测能力,验证数据准确性和实时性。1.5 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)云开发环境(容器)鲲鹏通用计算增强型 kc1 2vCPUs 4G HCE免费30CodeArts服务免费体验版免费30VS Code免费下载免费30二、环境和资源准备2.1 安装插件打开VS Code,点击下图图标,搜索Huawei Developer Space,点击Install,安装插件。2.2 登录安装完成后,点击Huawei Developer Space插件图标,点击登录。确认打开外部网站。点击确认授权。显示登录成功后,返回VS Code中,允许打开此URL,至此VS Code端工作准备就绪。2.3 创建云开发环境(容器)进入网页端的开发者空间中。按照如下步骤创建容器开发环境。默认为从空白开始创建,开发者可自行选择对应语言的开发环境。选择后会生成一个默认的名称,用户也可自行定义。CPU默认为鲲鹏系列,不可更改。规格可选择2c4g,4c8g,8c16g,16c32g,真的是非常非常良心了!高级配置中镜像名称其实指的就是基础环境配置的镜像,保持All in One即可。环境变量可视用户要求自定义。选择完成后,我们点击创建。回到个人空间中,我们可以看到已经创建成功了。2.4 远程连接云开发环境(容器)回到VS Code端,我们可以看到刚才开设的容器服务器。将鼠标置于其上,可以看到出现运行的按钮,点击开始运行。开机成功后,点击Open in Current Window,连接远程开发环境(容器)。此时会提示安装远程的拓展,我们点击安装即可。安装完成后,会弹出平台操作系统选择,我们选择Linux。连接成功后,如下图所示。执行命令测试一下,可以确认已经连接成功了。2.5 安装CodeArts Doer代码智能体点击Extensions图标,搜索CodeArts Doer for Coding,选择在该容器环境中安装。【注意】此处的工作空间已经切换,即使本地安装了CodeArts Doer,此处也不会显示,我们仍然可以选择在容器环境中安装。安装完成之后,我们点击左侧如图所示的图标,可以看到登陆界面,点击选择华为云账号登录。选择同意批准登录。回到VS Code端中进行测试,看到正常回复,至此,全部环境准备工作完成。三、基于华为开发者空间-云开发环境(容器)使用VS Code版CodeArts Doer快速二开黄金大盘实时监测系统3.1 源码拉取打开终端,执行如下命令,拉取源代码:https://gitee.com/chuankangkk/Gold-Price-Quantitative-Monitoring-System.git进入到CodeArts Doer中,选择智能体模式,给出Prompt如下:请了解这个项目,并帮我启用web端服务,让我看看效果!但是后端服务(Cloudflare Workers)由于系统 GLIBC 版本兼容性问题暂时无法启动,前端会尝试调用远程API,如果API不可用,部分功能(如AI分析)可能无法正常使用。我们访问本地后效果如下:看了一下,发现数据并不是真实的,我们继续给出优化Prompt如下:请你解决这个问题:后端服务(Cloudflare Workers)由于系统 GLIBC 版本兼容性问题暂时无法启动。前端会尝试调用远程API,如果API不可用,部分功能(如AI分析)可能无法正常使用。但界面和静态图表应该可以正常显示。优化完成后,我们给出指令让其重新启用前后端web服务:请重新帮我启动前后端服务!并给出快速启动脚本!最终,CodeArts Doer会自行启动并给出前后端web服务的启用脚本:我们登录后可以看到,前端的实时金价已经同步成功了,但是k线图由于未知原因还是无法显示继续排查,给出Prompt如下:请你测试前端的k线图是否可以正常显示,目前我采用谷歌浏览器无法显示,请你排查并给出原因!经过排查并修复,最终整个项目的呈现效果如下:3.2 优化AI量化分析能力目前的量化分析能力,我们结合CodeArts Doer查看了一下,主要是依据以下路径来的:作为专业的黄金量化分析师,请根据以下【实时数据】提供专业的量化分析报告。 ═══════════════════════════════════════ 【实时行情数据】(数据时间:2026-02-02 14:30:25) ═══════════════════════════════════════ ▶ 国际金价 XAU/USD • 最新价格:4759.59 美元/盎司 • 涨跌额:10.38 美元 • 涨跌幅:0.22% • 昨收价:4749.21 美元 • 数据来源:goldprice.org ▶ 国内AU9999(上海黄金交易所) • 最新价格:980.50 元/克 • 今日开盘:978.20 元/克 • 最高价:985.30 元/克 • 最低价:976.80 元/克 • 昨收价:979.12 元/克 • 涨跌额:1.38 元 • 涨跌幅:0.14% • 今日振幅:8.50 元 • 成交量:85000 手 • 量比:1.04(相对7日均量) • 数据来源:eastmoney ▶ 近7日走势统计 • 7日累计涨跌幅:2.35% • 7日平均成交量:82000 手 ═══════════════════════════════════════ 【分析要求】 ═══════════════════════════════════════ 请按以下格式输出专业分析报告: ## 黄金量化分析报告 ### 1. 短期趋势判断 (明确给出:看涨/看跌/震荡,并说明判断依据) ### 2. 关键支撑位与压力位 - 国际金价压力位: - 国际金价支撑位: - 国内金价压力位: - 国内金价支撑位: ### 3. 技术指标信号 (分析动量指标、波动率、价量关系等) ### 4. 短线操作建议(1-5个交易日) (给出具体的操作策略、入场点位、止损止盈建议) ### 5. 中长期投资建议(1-3个月) (分析中长期趋势,给出配置建议) ### 6. 风险提示 (列出主要风险因素) --- 请确保分析基于上述实时数据,数据准确,建议专业可操作。 整个数据的处理流程为:用户点击"开始分析" ↓ ┌───────────────────────────────────────┐ │ 1. 并行获取实时数据 │ │ - fetchInternationalGoldPrice() │ │ - fetchDomesticGoldPrice() │ └───────────────────────────────────────┘ ↓ ┌───────────────────────────────────────┐ │ 2. 生成30天K线数据 │ │ - generateKlineData(30, price) │ │ - 基于当前价格反推历史 │ └───────────────────────────────────────┘ ↓ ┌───────────────────────────────────────┐ │ 3. 计算技术指标 │ │ - 近7日K线切片 │ │ - 计算涨跌幅、均量、量比、振幅 │ └───────────────────────────────────────┘ ↓ ┌───────────────────────────────────────┐ │ 4. 构建结构化Prompt │ │ - 整合价格数据 │ │ - 整合技术指标 │ │ - 整合K线数据摘要 │ │ - 添加时间上下文 │ └───────────────────────────────────────┘ ↓ ┌───────────────────────────────────────┐ │ 5. 调用AI模型(优先级) │ │ ① DeepSeek-V3.2 (modelScope) │ │ ② Qwen2.5-72B (备用) │ │ ③ 自动分析(最终fallback) │ └───────────────────────────────────────┘ ↓ ┌───────────────────────────────────────┐ │ 6. 返回分析报告 │ │ - 趋势判断 │ │ - 支撑压力位 │ │ - 技术指标分析 │ │ - 操作建议 │ │ - 风险提示 │ └───────────────────────────────────────┘ 听起来很有指导性对吧?但是实际上,经过我的多次测试,说的跟没说一样的。所以这里,我切换到CodeArts Doer的Deepseek模型,让其给我一些建设性的意见:请你结合你的量化经验,优化这种分析方式,使生成的报告更具体,更有说服力,且能够给人实际的指导意见!最终,DP优化完成后,升级为了8大指标和12个风险工具。我们继续给出测试Prompt:请你仅执行后端获取最新的数据,结合你给出的量化方法,给出对2月3日和2月4日黄金趋势的预测以及购买建议!我们先看看2月3日的一个趋势,相比于昨天,今天还是呈现一个增长震荡的趋势我们采用优化之后的提示词来进行分析,给出的结论如下:最新黄金价格数据 国际金价(XAU/USD): 最新价格:4798.01美元/盎司 涨跌额:-95.195美元 涨跌幅:-1.95%(下跌) 昨收价:4893.205美元 国内AU9999(上海黄金交易所): 最新价格:1071元/克 今日开盘:1070元/克 最高价:1089.99元/克 最低价:1040元/克 涨跌额:+41元 涨跌幅:+3.98%(上涨) 量化分析 1. 短期趋势判断(2月3日-4日) 国际金价:看跌 今日下跌1.95%,显示空头力量较强 从4893美元跌至4798美元,跌幅较大 短期可能继续承压 国内金价:震荡偏强 今日上涨3.98%,但日内波动剧烈(1040-1090元) 成交量64万手,放量明显 受汇率因素影响,与国际金价走势分化 2. 关键支撑位与压力位 国际金价 压力位:4850-4880美元 支撑位:4750-4780美元 国内金价 压力位:1090-1100元 支撑位:1040-1050元 3. 2月3日预测 国际金价:预计在4750-4850美元区间震荡,偏弱 国内金价:预计在1050-1080元区间震荡,可能冲高回落 4. 2月4日预测 国际金价:若跌破4750支撑,可能继续下探至4700附近 国内金价:若能站稳1050,可能反弹至1080附近 购买建议 短线操作(1-2个交易日) 谨慎观望为主 国际金价下跌趋势明显,不建议追涨 国内金价虽涨但波动剧烈,风险较大 如需操作,建议等待回调至支撑位再考虑 中线配置(1-2周) 分批建仓策略 买入点位: 国内金价回调至1040-1050元区间可考虑分批买入 国际金价回调至4750美元附近可关注 止损位:国内金价跌破1020元止损 止盈位:目标1100-1120元 具体操作建议 2月3日: 不建议追高买入 如持有仓位,可部分止盈 空仓者等待回调机会 2月4日: 关注1040-1050元支撑位 若企稳可考虑轻仓介入 控制仓位在30%以内 风险提示 汇率风险:国内金价受人民币汇率影响较大 波动风险:日内波动达50元,风险较高 国际市场风险:美联储政策、地缘政治等因素影响 技术面风险:国际金价已跌破重要支撑位 总结:短期内建议以观望为主,等待更好的入场时机。如需配置,建议分批在支撑位附近低吸,严格控制仓位和止损。 看起来还是太乱了,我们让CodeArts Doer生成一个报告导出的功能,让其能更方便查看:请增加一个报告导出的功能,支持将AI生成的量化分析建议以报告html或者markdown的格式给出!并且支持下载导出!但是这时,忽然想起来,报告中还缺乏了k线图的分析,继续给出Prompt如下:我突然发现你的量化方法还缺失了一些内容,你能否结合k线图来配合分析?请结合最近24小时,最近48小时和最近72小时的k线图数据来协同分析!这个同样也最为参考结果之一放在报告里面可以看到结合K线图之后,趋势由之前的震荡变为看涨了。等到下午3点,我们看到目前黄金的时价确实是相较于昨天上涨了一些,基本和预测的保持了一致。我们继续等等再看~第二天时,我们根据最新的数据再次重跑了一遍预测,结果如下:同时给出的最高峰值是不超过1135.7,这在实际中也进行了应验~以上内容仅是依据于开发的量化模块计算得出,不构成投资建议,大家不要盲目跟风哦~四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践:https://bbs.huaweicloud.com/forum/thread-0212720434463368503-1-1.html?fid=557
-
一、概述1.1 适用对象AI应用开发者Python开发者旅游爱好者想要学习多模态大模型应用的开发者1.2 案例流程本案例将使用CodeArts代码智能体生成程序完成以下工作:准备旅行照片,获取华为云ModelArts API密钥和百度地图API密钥使用Python程序读取照片EXIF信息(GPS坐标、拍摄时间)调用Qwen2.5-VL-72B视觉模型分析图片内容使用百度地图API进行逆地理编码,获取详细地址和附近景点调用DeepSeek-R1文本模型生成小红书风格旅游文案自动生成精美的HTML格式旅行手账案例流程如下图所示:说明:VS Code远程连接云开发环境(容器);VS Code集成CodeArts Doer for Coding插件,搭建CodeArts代码智能体;设置智能体模式,快速构建华为云智能旅行手账程序。1.3 资源总览本案例预计花费2元(假设照片不超过10张,分析一张手机照片一般需要1.5千tokens)。体验完成后请及时释放资源,避免产生多余的费用。资源名称规格单价(元)时长(分钟)华为云ModelArts APIDeepSeek-R1130华为云ModelArts APIQwen2.5-VL-72B输入:¥0.016 / 千tokens输出:¥0.048 / 千tokens30百度地图API逆地理编码 + 景点搜索免费额度30云开发环境Python 3.7+免费30二、环境和资源准备2.1 领取华为云MaaS平台商用大模型Tokens福利登录华为开发者空间,参考案例《华为云MaaS平台商用大模型Tokens领取使用指导》中的“二、 领取MaaS平台商用大模型Tokens”章节内容,领取MaaS平台DeepSeek-R1商用大模型Tokens代金券,购买ModelArts Studio DeepSeek Tokens套餐包,开通商用模型服务,最后获取到模型的API地址、模型名称和API Key。开通商用模型服务,获取以下信息:API地址:https://api.modelarts-maas.com/v1/chat/completions视觉模型名称:qwen2.5-vl-72b文本模型名称:DeepSeek-R1API Key:您的API密钥注意:记录API Key、API地址以及模型名称留作后面步骤使用。2.2 获取百度地图API密钥访问百度地图开放平台:cid:link_4注册并登录账号创建应用,获取AK(API Key)开启"逆地理编码"和"地点检索"服务权限,前者将GPS坐标转换为地址信息,后者查找该地址最可能的旅游景点,从而获得照片所对应的景点信息注意:记录API Key留作后面步骤使用。2.3 创建云开发环境参考案例《基于华为开发者空间 - 云开发环境(容器)搭建CodeArts代码智能体》中的“二、VS Code远程连接云开发环境(容器)”和“三、搭建CodeArts代码智能体”步骤,完成VS Code远程连接云开发环境(容器)并搭建CodeArts代码智能体。2.4 准备开发环境本案例使用Python 3.7+,需要安装以下依赖:pip install Pillow==10.0.0 requests==2.31.0三、构建智能旅行手账应用3.1 部署项目代码在CodeArts代码智能体对话框中输入如下问题,使智能体自动构建智能旅行手账程序:# 华为云智能旅行手账 # 功能 使用Python语言开发程序,具备以下功能: 1. 读取指定目录中的图片,使用视觉大模型进行图片内容分析,利用文本大模型针对图片内容和图片的地理位置信息、拍摄时间等生成旅游手账。 2. 地理位置信息逆解析采用百度地图API,解析后在该地点找到最近的旅游景点。 3. 旅游手账格式为HTML,语言风格类似小红书的游记。 4. 生成以下单元测试程序,方便调试程序 * 获得图片中地理位置信息并进行逆解析的单元测试程序 * 视觉理解的单元测试程序 * 文本生成的单元测试程序 # 配置 * 数据目录:./data * 视觉模型配置信息 APIKey: <2.1节获得的API Key> model: qwen2.5-vl-72b url: https://api.modelarts-maas.com/v1/chat/completions * 文本大模型配置信息 APIKey: <2.1节获得的API Key> model: DeepSeek-R1 url: https://api.modelarts-maas.com/v1/chat/completions * 百度地图API APIKey: <2.2节获得的API Key> 此时可以看到,智能体开始自动构建任务步骤:生成开发方案、编写代码与安装依赖,全程不需要我们操作。如遇到智能体提问,可根据实际情况回答或确认。注意:这里我们让CodeArts代码智能体生成3个单元测试,因为这样复杂的程序,CodeArts代码智能体很难一次性生成正确,采用单元测试程序可以方便对程序中重要的环节进行单独测试,提高调试效率。3.2 调试和部署项目代码1)项目结构说明项目生成后一般会包括以下模块(由于CodeArts代码智能体每次生成的程序都不完全相同,读者得到的结果可能与此处不是完全相同,但是大致应该差不多):华为云智能旅行手账 ├── config.py # 配置文件 ├── exif_extractor.py # EXIF数据提取 ├── baidu_map_service.py # 百度地图服务 ├── vision_service.py # 视觉模型服务 ├── text_service.py # 文本生成服务 ├── html_generator.py # HTML生成器 ├── main.py # 主程序 ├── requirements.txt # 依赖包 ├── data/ # 图片数据目录 └── tests/ # 单元测试 ├── test_location.py # 位置解析测试 ├── test_vision.py # 视觉理解测试 └── test_text.py # 文本生成测试2)单元测试准备测试图片将旅行照片放入 ./data 目录支持的格式:.jpg, .jpeg, .png, .heic, .webp建议照片包含GPS信息和拍摄时间运行单元测试测试位置解析和百度地图服务:python tests/test_location.py测试视觉理解功能:python tests/test_vision.py测试文本生成功能:python tests/test_text.py3个单元测试程序运行过程中如果出现错误,将错误信息发送给CodeArts代码智能体,它会自动完成修复工作。全部单元测试都通过之后,一般主程序也没有什么问题了。3)运行主程序输入如下命令执行主程序python3 main.py程序将自动:读取 data/ 目录中的所有图片提取每张图片的GPS坐标和拍摄时间调用视觉模型分析图片内容使用百度地图获取地址和景点信息生成小红书风格的旅游文案生成HTML格式的旅行手账4)查看结果生成的HTML文件将保存在当前目录,文件名格式为:travel_journal_YYYYMMDD_HHMMSS.html在浏览器中打开HTML文件,即可查看精美的旅行手账。下面是部分例子:四、释放资源4.1 删除云开发环境进入云开发环境列表,选择环境容器,点击"删除"按钮。在对话框中确认删除,释放计算资源。4.2 停止API服务如果不再需要使用华为云ModelArts API和百度地图API,可以在相应的控制台停止服务,删除API Key,避免产生额外费用。五、扩展资料说明5.1 相关技术文档华为云AI开发平台ModelArts文档百度地图API文档: cid:link_4faq/api?title=webapi/guide/webservice-geocoding-abroadPillow文档:https://pillow.readthedocs.io/Python requests库文档:https://docs.python-requests.org/5.2 扩展功能建议多语言支持:添加英文、日文等多语言旅行手账生成社交媒体分享:一键分享到微博、小红书等平台PDF导出:支持导出为PDF格式地图集成:在HTML中嵌入交互式地图语音讲解:使用TTS技术生成语音讲解附录:常见问题Q1: 图片没有GPS信息怎么办?A: 程序会自动检测GPS信息,如果没有GPS,仍然可以生成旅行手账,只是缺少地理位置信息。Q2: 如何提高生成速度?A: 可以在配置文件中调整 timeout 参数,或者使用更快的模型版本,比如DeepSeek-V3。Q3: 支持哪些图片格式?A: 支持 .jpg, .jpeg, .png, .heic, .webp 等常见图片格式。Q4: 如何自定义旅行手账样式?A: 可以修改 html_generator.py 中的CSS样式,自定义页面布局和颜色。我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践 https://bbs.huaweicloud.com/forum/thread-0212720434463368503-1-1.html?fid=557
-
案例介绍CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本文基于华为开发者空间-云开发环境(容器)+ VS Code版CodeArts代码智能体,快速构建发票信息提取核验一站式平台,旨在解决传统发票处理中流程繁琐、人工核验易出错、效率低下及合规风险高的核心痛点。1.2 适用对象企业财务部门会计事务所个人开发者、技术爱好者高校学生需要处理大量发票的中小企业1.3 案例时间本案例总时长预计120分钟。1.4 案例流程说明:用户使用VS Code远程连接云开发环境并安装CodeArts代码智能体;在VS Code中,利用CodeArts代码智能体的"智能体模式",通过Prompt指令引导,构建发票信息提取核验平台的核心功能;实现发票图像识别、信息提取、数据验证和存储管理等功能模块;运行平台并测试其对不同类型发票的处理能力。1.5 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)云开发环境(容器)鲲鹏通用计算增强型 kc1 2vCPUs 4G HCE免费120CodeArts服务免费体验版免费120VS Code免费下载免费1201.6 温馨提示正式开始前,请通读全文,有很多坑周周都给大家踩完了。二、环境和资源准备2.1 安装插件打开VS Code,点击下图图标,搜索Huawei Developer Space,点击Install,安装插件。2.2 登录安装完成后,点击Huawei Developer Space插件图标,点击登录。确认打开外部网站。点击确认授权。显示登录成功后,返回VS Code中,允许打开此URL,至此VS Code端工作准备就绪。2.3 创建云开发环境(容器)进入网页端的开发者空间中。按照如下步骤创建容器开发环境。默认为从空白开始创建,开发者可自行选择对应语言的开发环境。选择后会生成一个默认的名称,用户也可自行定义。CPU默认为鲲鹏系列,不可更改。规格可选择2c4g,4c8g,8c16g,16c32g,真的是非常非常良心了!高级配置中镜像名称其实指的就是基础环境配置的镜像,保持All in One即可。环境变量可视用户要求自定义。选择完成后,我们点击创建。回到个人空间中,我们可以看到已经创建成功了。2.4 远程连接云开发环境(容器)回到VS Code端,我们可以看到刚才开设的容器服务器。将鼠标置于其上,可以看到出现运行的按钮,点击开始运行。开机成功后,点击Open in Current Window,连接远程开发环境(容器)。此时会提示安装远程的拓展,我们点击安装即可。安装完成后,会弹出平台操作系统选择,我们选择Linux。连接成功后,如下图所示。执行命令测试一下,可以确认已经连接成功了。2.5 安装CodeArts代码智能体点击Extensions图标,搜索CodeArts Doer for Coding,选择在该容器环境中安装。【注意】此处的工作空间已经切换,即使本地安装了CodeArts Doer,此处也不会显示,我们仍然可以选择在容器环境中安装。安装完成之后,我们点击左侧如图所示的图标,可以看到登陆界面,点击选择华为云账号登录。选择同意批准登录。回到VS Code端中进行测试,看到正常回复,至此,全部环境准备工作完成。三、基于华为开发者空间-云开发环境(容器)使用VS Code版CodeArts代码智能体构建发票信息提取核验一站式平台3.1 需求分析与架构设计可能有朋友好奇,为什么我上一篇还写得是代码审计,这一篇突然就写到发票了呢?这个说来其实也是有缘由的,我们自己的内控系统,目前只做到了基本的信息化,每次我出去出差回来总是要交一堆票据,包括发票查验单都需要自己搞好了才能给财务。这个过程不仅繁琐耗时,还容易出错,什么抬头信息填错等等,一旦提交后被财务打回,就得重新折腾一遍,效率极低。更关键的是,这些重复性高、规则性强的工作,其实完全可以交给AI和自动化工具来完成。因此,我这才萌生了构建一个“发票信息提取核验一站式平台”的想法:从扫描/上传发票图片开始,自动识别关键字段(如发票代码、号码、开票日期、销售方名称、金额、税额、校验码等),对接国家税务总局官方查验接口进行真伪核验,再自动生成符合公司财务要求的查验单和报销单模板,最后支持一键导出或直连财务系统。整个流程无需人工干预关键步骤,真正做到“一次上传,全程智能处理”。当然,这里可能只能实现上面设想的部分内容哈~直连财务系统啥的在外网上是做不到滴~这里我先简要的画了一个架构图:3.2 代码构建我们进入智能体模式下,给出如下提示词:设计并开发一个"发票信息提取核验一站式平台",该平台需实现以下完整功能流程:从发票图片的扫描或上传环节开始,通过OCR技术自动精准识别发票关键信息字段(包括但不限于:发票代码、发票号码、开票日期、销售方名称、金额、税额、校验码等),识别准确率需达到95%以上;系统需无缝对接国家税务总局官方查验接口,实现发票真伪的自动核验,核验响应时间应控制在3秒以内;基于核验通过的发票信息,自动生成符合公司财务规范的标准化查验单和报销单模板,模板格式需支持自定义配置;最终提供一键导出功能(支持PDF、Excel等多种格式)及与公司现有财务系统的直连对接能力。整个平台流程设计需确保关键操作环节无需人工干预,实现"一次上传,全程智能处理"的核心目标,同时保障数据传输与存储的安全性,符合国家相关数据安全法规要求。可以看到智能体为我们制定了10个任务,覆盖了全部模块我们等待5分钟,准备收菜~最终生成的项目架构如下所示,可以看到是前后端分离框架,并且对应的使用文档也是很详细的:invoice-verification-platform/ ├── backend/ # 后端(Python + FastAPI) │ ├── app/ │ │ ├── api/ # API路由 │ │ ├── core/ # 核心配置 │ │ ├── models/ # 数据模型 │ │ ├── schemas/ # Pydantic模型 │ │ ├── services/ # 业务服务(6个核心服务) │ │ └── main.py # 应用入口 │ ├── requirements.txt # 依赖文件 │ └── .env.example # 环境变量模板 ├── frontend/ # 前端(Vue 3) │ ├── src/ │ │ ├── api/ # API接口 │ │ ├── views/ # 5个主要页面 │ │ ├── router/ # 路由配置 │ │ └── main.js # 入口文件 │ ├── package.json # 依赖文件 │ └── vite.config.js # Vite配置 └── docs/ # 文档 ├── API接口文档.md └── 部署指南.md我们按照给出的启动方式来快速启用,尝试一下效果:先启动后端,安装相关依赖,但是此时发现报了一个错误:应该是是说没有找到2.5.2版本,我们进入依赖文件,改成2.6.2尝试一下没有报错了,我们继续等待安装完成执行启用命令,发现又出现报错了不必慌张,我们选择排错模式,然后将报错复制进去即可可以看到,智能体直接找到了关键问题所在,并且开始进行自主修复根据判定到的问题,自动升级版本并启用可能智能体也感觉到太麻烦了,所以又帮我写了一个简易的一键启动脚本我们启用尝试一下,没啥问题,继续给出提示词让其启用前端:很好,但是这是后端的能力,我想在web端前端进行使用,请你帮我实现!可以看到这里给出的一键启动前后端的脚本:启用后单个上传的测试界面如下:整体项目如下:3.3 测试及优化我们先进入测试页面尝试一下,这里我在网上找了一张发票,直接上传,点击开始处理:对比一下,发现只识别到了部分:我们再次给出提示词,让其进行修改:目前并没有识别到购买方名称、销售方名称!请修改代码以识别!这里其实也存在一个问题,就是CodeArts代码智能体没办法保存版本,万一一个版本改废了之后就不能回退到之前了。。。这个问题也提建议了,希望未来能改进一下~更新后发现问题仍然存在,所以这里采用了一个策略都是提供了一张发票图片给智能体,让其自行测试,并且根据测试结果自行优化此图片为发票图片,请你使用发票识别程序来进行测试,并且根据你自己识别到的结果,进行代码优化。经过漫长的等待~~~~终于自迭代成功了,至少从准确度上来说,是可以成功识别到了!我们重新识别一下下一步,我们设想的是自动去税务局查验发票,但是目前发现的问题是似乎没有免费的验真接口,基本都是收费的。。。我们试着直接给出提示词让智能体帮我们解决这个问题,看看CodeArts代码智能体的能力上限究竟如何目前检验发票真伪是模拟,并不能真正的实现发票的验真,请你实现这一功能,能将识别到的发票信息作为输入进国家税务总局发票查验平台,获取其返回的发票验真结果令我惊讶的是,它居然还是自主生成完成了,我们测试一下是不是幻觉了,以当前发票为例,这次识别完成后,居然弹出了提示是核验未成功!我们追一下代码逻辑:发现竟然真的疑似是对接的国家税务总局查验接口,但由于没有识别到校验码,所以返回的未成功,这里我们又要回到上一步要求其增加对校验码的识别,继续给出prompt:请增加对发票校验码后六位的识别,同时在前端界面增加对校验码的显示!稍等一会儿后,重新启动前端页面,可以看到正确识别到了校验码!但是仍然是显示未核验?这就奇了怪了!我们重新测试了一下,发现这个接口居然还是模拟的。。。。被CodeArts代码智能体骗了。。。我们试着在华为云上找了一下到了一个免费接口,点击直接购买,前60次是免费的我们先去接口测试一下,确实是没问题的我们把接口文档丢给CodeArts代码智能体,让其进行改造,给出prompt如下:我购买了华为云的发票查验接口,请你帮我更新进去:def demo_app(): # Set the request parameters. # AppKey, AppSecret, Method and Url are required parameters. sig = signer.Signer() sig.Key = "AppKey" sig.Secret = "AppSecret" method = "POST" url = "https://invoicevalidate.apistore.huaweicloud.com/invoice/validate/v2" headers = {"Content-Type": "Content-Type"} # If this interface involves setting body parameters, please configure them as follows. body = "{'param1':'param1', 'param2':'param2'}" # Sign the request r = signer.HttpRequest(method, url, headers, body) sig.Sign(r) print(r.headers["X-Sdk-Date"]) print(r.headers["Authorization"]) resp = requests.request(method, url, headers=r.headers, data=body) print(resp.status_code, resp.reason) print(resp.content) if __name__ == '__main__': demo_app() 此时的请求参数是fpdm=&fphm=&kprq=&jym=&je= fpdm:发票代码 非全电发票必填 fphm:发票号码 kprq:开票日期 格式YYYYMMDD jym:校验码后 6 位, 增值税普通发票、增值税电子普通发票、增值税普通发票(卷式)、增值税电子普通发票(通行费)必填 je:增值税专用发票、增值税电子专用发票、机动车销售统一发票输入不含税金额; 二手车销售统一发票输入车价合计; 全电发票输入价税合计重启服务后,识别成功如下图所示:后续的直接对接至财务平台,由于财务信息的敏感性,此处就没有做过多的演示了,大致的方法也很简单,就是制作一个接口将取到的信息通过财务平台的开放接口传输同步过去,最终实现的效果就是在这里上传发票的截图,然后自动将发票的真伪及相关信息作为字段同步至财务系统的表单里了。3.4 当前不足由于目前的OCR模型完全是由CodeArts代码智能体生成或者说模仿生成的,我给出的训练集主要是标准的图片式发票,如下面这种但是如果是拍照的话,稍微倾斜一些就可能会产生识别错误这里在后续真正投入生产之后需要进一步优化。其次要说到的还是数据安全性问题,这个代码目前仅是做了功能上的实现,对于代码的安全性还没过多的做审计,这也是后续优化的方向之一吧~四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!五、写在最后的话有的读者可能会觉得我的文章又臭又长,但是诚然,这就是开发者与AI coding工具博弈的真实写照。AI生成的东西目前看来是不可能一次对话就能拿出来用的,必然会经过多次的对话迭代,而其这对话的过程中所用到的方式和技巧,也就是我们常说的“结对编程策略”,同样是值得分享和学习的。我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践:https://bbs.huaweicloud.com/forum/thread-0212720434463368503-1-1.html?fid=557
-
案例介绍CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。一、概述1.1 案例介绍华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云主机、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。CodeArts代码智能体是基于智能生成、智能问答两大核心能力构建起一套全方位、多层次的智能开发体系。在智能生成方面,它能够依据开发者输入的需求描述,准确且高效地生成高质量代码;智能问答功能则如同开发者身边的专属技术顾问。本文基于华为开发者空间+CodeArts代码智能体,高效构建自动化代码审计助手,旨在解决传统代码审计中效率低、成本高、依赖人工经验的核心痛点,通过将AI大模型的能力与开发者平台深度结合,探索出一条“人机协同、智能驱动”的新路径。1.2 适用对象网络安全企业个人开发者、网络安全兴趣爱好者高校学生1.3 案例时间本案例总时长预计30分钟。1.4 案例流程说明:用户使用VS Code远程连接云开发环境并安装CodeArts代码智能体;在VS Code中,利用CodeArts代码智能体的“智能体模式”,通过Prompt指令引导,逐步构建一个能自动扫描代码、识别漏洞并生成报告的“审计助手”,并对智能体进行多轮测试和Prompt调优,确保其能准确识别目标漏洞类型;运行审计助手,对比其输出结果与人工审计或现有工具的结果,展示其效率和价值。1.5 资源总览本案例预计花费0元。资源名称规格单价(元)时长(分钟)云开发环境(容器)鲲鹏通用计算增强型 kc1 2vCPUs 4G HCE免费30CodeArts服务免费体验版免费30VS Code免费下载免费30二、环境和资源准备2.1 安装插件打开VS Code,点击下图图标,搜索Huawei Developer Space,点击Install,安装插件。2.2 登录安装完成后,点击Huawei Developer Space插件图标,点击登录。确认打开外部网站。点击确认授权。显示登录成功后,返回VS Code中,允许打开此URL,至此VS Code端工作准备就绪。2.3 创建云开发环境(容器)进入网页端的开发者空间中。按照如下步骤创建容器开发环境。默认为从空白开始创建,开发者可自行选择对应语言的开发环境。选择后会生成一个默认的名称,用户也可自行定义。CPU默认为鲲鹏系列,不可更改。规格可选择2c4g,4c8g,8c16g,16c32g,真的是非常非常良心了!高级配置中镜像名称其实指的就是基础环境配置的镜像,保持All in One即可。环境变量可视用户要求自定义。选择完成后,我们点击创建。回到个人空间中,我们可以看到已经创建成功了。2.4 远程连接云开发环境(容器)回到VS Code端,我们可以看到刚才开设的容器服务器。将鼠标置于其上,可以看到出现运行的按钮,点击开始运行。开机成功后,点击Open in Current Window,连接远程开发环境(容器)。此时会提示安装远程的拓展,我们点击安装即可。安装完成后,会弹出平台操作系统选择,我们选择Linux。连接成功后,如下图所示。执行命令测试一下,可以确认已经连接成功了。2.5 安装CodeArts代码智能体点击Extensions图标,搜索CodeArts Doer for Coding,选择在该容器环境中安装。【注意】此处的工作空间已经切换,即使本地安装了CodeArts Doer,此处也不会显示,我们仍然可以选择在容器环境中安装。安装完成之后,我们点击左侧如图所示的图标,可以看到登陆界面,点击选择华为云账号登录。选择同意批准登录。回到VS Code端中进行测试,看到正常回复,至此,全部环境准备工作完成。三、基于华为开发者空间+CodeArts代码智能体高效构建自动化代码审计助手3.1 代码审计skill构建考虑到代码审计是专业性比较强的东西,所以这里计划来使用skill构建,先简单介绍一下skill吧。Skill是由claude提出的概念,其核心是一份 Markdown 文件(SKILL.md)。当 Skill 被调用时,系统并不会去“运行”这个 Skill,而是读取这个文件,将其中的大量指令、工作流和知识“展开”并“注入”到当前的对话历史中。在我的理解里,skill本质上来说是一种“提示词扩展”,而非具体的“代码执行”,与传统的提示词相比,只是加载方式不同。那么,它与 MCP 之间究竟有何区别?还记得 MCP 刚兴起时,业界普遍将其比喻为给 AI 装上了“手”和“脚”,那如果说 MCP 是让 AI 具备“行动力”的肢体,那 Skill 就像是它的“操作手册”或“行为指南”。举例来说,一个“篮球 Skill”可能定义了:何时拍球、何时跨步、何时起跳投篮——它将复杂动作拆解为可执行的步骤,并指导 AI 在特定情境下做出恰当响应。从这个角度看,Skill 确实具备类似 workflow 的结构化特征,但它又比传统 workflow 更具灵活性:它不仅描述“怎么做”,还隐含“为什么这么做”和“在什么条件下做”,更贴近人类专家的经验式决策逻辑。这里,我先采用智能问答,让CodeArts代码智能体理解我的意图,给出prompt如下:核心诉求:我想做一个能"自动做代码安全审计"的Skill,请帮我实现。 任务背景:我经常需要做代码审计,找出源码中的安全风险,生成漏洞报告。报告需要给出完整的source到sink的调用链路径,并提供漏洞触发PoC。我希望这个工具能一键搞定。 具体要求: 1. 仅针对Web框架,从HTTP请求入口出发作为source点 2. 支持正向审计:从source出发,完整分析代码逻辑,找调用链,理解业务,发现漏洞 3. 支持反向审计:通过规则梳理所有sink点,从sink往回找,最终必须能追溯到HTTP入口 4. 利用Claude LSP来做代码跳转和检索,而不是单纯搜索匹配 5. 最终漏洞必须可通过网络请求触发,需要完整调用链和PoC 6. 能组合多个漏洞/功能,构建完整攻击链让我意外的是,CodeArts代码智能体直接给出了整个skill的框架。本来只是想测试一下效果的,结果给我把文件都生成完了。。。但是由于此时采用的是智能问答,不会直接创建文件,所以我决定再把相同的提示词喂给智能体来试一遍。测试了几轮后,发现这里存在的一个问题就是目前Vscode端的CodeArts代码智能体似乎不支持skill能力,但是无妨,我们可以沿用skill的思路来进行仿建,这也是没有问题的,只是可能效果达不到那么理想罢了。将智能问答中的框架作为提示词,喂给智能体模式,给出prompt如下:请根据以下框架,帮我生成对应的skill: code-audit-skill/ ├── skill.json # Claude Skill配置 ├── src/ │ ├── analyzer/ # 核心分析引擎 │ │ ├── taint_analyzer.py # 污点分析器 │ │ ├── call_graph.py # 调用图构建 │ │ └── data_flow.py # 数据流分析 │ ├── sources/ # Source点定义 │ │ ├── web_sources.py # Web框架入口 │ │ └── source_rules.json │ ├── sinks/ # Sink点定义 │ │ ├── dangerous_sinks.py # 危险函数 │ │ └── sink_rules.json │ ├── sanitizers/ # 净化器定义 │ │ └── sanitizer_rules.py │ ├── chains/ # 攻击链构建 │ │ └── chain_builder.py │ ├── poc/ # PoC生成 │ │ └── poc_generator.py │ └── lsp_client.py # LSP客户端封装 ├── rules/ # 漏洞规则库 │ ├── sql_injection.json │ ├── xss.json │ ├── command_injection.json │ ├── ssrf.json │ ├── path_traversal.json │ └── deserialization.json └── templates/ # 报告模板 └── report_template.md执行完第一步,我们得到了一个框架,但是此时根据回复,CodeArts代码智能体给出了后续的优化方向,所以我们选择继续优化现有框架,给出prompt如下:请你根据下面几个方向进行进一步优化和改进: 1.完善调用链追踪算法:改进变量追踪和数据流分析 2.添加更多框架支持:Laravel、Symfony、ASP.NET 等 3.增强净化检测:更准确地识别输入净化操作经过五六分钟的等待,我们终于得到一个完整的项目了。但是这期间也碰到了一些问题,不知道是不是生成的内容太长了,服务器连接响应容易中断(几乎每次单个文件生成代码行数超过500行以上就会出现),这个问题目前已经提工单了。中断之后再连接回去,发现这一轮未完成的对话不会出现在历史记录中,所以目前来看,必须在一轮对话完成后才会记录进历史对话中。最终生成完成后,也给出了启用方式:# 运行完整示例 python examples/complete_example.py # 基础审计 python audit_engine.py ./target-project http://localhost:8080 # 高级审计 python src/analyzer/advanced_audit_engine.py ./target-project可以看到此时也不是完全版的,但是我们先测试一下效果,万一不错呢?执行导入模块随后我们以测试的案例来进行检测,发现还是能比较准确的识别到的我们自己编写了一个具有明显SQL注入漏洞的代码,可以看到通过调用这个skill也可以成功识别到该漏洞存在。测试快速审查模式,同样可以检查到安全漏洞问题3.2 历史漏洞测试对于特别显著的漏洞识别,普通大模型也可以做到,但是如果要去识别分析一些企业级的源码的利用链,普通的大模型其实就会存在一些不足了。这里,我们以某存在历史漏洞的企业源码为例,来验证该skill的识别能力。目前已知该源码是存在SQL注入漏洞,我们将这个文件打包上传至容器中,(顺便一说,这里上传步骤挺麻烦的,要是能在vscode端直接加个上传就好了),具体方式可以参考本地Xshell基于华为开发者空间云开发环境完成上传下载。我们先直接把整个源码包丢进去,看看效果,虽然也不指望能够一次就识别到全部漏洞。。。但是如果有一两个的话也可以给我们一些信心吧~审计完成之后,确实检测到了漏洞,我们人工跟进验证一下可以看到,这里确实是存在SQL注入的,严格上来说是二次注入。表名$name来自SHOW TABLES查询结果(数据库内部数据),但如果有攻击者能够在数据库中创建包含恶意SQL的表名(如users; DROP TABLE admin; --),此时使用字符串拼接会直接构造SQL语句:"OPTIMIZE TABLE {$name}" 和 "REPAIR TABLE {$name}"。Db::execute() 方法直接执行拼接的SQL,没有对表名进行转义或使用参数化查询。再来看第二处,$tables 来自 Server::getModuleTables($name),虽然 $name 参数经过了正则验证(/^[a-zA-Z0-9]+$/),但表名$table来自数据库查询结果,可能包含恶意构造的表名,当使用 "DROP TABLE IF EXISTS {$table}" 直接拼接表名到SQL语句中,攻击者可能通过其他方式(如插件安装SQL文件)在数据库中创建包含恶意代码的表名,然后在卸载时触发注入。所以此处也是属于二次注入。3.3 打包成web服务为了方便使用,实现上传源码即可返回审计结果,这里将其打包成web端,采用Prompt如下:请你帮我把这个代码审计助手打包成web端,实现能够上传代码包后直接输出审计结果。注意,此处也需要用到大模型,当用户提交源码时,需要让大模型按照这个skill来进行审计。等待大约5分钟左右。。。。最终的架构简化后的图所下:同时,也按照我的要求生成了一个env文件,能够让用户自行选择基础模型。我们本地执行一下,看看效果,果不其然,又报错了,我们再次把告警丢给智能体来排查。智能体执行后,成功修复了bug,启用后本地如下所示:我们丢个文件包进去试试效果:果不其然,又报错了,显示文件提取异常,我们再再次把报错丢给智能体来修复这里智能体也提到说,目前并没有兼容rar格式,所以我换成了zip格式来上传最终结果如下:我们再换个源码试试看:还是能成功检测到的!3.4 后续计划目前这个项目只是demo,覆盖了一些比较基础的漏洞检测,主要还是依靠基础模型的能力,在上下文检测上是能做到,但是还是需要人为的去进行一些控制和引导,无法实现准确的自动化识别。后续这个项目还是会不断优化的,期待未来开源的那一天!至此,基于华为开发者空间-云开发环境(容器)使用VS Code版CodeArts代码智能体高效构建自动化代码审计助手的案例已全部完成。四、反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!我正在参加【案例共创】【第9期】基于开发者空间-云开发环境(容器)+ CodeArts代码智能体完成应用开发/调试实践:https://bbs.huaweicloud.com/forum/thread-0212720434463368503-1-1.html?fid=557
-
一、概述1.1 适用对象个人开发者高校学生1.2 案例流程随着城市化进程加快与健康生活理念兴起,越来越多家庭希望通过园艺改善居住环境、缓解压力并实现部分食物自给。然而,多数爱好者缺乏系统的园艺知识,常因选种不当、养护失误导致种植失败,亟需专业、便捷的指导支持。本案例将基于华为开发者空间 - 云开发环境(容器)环境,使VS Code集成CodeArts Agent插件,搭建CodeArts代码智能体,结合Versatile Agent发布应用,通过与代码智能体对话的方式,不断调试纠正,最终生成一款智能家庭园艺知识导师平台,为用户提供个性化园艺指导。通过AI手段降低园艺门槛,帮助用户轻松打造家庭绿洲,同时传递绿色可持续的生活理念。CodeArts代码智能体是一款集代码大模型、AI IDE、Code Agent为一体的智能编码产品。一个理解项目需求,懂得编码之道,善用百器的实干派AI研发砖家,开启你的编码自动驾驶模式。华为开发者空间 - Versatile Agent平台是一个AI原生应用引擎,它提供了数据准备、模型选择/调优、知识工程、模型编排、应用部署、应用集成等能力。说明:VS Code远程连接云开发环境(容器);VS Code集成CodeArts Agent插件,搭建CodeArts代码智能体;构建Versatile Agent家庭园艺知识导师应用,获取API调用URL,获取IAM用户信息;与CodeArts代码智能体对话,输入URL以及IAM用户信息,快速构建家庭园艺知识导师;反复测试运行并将测试问题提交给CodeArts代码智能体,优化完善构建家庭园艺知识导师平台。1.3 资源总览本案例预计花费1元。资源名称规格单价(元)时长(分钟)华为开发者空间开发平台 - 云开发环境(容器)鲲鹏通用计算增强型 kc1 | 4vCPUs | 8G | HCE免费120CodeArts代码智能体系统标配免费120华为开发者空间 - Versatile Agent平台系统标配免费120华为开发者空间 - DeepSeek-R1/V3千万Tokens代金券DeepSeek-R1-64K/DeepSeek-V3-64K1.00120 二、环境和资源准备2.1 基于云开发环境(容器)搭建CodeArts代码智能体参考案例《基于华为开发者空间 - 云开发环境(容器)搭建CodeArts代码智能体》中的“二、VS Code远程连接云开发环境(容器)”和“三、搭建CodeArts代码智能体”步骤,完成VS Code远程连接云开发环境(容器)并搭建CodeArts代码智能体。2.2 获取IAM用户信息参考案例《华为云IAM用户创建指导手册》完成IAM用户账号的创建与登录,最后IAM用户名、账号名、项目ID以及IAM账户密码等关键字段信息。注:本案例使用华北-北京四对应的项目ID。在创建用户时,访问方式勾选编程访问。三、构建家庭园艺知识导师平台3.1 基于Versatile Agent构建家庭园艺知识导师应用参考案例《华为云MaaS平台商用大模型Tokens领取使用指导》中“二、 领取MaaS平台商用大模型Tokens”和“3.1 Versatile Agent配置MaaS平台商用大模型”内容完成MaaS平台商用大模型Tokens领取和Versatile Agent配置。在华为开发者空间 - Versatile Agent开发平台,选择智能体 > 单智能体应用页签,点创建应用。进入创建应用界面,参考如下样例创建“家庭园艺知识导师”应用名称:家庭园艺知识导师描述:专为家庭园艺新手设计的植物知识科普助手,通过通俗易懂的讲解方式,帮助用户掌握基础植物学知识、常见养护误区和家庭环境适配技巧,助力打造健康家居绿植生态。设置模型为前面步骤中设置的MaaS平台预置商用模型DeepSeek-R1,调度模式选择模型优先。然后参考如下样例配置应用提示词,并在技能栏添加心知天气(限时体验)/天气查询插件。## 人设 -**角色与特性**: 1. 扮演拥有10年家庭园艺经验的植物学家角色,擅长将专业术语转化为生活化表达 2. 角色背景设定为都市阳台种植达人,熟悉各类家居绿植的培育要点 3. 核心特性是"耐心引导+即时纠错",主动预判新手常见认知盲区 -**任务描述**: 1. 解决家庭园艺场景中的知识断层问题 2. 通过每日知识点推送+场景化问答,帮助用户在3个月内建立系统的家庭植物养护认知体系 3. 降低新手因知识不足导致的植物死亡率,提升家居绿植存活率至85%以上 ## 核心技能 1. **知识图谱构建**:将植物学知识分解为「光照-水分-土壤-病虫害」四大模块,采用渐进式教学法 2. **场景化诊断**:根据用户提供的家庭环境参数(如阳台朝向、房间湿度等),推荐适配植物品种 3. **误区预警系统**:主动识别用户描述中的养护误区,如"多浇水=爱护植物"等常见错误观念 4. **视觉化教学**:通过文字描述构建三维空间想象,帮助用户理解植物生长原理 ## 规则 1. 每次回答需包含「知识要点」「操作演示」「错误案例」三个模块 2. 优先使用类比手法解释专业概念(如将光合作用比作"植物吃饭") 3. 涉及具体操作时,必须提供可量化的标准(如"浇水至盆底微微渗水即可") 4. 当用户提问超出家庭园艺范畴时,应引导回核心场景并提供替代方案设置开场白及推荐问题。开场白: 大家好呀!欢迎来到家庭园艺小课堂!我是您的植物小管家,无论想了解基础养护知识、避开新手常见误区,还是为客厅阳台挑选合适绿植,我都会用大白话手把手教您。让我们从这片绿叶开始,打造属于您的绿色小天地吧! 推荐问题: 如何快速掌握家庭园艺的基础植物学知识? 哪些常见的养护误区容易导致家居植物死亡? 如何根据不同的家庭环境选择适合的绿植品种?完成上述配置后,输入测试问题:办公室工位适合养殖什么绿植?如上图“家庭园艺知识导师”Agent应用测试通过,点页面右上角发布。进入发布管理页面,网页栏点发布,发布完后的状态如下。发布完成之后,选择API调用页签,在此处可获取API调用的url。3.2 使用CodeArts代码智能体构建构建家庭园艺知识导师平台在VS Code中打开云开发环境(容器)环境的CodeArts代码智能体,在智能体对话框中输入如下指令:使用python生成一个通过web页面可视化的"家庭园艺知识导师"应用,为园艺新手提供植物知识科普。AI部分通过被授权华为IAM用户账号,调用创建Versatile Agent的url实现,具体参数如下: MAIN_USER:替换成 步骤“2.2 获取IAM用户信息”中获取的账号名 IAM_USER:替换成 步骤“2.2 获取IAM用户信息”中获取的IAM用户名 PROJECT_ID:替换成 步骤“2.2 获取IAM用户信息”中获取的项目ID IAM_PASSWORD:替换成 步骤“2.2 获取IAM用户信息”中获取的IAM账户密码 url:替换成 步骤“3.1 基于Versatile Agent构建家庭园艺知识导师应用”最后获取到的API调用的url此时可以看到,智能体开始自动构建任务步骤:生成开发方案、编写代码与安装依赖,全程不需要操作。等待CodeArts代码智能体自动完成工程创建及代码编写,参考项目概览运行程序。测试程序运行过程中,日志输出:127.0.0.1 - - [21/Jan/2026 15:28:09] "POST /api/chat HTTP/1.1" 500 ,将问题抛回给CodeArts代码智能体,智能体自动调整优化代码。CodeArts代码智能体自动分析修改bug,等待bug修改完成,再次测试运行程序。测试程序运行过程中,日志输出正常,页面端家庭园艺知识导师平台答复出现乱码问题,再次提交给CodeArts代码智能体优化。智能体自动分析乱码问题,并进行修复。修复完成后再次启动家庭园艺知识导师平台,输入问题:办公室工位适合养殖哪些绿植?家庭园艺知识导师平台分析并正常答复。注:因为家庭园艺知识导师平台是Agent自动生成的,每次提问所设计生成的代码及最后的运行结果均存在出入,开发者可根据自己的需求,调教模型生成自己想要的结果。至此,基于华为开发者空间 - 云开发环境(容器)搭建CodeArts代码智能体,构建Versatile Agent家庭园艺知识导师案例结束,各位小伙伴快来华为开发者空间体验吧。反馈改进建议如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签