# 鸿蒙 Agent DSL vs lambdagent Agent DSL 对比分析 > **鸿蒙 Agent DSL**: HarmonyOS 6 引入,基于仓颉 (Cangjie) 语言,面向端侧原生 AI 应用 > **lambdagent DSL**: 基于 λA 类型化 Lambda 演算,面向服务端 Agent 编排和安全保障 > > Sources: > - [HarmonyOS Agent DSL 实战 — 知乎](https://zhuanlan.zhihu.com/p/1921916592708641625) > - [Agent DSL 旅行规划系统 — DEV Community](https://dev.to/xun_wang_6384a403f9817c2/harmonyos-next-practical-practice-intelligent-travel-planning-system-based-on-agent-dsl-ocm) > - [Agent DSL 开启原生 AI 开发新篇章 — DEV Community](https://dev.to/xun_wang_6384a403f9817c2/harmonyos-next-innovation-agent-dsl-opens-a-new-chapter-in-native-ai-application-development-4mpd) > - [HarmonyOS Agent Framework Kit 官方文档](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/harmony-agent-framework-kit-guide) --- ## 一、定位对比 | 维度 | 鸿蒙 Agent DSL | lambdagent DSL | |------|---------------|---------------| | **定位** | 端侧原生 AI 应用开发 | 服务端 Agent 编排 + 静态安全 | | **目标平台** | HarmonyOS 设备 (手机/IoT) | 服务器 / 本地 / PaaS | | **宿主语言** | 仓颉 (Cangjie) | Python | | **理论基础** | 无形式化理论 | λA 类型化 Lambda 演算 (三篇论文) | | **核心价值** | 降低端侧 AI 开发门槛 | 编译时保证 Agent 组合安全 | | **LLM 定位** | 端侧推理 (盘古/小模型) | 多 Provider (Cloud + Local) | | **开源状态** | 华为生态内闭源 | BSL 开源 | **本质区别**: 鸿蒙 Agent DSL 是**面向应用开发者的 SDK**(怎么快速写出 AI 功能);lambdagent DSL 是**面向 Agent 工程师的安全工具**(怎么保证 Agent 不出错)。 --- ## 1.5、CangjieMagic — 仓颉原生 Agent 开发框架 > 2025年3月开源,首个基于仓颉编程语言原生构建的 LLM Agent 平台 > 项目地址: https://gitcode.com/Cangjie-TPC/CangjieMagic | 维度 | CangjieMagic | |------|-------------| | **定位** | 仓颉原生 LLM Agent 开发框架 | | **语言** | 仓颉 (Cangjie) — eDSL(嵌入式 DSL) | | **核心特性** | Agent DSL + MCP 原生支持 + 智能调度引擎 | | **平台** | HarmonyOS / Windows / macOS / Linux(Q3 计划移动端) | | **模型** | 多 Provider:OpenAI / Ollama / SiliconFlow / DashScope | | **协议** | MCP (Model Context Protocol) — 二进制高效传输,延迟降低 ~40% | ### 三大核心技术 1. **Agent DSL**: 声明式 Agent 定义,代码编译为仓颉再由仓颉编译器编译 2. **MCP 通信协议**: 二进制传输 + 自描述 Schema + 多模态(文本/图片/音频) 3. **智能调度引擎**: 自动任务分解 → 最优执行路径生成 ### CangjieMagic 代码示例 ```cangjie // 完整 Agent 定义 — @agent 装饰器 @agent[ model: "deepseek:deepseek-chat", executor: "react:5", tools: [weatherTool, searchTool], memory: true, temperature: 0.7 ] class WeatherAssistant { @prompt[pattern: APE]( action: "提供精准的天气查询与出行建议", purpose: "帮助用户规划行程并避免天气影响", expectation: "输出包含温度、降水概率和建议的结构化回复" ) @tool[description: "获取指定城市的天气数据", parameters: { city: "城市名称" }] private func queryWeather(city: String): String { // 调用天气 API } } ``` ```cangjie // 多 Agent 路由调度 @agent[model: "openai:gpt-4o"] class PrimaryAgent { } @agent[model: "ollama:llama3"] class SecondaryAgent { } // DispatchAgent 根据任务复杂度自动路由 let routerAgent = DispatchAgent(model: "deepseek:deepseek-chat") <=[ PrimaryAgent(), SecondaryAgent() ] ``` ```cangjie // 多 Agent MCP 通信 agent CustomerService { plan HandleRiskInquiry { step SendMessage(to: "RiskControlAgent", type: "async", content: {question: user_question}) step WhenMessageReceived(from: "RiskControlAgent") -> GenerateResponse() } } ``` ### CangjieMagic vs lambdagent 关键差异 | 维度 | CangjieMagic | lambdagent | |------|-------------|-----------| | @agent 装饰器 | ✅ `@agent[model, executor, tools]` | ✅ `Lam(name, prompt)` | | @prompt 模式 | ✅ APE/ERA/CRISPE 等标准模式 | 自由文本 systemPrompt | | @tool 声明 | ✅ 内联工具定义 | `Tool(name, fn)` + MCP | | 多 Agent 路由 | ✅ `DispatchAgent <=[ ]` | `Route` + `Handoff` | | MCP 支持 | ✅ 原生二进制 MCP | ✅ MCP 2025-11-25 | | **T-Compose 类型检查** | **❌ 无** | **✅ output(f) <: input(g)** | | **成本预测** | **❌ 无** | **✅ 分级类型 (p,t,l,m)** | | **终止性证明** | **❌ 无** | **✅ 定理 5.4** | | **并行安全** | **❌ 无** | **✅ store independence** | | **lint 规则** | **❌ 无** | **✅ 26 条** | **结论**: CangjieMagic 在**开发体验**上比原始 Agent DSL 更完善(@agent/@prompt/@tool 三件套 + MCP + 多模型路由),但仍然**没有形式化安全保障**(类型检查、成本预测、终止性、并行安全)。这正是 lambdagent 的差异化价值。 --- ## 二、语法对比 ### 鸿蒙 Agent DSL — 装饰器 + 行为描述 ```cangjie @agent class Planner { @prompt[pattern=PlanTrip] ( action: "根据用户需求制定旅行计划", purpose: "满足用户旅行期望", expectation: "生成包含景点、时间、预算的旅行计划" ) func planTrip(userRequest: String): String { let parsed = parseRequest(userRequest) let plan = optimizePlan(parsed) return plan } } @agent class TransportAgent { @prompt[pattern=BookTransport] ( action: "根据行程预订交通", purpose: "提供最优交通方案", expectation: "返回交通预订确认" ) func bookTransport(plan: String): String { // ... } } // 多智能体协作: 顺序管道 let plan = Planner().planTrip("北京3日游") let transport = TransportAgent().bookTransport(plan) let hotel = HotelAgent().bookHotel(plan) ``` **特点**: - `@agent` 装饰器声明智能体类 - `@prompt[pattern=...]` 用 action/purpose/expectation 描述行为 - 函数签名定义输入输出类型 - 多智能体通过函数调用串联 ### lambdagent DSL — Lambda 项 + YAML 配置 ```python # Python DSL planner = Lam("planner", "根据用户需求制定旅行计划") transport = Lam("transport", "根据行程预订交通") hotel = Lam("hotel", "根据行程预订酒店") # 组合: 管道 pipeline = planner >> Pair(transport, hotel) # 规划 → 并行(交通 + 酒店) # 带验证 validated = Guard(pipeline, validator=lambda r: "确认" in str(r), retry=2) ``` ```yaml # YAML 配置 agentId: travel-planner type: chain chain: steps: - name: planner systemPrompt: "根据用户需求制定旅行计划" - name: transport-hotel type: parallel agents: - { name: transport, systemPrompt: "预订交通" } - { name: hotel, systemPrompt: "预订酒店" } runtime: engine: cek costBudget: 5.00 ``` **特点**: - `Lam` 是 Lambda 抽象(LLM 调用) - `>>` 是函数组合(管道) - `Pair` 是并行对 - `Guard` 是输出验证 - YAML 是声明式编排(可选) - 每个构造有对应的 λA 形式化定义 --- ## 三、核心机制逐项对比 ### 3.1 Agent 定义 | | 鸿蒙 Agent DSL | lambdagent DSL | |--|---------------|---------------| | 定义方式 | `@agent class` + `@prompt[pattern]` | `Lam(name, prompt)` 或 YAML | | 行为描述 | action/purpose/expectation 三元组 | systemPrompt 自由文本 | | 强类型 | 仓颉静态类型 (`String → String`) | Paper III 类型系统 (`Str →^{llm} Str`) | | 效果标注 | 无 | `llm(m) / io / state(s) / pure` | | 编译检查 | 仓颉编译器基础类型检查 | **T-Compose + 26 条 lint + 成本预测** | **鸿蒙优势**: `@prompt[pattern]` 的 action/purpose/expectation 三元组比自由文本 prompt 更结构化,可以被 IDE 解析。 **lambdagent 优势**: 有效果系统(区分 `llm/io/state/pure`),有成本分级,有 26 条 lint 规则。鸿蒙 Agent DSL 没有这些。 ### 3.2 多智能体协作 | | 鸿蒙 Agent DSL | lambdagent DSL | |--|---------------|---------------| | 顺序 | 函数调用链 | `Compose (>>)` + `pipeline` Pattern | | **并行** | **未公开** | **`Pair` / `Par` / `AsyncPar` + 汇合定理** | | **路由** | **未公开** | **`Route` (case 分派) + `Handoff` (动态委托)** | | **循环** | **未公开** | **`Loop` (Y 组合子) + 终止性定理** | | **审查** | **未公开** | **`Guard` (验证重试) + `review` Pattern** | | GroupChat | 未公开 | `GroupChat` (π-演算 N 智能体讨论) | | 通信 | 未公开 | `Channel + Send + Receive` (π-演算) | **鸿蒙目前只展示了顺序管道**。lambdagent 有 11 个核心构造 + 5 个多智能体构造 + 6 个协作模式,覆盖面远超鸿蒙。 ### 3.3 工具调用 | | 鸿蒙 Agent DSL | lambdagent DSL | |--|---------------|---------------| | 定义方式 | 类方法 (`func bookTransport(...)`) | `Tool(name, fn)` | | 协议 | 未公开 | **MCP (Model Context Protocol)** | | 输入验证 | 仓颉类型检查 | `ValidatedTool` + JSON Schema | | 权限控制 | 未公开 | `GatedTool` + `ToolGateway` (60+ 危险命令检测) | | 内置工具数 | 未公开 | **52 个** | ### 3.4 安全保障 | | 鸿蒙 Agent DSL | lambdagent DSL | |--|---------------|---------------| | 编译时类型检查 | 仓颉基础类型 | **T-Compose: output(f) <: input(g)** | | 编译时成本预测 | **无** | **分级类型 (p, t, l, m)** | | 终止性保证 | **无** | **定理 5.4: fix_n 在 n 步终止** | | 并行安全 | **无** | **命题 30: Pair 汇合 + store independence** | | lint 规则 | **无** | **26 条结构规则** | | 效果隔离 | **无** | **ProductionHandler / TestHandler / TraceHandler** | | 成本熔断 | **无** | **CEK Yield 逐步监控** | **这是最大的差距**: 鸿蒙 Agent DSL 没有任何形式化安全保障。lambdagent 的整个类型系统、成本预测、终止性证明,都是鸿蒙不具备的。 ### 3.5 运行时 | | 鸿蒙 Agent DSL | lambdagent DSL | |--|---------------|---------------| | 运行位置 | **端侧 (手机/IoT 设备)** | 服务端 / 本地 | | 执行引擎 | HarmonyOS Agent Runtime | **双引擎 (Recursive / CEK / Adaptive)** | | 暂停/恢复 | 未公开 | **CEK 状态序列化** | | 沙箱 | HarmonyOS 系统沙箱 | 进程隔离 + Git Worktree | | 设备协同 | **分布式能力 (跨设备迁移)** | 无 | | IoT 集成 | **原生支持 (传感器/设备控制)** | 通过 MCP/Tool 间接支持 | **鸿蒙优势**: 端侧运行 + 分布式设备协同 + IoT 原生支持。这是鸿蒙 Agent DSL 最核心的差异化——在手机和 IoT 设备上跑 Agent,lambdagent 做不到。 --- ## 四、本质差异 ``` 鸿蒙 Agent DSL: 面向: 应用开发者 (写 HarmonyOS App) 问题: 怎么在手机/IoT 上快速写出 AI 功能 方法: 装饰器 + 行为描述 → 降低门槛 生态: HarmonyOS 独占,绑定盘古模型 类比: 像 SwiftUI 的 AI 版 (声明式 UI → 声明式 Agent) lambdagent DSL: 面向: Agent 工程师 (构建/运维 Agent 系统) 问题: 怎么保证 Agent 组合不出错、不超支、能终止 方法: 类型系统 + 成本预测 + 终止性证明 生态: 跨平台、多 LLM Provider、MCP 协议 类比: 像 TypeScript (给 Agent 加类型安全) ``` --- ## 五、可以互相学习的 ### 从鸿蒙学 | 鸿蒙的做法 | lambdagent 可以借鉴 | |-----------|-------------------| | `@prompt[pattern]` 结构化行为描述 | 当前 systemPrompt 是自由文本,可以加 action/purpose/expectation 结构 | | IDE 自动生成 Agent 代码 | 可以做 VS Code 插件从注释生成 YAML | | 端侧运行 | 暂不需要(不同赛道) | | IoT Agent (传感器 → 决策 → 设备控制) | 通过 MCP 工具可以间接支持 | ### 鸿蒙可以从 lambdagent 学 | lambdagent 的做法 | 鸿蒙目前缺少 | |------------------|------------| | T-Compose 类型检查 | Agent 组合的编译时验证 | | 成本预测 | Agent 执行的 token/延迟/费用上界 | | 终止性定理 | 循环 Agent 的停机保证 | | 并行安全 | 多 Agent 并行的 store independence | | 6 个 Pattern | 可复用的协作模式库 | | CEK Machine | 暂停/恢复/成本熔断 | | LLM Wiki | 知识编译而非 RAG | | 跨框架 lint | 检查其他框架的 Agent 配置 | --- ## 六、竞争关系分析 **结论: 不是竞品,是不同赛道。** ``` 鸿蒙 Agent DSL 的赛道: 手机 App + IoT 设备 + 华为生态 → 在手机上跑一个能控制空调的 Agent → 在手表上跑一个能推荐路线的 Agent → 华为设备之间协同(手机 → 大屏 → 音箱) lambdagent DSL 的赛道: 服务端 + 企业级 + 跨平台 → 在服务器上跑一个处理 1326 份法规的 Wiki Agent → 在 CI/CD 里检查 100 个 Agent 配置的类型安全 → 给 LangChain/CrewAI/AutoGen 做安全审计 两者的交集: 几乎为零。鸿蒙面向 C 端设备,lambdagent 面向 B 端服务。 ``` 但如果鸿蒙 Agent DSL 未来扩展到服务端(企业级 Agent 编排),那 lambdagent 的类型系统和安全保障就是差异化壁垒——华为可以做运行平台,但形式化证明不是一朝一夕能补的。 --- ## 七、一句话总结 **鸿蒙 Agent DSL 是"怎么在手机上快速写 AI",lambdagent DSL 是"怎么保证 Agent 不出错"。** 一个降低开发门槛(让更多人能写 Agent),一个提高安全底线(让写出来的 Agent 可靠)。目前不在同一个赛道竞争,但共同验证了一个趋势:**Agent 需要自己的 DSL,不能靠通用编程语言硬写**。 Sources: - [HarmonyOS Agent DSL 实战 — 知乎](https://zhuanlan.zhihu.com/p/1921916592708641625) - [Agent DSL 旅行规划 — DEV Community](https://dev.to/xun_wang_6384a403f9817c2/harmonyos-next-practical-practice-intelligent-travel-planning-system-based-on-agent-dsl-ocm) - [Agent DSL 原生 AI 开发 — DEV Community](https://dev.to/xun_wang_6384a403f9817c2/harmonyos-next-innovation-agent-dsl-opens-a-new-chapter-in-native-ai-application-development-4mpd) - [HarmonyOS Agent Framework Kit](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/harmony-agent-framework-kit-guide) - [鸿蒙智能体框架解读 — AI 工具集](https://ai-bot.cn/what-is-hmaf/)