1. 调试与测试
插件化手册
  • FH2 插件开发手册
    • 产品简介
    • 典型场景
    • 发版说明
    • 快速开始
      • 快速开始总览
      • 第一个插件
      • 后端插件
      • 全栈闭环
    • AI辅助开发
      • AI 开发 Skill
      • 安装与复验
      • 第一个工程
      • 真实需求示例:现场问题上报
      • 改造已有工程
      • 调试与交付
    • 开发指南
      • 开发指南
      • 基础概念
        • 基础概念总览
        • 什么是插件开发
        • 平台架构
        • 前端宿主、扩展点与能力
        • 后端运行时、入口与权限
        • 开发流程
        • 安全与隔离
        • 支持范围与问题反馈
      • 开发指南
        • 开发指南总览
        • 前端插件
          • 前端插件深度指南
          • 前端工程结构
          • 插件清单(fh2-plugin.json)
          • 入口与生命周期
          • 界面与状态
          • 多宿主插件
          • 跨宿主通信服务
          • HTTP、WebSocket 与事件
          • 存储、Blob 与定时器
          • 工具链与本地调试页面
        • 后端插件
          • 后端开发深度指南
          • 后端插件的结构
          • 后端源清单 fh2-plugin.json
          • HTTP 接口处理函数
          • 消息订阅与事件处理函数
          • ctx 与能力注入
          • 数据存储与缓存
          • 流程编排
          • 触发方式
          • 连接外部系统
          • 流程编排练习(DAG)
        • 前后端协作
          • 前后端协作总览
          • 前后端共享契约
          • 端到端幂等
          • 事件、通知与状态
          • 统一错误模型
          • 链路标识与诊断日志
        • 完整练习
          • 环境准备
          • 第一个前端插件
          • 第一个后端插件
          • 第一个全栈插件
      • 能力总览
        • 能力地图
        • 能力可用性矩阵
        • 前端能力
          • 平台通用能力
            • 平台通用能力总览
            • 基础运行时:HTTP、事件、WebSocket 与存储
            • 导航、位置与通知
            • 弹窗、音频与剪贴板
            • 地图能力
            • 项目设备能力
            • WPMZ 与航线预览
            • 受控对象上传
          • 项目宿主
            • 项目宿主总览
            • 项目上下文
            • 项目侧边栏入口
            • 项目插件路由
            • 项目工作区
          • 消息宿主
            • 消息宿主总览
            • 消息告警弹层
            • 消息导航与通知
          • 计划库宿主
            • 计划库宿主总览
            • 计划库表单上下文
            • 计划库表单扩展
            • 校验、提交与 `biz_ext`
          • 驾驶舱
            • 驾驶舱插件能力总览
            • 驾驶舱扩展点
            • 上下文与遥测
            • 相机、检测与 AI
            • 场景几何与直播指针
            • 飞控、云台与任务
            • 驾驶舱平台事件
        • 后端能力
          • 后端能力地图
          • 后端能力总览
          • 配置、受管出网与集成连接
          • 事件与流程
          • 飞行任务与违停巡逻
          • 数据存储
          • 媒体与前端通知
          • 资源租约
          • 作业、目标轨迹与视频处理
      • 调试与测试
        • 调试与测试总览
        • 快速入门排错
        • 本地开发
        • Web IDE:打开工程与保存改动
        • 工作流编辑器:节点、接线与交付
        • 知识与 MCP:先判断需要哪一层事实
        • 前端本地调试
        • 后端运行时与流程调试
        • 模拟数据与测试数据
        • 集成测试与 E2E
        • 日志与链路追踪
        • 常见问题排查
      • 完整示例
        • 示例与案例总览
        • 项目侧边栏与工作区
        • 消息告警卡片
        • 计划表单任务清单
        • 驾驶舱动作与左侧面板
        • 最小后端插件
        • 最小全栈插件
        • 多宿主插件实战
        • 事故快处
        • 交通抓拍
        • 违停巡逻完整案例
      • 构建发布与安全
        • 构建、发布与安全
        • 质量门禁
        • 行业包构建与打包
        • 能力版本发布
        • 安装、升级与回滚
        • 安全基线
      • API参考
        • API 参考总览
        • 前端
          • 前端 API 参考
          • 前端插件清单结构
          • 前端 SDK API
          • 前端扩展点目录
          • 前端能力目录
          • 前端平台事件目录
          • 跨宿主通信服务 API
          • 工具链命令行参考(`fh2-plugin`)
        • 后端
          • 后端 API 参考
          • 后端插件源清单
          • 后端 HTTP 接口参考
          • 后端事件消费参考
          • 后端脚本上下文(`ctx`)
          • 后端数据存储
          • 流程编排语言
          • 流程触发器参考
          • 后端能力目录
          • 后端 HTTP API
        • 共享契约
          • 共享契约参考
          • 类型与契约目录
          • 错误模型
          • 版本兼容性
      • 附录
        • 错误码
        • 术语表
        • 常见问题
  1. 调试与测试

