华为云码道 AI 编程实战:我用 CodeArts 智能体打造了一款 HarmonyOS 游戏化专注应用「智办 ZhiBan」

一键开通华为云码道 CodeArts 代码智能体: https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwatomgit1&sourcead=dmzntgwatomgithd

一、为什么做"专注森林"?

先坦白一件事:这个项目的起点,不是一腔热血,而是一次"报复性"观察。

我统计过自己某天的手机使用:拿起放下 127 次。每次都是"就看一眼",每次都是一小时起步。下载过 5 个专注 App,结局一模一样------定个 25 分钟番茄钟,时间一到,"叮"一声,什么都没留下。三天后,App 在文件夹里吃灰,我在深夜里懊悔。

问题不在我不自律。问题在于:自律的过程,从来没有被"看见"。

跑步有里程,健身有线条,读书有书架------只有专注,完成了就消失了,像没发生过。番茄钟记下的那一串数字,冰冷,毫无感情,激不起任何留恋。

那如果专注能"长"出来呢?

这就是「智办 ZhiBan」的起点:把每一次专注,种成一棵树。开始专注,森林里多一棵小苗;坚持到底,它长大;中途放弃,它枯萎------那种"亲手让一棵树枯掉"的心疼,比任何闹钟都管用。连续专注的天数、攒下的总时长、集齐的树种,变成一枚枚成就勋章。有一天你打开应用,看到的不是数字,而是一片由你的每一天长成的森林。

"智办",智能办事;"ZhiBan",谐音"植斑"------种下的每一棵树,都是生活里的一块斑斓。

名字和点子都有了,接下来是灵魂拷问:谁来写?

二、用什么做:HarmonyOS 原生 + 码道代码智能体

两个决定,几乎同时做出。

第一,HarmonyOS 原生。 要做就做原生------ArkTS + ArkUI,API 10,MVVM 分层,RDB + Preferences 本地持久化,Canvas 程序化绘制树木。纯本地运行,module.json5 里零权限声明:不联网、不上传,你的专注数据只属于你。这既是技术选择,也是态度:一个讲"自律"的应用,自己先得自律,不碰用户数据。

第二,全程用华为云码道 CodeArts 代码智能体来写。 我给自己立了个规矩:只负责提需求、定方向、做验收,一行代码都不亲手写,智能体是唯一的工程师。

有人问:你这不是偷懒吗?恰恰相反------当你不能亲手写代码,你会被迫把需求说得极其清楚。而"把需求说清楚",恰恰是 AI 编程时代最稀缺的能力。AI 编程,比的根本不是谁手速快,而是谁更会"指挥"。

三、从一句话到一个 App:两天的开发实录

第一天上午:一句话,换来一套架构

我给智能体的第一句话是:"做一个 HarmonyOS 专注应用,核心玩法是专注种树 + 成就系统,技术栈 ArkTS,API 10。"

它没有急着写代码,而是先给了架构设计:表现层 Pages / Components → ViewModel 状态管理 → 服务层(FocusService / AchievementService)→ 数据层 Repository(RDB + Preferences)→ 基建(Constants / Logger / ThemeManager)。分层干净,单向依赖------这个起点,比我预想的要稳。

最关键的一次对话:专注状态机

整个项目技术风险最高的地方,是专注计时。我只提了一句话:"专注计时不能依赖常驻计时器,杀进程也要能恢复。"

智能体直接给出了时间戳驱动的四态状态机 (FocusPhase):开始、暂停、完成、放弃四个分支一次写全,连异常恢复路径都考虑进去了。不依赖常驻计时器,只记录"专注应该在何时结束"的时间戳------App 被杀掉再打开,根据时间戳一算,该完成完成、该枯萎枯萎,现场一秒恢复。

这是"专注"类应用最核心的可靠性保障。它一次想全了,我没改一个字:

树,是"长"出来的,不是"画"出来的

8 种树种------青松、橡树、樱花、枫树 4 种基础,银杏、蓝杉、红杉、雪松 4 种稀有,全部用 Canvas 程序化绘制,零图片资源。树冠的团簇、针叶的叠塔、樱花的花瓣点缀、枯萎时的光秃枝,全是代码算出来的。好处很实在:包体极小,换肤只改色值,而且"成长"(幼苗 → 小树 → 大树)是连续的参数变化,不是三张贴图硬切。

专注时长越长,越有机会开出稀有树种------收集控狂喜,玄学拉满。

成就系统:它想得比我周到

我原本只想要"专注完成弹个成就提示"。智能体把它做成了独立判定引擎:专注完成只发一个事件,成就检查、解锁、Toast 提示全链路自动走完。10 项成就,从"坚持初心"到"森林之主",连续天数、累计时长、种树数量、图鉴收集全覆盖。以后加新成就,几乎不用改旧代码------这种扩展性,是手写时最容易偷懒的地方,它没偷懒。

