-
我想要修改某个原始库文件,谢谢!
-
从传统MES(制造执行系统)向AI智能MES转型的过程,绝非简单的“软件升级”或“模块叠加”,而是一场涉及数据架构、算法模型、业务逻辑乃至组织文化的深层重构。作为产品经理和技术架构师,我们必须清醒地认识到,这一转型面临着以下五大核心技术难点: 1、数据治理的“深水区”:多源异构与质量困境AI模型的效能取决于数据质量(Garbage In, Garbage Out)。传统工厂的数据环境往往是AI落地的最大阻碍。多源异构数据融合难:工厂内设备品牌繁杂(西-门-子、三-菱、欧-姆-龙等),通信协议不一(OPC UA, Modbus, Profinet等),且存在大量非结构化数据(如质检图片、维修录音、纸质单据扫描件)。将这些“方言”统一翻译成AI可理解的标准化语言,需要构建极其复杂的工业数据中台。数据孤岛与断点:传统MES往往与ERP、PLM、WMS等系统割裂,数据流转存在断点。AI需要全链路数据(从订单到交付)才能进行全局优化,打通这些孤岛涉及巨大的接口改造成本。样本稀缺与不平衡:这是工业AI特有的痛点。正常生产数据海量,但故障数据、缺陷样本极少(“长尾分布”)。缺乏足够的负样本训练,导致AI模型在预测故障或缺陷时准确率低下。需依赖合成数据生成或小样本学习技术来突破。2、实时性与算力的博弈:云边协同架构挑战工业生产对延迟极其敏-感(毫秒级甚至微秒级),而大模型推理通常耗时较长。云端训练的局限:将海量数据上传至云端训练大模型可行,但在生产现场,网络波动或带宽限制可能导致指令下发延迟,引发生产事故。边缘侧算力瓶颈:要在设备端(Edge)部署轻量化的AI模型以实现实时决策(如实时视觉质检、毫-秒-级参数调整),受限于工控机或嵌入式设备的算力与功耗,模型必须进行极致的剪枝、量化与蒸馏,这往往以牺牲部分精度为代价。云边端协同难:如何设计一套机制,让云端负责重模型训练与全局优化,边缘端负责轻模型推理与实时控制,并实现模型的无缝下发与版本管理,是架构设计的核心难点。3、算法模型的“黑盒”信任危机:可解释性(XAI)缺失在传统MES中,规则是显性的(If-Then),工人和管理者清楚知道系统为何这样执行。而深度学习模型往往是“黑盒”。决策归因难:当AI建议“停机维护”或“调整工艺参数”时,如果无法给出令人信服的理由(例如:“因为振动频谱在200Hz处出现异常峰值,且与历史故障模式匹配度95%”),一线操作人员不敢执行,管理者不敢拍板。责任界定模糊:若AI决策导致批量报废或设备损坏,责任由谁承担?缺乏可解释性人工智能(XAI)技术的支持,使得AI-MES在关键工序的落地受阻。解决方案方向:必须引入因果推断(Causal Inference)和知识图谱,将AI的概率推理与专家的规则逻辑相结合,提供“决策溯源”功能。4、业务场景的碎片化与泛化难题:从“单点智能”到“全局最优”工业场景高度定制化,“千厂千面”,难以像互联网产品那样通过一套代码通吃。场景碎片化:注塑、SMT、组装、化工等不同行业的工艺逻辑差异巨大,甚至同一行业不同产线的参数体系都不同。训练一个通用的“工业大模型”难度极高,往往需要针对特定场景进行大量的微调(Fine-tuning)。局部最优陷阱:传统AI应用往往局限于单点(如仅做质检或仅做排产)。要实现全局优化(如同时平衡交期、库存、能耗、设备寿命),需要构建多目标强化学习(Multi-objective RL)模型,其状态空间巨大,收敛困难,且容易陷入局部最优解。动态适应性差:工厂环境是动态变化的(换线、换人、换料)。传统模型一旦训练完成,面对新环境往往失效,需要具备在线学习(Online Learning)能力,但这又带来了模型稳定性风险(灾难性遗忘)。5、遗留系统的兼容与重构成本:技术债务沉重大多数制造企业并非从零开始,而是在运行了10年甚至20年的旧系统上叠加AI。架构耦合度高:传统MES多为单体架构(Monolithic),代码耦合严重,牵一发而动全身。要将AI模块(如微服务化的Agent)嵌入其中,往往需要对底层数据库、业务逻辑进行伤筋动骨的重构。硬件老化:许多老旧设备不具备数据采集接口,或控制器算力不足以支撑边缘AI。改造这些“哑设备”需要加装传感器、网关甚至更换控制器,硬件投入成本高昂。人才断层:既懂OT(运营技术/工艺)又懂IT(信息技术)还懂AI算法的复合型人才极度匮乏。产品团队往往难以准确理解工艺痛点,导致开发出的AI功能“叫好不叫座”。 总结与应对策略: 难点维度核心挑战万界星空科技应对策略关键词数据层脏乱差、样本少、协议杂工业数据中台、合成数据、多模态融合架构层延迟敏感、算力受限云边端协同、模型量化、轻量化部署算法层黑盒决策、信任缺失可解释性AI (XAI)应用层场景碎片、泛化难行业垂类大模型、低代码配置、在线学习工程层legacy系统、硬件老旧微服务重构、软硬一体化改造、渐进式替换 结论:传统MES向AI智能MES的转型,本质上是从“流程驱动”向“数据+算法驱动”的范式转移。这不仅是技术的升级,更是对工业知识数字化沉淀能力的考验。成功的关键不在于追求最先进的算法,而在于能否在真实的工业约束下(实时性、可靠性、可解释性)。对于企业而言,这是一场持久战,需要“小步快跑,场景先行”,在解决具体痛点中逐步完成智能化进化。
-
pycharm toolkit插件连接notebook,没有华东2区域吗 gitee上也没有还有就是 pycharm远程浏览不能显示/home目录下的文件吗 一定要使用插件吗
-
学术助手部署流程总结一、背景与需求1.1 项目背景本项目为研究生群体打造一个自动化的学术助手系统,核心需求包括:研究方向定制:每个学生可设定个性化的研究方向、偏好设置文献自动获取:支持设定文献来源,每日自动下载新文献智能总结推送:按自定义模板或提示词对文献进行总结,自动推送到学生完全独立隔离:每个学生的助手实例完全独立,互不影响弹性扩展:学生人数可随时增减,便于管理1.2 技术选型底层框架:nanobot(轻量级 AI 助手框架)容器化:Docker + Docker Compose消息通道:飞书(Feishu)WebSocket 长连接大模型:通过 OpenRouter 调用 kimi-k2.5(成本可控)部署环境:Ubuntu 云服务器(32GB 内存)1.3 核心架构原则Parse error on line 7: ...A[/root/.nanobot独立挂载] instB --> data -----------------------^ Expecting 'SPACE', 'GRAPH', 'DIR', 'subgraph', 'end', 'AMP', 'ALPHA', 'COLON', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'START_LINK', 'STYLE', 'LINKSTYLE', 'CLASSDEF', 'CLASS', 'CLICK', 'DOWN', 'UP', 'DEFAULT', 'NUM', 'COMMA', 'MINUS', 'BRKT', 'DOT', 'PCT', 'TAGSTART', 'PUNCTUATION', 'UNICODE_TEXT', 'PLUS', 'EQUALS', 'MULT', 'UNDERSCORE', got 'SQE'关键设计:一个学生 = 一个独立 Docker 容器一个容器 = 一个独立 /root/.nanobot 数据目录共享镜像,不共享运行态数据通过模板和注册表管理实例,不靠手工复制二、部署过程2.1 环境准备2.1.1 Docker 安装使用 Docker 官方 Ubuntu APT 源安装:sudo apt update sudo apt install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL ... | sudo tee /etc/apt/keyrings/docker.asc > /dev/null sudo chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] ... $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin验证安装:docker --version docker compose version将当前用户加入 docker 组:sudo usermod -aG docker claw_manager newgrp docker2.1.2 代码准备克隆 nanobot 仓库:cd /home/claw_manager/software git clone ...构建共享镜像:cd /home/claw_manager/software/nanobot docker build -t nanobot:local . 2.1.3 目录结构/home/claw_manager/ ├── software/nanobot/ # nanobot 源码 ├── nanobot-manager/ # 管理目录 │ ├── students.yml # 学生注册表 │ ├── templates/ # 渲染模板 │ │ ├── compose.student.yml │ │ ├── config.student.json │ │ ├── RESEARCH_PROFILE.student.md │ │ ├── LITERATURE_SOURCES.student.md │ │ ├── SUMMARY_TEMPLATE.student.md │ │ └── HEARTBEAT.student.md │ └── scripts/ │ └── studentctl # 管理脚本 ├── nanobot-instances/ # 学生实例目录 │ ├── student001/ │ │ ├── .env │ │ ├── compose.yml │ │ └── .nanobot/ # 实际挂载到容器的目录 │ │ ├── config.json │ │ └── workspace/ │ └── student002/ └── nanobot-archives/ # 归档目录2.2 飞书应用配置每个学生需要独立的飞书应用:访问 飞书开放平台创建企业应用启用 Bot 能力配置权限:im:message(发送消息)im:message.p2p_msg:readonly(接收单聊消息)开启事件订阅:事件:im.message.receive_v1模式:Long Connection(长连接)发布应用版本获取 App ID 和 App Secret 供后续配置使用。2.3 学生实例部署2.3.1 一键式部署(推荐)/home/claw_manager/nanobot-manager/scripts/studentctl provision student001 \ --name "张三" \ --research-direction "多模态检索与学术问答" \ --feishu-app-id "cli_xxx" \ --feishu-app-secret "xxx" \ --host-port 18891 \ --preference "默认使用中文输出" \ --preference "优先输出结构化总结" \ --literature-source "arXiv cs.IR" \ --literature-source "ACL Anthology" \ --summary-item "1. 研究问题" \ --summary-item "2. 方法概述" \ --summary-item "3. 主要结果" \ --summary-item "4. 对当前课题的启发" 2.3.2 分步部署编辑注册表后渲染并启动:# 渲染实例配置 /home/claw_manager/nanobot-manager/scripts/studentctl render student001 # 启动容器 /home/claw_manager/nanobot-manager/scripts/studentctl up student0012.4 验证部署查看运行状态:/home/claw_manager/nanobot-manager/scripts/studentctl status student001查看日志:/home/claw_manager/nanobot-manager/scripts/studentctl logs student001 --tail 50 成功标志:容器状态显示 Up日志中出现 Feishu bot started with WebSocket long connection日志中出现 connected to wss...三、具体实现细节3.1 核心命令汇总3.1.1 学生生命周期管理# 列出现有学生 /home/claw_manager/nanobot-manager/scripts/studentctl list # 新增/更新学生并启动 /home/claw_manager/nanobot-manager/scripts/studentctl provision <student_id> \ --name "姓名" \ --research-direction "方向" \ --feishu-app-id "cli_xxx" \ --feishu-app-secret "xxx" # 查看状态 /home/claw_manager/nanobot-manager/scripts/studentctl status <student_id> # 查看日志 /home/claw_manager/nanobot-manager/scripts/studentctl logs <student_id> --tail 100 # 重启实例 /home/claw_manager/nanobot-manager/scripts/studentctl restart <student_id> # 停止实例 /home/claw_manager/nanobot-manager/scripts/studentctl stop <student_id> # 停用并归档(保留数据) /home/claw_manager/nanobot-manager/scripts/studentctl deprovision <student_id> \ --archive \ --remove-from-registry # 停用并彻底删除 /home/claw_manager/nanobot-manager/scripts/studentctl deprovision <student_id> \ --archive \ --delete-files \ --remove-from-registry # 绑定特定飞书用户(收紧权限) /home/claw_manager/nanobot-manager/scripts/studentctl bind-feishu-user <student_id> <open_id> 3.1.2 Docker 直接操作(备用)# 使用 docker compose 操作单个学生 cd /home/claw_manager/nanobot-instances/student001 docker compose up -d # 启动 docker compose down # 停止 docker compose logs -f # 查看日志 # 查看所有容器 sg docker -c 'docker ps -a' 3.2 权限管控机制3.2.1 容器权限隔离学生间隔离:每个学生拥有独立的 Docker 容器容器内运行用户为 root(默认)挂载目录隔离:/home/claw_manager/nanobot-instances/<student_id>/.nanobot文件权限问题:容器以 root 写入的文件在宿主机显示为 root:root,可能导致宿主机用户无法直接删除。解决方案:临时方案(已使用):sudo chown -R claw_manager:claw_manager /home/claw_manager/nanobot-instances/<student_id> 容器方式清理(推荐):# 使用临时容器以 root 身份清理挂载目录 sg docker -c 'docker run --rm -v /home/claw_manager/nanobot-instances/<student_id>:/target alpine sh -c "rm -rf /target/* /target/.[!.]* /target/..?*"' 3.2.2 Feishu 访问控制第一层隔离:每个学生使用独立的飞书应用(app_id + app_secret)第二层隔离(可选):绑定特定用户 open_id# 先让学生活动一次,从日志获取其 open_id # 然后执行绑定 /home/claw_manager/nanobot-manager/scripts/studentctl bind-feishu-user student001 ou_xxx /home/claw_manager/nanobot-manager/scripts/studentctl restart student0013.2.3 文件访问限制每个学生的 config.json 中设置了:{ "tools": { "restrictToWorkspace": true } } 这限制了 agent 的文件操作只能在其 workspace 目录内进行。3.3 配置管理3.3.1 两层配置结构管理层源配置(students.yml):学生元信息(ID、姓名、研究方向)Feishu 凭据文献来源、总结模板用于批量管理和重新渲染实例运行时配置(nanobot-instances/<id>/.nanobot/config.json):实际生效的 LLM 配置Feishu 连接参数容器直接读取此配置运行3.3.2 敏感信息处理当前设计将凭据统一存储在 students.yml 中,便于管理但集中存储风险较高。生产环境建议:将敏感信息(api_key、app_secret)移至各自实例目录的独立文件注册表仅保留元信息脚本按需读取并渲染3.4 资源规划单实例配置建议:CPU:0.5-1 核内存:512MB-1GB端口:每个学生独立端口(从 18891 开始递增)实际瓶颈:模型 API 调用成本(而非容器资源)文献下载并发数长期日志和数据累积3.5 故障排查3.5.1 常见问题问题1:端口被占用Error: address already in use解决:更换端口或停止占用该端口的服务问题2:Feishu 连接失败app_id is invalid解决:检查 app_id 和 app_secret 是否正确,确认飞书应用已发布问题3:权限拒绝(删除实例时)PermissionError: [Errno 13] Permission denied解决:# 方法1:修改属主 sudo chown -R claw_manager:claw_manager /home/claw_manager/nanobot-instances/<student_id> # 方法2:使用容器清理 sg docker -c 'docker run --rm -v /home/claw_manager/nanobot-instances/<student_id>:/target alpine sh -c "rm -rf /target/*"' 3.5.2 日志查看# 查看最近100行 /home/claw_manager/nanobot-manager/scripts/studentctl logs <student_id> --tail 100 # 实时跟踪 /home/claw_manager/nanobot-manager/scripts/studentctl logs <student_id> -f3.6 运维脚本增强当前 studentctl 已支持:Docker 组权限自动检测(sg docker 自动切换)一键增删学生自动归档模板渲染待增强项:删除时自动检测 root 文件并自动清理敏感信息分离存储批量操作(增删多个学生)四、关键经验总结4.1 架构选择理由为什么选择「一学生一容器」而非「一容器多学生」:配置完全隔离,不会相互污染会话和记忆天然分离定时任务互不干扰单个实例异常不影响他人停用某个学生干净彻底为什么使用 Feishu 而非其他通道:WebSocket 长连接模式,无需公网 IP 和 webhook配置简单,仅需 app_id + app_secret国内访问稳定支持消息推送和接收4.2 成本优化模型选择:使用 openrouter/moonshotai/kimi-k2.5 替代 claude-opus-4-5,成本大幅降低资源共享:所有学生共享同一个 nanobot:local 镜像,减少镜像存储轻量部署:每个容器仅运行 nanobot gateway,无额外数据库/消息队列4.3 后续扩展方向底座稳定后可继续完善:文献自动下载脚本(宿主机挂载到容器调用)每日定时任务配置(HEARTBEAT.md + cron)自定义总结模板优化研究数据长期归档策略附录:快速参考卡# ========== 部署 ========== # 1. 安装 Docker(见上文) # 2. 构建镜像 cd /home/claw_manager/software/nanobot && docker build -t nanobot:local . # 3. 部署学生实例 /home/claw_manager/nanobot-manager/scripts/studentctl provision student001 \ --name "姓名" --research-direction "方向" \ --feishu-app-id "cli_xxx" --feishu-app-secret "xxx" # ========== 日常运维 ========== # 查看状态 studentctl status student001 # 查看日志 studentctl logs student001 --tail 50 # 重启 studentctl restart student001 # ========== 删除学生 ========== # 温和删除(归档保留) studentctl deprovision student001 --archive --remove-from-registry # 彻底删除(归档+删文件+移除注册) studentctl deprovision student001 --archive --delete-files --remove-from-registry # 解决权限问题后重新删除 sudo chown -R claw_manager:claw_manager /home/claw_manager/nanobot-instances/student001 studentctl deprovision student001 --archive --delete-files --remove-from-registry
-
第一次用这个,怎么问个问题就这样了,是有什么地方配置我没有注意到吗?(一键安装的)
-
今天在官方论坛看到有活动(华为云码道(CodeArts)代码智能体春节智能编码活动),🔀就简单的来参与下。活动地址是:https://bbs.huaweicloud.com/forum/thread-0212720634766719511-1-1.html大家有兴趣的可以一起参与~1.首先我们现在官网下载华为云码道(CodeArts)代码智能体,下载地址在此2.完成下载安装后,我们打开程序进行授权登录,进入到主页,然后我们在本地选择创建一个文件目录,作为接下来我们创建福马打地鼠游戏的根目录。(这里相信大家都会,我就不赘述了)3.接下来我们在右下角对话框选择智能体和模型()大家可以自行选择,输入相关的需求,然后等待即可,我的需求描述如下:帮我根据以下需求完成单机游戏开发:以下是对“福马打地鼠”游戏功能的具体方案: ### 主体描述优化 #### 1. 锤子与升级系统 - **锤子设计**:将锤子的形象设计为 2026 年生肖马的卡通形象,并且可以根据不同的等级进行外观变化。例如,初始的马锤子可能造型比较简单,颜色朴素;随着等级提升,锤子上可以添加更多的装饰,如金色的花纹、飘动的红绸带等,让玩家能直观感受到锤子的升级。 - **升级规则细化**:除了根据打地鼠的成绩来升级锤子,还可以设定具体的分数段。比如,达到 100 分可以解锁二级马锤子,它的击打范围会比初始锤子稍大;达到 300 分解锁三级马锤子,击打速度会变快。并且每次升级锤子时,界面会弹出一个动画窗口,展示锤子的新外观和升级后的属性提升。 #### 2. 地鼠种类与特点 - **增加地鼠种类**:设计不同类型的地鼠,每种地鼠有不同的特性和分值。例如,普通地鼠出现频率高,分值较低;而金色地鼠出现概率低,但击打后能获得高额分数;还有一种敏捷地鼠,它出现的时间更短,移动速度更快,击打难度大,但分值也较高。 - **地鼠行为逻辑**:地鼠出现的规律可以更加复杂。比如,在游戏前期,地鼠可能是单个随机出现;随着游戏进程推进,会出现成群的地鼠同时从多个地洞冒出,增加游戏的挑战性。 ### 年味元素融入优化 #### 1. 场景细节丰富 - **庙会场景拓展**:除了地洞周围的春联和中国结,还可以在场景中添加更多的春节元素。比如,远处有舞龙舞狮的表演,天空中时不时有烟花绽放,地面上有飘落的红色纸屑。 - **互动元素增加**:在庙会场景中设置一些互动道具,如可以点击的红包,玩家点击后会获得额外的分数或道具奖励;还有旋转的祈福风车,玩家经过时风车会转动并发出欢快的声音。 #### 2. 音效和特效优化 - **音效多样化**:除了“噼里啪啦”的鞭炮声和“恭喜发财”的语音,还可以增加更多的春节音效。比如,地鼠被击打时发出“哎哟”的叫声,同时伴随着铜钱碰撞的声音;当玩家获得高分时,会有欢快的锣鼓声响起。 - **特效升级**:金币特效可以更加华丽,例如金币带有闪烁的光芒,并且有不同的颜色,如金色、银色等。当玩家连续击打多个地鼠时,会触发连击特效,屏幕上会出现金色的数字显示连击次数,同时有彩带飘落。 ### 开发思路优化 #### 1. 前端界面优化 - **响应式设计**:确保游戏界面在不同的设备上都能完美显示,无论是电脑、平板还是手机。可以使用媒体查询和弹性布局来实现响应式设计,让玩家在各种设备上都能有良好的游戏体验。 - **动画效果增强**:为地鼠的出现和消失、锤子的击打动作添加更流畅的动画效果。例如,地鼠从地洞中冒出来时可以有一个向上的弹跳动画,锤子击打地鼠时会有一个短暂的震动效果。 #### 2. 后端逻辑优化 - **数据存储与统计**:增加数据存储功能,记录玩家的游戏成绩、锤子等级、最高连击数等信息。可以使用本地存储或简单的数据库来实现数据的存储和读取,方便玩家查看自己的游戏记录和进步情况。 - **难度动态调整**:根据玩家的游戏表现动态调整游戏难度。如果玩家连续获得高分,地鼠的出现速度和数量会相应增加;如果玩家得分较低,难度会适当降低,让游戏更具挑战性和趣味性。4.接下来就是等待程序生成了。(这里程序生成的时候需要授权下自动操作,生成时间没那么快,大家还是需要耐心等待下)。完成相关代码生成后,我们就进行相关程序的测试体验。程序首次生成各大界面和功能都有了。但是在体验上会出现BUG,比如打地鼠打到一半地鼠突然不出现了。地鼠没有躲在地底下等。这可能和我的需求描述也有关系,也可能是模型的问题,这里可以进行优化。下面看下界面效果图吧:5.下面是代码页面:总的来说,轻松上手,但是需求描述上还是得具体点。我进行了多轮会话才修复存在的BUG,希望模型能够越来越强大。欢迎大家一起体验~
-
最开始申请华为AI百校计划时是2025年底12月底通过的,申请到的优惠券必须当年内下发,但是下发后只有三个月有效期;原计划是使用一年,但现在只有三个月的时间。这种情况怎么办呢?
-
问题是这样的,我想在结束节点中输出我的结束节点的输入参数,比如说输入参数count 引用的是上一个大模型节点的count参数,我想在结束的输出参数中引用count,但是引用找不到count,这是为什么?
-
我是在旧版的modelarts上做的,先用notebook训练后上传至OBS,然后把它上传到了“我的模型“/创建Ai新应用之后想要在在线服务中部署,但是选择公共资源池实例规格那里的下拉框一直是空的,点击创建就显示节点资源已售罄。然后创建专属资源池,实例规格那里也是空的,不知道怎么办了希望老师尽快帮忙解决一下!
-
使用命令“ASCEND_DEVICE_ID=2 python main.py“,仍然采用0卡训练
-
使用华为云码道(CodeArts)代码智能体开发 Flutter-OH 退出插件全流程一、背景介绍随着鸿蒙系统(HarmonyOS)的快速发展,越来越多的 Flutter 插件需要适配 OpenHarmony 平台。本文将详细介绍如何使用华为云码道(CodeArts)代码智能体,为现有的 Flutter 插件添加 OpenHarmony 平台支持。以 flutter_exit_app 插件为例,该插件提供了跨平台的应用退出功能,原本支持 Android 和 iOS 平台,我们需要为其添加 OpenHarmony 平台的支持。二、开发环境在开始之前,请确保已准备好以下开发环境:组件版本Flutter3.35.8-ohos-0.0.2HarmonyOS SDK5.1.0(18)DevEco Studio6.1.0测试设备 ROM6.1.0.28(SP12)三、项目结构分析3.1 原有项目结构flutter_exit_app/ ├── lib/ │ └── flutter_exit_app.dart # Dart 端接口 ├── android/ # Android 平台实现 ├── ios/ # iOS 平台实现 ├── example/ # 示例应用 └── pubspec.yaml # 项目配置3.2 需要添加的 OpenHarmony 结构flutter_exit_app/ ├── ohos/ # OpenHarmony 平台实现 │ ├── src/main/ │ │ ├── ets/components/plugin/ │ │ │ └── FlutterExitAppPlugin.ets # 插件核心实现 │ │ └── module.json5 │ ├── index.ets │ ├── oh-package.json5 │ └── build-profile.json5 ├── example/ohos/ # 示例应用 OpenHarmony 工程 └── README.OpenHarmony.md # OpenHarmony 平台文档四、开发流程4.1 第一步:分析需求下发指令flutter create . --template=plugin --platforms=ohos ,初步生成4.1 第二步:运行调试报错处理向 CodeArts 代码智能体描述需求:点击退出按钮,应用没有正确退出,请检查 FlutterExitAppPlugin.ets 文件代码智能体会自动分析问题并给出解决方案。4.3 第三步:理解 Flutter 与 OpenHarmony 通信机制Flutter 与原生平台的通信通过 MethodChannel 实现:Dart 端(Flutter):static Future<bool> exitApp({bool iosForceExit = false}) async { try { final String? res = await channel.invokeMethod<String>( ChannelName.exitApp, // 'com.laoitdev.exit.app' <String, dynamic>{"killIosProcess": iosForceExit}, ); return res == "Done"; } on PlatformException { return false; } } OpenHarmony 端(ArkTS):onMethodCall(call: MethodCall, result: MethodResult): void { if (call.method == "com.laoitdev.exit.app") { // 处理退出逻辑 } } 4.4 第四步:实现插件核心功能问题诊断初次实现时,代码智能体发现了一个关键问题:// 错误实现 this.context = binding.getApplicationContext() as common.UIAbilityContextgetApplicationContext() 返回的是 common.Context 类型,而不是 UIAbilityContext。只有 UIAbilityContext 才有 terminateSelf() 方法。正确实现方案代码智能体建议使用 AbilityAware 接口来正确获取 UIAbilityContext:import { FlutterPlugin, FlutterPluginBinding, MethodCall, MethodCallHandler, MethodChannel, MethodResult, } from '@ohos/flutter_ohos'; import { AbilityAware, AbilityPluginBinding } from '@ohos/flutter_ohos'; import { common, UIAbility } from '@kit.AbilityKit'; import { BusinessError } from '@kit.BasicServicesKit'; export default class FlutterExitAppPlugin implements FlutterPlugin, MethodCallHandler, AbilityAware { private channel: MethodChannel | null = null; private static _uiContext: common.UIAbilityContext | null = null; // 通过 AbilityAware 接口获取 UIAbilityContext onAttachedToAbility(binding: AbilityPluginBinding): void { FlutterExitAppPlugin._uiContext = binding.getAbility().context; } onMethodCall(call: MethodCall, result: MethodResult): void { if (call.method == "com.laoitdev.exit.app") { if (FlutterExitAppPlugin._uiContext) { try { FlutterExitAppPlugin._uiContext.terminateSelf() .then(() => { console.info('terminateSelf succeed'); result.success("Done"); }) .catch((err: BusinessError) => { console.error(`terminateSelf failed: ${err.message}`); result.error("TERMINATE_FAILED", err.message, null); }); } catch (err) { result.error("TERMINATE_ERROR", `Error: ${err.message}`, null); } } else { result.error("CONTEXT_NULL", "UIContext is null", null); } } } } 4.5 第五步:配置 pubspec.yaml在 pubspec.yaml 中添加 OpenHarmony 平台配置:flutter: plugin: platforms: android: package: com.laoitdev.lib.exit.app.flutter_exit_app pluginClass: FlutterExitAppPlugin ios: pluginClass: FlutterExitAppPlugin ohos: pluginClass: FlutterExitAppPlugin package: com.laoitdev.lib.exit.app.flutter_exit_app4.6 第六步:创建 README 文档使用代码智能体生成 OpenHarmony 平台的 README 文档:README.OpenHarmony_CN.md(中文版):## 1. 安装与使用 dependencies: flutter_exit_app: git: url: "git@gitcode.com:oh-flutter/flutter_exit_app.git" path: "." ## 2. 兼容性 - Flutter: 3.35.8-ohos-0.0.2 - SDK: 5.1.0(18) - IDE: DevEco Studio: 6.1.0 - ROM: 6.1.0.28(SP12) ## 3. API | 方法 | 说明 | | --- | --- | | `FlutterExitApp.exitApp()` | 退出应用 | | `FlutterExitApp.platformVersion` | 获取平台版本 | 4.7 第七步:获取环境信息代码智能体可以自动获取本地环境信息:# 获取 Flutter 版本 flutter --version # 输出: Flutter 3.35.8-ohos-0.0.2 # 获取 DevEco Studio 版本 defaults read /Applications/DevEco-Studio.app/Contents/Info CFBundleShortVersionString # 输出: 6.1.0 # 获取设备 ROM 版本 hdc shell param get const.product.software.version # 输出: ALN-AL00 6.1.0.28(SP12C00E28R4P7log) 4.8 第八步:提交代码使用代码智能体执行 Git 操作:# 添加文件 git add README.OpenHarmony_CN.md README.OpenHarmony.md pubspec.yaml ohos example/ohos # 提交 git commit -m "feat: add OpenHarmony platform support" # 推送 git push origin main五、关键技术点总结5.1 AbilityAware 接口AbilityAware 是 OpenHarmony Flutter 插件开发中的重要接口,用于监听 Ability 生命周期:interface AbilityAware { onAttachedToAbility(binding: AbilityPluginBinding): void; onDetachedFromAbility(): void; } 通过这个接口可以安全地获取 UIAbilityContext,避免类型转换错误。5.2 terminateSelf() 方法terminateSelf() 是 OpenHarmony 中关闭 Ability 的标准方法:abilityContext.terminateSelf() .then(() => { // 成功关闭 }) .catch((err: BusinessError) => { // 处理错误 }); 5.3 MethodChannel 通信Flutter 与原生平台的通信流程:Flutter (Dart) ↓ invokeMethod() MethodChannel ↓ onMethodCall() OpenHarmony (ArkTS) ↓ terminateSelf() 系统关闭应用六、CodeArts 代码智能体的优势6.1 智能问题诊断代码智能体能够快速定位问题根源,例如:识别 Context 类型转换错误发现未初始化的变量检测 API 使用不当6.2 自动化操作代码智能体可以执行多种自动化操作:获取系统环境信息执行 Git 命令生成文档模板代码重构6.3 知识库支持代码智能体内置了丰富的 OpenHarmony 开发知识:Flutter 插件开发规范HarmonyOS API 文档最佳实践指南七、测试验证7.1 功能测试运行示例应用点击 “Exit” 按钮验证应用正确退出7.2 兼容性测试在以下环境测试通过:Flutter 版本SDK 版本IDE 版本ROM 版本3.7.12-ohos-1.1.35.0.0(12)6.0.1.2516.0.0.115 SP163.22.1-ohos-1.0.35.0.0(12)6.0.1.2516.0.0.115 SP163.27.5-ohos-1.0.15.0.0(12)6.0.1.2516.0.0.115 SP163.35.8-ohos-0.0.25.1.0(18)6.1.06.1.0.28(SP12)八、总结通过华为云码道(CodeArts)代码智能体,我们高效地完成了 Flutter 插件的 OpenHarmony 平台适配工作。整个过程包括:需求分析 - 明确插件功能需求问题诊断 - 识别代码中的问题方案实现 - 编写正确的实现代码文档编写 - 生成 README 文档环境配置 - 获取并配置开发环境信息代码提交 - 完成版本控制操作代码智能体大大提高了开发效率,让开发者能够专注于核心业务逻辑,而无需花费大量时间在环境配置、文档编写等重复性工作上。
-
对企业而言,优质官网不只是展示品牌形象的线上窗口,更是驱动获客与业务增长的重要载体。目前国内官网搭建主要有两种主流方式:SaaS 平台建站与 CMS 系统建站,也有不少企业会选择本地建站公司。但事实上,国内绝大多数本地化建站服务商,本质上也是基于头部 CMS 系统进行开发,大多只是做界面设计与模板替换,仍属于 CMS 建站范畴。SaaS 建站与 CMS 自建站在适用场景、成本和灵活性上差异明显,下面分别详细说明。一、CMS 系统建站适用场景 若你的网站符合以下特征,优先选择CMS 系统建站,稳定性、扩展性与性价比更具优势: 1、需长期运营维护的网站 从长期成本来看,CMS 建站比按年付费的 SaaS 模式更经济,还能规避 SaaS 平台停运、政策调整等风险。建议选用成熟稳定的主流开源 CMS,如 PageAdmin、PHPCMS、齐博 等。 2、重视数据安全、需私有化 / 内网部署的网站 对数据私密性要求高,或需在内网环境运行的网站,适合采用 CMS 系统。主流 CMS 均支持私有化部署,可选方案包括 PageAdmin、齐博、EcShop 等。 3、中大型网站、政府单位及功能需高度定制的网站 这类项目对功能扩展性要求极高,推荐选用PageAdmin CMS,支持自定义内容模型、可视化表单、自定义字段、可视化工作流及低代码扩展,是国内扩展性表现突出的 CMS 产品。 3、网站群 / 站群平台(高校、集团、多分支机构) 搭建集约化站群时,应优先选择原生支持站群功能的 CMS,推荐PageAdmin、PHPCMS。 WordPress 等系统需依赖插件实现站群,后期维护复杂、稳定性不足,不建议选用。同时注意区分正规站群与 SEO 泛站群,避免选型错误。 4、需国产化改造、等保合规的网站 面向政务、国企等需要国产化适配、等保合规的项目,必须选用支持国产数据库与国产化环境的 CMS 系统,推荐PageAdmin CMS、拓尔思 CMS。 3、外贸独立站 外贸网站不建议使用 SaaS 搭建,Google 对 SaaS 站点收录效果较差。 外贸电商可选用EcShop、WordPress;普通多语言官网,PageAdmin、WordPress均为成熟方案。二、SAAS平台建站:适配场景与核心优势SAAS平台建站凭借便捷、低成本、易维护的特点,成为众多中小企业的首选建站方式,以下三类场景优先选择SAAS平台建站:纯展示需求的小企业网站:仅用于企业信息、产品展示,对界面设计和功能无特殊要求,SAAS平台可快速满足基础展示需求。轻量化快速上线需求:企业不想投入过多时间和精力维护服务器,追求高效落地,SAAS平台无需单独部署服务器,拖拽式操作可实现快速建站上线。初期低成本投入需求:对于预算有限的团队,SAAS建站采用按年付费模式,短期内(如3年以内)的总投入远低于传统CMS系统建站,性价比更高。三、主流SAAS建站大厂平台推荐需特别注意,国内不少中小SAAS建站平台稳定性不足,存在“当年购买、次年关站”的风险,因此建站优先选择技术成熟、实力雄厚的大厂平台。以下为国内主流的三家大厂SAAS建站平台详细介绍:1. 华为云建站(企业门户)华为云建站产品前身为“云速建站”,现已升级为“企业门户”,聚焦企业基础展示与高效建站需求,核心优势突出:拥有1000+精美模板,支持18国语言一键翻译,搭载7大AI能力,操作难度低,搭建网站如同制作PPT般简单,无需专业技术基础。稳定性方面,依托鲲鹏处理器构建全栈自主可控体系,在硬件级安全管控、数据隔离防护上表现优异,尤其适合政务、金融等对安全要求较高的场景。收费模式为按功能分级付费,基础版本仅支持新闻、产品发布等核心基础功能,多数企业选择标准版本即可满足日常业务需求,标准版本年费区间为1500-2500元。2. 腾讯云建站腾讯云建站以微信生态集成为核心竞争力,精准适配依赖微信生态运营的中小型企业,在社交传播、客户引流方面设计贴合需求。平台提供标准化SAAS建站服务,拥有1600+各类模板,支持拖拽式编辑,上手便捷。核心亮点的是微信生态联动优化,可实现网站内容一键同步至微信公众号、视频号,同时支持多端适配、基础SEO优化及微信支付集成,助力企业打通线上引流与转化链路。稳定性上,依托腾讯云强大的技术底座,可100%保障网站稳定运行,无需担心宕机问题;安全性方面,集成腾讯云全方位安全防护体系,高级版本可提供DDOS攻击、SQL注入等针对性防护,守护网站数据安全。3. 阿里云建站阿里云建站依托阿里云成熟的基础设施,核心优势集中在服务器稳定性与安全保障上,非常适合对网站稳定性要求极高的小企业。平台提供标准化SAAS建站服务,配备1500+模板,支持拖拽编辑与基础定制结合,可兼顾便捷性与个性化需求。凭借阿里云服务器的硬件优势,网站加载速度实测优于行业平均水平15%,有效提升用户访问体验;稳定性表现出色,提供365天在线技术支持,响应及时,可快速解决建站及使用过程中的各类问题。安全性方面,集成阿里云专业安全防护体系,高级版本同样提供DDOS防护功能,全方位抵御网络安全风险,保障网站正常运行。总结企业选择建站方式,本质上是选择数字化转型路上的长期伙伴。建议企业结合自身发展阶段、预算规模与核心业务需求,综合考量各类建站方式的优劣,避免单纯以价格高低、类型差异作为唯一决策依据,优先选择适配自身、稳定性强、服务有保障的建站方案,为企业数字化发展筑牢基础。
-
基于华为开发者空间云开发环境搭建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代码智能体完成应用开发/调试实践
-
一、概述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
-
利用公共预置镜像安装vllm-ascend报错,原因是gcc版本过低。
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签