本地开发

本地开发有几条链路:有的模拟宿主,有的连接真实环境。先选对链路,再解读结果。本文适用当前发行版;Web IDE、流程画布和 MCP 是可选工具,不替代目标环境验收。

四条链路怎么选#

链路怎么启动能验证不能验证
本地调试页面(模拟宿主)fh2-plugin dev清单装载、目标宿主激活、扩展点、界面、通信、资源释放、模拟网络真实账号权限、设备结果、生产网络与后端队列语义
驾驶舱模拟器fh2-plugin dev cockpit,选择插件或能力根驾驶舱布局、工具栏/面板/直播叠加层、模拟能力交互真机协议、飞控结果、实际媒体质量
真实环境预览fh2-plugin preview本地产物在真实宿主、真实登录态、真实能力下的行为未实际执行的设备动作与后端分支
已部署后端测试环境使用部署方提供的环境入口和凭据后端运行时、真实存储、流程执行、消息投递与重试未实际执行的设备动作或未接通的能力提供方
本地调试页面由 fh2-plugin dev 启动,用于模拟宿主,实现了平台的装载协议和一批模拟能力。
模拟数据只能证明"插件对模拟契约的处理正确"。本地调试页面里相机、遥测或飞行命令返回成功,不等于真机行为通过。

环境准备#

本地开发需要 Node.js 和浏览器。开发者工具初始化需要 Node.js >=20.19(推荐 22 LTS 及以上),pnpm 由 Corepack 按工具锁定版本自动准备。插件工程再沿用创建时选择的包管理器和生成配置。先取得获授权的开发者工具并完成构建/CLI 注册,检查 fh2-plugin create --version;本地 HTTP 模拟器随工具链启动,无需部署后端基础服务。
具体安装步骤见环境准备。

最短前端循环#

在已生成的 pnpm 工程工作区根(有 package.json)执行;能力模板外层还有 packages.json,脚本通过 --root 选择能力子目录。开发者工具根目录不能当作插件工作区:
pnpm run dev 会先构建并监听源码。前端或含前端的能力工程启动本地调试页面,默认端口 5175;独立后端只启动本地调试网关。都以终端实际输出为准。
常用变体:
含 packages.json 的行业工作区根不支持不选能力就直接 CLI dev。使用上面的 --root <能力子目录>,或在含 package.json + packages.json 的外层根运行已有的 pnpm run dev。新生成工作区还可在这个根运行 pnpm run dev:cockpit,根脚本显式选择内层能力;旧工程没有该脚本时,保留上面的 pnpm exec fh2-plugin dev cockpit --root "<能力子目录>"。
前端成员的同名 dev:cockpit 脚本只针对该成员,不代表完整能力链路。不要在 frontend/ 父目录或成员 src/ 中猜测脚本归属;明确选外层根。已有 pnpm 工作区内可用 pnpm -w run dev:cockpit 明确运行根脚本,不套用到其他包管理器。cockpit 必须放在 CLI 选项之前,且运行结果仍包含 project+message+cockpit 三个宿主。
前端重建成功会刷新页面;能力内后端重建成功只重载本地后端。构建失败先修终端第一条诊断,已有页面可能仍展示上一份产物。独立后端没有页面错误提示,必须看终端。--no-watch 不再重建,但服务仍运行到手动停止。

使用本地调试页面#

1.
打开终端打印的完整地址,保留组织/项目路径、设备参数和 # 后的路由,不只复制端口根地址。
2.
从顶部开发工具栏打开「插件」,检查插件启用状态;按需保存配置并重载。
3.
打开「Host」核对实际挂载状态。团队/插件页是 project+message;计划页再加 plan;驾驶舱页再加 cockpit。页面不可见不代表宿主卸载。
4.
打开「场景」发送模拟事件;打开「诊断」按插件、宿主、阶段或错误码定位。验证释放时在「Host」实际卸载对应宿主,再看资源快照。
本地团队页
本地驾驶舱与 Host 面板
工具面板可停靠右侧或底部并调整大小;浏览器允许本地存储时会记住布局。模拟场景的成功只能证明本地契约处理,不证明真实设备动作。

本地全栈循环#

在能力根运行,工程包含后端且未用 --frontend-only 时,dev 会构建后端并启动本地 HTTP 模拟器。--backend-only 可只运行本地后端;单个成员筛选使用能力根的 --frontend / --backend:
前端 ctx.apiCall('/plugin/invoke')
  → 本地 HTTP 模拟器(模拟路由与鉴权)
  → 构建后的 handlers/events 脚本
  → 内存数据存储
  → { code, message, data }