打磨:魔鬼在色值里

功能跑通后,我让它"把项目打磨到能见人"。它的打磨清单让我刮目相看:

  • 5 处散落在各页面的"魔法色值",收敛到统一的 Constants 常量,深浅色两套主题 token 补齐------主题维护成本从 O(n) 降到 O(1)
  • 3 个页面加转场动画,空态页面统一风格
  • 13 个文件补 107 行注释------纯新增,一行旧代码没动
  • README 从 53 行重写到 199 行:架构图、功能清单、隐私说明、开源协议一应俱全

这是打磨后的仓库主页:

四、应用界面预览

整套界面走治愈系水彩风:马卡龙色板、大圆角卡片、柔和阴影,森林主页背景带水彩晕染。专注本该是件轻松的事,界面先替你松弛下来。

下面四张是云端模拟跑出来的界面效果,真机实拍等 DevEco 构建验证后补上,先睹为快:

森林主页------每一次专注都会在这里种下一棵树。青松、橡树、樱花、枫树随机掉落,专注时长越长,越有机会开出银杏、蓝杉等稀有树种。坚持得越久,森林越茂盛;中途放弃的树会枯萎,心疼,但管用。

专注进行中------选定一个待办,开始计时。倒计时走完,树长大一圈;中途放弃,树当场枯萎。计时由时间戳驱动,杀进程也能恢复现场。

成就系统------10 项成就,从"坚持初心"到"森林之主"。解锁瞬间会有 Toast 弹出,仪式感拉满。

专注完成------25 分钟倒计时走完,樱花种下,"一周不辍"成就解锁弹出。这就是一次完整的专注闭环。

五、技术架构

复制代码
┌─────────────────────────────────────────────┐
│ 表现层 Pages / Components(ArkUI 声明式 UI)   │
├─────────────────────────────────────────────┤
│ ViewModel(状态管理,与 UI 双向绑定)          │
├─────────────────────────────────────────────┤
│ 服务层 FocusService / AchievementService     │
│   专注状态机(时间戳驱动,可恢复/可放弃)      │
├─────────────────────────────────────────────┤
│ 数据层 Repository(RDB + Preferences)       │
├─────────────────────────────────────────────┤
│ 基建 Constants / Logger / ThemeManager       │
│   深浅色主题 token、统一日志、主题跟随系统     │
└─────────────────────────────────────────────┘

三个关键设计决策:

  1. 专注状态机用时间戳驱动:不依赖常驻计时器,杀进程后可根据时间戳恢复现场------"专注"类应用的可靠性基石。
  2. 成就判定与专注完成解耦:专注完成只发事件,成就引擎全链路自动走完,加新成就不用改旧代码。
  3. Canvas 程序化生成树木:8 种树种零图片资源,包体极小,成长是连续的参数变化。

六、智能体协作实录:每次打开对话框,我只做三件事

两天合作下来,我摸索出一套跟代码智能体协作的固定动作,每次打开对话框,只做三件事:

第一件:把需求说到它无法误解。

"专注计时不能依赖常驻计时器,杀进程也要能恢复"------一句话,它还我一套四态状态机。反过来,凡是我说得含糊的地方,返工都出在那。结论很残酷:智能体的上限,就是你的表达上限。它从不敷衍,但它只会精确地执行你"说出口"的东西,而不是你"心里想"的东西。

第二件:让它做"难而正确"的事。

解耦、状态机、异常恢复路径------这些手写时最容易"下次再说"的地方,交给它一次做到位。人类工程师在 deadline 面前会妥协,它不会。它没有"差不多得了"这个选项。

第三件:验收只看实质,不看热闹。

它说得多漂亮不重要,我只看三样:代码 diff、文件变化、运行效果。这种"只认实质"的验收方式,反而让交付很稳------因为它知道,糊弄不过去。

下面这张是某次打磨后的完整会话实拍。注意左上角的账号信息(@lwcwam,AtomGit 已关联),输入框支持 @引用文件、关联仓库、切换模型,一句话即可开工:

先说优点,都有具体事例为证:需求清楚一次成型,很少返工;上下文理解准,前面定的约定后面记得住;注释、文档这种"顺手活"不敷衍,README 199 行重写得比我自己写得还全。

也说说缺点,就一个:对话太长、上下文堆多了之后,偶尔要新开一个对话重新交代背景。不过切换成本不高,几句话接上,不影响大局。

下面是这次合作的完整对话过程实录,从第一条消息到收尾,全部真实截图。

一切从这条消息开始。2026 年 9 月 24 日 18:11,我把技术选型、模块划分、交付要求一次性说清楚,第一句话就是"请先给出第 1 步的架构设计"。它没有急着写代码,而是先进入"已深思考虑"------检查自己手里有哪些 HarmonyOS 开发技能可用,再动手:

