引言

在开发iOS相机超广角缩放功能(0.5x - 2.0x)时,开发者遇到一个隐蔽问题:尽管设备支持DualWideCamera,直接设置videoZoomFactor = 0.5会导致应用崩溃,提示范围异常([1.0, 123.75])。这一问题源于苹果未文档化的虚拟设备缩放映射规则。通过AI辅助调试,耗时2-3小时才解决,暴露了AI在复杂场景下的局限性。本文分析了AI编程结果不佳的根本原因,并提炼一个核心启示:人机协作是解决隐秘规则问题的关键

问题本质:隐藏的缩放映射

表面上,AVCaptureDevice报告minAvailableVideoZoomFactor=1.0,看似不支持0.5x缩放。然而,DualWideCamera等虚拟设备整合了超广角和标准广角镜头,实际缩放通过以下未文档化的映射实现:

用户缩放(感知) 设备videoZoomFactor 镜头 视野角度
0.5x 1.0 超广角 ~106°
1.0x 2.0 广角 ~70°
2.0x 4.0 广角(数字放大) 更窄

关键点:virtualDeviceSwitchOverVideoZoomFactors=[2.0]表示在2.0处切换镜头,但这一规则未在官方文档明确说明,导致开发者直觉误判。

AI编程的局限性

AI在标准API使用和常见模式(如MVVM)中高效,但在本案例中表现不佳,耗时2-3小时,多次尝试失败。核心原因如下:

1. 隐秘规则的盲区

  • 问题:苹果未文档化虚拟设备的缩放映射,API表面显示minZoom=1.0,但实际支持0.5x效果。AI依赖公开文档,未能识别这一“黑箱”规则。
  • 表现:AI建议直接设置videoZoomFactor=0.5(崩溃)、切换独立超广角镜头(不流畅)或检查无效API(如videoMinZoomFactor),均失败。
  • 原因:AI无法推测未公开的平台设计意图。

2. 实验验证的缺失

  • 问题:确认映射需运行代码、观察视野变化,AI无法执行设备测试,需人类反馈日志,导致每次错误尝试耗时20-30分钟。
  • 表现:AI提出多个假设(如格式切换),但需人类验证,效率低下。
  • 原因:AI缺乏实验能力,难以通过试错发现真相。

根本原因

隐秘规则与实验验证缺失是AI结果不佳的根本原因。AI无法自行发现未文档化的映射规则,也无法通过实验验证假设,导致多次无效尝试。只有人类提供关键线索(如切换点[2.0]的含义)后,AI才生成正确代码。

总结

  • 人机协作是解决隐秘规则和实验依赖问题的关键。AI擅长快速编码和细节处理,但面对反直觉设计需人类提供洞察和实验反馈。
  • 合以往的经验给我的感觉是AI很缺乏对于问题的洞察能力,我现在思考也有可能这种洞察能力的缺乏,是因为AI不具备实验能力,如果具备自行实验的能力,那么那么会不会具备动产能力现在犹未可知。
  • 现在很多MCP Server都是为了让AI具备实验能力。后端的程序是比较好具备实验能力的,因为他只需要能够读取日志以及读取到数据库就可以了。但是对于App以及前端页面就需要AI以及AI所用的工具,具备强大的多模态能力。
  • 所以现在我们不着急给AI下定义,是不是真的没办法具备动洞察能力,这个问题我们留到AI具备实验能力的之后再来解答。