鸿蒙 NEXT 也能接 MCP?用 ArkTS 跑通 AI Agent 工具链

作者:张大鹏 | 大鹏AI教育 | 2026-05-20

标签:HarmonyOS AI Agent MCP ArkTS DevEco Studio



📖 阅读提示

如果你已经会在 Cursor、Claude Code 里接 MCP,下一步很自然:鸿蒙原生 App 能不能也让 AI Agent 调工具?

结论先说:能,但不要把 MCP 直接理解成"在手机里塞一个聊天框"。更稳的做法是:

  • ArkTS 只做 薄 UI:输入、消息列表、加载态、权限提示
  • Agent 服务负责 规划与工具调用
  • MCP Server 把本地/后端能力包装成标准工具
  • 实际敏感的数据,再交给端侧模型或本地工具处理

前言:别只做聊天框,Agent 的价值在"能办事"

很多 AI Demo 卡在一个地方:界面很好看,回答也流畅,但它只能"说",不能"做"。

比如用户在鸿蒙 App 里问:

帮我查一下本周学习计划,顺便把没完成的任务列出来。

普通 ChatBot 只能猜。Agent 要做的是:

  1. 识别用户意图
  2. 查询本地计划或后端接口
  3. 汇总结果
  4. 必要时继续追问或执行操作

这就是 MCP 值得接入的地方:让模型以统一协议调用工具,而并非把业务逻辑写死在提示词里。


1. 鸿蒙 Agent ≠ 只有一个聊天框

1.1 推荐三层拆分

职责 常见技术
交互层 对话 UI、多轮状态、权限提示 ArkUI、Navigation
推理层 规划、ReAct、记忆 云端大模型 API / 端侧小模型
工具层 可调用能力集合 MCP Server、HarmonyOS Ability、分布式接口

MCP 的价值在 工具层标准化:同一套"工具描述 + 调用协议",换模型不必重写业务接口。

1.2 和 HMAF 的关系(怎么理解)

华为公开的 HMAF(鸿蒙智能体框架) 方向,是把端侧算力、系统能力与智能体编排结合起来。可以先这样理解:

  • 系统侧:提供更顺的 Agent 生命周期、设备协同
  • 开发侧 :仍需要你自己的 工具定义(很多场景仍可用 MCP 思路封装 HTTP/本地服务)

不必二选一:HMAF 管「住哪儿跑」MCP 管「工具长什么样」


2. MCP 接入路线(DevEco 工程向)

2.1 最小链路:ArkTS → Agent 服务 → MCP Server

  1. 先列工具清单:读文件、查配置、调鸿蒙系统 API、访问业务后端
  2. 实现 MCP Server(Node / Python 最常见;与 App 可同机或局域网)
  3. App 内推理服务 通过 HTTP/Socket 调 MCP,或经中间层聚合
  4. ArkTS UI 只关心会话与结果展示,不直接堆业务逻辑

注意:下面是工程骨架示意,方便理解调用边界。真实项目要补权限、鉴权、超时、错误码和真机测试。

2.2 第一步:先把工具定义清楚

不要一上来就接大模型。先把"模型能调用什么"写成工具表。

json 复制代码
{
  "name": "search_study_plan",
  "description": "查询用户本周学习计划和完成状态",
  "inputSchema": {
    "type": "object",
    "properties": {
      "week": { "type": "string", "description": "周标识,例如 2026-W21" }
    },
    "required": ["week"]
  }
}

这一步非常关键。工具描述越清楚,模型越少乱调。

2.3 第二步:MCP Server 包装真实能力

Node / Python 都可以。核心不是语言,而是把业务能力包装成稳定接口。

typescript 复制代码
// 示意:MCP Server 内部注册一个查询学习计划的工具
server.tool(
  "search_study_plan",
  {
    week: z.string()
  },
  async ({ week }) => {
    const tasks = await queryStudyPlanFromDb(week);
    return {
      content: [
        {
          type: "text",
          text: JSON.stringify(tasks)
        }
      ]
    };
  }
);

真实落地时,我建议把工具分成三类:

类型 示例 风险
只读工具 查询计划、读取配置
写入工具 新增任务、修改日程 中,需要二次确认
敏感工具 通讯录、定位、文件 高,必须权限前置

2.4 第三步:ArkTS 不直接调工具,只调 Agent 服务

typescript 复制代码
// ArkTS 侧只负责把用户问题交给 Agent 服务
async function askAgent(prompt: string): Promise<string> {
  const response = await http.createHttp().request(
    'http://127.0.0.1:3000/agent/run',
    { method: http.RequestMethod.POST, extraData: JSON.stringify({ prompt }) }
  );
  return JSON.parse(response.result as string).answer;
}

Agent 服务做三件事:

  1. 接收 ArkTS 的用户输入
  2. 让模型判断是否需要调用工具
  3. 把 MCP 工具结果整理成 App 可展示的回答

这样做的好处是:ArkTS 不背复杂推理逻辑,MCP Server 不关心 UI,Agent 服务负责中间编排。

2.5 返回结构也要稳定

避免直接把大模型原文扔给页面。建议 Agent 服务统一返回:

json 复制代码
{
  "answer": "你本周还有 3 个学习任务未完成,其中 ArkTS 状态管理优先级最高。",
  "actions": [
    { "type": "open_page", "target": "StudyPlanPage" }
  ],
  "toolCalls": [
    { "name": "search_study_plan", "status": "success" }
  ]
}

页面只消费 answeractions,调试时再看 toolCalls

2.6 三个常见坑

现象 建议
工具描述含糊 模型乱调、死循环 每个 tool 写清入参、反例
主线程调网络 UI 卡顿 Agent 推理放 Worker / 后台服务
权限未前置 调用失败难排查 敏感能力先弹窗授权,再暴露给工具

3. 开源参考:鸿蒙上的 Agent 框架

社区已有 JiuwenClaw-on-OpenHarmony 等实践,方向是:在 OpenHarmony / HarmonyOS NEXT 场景里探索 ReAct、工具调用、记忆与任务调度。适合作为"工具层如何拆"的参考,而并非照搬到生产。

阅读重点:

  • 工具注册表如何映射到鸿蒙能力
  • 记忆存在哪(Preferences / RDB)
  • 失败重试与超时策略

4. 和「端侧大模型」如何配合?

下一篇(002)会写 HarmonyOS 5 端侧问答。本篇只划边界:

场景 更合适方案
强隐私、弱网、简单问答 端侧小模型 + 本地 RAG
复杂规划、多工具编排 云端模型 + MCP 工具链
既要隐私又要工具 端侧模型做意图分类,敏感数据本地工具处理

我的建议是:不要一开始就追求"全端侧 Agent"。

更现实的组合是:

  • 敏感文本:端侧处理
  • 工具编排:云端或局域网 Agent 服务处理
  • 写入动作:App 侧弹窗二次确认
  • 调用日志:本地保留,便于排查模型误调

5. 跑通前检查清单

  • 工具是否分级:只读 / 写入 / 敏感
  • ArkTS 是否只负责 UI 与请求封装
  • Agent 服务是否有超时、重试、错误码
  • 写入动作是否需要二次确认
  • 敏感能力是否先授权,再暴露给工具
  • 是否记录 toolCalls,方便排查模型误调

6. 下一步怎么做

鸿蒙开发 AI Agent,不要从"聊天框"开始,而要从 工具链 开始。

我的推荐架构很简单:

ArkTS 薄 UI + Agent 编排服务 + MCP 工具层

这样既能复用 MCP 生态,又不会把推理、权限、业务逻辑全部塞进页面。后面如果接入端侧大模型,也可以让端侧模型处理敏感问答,让 MCP 负责复杂工具编排。


📚 参考来源

  1. 关于提升 OpenHarmony 开发效率:AI Agent 工具链
  2. 《2026鸿蒙NEXT纯血开发与AI辅助》MCP / AI Agent 章节
  3. 在鸿蒙上跑 AI Agent:JiuwenClaw-on-OpenHarmony

作者 :张大鹏|来源 :大鹏AI教育
标签 :AI · 鸿蒙 · HarmonyOS · MCP · Agent
原创内容,转载需授权

万事如意,吉祥如意

相关推荐
互联网工匠2 小时前
TDD在古法编程时代的困境及AI编程时代的转机
人工智能·ai编程·tdd
weixin_505061452 小时前
星坤入选高端连接器十强,斩获华强电子网年度国产品牌大奖
大数据·人工智能
@蔓蔓喜欢你3 小时前
Node.js 流处理:高效处理大数据的艺术
人工智能·ai
qq_525513753 小时前
第七章 指令微调学习(三)为指令数据集创建数据加载器;加载预训练的大语言模型
人工智能·学习·语言模型
贵慜_Derek3 小时前
《从零实现 Agent 系统》连载 03|控制循环:感知—决策—行动—反思
人工智能·设计模式·架构
小白|3 小时前
CANN目标检测实战:自定义检测算子开发(插件机制)
人工智能·目标检测·计算机视觉
Duang3 小时前
我把 Claude、Codex、Copilot、Gemini 拼成了一个工作流,接力写代码
人工智能·程序员·架构
财经资讯数据_灵砚智能3 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年5月20日
大数据·人工智能·python·信息可视化·自然语言处理
沐风___3 小时前
claude-code-setup 实战:把 Claude Code 从聊天工具变成工程系统
人工智能