两天里,这样的对话开了 9 个。每个会话聚焦一件事,做完就归档,上下文永远干净:

这是它交付时的样子:不是甩一段代码就走,而是自己调 Bash 做 git add、git push,推送成功,然后出一份带文件清单和行数的交付报告:

合作到今天,对话还在继续。最新的一个会话里,它先复述目标、列出页面结构,确认之后才开工------这种"先对齐、再动手"的习惯,是两天里它从没变过的地方:

七、实测数据:两天,从 0 到 1

不煽情,上数字(原始记录都在上面的会话截图里):

  • 开发周期:2 天,从空仓库到专注、图鉴、成就、待办、看板五大模块全部可用
  • 代码规模:41 个文件起步,最终 100+ 文件,数千行 ArkTS(严格模式)
  • 注释补齐:13 个文件纯增 107 行,零删除
  • 颜色收敛:5 处硬编码魔法色值收敛至常量
  • README:53 → 199 行
  • 树种:8 种,全部 Canvas 程序化绘制,0 图片资源
  • 成就:10 项,四大类别全覆盖
  • 权限 :module.json5 零权限声明,数据不出本地

提效的本质不是"写得快",而是"返工少":需求一次说清,架构一次做对,打磨一次到位。智能体把"从 0 到 1"的体力活吃掉了,人只负责"从 1 到 N"的审美和判断------而这,恰恰是人最擅长的事。

八、开源仓库

九、总结:智能体不是代码生成器,是数字队友

两天做完这个项目,聊聊真实感受。先说优点,智能体这次是真立功了。

需求清楚的地方,它一次成型,几乎不返工------四态状态机、Canvas 程序化树木、成就判定逻辑,拿过来就能用;上下文理解准,前面定的约定(比如"模拟图不冒充真机截图")后面一直记得;注释、文档这种顺手活也不敷衍,README 重写得比我自己写得还全。两天时间,100+ 文件、数千行 ArkTS,一个人、零手写代码------这个交付效率,放在以前我是不敢想的。

也说说缺点,就一个,而且不大:对话太长、上下文堆多了之后,就得新开一个窗口重新交代背景。它不会自己"断舍离",一个窗口聊到底越往后越吃力。好在切换成本不高------目标、约束、当前进度三句话说清楚,它马上就能接上。这与其说是毛病,不如说是用法:会话"一件事一开",别指望一个窗口聊完整个项目。

最后说回产品本身。"专注森林"技术上没有任何黑科技------状态机、Canvas、RDB,全是常规操作。但它把"自律"变成了一件看得见、舍不得、想继续的事。好的应用,先打动人心,再谈功能。

欢迎 Star,欢迎试用,一起把自律种成森林。

十、互动投票:你怎么看 AI 编程?

读到这里,想听听你的真实想法。在评论区回复选项编号即可,我会定期统计结果,看看大家最关心什么:

你更想用代码智能体来做什么?

  • A. 写业务代码------把重复的 CRUD、页面、接口一次搞定
  • B. 写测试和文档------把最容易被忽略的"顺手活"补齐
  • C. 做架构设计------像文中那样,先给方案再动手
  • D. 全都要------能者多劳,智能体就是我的数字队友

也欢迎在评论区聊聊:你踩过 AI 编程的哪些坑? 或者哪一步让你觉得"真香"? 我会挑有代表性的留言,在后续文章里展开聊。

相关推荐
宋哥转AI2 小时前
AgentScope Java 实战 03:知识与工具层——给 Agent 装上手和书架
人工智能·agent·ai编程
海宇AI2 小时前
零信任架构实战:基于海宇学历核验版构建自动化高并发资信评估网关
人工智能·微服务·架构·自动化
阳明山水2 小时前
因果嵌入与流水线范式的本质差异
人工智能·深度学习·算法·机器学习·架构
代数狂人2 小时前
机器学习数学基础──第 2 章 函数 机器学习的积木
人工智能·机器学习
用户777636100262 小时前
类Jev项目Kev从入门到实战(2):Kev 的架构:一次前向,多问题隔离作答
人工智能
张忠琳2 小时前
【hermes-agent】Hermes Agent Kanban 流程超深度分析之一
ai·agent·hermes
rhett. li2 小时前
用 AI 写 C++ 桌面 UI:TRAE + nim_duilib 实战指南
c++·人工智能·ui
yaoyuxianggnn2 小时前
我的 Agent 一晚上烧了 500 块,于是我把它的死循环拆成了四种形态
人工智能
tellmewhoisi2 小时前
机器学习:集成学习4(XGBoost前置知识泰勒展开式1)
人工智能·机器学习·集成学习