这条链路执行插件的接口/事件脚本,但存储和事件投递是本地内存实现,不等价于真实网关、数据库、消息投递或流程运行。build / pack 都不启动服务;本地 dev 不执行流程。错误码、事件形状和排序差异见已知限制。
可选 --gateway-target <origin> 只代理固定 HTTP 网关,需要通过环境变量安全注入 FH2_DEV_LOGIN_TOKEN;不打印或提交变量值。本地 WebSocket 与平台事件仍是模拟数据,不会自动接上真实订阅。

真实环境预览#

本地调试通过后,用 HTTP 预览在获授权的真实宿主里检查前端。目标须是支持插件调试的私有化环境,你还需要登录权限和目标项目访问权限。当前只支持 HTTP:目标只有 HTTPS 时停在这里,不要装证书或关闭校验来绕过。
在已安装依赖的前端插件或能力根执行,地址换成实际 HTTP 项目页,命令不包含凭据:
1.
等终端打出 PAC、调试面板和「插件来源URL」三类地址,保持进程运行。ready 只说明本地代理和产物就绪。
2.
在代理扩展(如 SwitchyOmega)新建 PAC 情景模式,填入本次 PAC 地址,更新并启用。命令不会改你的浏览器代理。
3.
在同一 HTTP Origin 先登录并进入目标项目,再打开终端打印的调试面板地址。
4.
在面板「本地插件来源」手填本次完整资源根。它不是入口 JS、清单、PAC 或面板地址,也不要复用旧会话。
5.
点「校验本地插件」,核对插件 ID、版本和权限。
6.
勾选「允许远端未安装插件临时运行」,再点「确认并重载」。
终端打印的 PAC、调试面板与插件来源URL
三类地址各有用处:PAC 填进代理,调试面板用来打开页面,资源根手填进面板。
在代理扩展中填写 PAC 网址并下载脚本
填入 PAC 后「应用选项」,再「立即更新情景模式」下载脚本;只有本次目标 Origin 走本地代理。
真实宿主中的本地预览面板与停用入口
来源 URL 已隐藏;图中正在校验,同意项未勾选。
同 ID 的远端插件按 overlay 覆盖安装清单里已声明的资源(含图标,新增图标要走正常版本升级);远端没有的按 temporary 临时运行。两种情况都只有前端来自本地,后端仍是目标环境已安装版本。
普通页面和 HTTP 接口转发到目标,只有本次会话的插件资源来自本地;代理不是通用代理,不提供 HTTPS 隧道,也不保证 WebSocket 联调。
重建默认监听源码,--no-watch 只构建一次;插件 ID 变了要重启预览并重填资源根。其它参数见工具链命令行参考。
本地代理成功、面板确认、真实宿主激活是三件不同的事;后端流程和设备动作还要单独验。结束时的停用与代理清理见每轮结束。

可选开发工具#

工具适合的任务下一步
Web IDE打开本地工程、编辑文件、保存冲突处理、运行本地任务启动与保存
工作流画布(DAG)编辑流程节点、依赖、参数和共享业务功能流程编辑与检查边界
知识与 MCP固定后端检查依据,供 AI 只读检索或显式执行工程任务知识与 MCP
这些工具使用同一份磁盘工程,但有各自的保存、任务及访问边界;不要把 AI 回答或画布变绿当成真实运行结果。

已部署后端验证#

需要验证流程编排、真实存储或消息投递语义时,使用已有测试环境,由部署方确认接入与服务就绪:
1.
请部署方确认插件已安装、业务表已建、相关能力提供方和队列已就绪,并取得测试入口与授权方式。
2.
使用隔离测试数据,按 pluginId / 接口名(handler)调用接口;流程按流程名和业务 ID 启动、查询和投递信号。
3.
检查重复调用、重投、流程等待与失败恢复,保留业务 ID、错误码和流程状态;需要日志或消息重放时联系技术支持或部署方。
详细步骤见后端调试。真实设备测试另需获批项目与设备,不能用模拟结果替代。

每轮结束#

在本地调试页面实际卸载对应宿主,检查诊断面板资源快照,再用 Ctrl+C 关闭 dev。
真实预览结束时,先在宿主面板点「停用并重载」,清除本地来源;再停止 preview,关闭临时 PAC 并恢复原代理模式。否则目标访问可能仍依赖已停止的本地服务。
确认自己启动的服务和监听退出、端口释放。不要停止别人的进程。
关闭 IDE/MCP 前核对未保存文件和仍运行的任务;不要提交 Token、密钥或现场配置。

继续阅读#

前端本地调试
后端调试
模拟数据与测试数据
集成测试与 E2E
日志与链路追踪
常见问题排查
修改于 2026-10-27 06:42:28
上一页
快速入门排错
下一页
Web IDE:打开工程与保存改动
Built with