鸿蒙 Agent DSL: HarmonyOS 6 引入,基于仓颉 (Cangjie) 语言,面向端侧原生 AI 应用 lambdagent DSL: 基于 λA 类型化 Lambda 演算,面向服务端 Agent 编排和安全保障
Sources:
| 维度 | 鸿蒙 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 不出错)。
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% |
// 完整 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
}
}
// 多 Agent 路由调度
@agent[model: "openai:gpt-4o"]
class PrimaryAgent { }
@agent[model: "ollama:llama3"]
class SecondaryAgent { }
// DispatchAgent 根据任务复杂度自动路由
let routerAgent = DispatchAgent(model: "deepseek:deepseek-chat") <=[
PrimaryAgent(),
SecondaryAgent()
]
// 多 Agent MCP 通信
agent CustomerService {
plan HandleRiskInquiry {
step SendMessage(to: "RiskControlAgent", type: "async",
content: {question: user_question})
step WhenMessageReceived(from: "RiskControlAgent")
-> GenerateResponse()
}
}
| 维度 | 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 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 描述行为# 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 配置
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 是输出验证| | 鸿蒙 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 没有这些。
| | 鸿蒙 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 个协作模式,覆盖面远超鸿蒙。
| | 鸿蒙 Agent DSL | lambdagent DSL |
|--|---------------|---------------|
| 定义方式 | 类方法 (func bookTransport(...)) | Tool(name, fn) |
| 协议 | 未公开 | MCP (Model Context Protocol) |
| 输入验证 | 仓颉类型检查 | ValidatedTool + JSON Schema |
| 权限控制 | 未公开 | GatedTool + ToolGateway (60+ 危险命令检测) |
| 内置工具数 | 未公开 | 52 个 |
| | 鸿蒙 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 的整个类型系统、成本预测、终止性证明,都是鸿蒙不具备的。
| | 鸿蒙 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 的做法 | 鸿蒙目前缺少 |
|---|---|
| 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: