[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Intent-Lab--VisionClaw":3,"tool-Intent-Lab--VisionClaw":61},[4,18,26,36,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":17},4292,"Deep-Live-Cam","hacksider\u002FDeep-Live-Cam","Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具，用户仅需一张静态照片，即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点，让高质量的数字内容创作变得触手可及。\n\n这款工具不仅适合开发者和技术研究人员探索算法边界，更因其极简的操作逻辑（仅需三步：选脸、选摄像头、启动），广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换，还是制作趣味短视频和直播互动，Deep-Live-Cam 都能提供流畅的支持。\n\n其核心技术亮点在于强大的实时处理能力，支持口型遮罩（Mouth Mask）以保留使用者原始的嘴部动作，确保表情自然精准；同时具备“人脸映射”功能，可同时对画面中的多个主体应用不同面孔。此外，项目内置了严格的内容安全过滤机制，自动拦截涉及裸露、暴力等不当素材，并倡导用户在获得授权及明确标注的前提下合规使用，体现了技术发展与伦理责任的平衡。",88924,"2026-04-06T03:28:53",[14,15,13,60],"视频",{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":77,"owner_url":78,"languages":77,"stars":79,"forks":80,"last_commit_at":81,"license":82,"difficulty_score":83,"env_os":84,"env_gpu":85,"env_ram":85,"env_deps":86,"category_tags":95,"github_topics":77,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":98,"updated_at":99,"faqs":100,"releases":101},5100,"Intent-Lab\u002FVisionClaw","VisionClaw","Real-time AI assistant for Meta Ray-Ban smart glasses -- voice + vision + agentic actions via Gemini Live and OpenClaw","VisionClaw 是一款专为 Meta Ray-Ban 智能眼镜打造的实时 AI 助手，同时也支持在 iOS 和 Android 手机上运行。它让用户只需通过语音指令，就能让 AI“看见”你所见的场景并执行具体操作，真正实现了眼手解放的交互体验。\n\n这款工具解决了智能眼镜以往只能被动记录或进行简单问答的局限。用户戴上眼镜后，可以随时询问“我正在看什么”，AI 会基于摄像头画面实时描述场景；也能直接下达复杂指令，如“把牛奶加入购物清单”、“给约翰发消息说我会迟到”或“搜索附近最好的咖啡馆”。VisionClaw 能自动调用联网应用完成这些任务，并将结果语音反馈给用户。\n\n它非常适合开发者、技术爱好者以及希望探索下一代可穿戴设备交互模式的研究人员使用。对于普通用户而言，若具备一定动手配置能力，也能将其作为提升日常效率的智能伴侣。\n\nVisionClaw 的核心亮点在于深度集成了谷歌 Gemini Live API 与 OpenClaw 框架。它摒弃了传统的“先转文字再处理”模式，采用原生音频流与低帧率视频流（约 1fps）并通过 WebSocket 实时传输，确保了极低的延迟和自然的对","VisionClaw 是一款专为 Meta Ray-Ban 智能眼镜打造的实时 AI 助手，同时也支持在 iOS 和 Android 手机上运行。它让用户只需通过语音指令，就能让 AI“看见”你所见的场景并执行具体操作，真正实现了眼手解放的交互体验。\n\n这款工具解决了智能眼镜以往只能被动记录或进行简单问答的局限。用户戴上眼镜后，可以随时询问“我正在看什么”，AI 会基于摄像头画面实时描述场景；也能直接下达复杂指令，如“把牛奶加入购物清单”、“给约翰发消息说我会迟到”或“搜索附近最好的咖啡馆”。VisionClaw 能自动调用联网应用完成这些任务，并将结果语音反馈给用户。\n\n它非常适合开发者、技术爱好者以及希望探索下一代可穿戴设备交互模式的研究人员使用。对于普通用户而言，若具备一定动手配置能力，也能将其作为提升日常效率的智能伴侣。\n\nVisionClaw 的核心亮点在于深度集成了谷歌 Gemini Live API 与 OpenClaw 框架。它摒弃了传统的“先转文字再处理”模式，采用原生音频流与低帧率视频流（约 1fps）并通过 WebSocket 实时传输，确保了极低的延迟和自然的对话体验。结合 OpenClaw 提供的 56 多种技能插件，它能无缝连接消息软件、智能家居及网络搜索，将视觉感知转化为实际行动。","# VisionClaw\n\n![VisionClaw](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_readme_56431ce9a4d7.png)\n\nA real-time AI assistant for Meta Ray-Ban smart glasses. See what you see, hear what you say, and take actions on your behalf -- all through voice.\n\n![Cover](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_readme_50bacdbe96fa.png)\n\nBuilt on [Meta Wearables DAT SDK](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios) (iOS) \u002F [DAT Android SDK](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw) (Android) + [Gemini Live API](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Flive) + [OpenClaw](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw) (optional).\n\n**Supported platforms:** iOS (iPhone) and Android (Pixel, Samsung, etc.)\n\n## What It Does\n\nPut on your glasses, tap the AI button, and talk:\n\n- **\"What am I looking at?\"** -- Gemini sees through your glasses camera and describes the scene\n- **\"Add milk to my shopping list\"** -- delegates to OpenClaw, which adds it via your connected apps\n- **\"Send a message to John saying I'll be late\"** -- routes through OpenClaw to WhatsApp\u002FTelegram\u002FiMessage\n- **\"Search for the best coffee shops nearby\"** -- web search via OpenClaw, results spoken back\n\nThe glasses camera streams at ~1fps to Gemini for visual context, while audio flows bidirectionally in real-time.\n\n## How It Works\n\n![How It Works](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_readme_2d79a403a1f8.png)\n\n```\nMeta Ray-Ban Glasses (or phone camera)\n       |\n       | video frames + mic audio\n       v\niOS \u002F Android App (this project)\n       |\n       | JPEG frames (~1fps) + PCM audio (16kHz)\n       v\nGemini Live API (WebSocket)\n       |\n       |-- Audio response (PCM 24kHz) --> App --> Speaker\n       |-- Tool calls (execute) -------> App --> OpenClaw Gateway\n       |                                              |\n       |                                              v\n       |                                      56+ skills: web search,\n       |                                      messaging, smart home,\n       |                                      notes, reminders, etc.\n       |                                              |\n       |\u003C---- Tool response (text) \u003C----- App \u003C-------+\n       |\n       v\n  Gemini speaks the result\n```\n\n**Key pieces:**\n- **Gemini Live** -- real-time voice + vision AI over WebSocket (native audio, not STT-first)\n- **OpenClaw** (optional) -- local gateway that gives Gemini access to 56+ tools and all your connected apps\n- **Phone mode** -- test the full pipeline using your phone camera instead of glasses\n- **WebRTC streaming** -- share your glasses POV live to a browser viewer\n\n---\n\n## Quick Start (iOS)\n\n### 1. Clone and open\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsseanliu\u002FVisionClaw.git\ncd VisionClaw\u002Fsamples\u002FCameraAccess\nopen CameraAccess.xcodeproj\n```\n\n### 2. Add your secrets\n\nCopy the example file and fill in your values:\n\n```bash\ncp CameraAccess\u002FSecrets.swift.example CameraAccess\u002FSecrets.swift\n```\n\nEdit `Secrets.swift` with your [Gemini API key](https:\u002F\u002Faistudio.google.com\u002Fapikey) (required) and optional OpenClaw\u002FWebRTC config.\n\n### 3. Build and run\n\nSelect your iPhone as the target device and hit Run (Cmd+R).\n\n### 4. Try it out\n\n**Without glasses (iPhone mode):**\n1. Tap **\"Start on iPhone\"** -- uses your iPhone's back camera\n2. Tap the **AI button** to start a Gemini Live session\n3. Talk to the AI -- it can see through your iPhone camera\n\n**With Meta Ray-Ban glasses:**\n\nFirst, enable Developer Mode in the Meta AI app:\n\n1. Open the **Meta AI** app on your iPhone\n2. Go to **Settings** (gear icon, bottom left)\n3. Tap **App Info**\n4. Tap the **App version** number **5 times** -- this unlocks Developer Mode\n5. Go back to Settings -- you'll now see a **Developer Mode** toggle. Turn it on.\n\n![How to enable Developer Mode](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_readme_1a9b00af355b.png)\n\nThen in VisionClaw:\n1. Tap **\"Start Streaming\"** in the app\n2. Tap the **AI button** for voice + vision conversation\n\n---\n\n## Quick Start (Android)\n\n### 1. Clone and open\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsseanliu\u002FVisionClaw.git\n```\n\nOpen `samples\u002FCameraAccessAndroid\u002F` in Android Studio.\n\n### 2. Configure GitHub Packages (DAT SDK)\n\nThe Meta DAT Android SDK is distributed via GitHub Packages. You need a GitHub Personal Access Token with `read:packages` scope.\n\n1. Go to [GitHub > Settings > Developer Settings > Personal Access Tokens](https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens) and create a **classic** token with `read:packages` scope\n2. In `samples\u002FCameraAccessAndroid\u002Flocal.properties`, add:\n\n```properties\ngithub_token=YOUR_GITHUB_TOKEN\n```\n\n> **Tip:** If you have the `gh` CLI installed, you can run `gh auth token` to get a valid token. Make sure it has `read:packages` scope -- if not, run `gh auth refresh -s read:packages`.\n>\n> **Note:** GitHub Packages requires authentication even for public repositories. The 401 error means your token is missing or invalid.\n\n### 3. Add your secrets\n\n```bash\ncd samples\u002FCameraAccessAndroid\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fmeta\u002Fwearable\u002Fdat\u002Fexternalsampleapps\u002Fcameraaccess\u002F\ncp Secrets.kt.example Secrets.kt\n```\n\nEdit `Secrets.kt` with your [Gemini API key](https:\u002F\u002Faistudio.google.com\u002Fapikey) (required) and optional OpenClaw\u002FWebRTC config.\n\n### 4. Build and run\n\n1. Let Gradle sync in Android Studio (it will download the DAT SDK from GitHub Packages)\n2. Select your Android phone as the target device\n3. Click Run (Shift+F10)\n\n> **Wireless debugging:** You can also install via ADB wirelessly. Enable **Wireless debugging** in your phone's Developer Options, then pair with `adb pair \u003Cip>:\u003Cport>`.\n\n### 5. Try it out\n\n**Without glasses (Phone mode):**\n1. Tap **\"Start on Phone\"** -- uses your phone's back camera\n2. Tap the **AI button** (sparkle icon) to start a Gemini Live session\n3. Talk to the AI -- it can see through your phone camera\n\n**With Meta Ray-Ban glasses:**\n\nEnable Developer Mode in the Meta AI app (same steps as iOS above), then:\n1. Tap **\"Start Streaming\"** in the app\n2. Tap the **AI button** for voice + vision conversation\n\n---\n\n## Setup: OpenClaw (Optional)\n\nOpenClaw gives Gemini the ability to take real-world actions: send messages, search the web, manage lists, control smart home devices, and more. Without it, Gemini is voice + vision only.\n\n### 1. Install and configure OpenClaw\n\nFollow the [OpenClaw setup guide](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw). Make sure the gateway is enabled:\n\nIn `~\u002F.openclaw\u002Fopenclaw.json`:\n\n```json\n{\n  \"gateway\": {\n    \"port\": 18789,\n    \"bind\": \"lan\",\n    \"auth\": {\n      \"mode\": \"token\",\n      \"token\": \"your-gateway-token-here\"\n    },\n    \"http\": {\n      \"endpoints\": {\n        \"chatCompletions\": { \"enabled\": true }\n      }\n    }\n  }\n}\n```\n\nKey settings:\n- `bind: \"lan\"` -- exposes the gateway on your local network so your phone can reach it\n- `chatCompletions.enabled: true` -- enables the `\u002Fv1\u002Fchat\u002Fcompletions` endpoint (off by default)\n- `auth.token` -- the token your app will use to authenticate\n\n### 2. Configure the app\n\n**iOS** -- In `Secrets.swift`:\n```swift\nstatic let openClawHost = \"http:\u002F\u002FYour-Mac.local\"\nstatic let openClawPort = 18789\nstatic let openClawGatewayToken = \"your-gateway-token-here\"\n```\n\n**Android** -- In `Secrets.kt`:\n```kotlin\nconst val openClawHost = \"http:\u002F\u002FYour-Mac.local\"\nconst val openClawPort = 18789\nconst val openClawGatewayToken = \"your-gateway-token-here\"\n```\n\nTo find your Mac's Bonjour hostname: **System Settings > General > Sharing** -- it's shown at the top (e.g., `Johns-MacBook-Pro.local`).\n\n> Both iOS and Android also have an in-app Settings screen where you can change these values at runtime without editing source code.\n\n### 3. Start the gateway\n\n```bash\nopenclaw gateway restart\n```\n\nVerify it's running:\n\n```bash\ncurl http:\u002F\u002Flocalhost:18789\u002Fhealth\n```\n\nNow when you talk to the AI, it can execute tasks through OpenClaw.\n\n---\n\n## Architecture\n\n### Key Files (iOS)\n\nAll source code is in `samples\u002FCameraAccess\u002FCameraAccess\u002F`:\n\n| File | Purpose |\n|------|---------|\n| `Gemini\u002FGeminiConfig.swift` | API keys, model config, system prompt |\n| `Gemini\u002FGeminiLiveService.swift` | WebSocket client for Gemini Live API |\n| `Gemini\u002FAudioManager.swift` | Mic capture (PCM 16kHz) + audio playback (PCM 24kHz) |\n| `Gemini\u002FGeminiSessionViewModel.swift` | Session lifecycle, tool call wiring, transcript state |\n| `OpenClaw\u002FToolCallModels.swift` | Tool declarations, data types |\n| `OpenClaw\u002FOpenClawBridge.swift` | HTTP client for OpenClaw gateway |\n| `OpenClaw\u002FToolCallRouter.swift` | Routes Gemini tool calls to OpenClaw |\n| `iPhone\u002FIPhoneCameraManager.swift` | AVCaptureSession wrapper for iPhone camera mode |\n| `WebRTC\u002FWebRTCClient.swift` | WebRTC peer connection + SDP negotiation |\n| `WebRTC\u002FSignalingClient.swift` | WebSocket signaling for WebRTC rooms |\n\n### Key Files (Android)\n\nAll source code is in `samples\u002FCameraAccessAndroid\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002F...\u002Fcameraaccess\u002F`:\n\n| File | Purpose |\n|------|---------|\n| `gemini\u002FGeminiConfig.kt` | API keys, model config, system prompt |\n| `gemini\u002FGeminiLiveService.kt` | OkHttp WebSocket client for Gemini Live API |\n| `gemini\u002FAudioManager.kt` | AudioRecord (16kHz) + AudioTrack (24kHz) |\n| `gemini\u002FGeminiSessionViewModel.kt` | Session lifecycle, tool call wiring, UI state |\n| `openclaw\u002FToolCallModels.kt` | Tool declarations, data classes |\n| `openclaw\u002FOpenClawBridge.kt` | OkHttp HTTP client for OpenClaw gateway |\n| `openclaw\u002FToolCallRouter.kt` | Routes Gemini tool calls to OpenClaw |\n| `phone\u002FPhoneCameraManager.kt` | CameraX wrapper for phone camera mode |\n| `webrtc\u002FWebRTCClient.kt` | WebRTC peer connection (stream-webrtc-android) |\n| `webrtc\u002FSignalingClient.kt` | OkHttp WebSocket signaling for WebRTC rooms |\n| `settings\u002FSettingsManager.kt` | SharedPreferences with Secrets.kt fallback |\n\n### Audio Pipeline\n\n- **Input**: Phone mic -> AudioManager (PCM Int16, 16kHz mono, 100ms chunks) -> Gemini WebSocket\n- **Output**: Gemini WebSocket -> AudioManager playback queue -> Phone speaker\n- **iOS iPhone mode**: Uses `.voiceChat` audio session for echo cancellation + mic gating during AI speech\n- **iOS Glasses mode**: Uses `.videoChat` audio session (mic is on glasses, speaker is on phone -- no echo)\n- **Android**: Uses `VOICE_COMMUNICATION` audio source for built-in acoustic echo cancellation\n\n### Video Pipeline\n\n- **Glasses**: DAT SDK video stream (24fps) -> throttle to ~1fps -> JPEG (50% quality) -> Gemini\n- **Phone**: Camera capture (30fps) -> throttle to ~1fps -> JPEG -> Gemini\n\n### Tool Calling\n\nGemini Live supports function calling. Both apps declare a single `execute` tool that routes everything through OpenClaw:\n\n1. User says \"Add eggs to my shopping list\"\n2. Gemini speaks \"Sure, adding that now\" (verbal acknowledgment before tool call)\n3. Gemini sends `toolCall` with `execute(task: \"Add eggs to the shopping list\")`\n4. `ToolCallRouter` sends HTTP POST to OpenClaw gateway\n5. OpenClaw executes the task using its 56+ connected skills\n6. Result returns to Gemini via `toolResponse`\n7. Gemini speaks the confirmation\n\n### WebRTC Live Streaming\n\nShare your glasses POV in real-time to a browser viewer with bidirectional audio and video.\n\n1. Tap the **Live** button in the app\n2. The app connects to a signaling server and gets a 6-character room code\n3. Share the code -- the viewer opens the server URL in a browser and enters it\n4. WebRTC peer connection is established (SDP + ICE via the signaling server)\n5. Media flows peer-to-peer: glasses video to browser, browser camera back to iOS PiP\n\n**Key details:**\n- **Signaling server**: Node.js + WebSocket, located at `samples\u002FCameraAccess\u002Fserver\u002F` -- serves the browser viewer and relays SDP\u002FICE\n- **NAT traversal**: Google STUN servers + ExpressTURN relay (fetched from `\u002Fapi\u002Fturn`)\n- **Video**: 24 fps, 2.5 Mbps max bitrate\n- **Background handling**: 60-second grace period for iOS app backgrounding -- room stays alive for reconnection\n- **Constraint**: Cannot run simultaneously with Gemini Live (audio device conflict)\n\nFor full details, see [`samples\u002FCameraAccess\u002FCameraAccess\u002FWebRTC\u002FREADME.md`](samples\u002FCameraAccess\u002FCameraAccess\u002FWebRTC\u002FREADME.md).\n\n---\n\n## Requirements\n\n### iOS\n- iOS 17.0+\n- Xcode 15.0+\n- Gemini API key ([get one free](https:\u002F\u002Faistudio.google.com\u002Fapikey))\n- Meta Ray-Ban glasses (optional -- use iPhone mode for testing)\n- OpenClaw on your Mac (optional -- for agentic actions)\n\n### Android\n- Android 14+ (API 34+)\n- Android Studio Ladybug or newer\n- GitHub account with `read:packages` token (for DAT SDK)\n- Gemini API key ([get one free](https:\u002F\u002Faistudio.google.com\u002Fapikey))\n- Meta Ray-Ban glasses (optional -- use Phone mode for testing)\n- OpenClaw on your Mac (optional -- for agentic actions)\n\n---\n\n## Troubleshooting\n\n### General\n\n**Gemini doesn't hear me** -- Check that microphone permission is granted. The app uses aggressive voice activity detection -- speak clearly and at normal volume.\n\n**OpenClaw connection timeout** -- Make sure your phone and Mac are on the same Wi-Fi network, the gateway is running (`openclaw gateway restart`), and the hostname matches your Mac's Bonjour name.\n\n**OpenClaw opens duplicate browser tabs** -- This is a known upstream issue in OpenClaw's CDP (Chrome DevTools Protocol) connection management ([#13851](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw\u002Fissues\u002F13851), [#12317](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw\u002Fissues\u002F12317)). Using `profile: \"openclaw\"` (managed Chrome) instead of the default extension relay may improve stability.\n\n### iOS-specific\n\n**\"Gemini API key not configured\"** -- Add your API key in Secrets.swift or in the in-app Settings.\n\n**Echo\u002Ffeedback in iPhone mode** -- The app mutes the mic while the AI is speaking. If you still hear echo, try turning down the volume.\n\n### Android-specific\n\n**Gradle sync fails with 401 Unauthorized** -- Your GitHub token is missing or doesn't have `read:packages` scope. Check `local.properties` for `gpr.user` and `gpr.token`. Generate a new token at [github.com\u002Fsettings\u002Ftokens](https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens).\n\n**Gemini WebSocket times out** -- The Gemini Live API sends binary WebSocket frames. If you're building a custom client, make sure to handle both text and binary frame types.\n\n**Audio not working** -- Ensure `RECORD_AUDIO` permission is granted. On Android 13+, you may need to grant this permission manually in Settings > Apps.\n\n**Phone camera not starting** -- Ensure `CAMERA` permission is granted. CameraX requires both the permission and a valid lifecycle.\n\nFor DAT SDK issues, see the [developer documentation](https:\u002F\u002Fwearables.developer.meta.com\u002Fdocs\u002Fdevelop\u002F) or the [discussions forum](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios\u002Fdiscussions).\n\n## License\n\nThis source code is licensed under the license found in the [LICENSE](LICENSE) file in the root directory of this source tree.\n","# VisionClaw\n\n![VisionClaw](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_readme_56431ce9a4d7.png)\n\n一款专为 Meta Ray-Ban 智能眼镜打造的实时 AI 助手。它能够“看见你所见、听见你说的话”，并通过语音为你执行各种操作。\n\n![Cover](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_readme_50bacdbe96fa.png)\n\n基于 [Meta Wearables DAT SDK](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios)（iOS）\u002F [DAT Android SDK](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw)（Android）+ [Gemini Live API](https:\u002F\u002Fai.google.dev\u002Fgemini-api\u002Fdocs\u002Flive) + [OpenClaw](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw)（可选）构建而成。\n\n**支持平台：** iOS（iPhone）和 Android（Pixel、三星等）\n\n## 功能简介\n\n戴上眼镜，轻触 AI 按钮，即可开始对话：\n\n- **“我在看什么？”** —— Gemini 会通过眼镜摄像头识别场景并进行描述。\n- **“把牛奶加到购物清单里”** —— 委托 OpenClaw 通过你已连接的应用程序完成操作。\n- **“给约翰发消息说我晚点了”** —— 信息将经由 OpenClaw 转发至 WhatsApp、Telegram 或 iMessage。\n- **“搜索附近最好的咖啡店”** —— 通过 OpenClaw 进行网络搜索，并将结果以语音形式反馈给你。\n\n眼镜摄像头以约 1 帧\u002F秒的速率向 Gemini 传输视频流以获取视觉上下文，同时音频则以实时双向方式传输。\n\n## 工作原理\n\n![How It Works](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_readme_2d79a403a1f8.png)\n\n```\nMeta Ray-Ban 眼镜（或手机摄像头）\n       |\n       | 视频帧 + 麦克风音频\n       v\niOS \u002F Android 应用（本项目）\n       |\n       | JPEG 帧（约 1 帧\u002F秒）+ PCM 音频（16kHz）\n       v\nGemini Live API（WebSocket）\n       |\n       |-- 音频响应（PCM 24kHz）--> 应用 --> 扬声器\n       |-- 工具调用（执行）-------> 应用 --> OpenClaw 网关\n       |                                              |\n       |                                              v\n       |                                      56+ 技能：网页搜索、\n       |                                      消息发送、智能家居控制、\n       |                                      备忘录、提醒等\n       |                                              |\n       |\u003C---- 工具响应（文本） \u003C----- 应用 \u003C-------+\n       |\n       v\n  Gemini 将结果以语音播报出来\n```\n\n**核心组件：**\n- **Gemini Live** —— 基于 WebSocket 的实时语音与视觉 AI（原生音频处理，而非先转文字再处理）。\n- **OpenClaw**（可选）—— 本地网关，为 Gemini 提供访问 56+ 工具及所有已连接应用的权限。\n- **手机模式** —— 使用手机摄像头代替眼镜进行全流程测试。\n- **WebRTC 流媒体** —— 可将眼镜视角实时共享给浏览器端观众。\n\n---\n\n## 快速入门（iOS）\n\n### 1. 克隆并打开项目\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsseanliu\u002FVisionClaw.git\ncd VisionClaw\u002Fsamples\u002FCameraAccess\nopen CameraAccess.xcodeproj\n```\n\n### 2. 添加密钥信息\n\n复制示例文件并填写你的值：\n\n```bash\ncp CameraAccess\u002FSecrets.swift.example CameraAccess\u002FSecrets.swift\n```\n\n编辑 `Secrets.swift` 文件，填入你的 [Gemini API 密钥](https:\u002F\u002Faistudio.google.com\u002Fapikey)（必填），以及可选的 OpenClaw\u002FWebRTC 配置。\n\n### 3. 构建并运行\n\n选择你的 iPhone 作为目标设备，然后点击运行（Cmd+R）。\n\n### 4. 开始体验\n\n**无需眼镜（iPhone 模式）：**\n1. 点击 **“在 iPhone 上启动”** —— 使用 iPhone 后置摄像头。\n2. 点击 **AI 按钮** 启动 Gemini Live 会话。\n3. 与 AI 对话——它可以通过你的 iPhone 摄像头“看见”周围环境。\n\n**使用 Meta Ray-Ban 眼镜：**\n\n首先，在 Meta AI 应用中启用开发者模式：\n\n1. 打开 iPhone 上的 **Meta AI** 应用。\n2. 进入 **设置**（左下角齿轮图标）。\n3. 点击 **应用信息**。\n4. 连续点击 **应用版本号** 5 次——这将解锁开发者模式。\n5. 返回设置页面，你会看到一个 **开发者模式** 开关，将其打开。\n\n![如何启用开发者模式](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_readme_1a9b00af355b.png)\n\n然后在 VisionClaw 中：\n1. 点击应用中的 **“开始直播”**。\n2. 点击 **AI 按钮** 进行语音与视觉交互。\n\n---\n\n## 快速入门（Android）\n\n### 1. 克隆并打开项目\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fsseanliu\u002FVisionClaw.git\n```\n\n在 Android Studio 中打开 `samples\u002FCameraAccessAndroid\u002F` 目录。\n\n### 2. 配置 GitHub Packages（DAT SDK）\n\nMeta DAT Android SDK 通过 GitHub Packages 发布。你需要一个具有 `read:packages` 权限的 GitHub 个人访问令牌。\n\n1. 访问 [GitHub > 设置 > 开发人员设置 > 个人访问令牌](https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens)，创建一个具有 `read:packages` 权限的 **经典** 令牌。\n2. 在 `samples\u002FCameraAccessAndroid\u002Flocal.properties` 文件中添加：\n\n```properties\ngithub_token=YOUR_GITHUB_TOKEN\n```\n\n> **提示：** 如果你已安装 `gh` CLI，可以运行 `gh auth token` 获取有效令牌。确保该令牌具备 `read:packages` 权限——若没有，请运行 `gh auth refresh -s read:packages`。\n>\n> **注意：** 即使是公共仓库，GitHub Packages 也需要身份验证。出现 401 错误通常意味着你的令牌缺失或无效。\n\n### 3. 添加密钥信息\n\n```bash\ncd samples\u002FCameraAccessAndroid\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fmeta\u002Fwearable\u002Fdat\u002Fexternalsampleapps\u002Fcameraaccess\u002F\ncp Secrets.kt.example Secrets.kt\n```\n\n编辑 `Secrets.kt` 文件，填入你的 [Gemini API 密钥](https:\u002F\u002Faistudio.google.com\u002Fapikey)（必填），以及可选的 OpenClaw\u002FWebRTC 配置。\n\n### 4. 构建并运行\n\n1. 让 Gradle 在 Android Studio 中同步（它将从 GitHub Packages 下载 DAT SDK）。\n2. 选择你的 Android 手机作为目标设备。\n3. 点击运行（Shift+F10）。\n\n> **无线调试：** 你也可以通过 ADB 无线方式安装。在手机的开发者选项中启用 **无线调试**，然后使用 `adb pair \u003Cip>:\u003Cport>` 进行配对。\n\n### 5. 开始体验\n\n**无需眼镜（手机模式）：**\n1. 点击 **“在手机上启动”** —— 使用手机后置摄像头。\n2. 点击 **AI 按钮**（火花图标）启动 Gemini Live 会话。\n3. 与 AI 对话——它可以通过你的手机摄像头“看见”周围环境。\n\n**使用 Meta Ray-Ban 眼镜：**\n\n在 Meta AI 应用中启用开发者模式（步骤同 iOS），然后：\n1. 点击应用中的 **“开始直播”**。\n2. 点击 **AI 按钮** 进行语音与视觉交互。\n\n---\n\n## 设置：OpenClaw（可选）\n\nOpenClaw 使 Gemini 能够执行实际操作——发送消息、上网搜索、管理待办事项、控制智能家居设备等。如果没有 OpenClaw，Gemini 仅具备语音与视觉功能。\n\n### 1. 安装并配置 OpenClaw\n\n请按照 [OpenClaw 设置指南](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw) 操作。确保网关已启用：\n\n在 `~\u002F.openclaw\u002Fopenclaw.json` 文件中：\n\n```json\n{\n  \"gateway\": {\n    \"port\": 18789,\n    \"bind\": \"lan\",\n    \"auth\": {\n      \"mode\": \"token\",\n      \"token\": \"your-gateway-token-here\"\n    },\n    \"http\": {\n      \"endpoints\": {\n        \"chatCompletions\": { \"enabled\": true }\n      }\n    }\n  }\n}\n```\n\n关键设置：\n- `bind: \"lan\"` —— 将网关暴露在本地网络中，以便你的手机可以访问。\n- `chatCompletions.enabled: true` —— 启用 `\u002Fv1\u002Fchat\u002Fcompletions` 端点（默认关闭）。\n- `auth.token` —— 你的应用将用于认证的令牌。\n\n### 2. 配置应用\n\n**iOS** -- 在 `Secrets.swift` 中：\n```swift\nstatic let openClawHost = \"http:\u002F\u002FYour-Mac.local\"\nstatic let openClawPort = 18789\nstatic let openClawGatewayToken = \"your-gateway-token-here\"\n```\n\n**Android** -- 在 `Secrets.kt` 中：\n```kotlin\nconst val openClawHost = \"http:\u002F\u002FYour-Mac.local\"\nconst val openClawPort = 18789\nconst val openClawGatewayToken = \"your-gateway-token-here\"\n```\n\n要查找您的 Mac 的 Bonjour 主机名：**系统设置 > 通用 > 共享** -- 它显示在顶部（例如 `Johns-MacBook-Pro.local`）。\n\n> iOS 和 Android 还都提供应用内设置界面，您可以在运行时更改这些值，而无需编辑源代码。\n\n### 3. 启动网关\n\n```bash\nopenclaw gateway restart\n```\n\n验证是否正在运行：\n\n```bash\ncurl http:\u002F\u002Flocalhost:18789\u002Fhealth\n```\n\n现在，当您与 AI 对话时，它可以通过 OpenClaw 执行任务。\n\n---\n\n## 架构\n\n### 关键文件（iOS）\n\n所有源代码都在 `samples\u002FCameraAccess\u002FCameraAccess\u002F` 目录下：\n\n| 文件 | 用途 |\n|------|---------|\n| `Gemini\u002FGeminiConfig.swift` | API 密钥、模型配置、系统提示 |\n| `Gemini\u002FGeminiLiveService.swift` | Gemini Live API 的 WebSocket 客户端 |\n| `Gemini\u002FAudioManager.swift` | 麦克风录音（PCM 16kHz）+ 音频播放（PCM 24kHz）|\n| `Gemini\u002FGeminiSessionViewModel.swift` | 会话生命周期、工具调用连接、对话记录状态 |\n| `OpenClaw\u002FToolCallModels.swift` | 工具声明、数据类型 |\n| `OpenClaw\u002FOpenClawBridge.swift` | OpenClaw 网关的 HTTP 客户端 |\n| `OpenClaw\u002FToolCallRouter.swift` | 将 Gemini 的工具调用路由到 OpenClaw |\n| `iPhone\u002FIPhoneCameraManager.swift` | iPhone 摄像头模式的 AVCaptureSession 封装 |\n| `WebRTC\u002FWebRTCClient.swift` | WebRTC 对等连接 + SDP 协商 |\n| `WebRTC\u002FSignalingClient.swift` | WebRTC 房间的 WebSocket 信令 |\n\n### 关键文件（Android）\n\n所有源代码都在 `samples\u002FCameraAccessAndroid\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002F...\u002Fcameraaccess\u002F` 目录下：\n\n| 文件 | 用途 |\n|------|---------|\n| `gemini\u002FGeminiConfig.kt` | API 密钥、模型配置、系统提示 |\n| `gemini\u002FGeminiLiveService.kt` | OkHttp WebSocket 客户端，用于 Gemini Live API |\n| `gemini\u002FAudioManager.kt` | AudioRecord（16kHz）+ AudioTrack（24kHz）|\n| `gemini\u002FGeminiSessionViewModel.kt` | 会话生命周期、工具调用连接、UI 状态 |\n| `openclaw\u002FToolCallModels.kt` | 工具声明、数据类 |\n| `openclaw\u002FOpenClawBridge.kt` | OkHttp HTTP 客户端，用于 OpenClaw 网关 |\n| `openclaw\u002FToolCallRouter.kt` | 将 Gemini 的工具调用路由到 OpenClaw |\n| `phone\u002FPhoneCameraManager.kt` | CameraX 封装，用于手机摄像头模式 |\n| `webrtc\u002FWebRTCClient.kt` | WebRTC 对等连接（stream-webrtc-android）|\n| `webrtc\u002FSignalingClient.kt` | OkHttp WebSocket 信令，用于 WebRTC 房间 |\n| `settings\u002FSettingsManager.kt` | SharedPreferences，带有 Secrets.kt 的后备机制 |\n\n### 音频管道\n\n- **输入**：手机麦克风 -> AudioManager（PCM Int16，16kHz 单声道，100ms 块）-> Gemini WebSocket\n- **输出**：Gemini WebSocket -> AudioManager 播放队列 -> 手机扬声器\n- **iOS iPhone 模式**：使用 `.voiceChat` 音频会话进行回声消除，并在 AI 说话时关闭麦克风。\n- **iOS 眼镜模式**：使用 `.videoChat` 音频会话（麦克风在眼镜上，扬声器在手机上——无回声）。\n- **Android**：使用 `VOICE_COMMUNICATION` 音频源进行内置的声学回声消除。\n\n### 视频管道\n\n- **眼镜**：DAT SDK 视频流（24fps）-> 调整至 ~1fps -> JPEG（50% 质量）-> Gemini\n- **手机**：相机拍摄（30fps）-> 调整至 ~1fps -> JPEG -> Gemini\n\n### 工具调用\n\nGemini Live 支持函数调用。两个应用都声明了一个名为 `execute` 的工具，该工具将所有请求路由到 OpenClaw：\n\n1. 用户说“把鸡蛋加到我的购物清单里”\n2. Gemini 回答“好的，我现在就添加”（在工具调用之前进行口头确认）\n3. Gemini 发送包含 `execute(task: \"Add eggs to the shopping list\")` 的 `toolCall`\n4. `ToolCallRouter` 向 OpenClaw 网关发送 HTTP POST 请求\n5. OpenClaw 使用其 56 多种已连接技能执行任务\n6. 结果通过 `toolResponse` 返回给 Gemini\n7. Gemini 再次回应确认信息。\n\n### WebRTC 实时直播\n\n您可以将眼镜视角实时共享到浏览器观看者那里，实现双向音视频传输。\n\n1. 点击应用中的 **Live** 按钮\n2. 应用连接到信令服务器并获取一个 6 位数的房间代码\n3. 分享该代码——观看者在浏览器中打开服务器 URL 并输入代码\n4. 建立 WebRTC 对等连接（通过信令服务器进行 SDP + ICE 协商）\n5. 媒体以对等方式流动：眼镜视频传输到浏览器，浏览器摄像头再传回 iOS 的画中画窗口。\n\n**关键细节：**\n- **信令服务器**：Node.js + WebSocket，位于 `samples\u002FCameraAccess\u002Fserver\u002F` 目录下——为浏览器观看者提供服务，并中继 SDP\u002FICE。\n- **NAT 穿透**：Google STUN 服务器 + ExpressTURN 中继（从 `\u002Fapi\u002Fturn` 获取）。\n- **视频**：24 fps，最大比特率 2.5 Mbps。\n- **后台处理**：iOS 应用进入后台后有 60 秒的宽限期——房间保持存活以便重新连接。\n- **限制**：不能与 Gemini Live 同时运行（音频设备冲突）。\n\n更多详细信息，请参阅 [`samples\u002FCameraAccess\u002FCameraAccess\u002FWebRTC\u002FREADME.md`](samples\u002FCameraAccess\u002FCameraAccess\u002FWebRTC\u002FREADME.md)。\n\n---\n\n## 要求\n\n### iOS\n- iOS 17.0+\n- Xcode 15.0+\n- Gemini API 密钥（可[免费获取](https:\u002F\u002Faistudio.google.com\u002Fapikey)）\n- Meta Ray-Ban 眼镜（可选——可使用 iPhone 模式进行测试）\n- 您的 Mac 上安装了 OpenClaw（可选——用于代理行动）\n\n### Android\n- Android 14+（API 34+）\n- Android Studio Ladybug 或更高版本\n- GitHub 账户及具有 `read:packages` 权限的令牌（用于 DAT SDK）\n- Gemini API 密钥（可[免费获取](https:\u002F\u002Faistudio.google.com\u002Fapikey)）\n- Meta Ray-Ban 眼镜（可选——可使用 Phone 模式进行测试）\n- 您的 Mac 上安装了 OpenClaw（可选——用于代理行动）\n\n---\n\n## 故障排除\n\n### 一般问题\n\n**Gemini 听不到我的声音**——请检查是否已授予麦克风权限。该应用使用激进的语音活动检测——请清晰地以正常音量说话。\n\n**OpenClaw 连接超时**——请确保您的手机和 Mac 连接到同一 Wi‑Fi 网络，网关正在运行（`openclaw gateway restart`），并且主机名与您 Mac 的 Bonjour 名称一致。\n\n**OpenClaw 打开重复的浏览器标签页**——这是 OpenClaw 的 CDP（Chrome 开发者工具协议）连接管理中已知的上游问题（[#13851](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw\u002Fissues\u002F13851), [#12317](https:\u002F\u002Fgithub.com\u002Fnichochar\u002Fopenclaw\u002Fissues\u002F12317)）。使用 `profile: \"openclaw\"`（托管 Chrome）而不是默认的扩展程序中继，可能会提高稳定性。\n\n### iOS 特定问题\n\n**“未配置 Gemini API 密钥”**——请在 Secrets.swift 或应用内设置中添加您的 API 密钥。\n\n**iPhone 模式下的回声\u002F反馈**——当 AI 说话时，应用会静音麦克风。如果您仍然听到回声，请尝试调低音量。\n\n### Android 特定问题\n\n**Gradle 同步失败，返回 401 Unauthorized 错误** -- 您的 GitHub Token 丢失或未授予 `read:packages` 范围权限。请检查 `local.properties` 文件中的 `gpr.user` 和 `gpr.token` 配置项。您可以在 [github.com\u002Fsettings\u002Ftokens](https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens) 生成一个新的 Token。\n\n**Gemini WebSocket 超时** -- Gemini Live API 会发送二进制 WebSocket 帧。如果您正在构建自定义客户端，请确保同时处理文本帧和二进制帧。\n\n**音频无法工作** -- 请确保已授予 `RECORD_AUDIO` 权限。在 Android 13 及以上版本中，您可能需要手动前往“设置 > 应用”来授予此权限。\n\n**手机摄像头无法启动** -- 请确保已授予 `CAMERA` 权限。CameraX 需要同时具备该权限以及有效的生命周期。\n\n如遇 DAT SDK 相关问题，请参阅 [开发者文档](https:\u002F\u002Fwearables.developer.meta.com\u002Fdocs\u002Fdevelop\u002F) 或 [讨论论坛](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fmeta-wearables-dat-ios\u002Fdiscussions)。\n\n## 许可证\n\n本源代码根据位于本项目根目录下 `LICENSE` 文件中的许可协议进行授权。","# VisionClaw 快速上手指南\n\nVisionClaw 是一款专为 Meta Ray-Ban 智能眼镜打造的实时 AI 助手。它能让 AI“看见”你所见，“听见”你所说，并通过语音执行操作（如搜索、发消息、管理清单）。支持 iOS 和 Android 平台，也可仅使用手机摄像头进行体验。\n\n## 环境准备\n\n### 系统要求\n- **iOS**: iPhone 运行 iOS 17.0+，需安装 Xcode 15.0+\n- **Android**: Android 手机（推荐 Pixel 或 Samsung），需安装 Android Studio\n- **账号**: [Google AI Studio](https:\u002F\u002Faistudio.google.com\u002Fapikey) API Key（必选）\n- **硬件**（可选）: Meta Ray-Ban 智能眼镜\n- **网络**: 需能访问 Google Gemini API 及 GitHub Packages\n\n### 前置依赖\n- **GitHub Token** (仅 Android): 用于下载 Meta DAT SDK。需创建具有 `read:packages` 权限的 Classic Personal Access Token。\n- **OpenClaw** (可选): 若需让 AI 执行实际操作（如发微信、搜网页），需额外部署 OpenClaw 网关。\n\n## 安装步骤\n\n### 方案 A：iOS 端安装\n\n1. **克隆项目并打开工程**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fsseanliu\u002FVisionClaw.git\n   cd VisionClaw\u002Fsamples\u002FCameraAccess\n   open CameraAccess.xcodeproj\n   ```\n\n2. **配置密钥**\n   复制示例配置文件并填入你的 Gemini API Key：\n   ```bash\n   cp CameraAccess\u002FSecrets.swift.example CameraAccess\u002FSecrets.swift\n   ```\n   编辑 `CameraAccess\u002FSecrets.swift`，将 `geminiApiKey` 替换为你的真实 Key。如需使用 OpenClaw，也可在此配置主机地址和 Token。\n\n3. **编译运行**\n   在 Xcode 中选择你的 iPhone 作为目标设备，点击 **Run** (Cmd+R)。\n\n### 方案 B：Android 端安装\n\n1. **克隆项目**\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fsseanliu\u002FVisionClaw.git\n   ```\n   使用 Android Studio 打开 `samples\u002FCameraAccessAndroid\u002F` 目录。\n\n2. **配置 GitHub Token**\n   在项目根目录或 `samples\u002FCameraAccessAndroid\u002Flocal.properties` 文件中添加：\n   ```properties\n   github_token=YOUR_GITHUB_TOKEN\n   ```\n   *注意：Token 必须包含 `read:packages` 权限，否则构建时会报 401 错误。*\n\n3. **配置密钥**\n   进入以下目录复制并编辑配置文件：\n   ```bash\n   cd samples\u002FCameraAccessAndroid\u002Fapp\u002Fsrc\u002Fmain\u002Fjava\u002Fcom\u002Fmeta\u002Fwearable\u002Fdat\u002Fexternalsampleapps\u002Fcameraaccess\u002F\n   cp Secrets.kt.example Secrets.kt\n   ```\n   编辑 `Secrets.kt`，填入你的 Gemini API Key。\n\n4. **编译运行**\n   等待 Gradle 同步完成（会自动下载 DAT SDK），连接 Android 手机，点击 **Run** (Shift+F10)。\n\n## 基本使用\n\n### 模式一：手机摄像头模式（无需眼镜）\n最适合快速测试功能。\n\n1. 启动 App 后，点击 **\"Start on iPhone\"** (iOS) 或 **\"Start on Phone\"** (Android)。\n2. 点击屏幕上的 **AI 按钮**（火花图标）开始会话。\n3. 对着手机后置摄像头说话，例如：\n   - \"What am I looking at?\"（我在看什么？）\n   - \"Describe this scene.\"（描述这个场景。）\n   AI 将实时分析画面并用语音回答。\n\n### 模式二：Meta Ray-Ban 眼镜模式\n需先开启开发者模式：\n\n1. **开启开发者模式**：\n   - 打开手机上的 **Meta AI** 应用。\n   - 进入 **Settings** (左下角齿轮) > **App Info**。\n   - 连续点击 **App version** 版本号 **5 次**，直到出现提示。\n   - 返回设置页，开启 **Developer Mode** 开关。\n\n2. **连接使用**：\n   - 在 VisionClaw App 中点击 **\"Start Streaming\"**。\n   - 点击 **AI 按钮**，戴上眼镜说话即可实现第一视角的语音交互。\n\n### 进阶：启用行动能力 (OpenClaw)\n若需让 AI 执行“添加到购物清单”、“发送消息”等操作：\n\n1. 在电脑本地安装并运行 OpenClaw 网关，确保 `gateway` 在 `lan` 模式运行且端口为 `18789`。\n2. 在 App 的设置界面（或直接修改代码中的 `Secrets` 文件），将 `openClawHost` 指向你的电脑局域网 IP 或 Bonjour 主机名（如 `http:\u002F\u002FYour-Mac.local`）。\n3. 重启 App 后即可尝试指令，如：\"Add milk to my shopping list\"。","一位视障开发者在拥挤的地铁站尝试寻找特定的出口标识，并需要立即将当前位置发送给同事协助会合。\n\n### 没有 VisionClaw 时\n- **视觉信息缺失**：用户无法直接读取远处模糊或高处的指示牌内容，必须摸索着靠近或大声询问路人，效率极低且存在安全隐患。\n- **操作中断流程**：若要发送位置，用户需停下脚步，从口袋掏出手机，解锁并打开地图应用，整个过程在人流中显得笨拙且易受干扰。\n- **交互延迟严重**：传统的语音助手通常需要先录音、再转文字、最后处理，导致在嘈杂环境中识别率低，反馈慢，无法实现流畅的自然对话。\n- **多任务处理困难**：用户难以一边观察周围环境变化，一边进行复杂的指令操作（如搜索附近设施并同步发送消息），注意力被迫频繁切换。\n\n### 使用 VisionClaw 后\n- **实时视觉增强**：用户只需佩戴 Meta Ray-Ban 眼镜注视前方，VisionClaw 即刻通过 Gemini Live 分析摄像头画面，主动播报“前方左侧是 B2 出口”，无需任何额外动作。\n- **无感代理执行**：用户直接口述“告诉李明我在 B2 出口等他”，VisionClaw 自动调用 OpenClaw 网关连接即时通讯软件发送消息，全程双手解放，步履不停。\n- **原生流式交互**：依托 WebSocket 双向音频流，用户在环境噪音中也能与 AI 进行低延迟的自然对话，AI 能像真人一样随时打断或补充视觉细节。\n- **视听同步闭环**：用户在行走中连续发出“查看周围有无咖啡店”和“导航过去”的指令，VisionClaw 结合实时视频流与工具链，瞬间完成搜索并语音指引路线。\n\nVisionClaw 将智能眼镜从简单的拍摄设备升级为具备“眼手协同”能力的实时代理，让用户在移动中真正实现所见即所得、所说即所行。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FIntent-Lab_VisionClaw_56431ce9.png","Intent-Lab","Intent Labs","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FIntent-Lab_4c6e611a.png","Reducing the cost between human intent and action. Building AI systems that augment cognition, bridge comprehension gaps, and democratize knowledge access.",null,"https:\u002F\u002Fgithub.com\u002FIntent-Lab",2039,371,"2026-04-07T08:01:55","NOASSERTION",4,"iOS, Android","未说明",{"notes":87,"python":85,"dependencies":88},"该工具是移动端应用（非桌面端），需在 iPhone (iOS 17+) 或 Android 手机上运行。核心依赖为 Google Gemini Live API（需 API Key）和 Meta Ray-Ban 眼镜的开发者模式。若需使用工具调用功能（如搜索、发消息），需额外部署 OpenClaw 网关。WebRTC 直播功能需要运行独立的 Node.js 信令服务器。无需本地 GPU 或 Python 环境，计算主要在云端 Gemini API 完成。",[89,90,91,92,93,94],"Meta Wearables DAT SDK (iOS\u002FAndroid)","Gemini Live API","OpenClaw (可选)","Xcode 15.0+ (iOS 开发)","Android Studio (Android 开发)","Node.js (WebRTC 信令服务器)",[35,15,96,13,97],"音频","其他","2026-03-27T02:49:30.150509","2026-04-08T00:49:15.259691",[],[]]