Agent Skill 实战:我把大疆行业无人机上云的坑,固化成了一个技能包

Agent Skill 实战:我把大疆行业无人机上云的坑,固化成了一个技能包

引子:AI 很强,但它在行业场景会"一本正经地胡说"

让 AI 写一个 Vue 组件、调一个 REST 接口,现在都很顺滑。但如果你让它生成一份大疆航线文件(WPML) ,或者对接大疆上云 API(Cloud API),事情就完全不一样了:

  • WPML 是 KML 2.2 的扩展标准,template.kmlwaylines.wpml 两套文件、两套高度体系,字段名拼错一个就解析失败;
  • 航点 index 必须从 0 开始单调连续,finishAction 只能取 goHome/noAction/autoLand/gotoFirstWaypoint,速度范围 1,15 m/s------AI 靠训练数据"猜"出来的枚举值,十有八九是错的;
  • 上云 API 分 sys/thing/ 两层 Topic,消息必须带 tid/bid,回复类消息必须有 data.result,错误码还是 ABCDEF 六位结构......

于是我做了一个开源项目:DJI 上云技能家族(git-skill),把大疆行业无人机开发中"硬邦邦的规则"固化成了 AI Agent 可以按需加载的技能包。

什么是 Agent Skill?

Skill 是 Anthropic 提出的开放标准(agentskills.io):一个文件夹 + 一个 SKILL.md 主文件,加上可选的 reference/(参考资料)、scripts/(工具脚本)、examples/(示例)。

text 复制代码
dji-wpml/
├── SKILL.md               # 技能主入口(何时用、硬性规则、按需加载路由)
├── reference/             # template.kml / waylines.wpml / KMZ 归档 参考
├── scripts/               # validate_wayline.py / package_kmz.py(纯标准库)
├── examples/              # 5 种模板示例(航点/建图/倾斜/航带/目标检测)
└── template/              # 标准骨架模板

关键点:技能不是让 AI 死记硬背,而是"按需加载"SKILL.md 只放路由规则和硬性约束,具体细节放在 reference/ 里,AI 遇到对应任务才加载对应文档,避免污染上下文。

为什么做这个技能包?

三个直接原因:

  1. AI 生成行业格式文件质量不可控:航线文件是"格式敏感"的,一个枚举值写错,DJI Pilot 2 / 司空 2 直接拒绝解析,飞行计划就废了;
  2. 官方文档太重:大疆 Cloud-API-Doc 仓库几百个 Markdown,让 AI 每次现翻不现实,而且容易把文档里"建议值"当成"必填值";
  3. 踩坑经验值得沉淀:上云接入中的常见问题(设备不上线、订阅不到 OSD、下发指令无响应、HMS 告警看不懂)其实都有固定的排查路径,可以固化成"调试速查表"。

技能包总览

仓库包含两个互补的技能:

技能 处理对象 核心价值
dji-wpml WPML 航线文件(template.kml / waylines.wpml / .kmz 生成、解析、修改、校验符合官方标准的航线文件
cloud-api 大疆上云 API(MQTT / HTTPS / WebSocket / JSBridge) 接入、解析、调试与问题定位(机场 / DJI Pilot 2 上云)

设计要点一:把最容易出错的规则写成"硬性规则"

SKILL.md 里有一节专门叫"硬性规则",每条都是踩坑的结晶。例如 dji-wpml:

  • 文件头必须是 <?xml version="1.0" encoding="UTF-8"?> + 双命名空间 <kml>
  • 航点 wpml:index 从 0 开始单调连续递增,范围 0, 65535
  • missionConfig 下六个字段必填,droneInfo/payloadInfo 必填;
  • 两种高度体系千万别混template.kmlheightMode + height(编辑体系),waylines.wpmlexecuteHeightMode + executeHeight(执行体系);
  • 注意"条件必需"规则:waypointSpeed 仅在 useGlobalSpeed=0 时必需,executeRCLostAction 仅在 exitOnRCLost=executeLostAction 时必需。

cloud-api 侧也有类似的硬性规则:

  • 无人机不能直接上云,必须经机场/遥控器网关代理;
  • sys/product/{gateway_sn}thing/product/{sn} 两层 Topic 不要混用;
  • osd 定频上报(pushmode=0)、state 事件性上报(pushmode=1);
  • tid 事务 UUID + bid 业务 UUID 必带,回复必须带 result
  • 错误码 ABCDEF 六位:A 来源、BC 模块、DEF 自定义。

设计要点二:用脚本做"格式兜底"

规则再清楚,AI 也可能手滑。所以每个技能都配了纯 Python 标准库的校验/构造脚本,零第三方依赖,Windows/macOS/Linux 都能跑

bash 复制代码
# dji-wpml:校验航线文件(0 通过 / 1 不通过 / 2 参数错误)
python dji-wpml/scripts/validate_wayline.py <文件.kmz|.kml|.wpml>

# dji-wpml:打包 KMZ
python dji-wpml/scripts/package_kmz.py <template.kml> <waylines.wpml> -o <输出.kmz>

# cloud-api:构造标准 MQTT 消息(自动补 tid/timestamp)
python cloud-api/scripts/build_mqtt.py <template.json> --gateway <sn>

# cloud-api:校验消息合法性
python cloud-api/scripts/validate_mqtt.py <message.json> --topic <topic>

SKILL.md 里明确要求:"生成后必须校验"------生成或修改文件后,必须运行脚本检查,校验通过才算交付。

设计要点三:安全与隐私边界(这个最重要)

做行业无人机的技能,必须把"安全"写进技能本身 。两个 SKILL.md 都有"安全与隐私边界"章节,要求 AI 严格遵守:

  1. 执行前用户确认:航线执行前必须由用户确认坐标、飞行高度、返航高度、失控动作等关键参数;
  2. 不写入用户真实数据:示例文件全部使用虚构坐标,设备 SN、Token、密钥输出前必须脱敏;
  3. 高风险动作再次确认:远程起飞、返航、指飞(DRC)、航线任务下发等动作,必须再次确认;
  4. 校验通过 ≠ 飞行安全:校验脚本只验证格式合法,不代表适航或符合当地法规;
  5. 不主动提权:未经用户要求不得连接设备、读取日志或进行网络操作。

设计要点四:知识来源与版权合规

技能的知识完全来自 DJI 官方文档(dji-sdk/Cloud-API-Doc)。出于版权考虑,官方文档不随仓库分发,使用前需自行 clone:

bash 复制代码
git clone https://github.com/dji-sdk/Cloud-API-Doc.git docs/Cloud-API-Doc

仓库里还做了三件事保证合规:

  • reference/ 下的参考文档是官方文档的"学习笔记式提炼"(非原文);
  • 基于 DJI Pilot 2 实际导出整理的字段全部做了占位化处理;
  • 新增 THIRD_PARTY_NOTICES.md,逐文件声明第三方内容来源;MIT License 也加了授权范围限定,明确排除 DJI/OGC 第三方内容。

实际使用效果

装到 Claude Code(复制到 ~/.claude/skills/ 即可),然后直接对话:

dji-wpml:

"帮我生成一条航点飞行航线 kmz,经过以下三个点:..."

cloud-api:

"机场上线后我怎么订阅它的 OSD 数据?" "这个 HMS 错误码 312022 是什么意思?"

AI 会自动加载对应技能,按 DJI 标准生成/解析,并且生成后跑校验脚本。

下一步计划

我正在规划一个教学协作版工具链 dji-wayline-tools:解析 → 校验 → 打包 → 生成 → 地图可视化,Python 3.10+,核心零依赖,folium/shapely 放可选 extra,CLI 用 typer。目标不只是"好用",更是开源引流 + Python 练手 + 比赛素材

总结

Agent Skill 的价值在于:把领域专家的经验、格式规范、安全边界,变成 AI 可以主动遵守的行为约束。它解决的不是"模型能力"问题,而是"行业知识注入"问题。

DJI 上云技能家族(git-skill)是这套思路的一个完整落地案例:

  • 两个互补技能覆盖航线文件 + 云平台接入;
  • 硬性规则 + 校验脚本双保险;
  • 安全边界写进技能本身;
  • 版权合规处理到位。

仓库地址:git-skill(含 dji-wpml / cloud-api),欢迎 star、fork,或提 issue 讨论你在大疆行业无人机开发中遇到的坑。


声明:本文项目与 DJI(大疆创新)无隶属、赞助或背书关系,仅为技术学习/参考用途。相关商标归大疆所有。

相关推荐
前端小卡拉4 小时前
DeepSeek 把 Agent Harness 开源了:Everything is a Plugin,一个手搓过 harness 的人怎么看
github
TunerT_TQ4 小时前
Microsoft 微软 Fluent UI 源码静态评测:从工程结构、测试线索到交付治理的完整解读
microsoft·开源·github
逛逛GitHub5 小时前
国产桌面端 Agent 进化了,支持定时任务、接入Obsidian、丰富SKill
github
子林super5 小时前
OpenCode的Harness机制与模块
github
fthux5 小时前
装闭 RenoPit 源码解析(12):从AI分析结果到React避坑报告
人工智能·ai·开源·github·open source·renopit
TunerT_TQ5 小时前
Microsoft 微软 AI-For-Beginners 静态评测:一套 AI 入门课程,为什么不能只按代码仓库来评价?
microsoft·开源·github
u1301305 小时前
GitHub 热榜项目:日榜(2026-08-17)
github
问天_观心6 小时前
零基础在windows环境下的WSL使用llamafactory(一)
人工智能·windows·python·神经网络·语言模型·github·模型蒸馏
我一定会有钱7 小时前
打造完美工作流:Git 配置”一次推送,三端同步”(Gitee/GitCode/GitHub)
开发语言·windows·vscode·搜索引擎·gitlab·github·visual studio code