引言
在开发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具备实验能力的之后再来解答。