iOS与Android严格同步VisionClaw双客户端平行文件映射与工程规范解析【免费下载链接】VisionClawReal-time AI assistant for Meta Ray-Ban smart glasses -- voice vision agentic actions via Gemini Live and OpenClaw项目地址: https://gitcode.com/gh_mirrors/vi/VisionClawVisionClaw 是一款面向 Meta Ray-Ban 智能眼镜的实时 AI 助手通过语音 视觉 智能体动作让 Gemini Live 看见你所见、听见你所言。它的仓库里同时维护着两个完全对等的客户端iOS 的 CameraAccess/Swift / SwiftUI和 Android 的 CameraAccessAndroid/Kotlin / Jetpack Compose。本文带你解析这个开源项目如何通过平行文件映射和清晰的工程规范保证双端行为严格同步。为什么双端必须严格同步VisionClaw 的架构是客户端把眼镜摄像头的视频帧约 1fps JPEG和麦克风音频16kHz PCM通过 LiveKit SFU 送给 Gemini Live再由 OpenClaw 网关执行搜索、发消息等 56 种技能动作。用户无论用 iPhone 还是安卓手机预期看到的界面、听到的提示音、感受到的交互节奏都应该一致。为了把这条原则落到每一次提交上项目在 samples/CLAUDE.md 中写下了硬性规则Rule: 对任一客户端的行为性或面向用户的修改必须在同一次变更集中镜像到另一端。不允许只上线一端的功能、修复或 UX 微调而让另一端掉队。如果某个改动确实只适用于单一平台如系统 API 无对应物必须在提交中明确说明原因而不是默默跳过。平行文件映射一张表看懂双端结构两端的数据流完全一致client → LiveKit SFU → agent worker gateway。CLAUDE.md 用一张平行文件映射表把每个功能模块在双端的对应文件一一对应起来关注点iOSCameraAccess/CameraAccess/Androidcameraaccess/采集源模型眼镜/手机Settings/SettingsManager.swiftsettings/SettingsManager.kt设置界面Settings/SettingsView.swiftui/SettingsScreen.kt通话 / 主界面OpenClaw/LiveKitStreamView.swiftui/LiveKitStreamScreen.kt采集源切换驱动Views/StreamSessionView.swiftonChangeui/CameraAccessScaffold.ktLaunchedEffectLiveKit 会话OpenClaw/LiveKitSession.swiftlivekit/LiveKitSessionViewModel.kt辅助模式音频提示OpenClaw/Earcons.swiftlivekit/Earcons.kt相同音符序列Siri / 动作键通话控制OpenClaw/CallIntents.swift仅 iOSAndroid 无动作键学习提醒推送OpenClaw/NudgeScheduler.swift尚未移植Android 仅有前台服务通知这张表的价值在于新人拿到任务时只需要按表找到另一端对应文件就知道镜像修改应该改哪里。CLAUDE.md 也要求文件移动或新增平行功能时保持这张表最新。同步落到细节以 Earcons 音频提示音为例最能体现严格同步的是无障碍模式下的提示音Earcons。视障用户看不见通话界面耳边的一声短音是唯一可靠的信号——连接成功和通话丢失必须听感明确区分。iOS 版 Earcons.swift 的注释里写着The same note sequences are used on Android (livekit/Earcons.kt); keep the two in step so a cue means the same thing on both platforms.对比 Android 版 Earcons.kt 的注释两边互为镜像、措辞呼应。再看实现iOSconnected[(660, 0.09), (0, 0.03), (990, 0.12)]AndroidCONNECTED(listOf(660.0 to 0.09, 0.0 to 0.03, 990.0 to 0.12))音高、时长、节奏逐项一致同一声叮在两个平台上意味着同一件事。这种数据必须一致、实现各循惯例的做法正是平行文件映射规范的核心精神SF Symbols 与 Material 图标可以不同SwiftUI 手势与 Compose 指针输入可以不同但行为和 UX 必须一致。测试与配置也保持平行同步不止于界面逻辑测试资产和配置文件同样成对出现测试素材双端自动化测试使用完全相同的plant.mp4/plant.png素材——iOS 在 CameraAccessTests/Assets/Android 在 androidTest/assets/。同一株植物的视频和照片喂给双端视觉理解结果才有可比性。密钥配置iOS 提供 Secrets.swift.exampleAndroid 提供 Secrets.kt.example字段一一对应Gemini API Key、OpenClaw 网关地址与令牌等双端均可在应用内设置页运行时修改。无法同步的部分显式声明而非默默跳过严格同步不等于机械复制。映射表中有两行专门标注了平台差异Siri / 动作键控制CallIntents.swiftiPhone 有 Action Button 可快速挂断/接通而 Android 没有对应硬件改用Hey Google, open VisionClaw语音唤起 自动开始流来覆盖同样场景。学习提醒推送NudgeScheduler.swiftiOS 已实现Android 标注为not yet ported目前只有前台服务通知兜底。这种差异显式登记在案的写法比假装同步更健康——读者一眼就能看出哪些是有意的平台专属哪些是待办避免误以为另一端有 bug。此外像启用眼镜开发者模式这类纯操作型步骤见 assets/dev_mode.png 所示的 Meta AI 应用内路径双端流程一致文档中互相引用即可。工程规范要点总结VisionClaw 的双端同步机制可以浓缩为四条可复用的实践一条硬规则行为/UX 修改必须在同一变更集内双端镜像单端改动必须说明理由一张映射表把关注点 → 双端文件固化成表格并承诺随代码演进持续更新数据对齐、实现自由音符序列、配置字段、测试素材必须逐值一致UI 库与手势 API 遵循各自平台惯例差异显式登记平台专属功能与尚未移植项直接写进映射表不留模糊地带这套规范几乎零额外成本却能让双端客户端在长期迭代中不分叉。如果你想动手验证可以克隆仓库对照阅读git clone https://gitcode.com/gh_mirrors/vi/VisionClaw从 samples/CLAUDE.md 的映射表出发逐行对比 Earcons.swift 与 Earcons.kt你会发现严格同步不是一句口号而是被具体到每一个音高和时长数字上的工程习惯。【免费下载链接】VisionClawReal-time AI assistant for Meta Ray-Ban smart glasses -- voice vision agentic actions via Gemini Live and OpenClaw项目地址: https://gitcode.com/gh_mirrors/vi/VisionClaw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考