Owl
Owl 是一款旨在探索人机交互新前沿的开源项目,它打造了一个可全天候运行的个人穿戴式 AI 助手。与传统依赖云端的智能设备不同,Owl 强调数据本地化处理,能够倾听并观察用户生活中的音频与环境信息,从而提供记忆增强、主动生活协助及分布式知识收集等服务。
Owl 主要解决了用户在隐私安全与智能化服务之间的权衡难题。通过支持完全本地推理,它让用户在享受 AI 带来的生产力提升和自我认知深化时,无需担忧敏感生活数据上传至第三方服务器。同时,它打破了硬件限制,允许用户利用 ESP 开发板、Sony Spresense 甚至 Apple Watch 等多种设备作为数据采集端,实现了高度灵活的个性化部署。
这款工具特别适合热衷于隐私计算的开发者、研究人机交互的研究人员以及喜欢折腾硬件的极客用户。虽然普通用户也能从中受益,但目前更需要一定的技术动手能力来搭建服务器和配置设备。
其技术亮点在于强大的兼容性与多模态处理能力:不仅支持通过 Ollama 运行各类本地大语言模型(LLM)和视觉模型(VLM),还具备说话人验证、基于语音活动检测(VAD)的对话理解以及流式/离线双模式切换功能。Owl 正以开放透明的方式,邀请社区共同探索穿戴式 AI 的无限可能。
使用场景
自由职业设计师林浩在外出拜访客户、参观建材市场时,需要随时记录灵感碎片和沟通细节,以便后续整理成方案。
没有 Owl 时
- 手忙脚乱地掏手机录音或打字,容易打断与客户自然的对话节奏,显得不专业。
- 依赖事后回忆补全会议重点,常因记忆模糊而遗漏关键的尺寸数据或材质偏好。
- 采集的音频文件散落在不同设备中,缺乏上下文关联,整理时需反复听录音确认时间地点。
- 担心隐私泄露,不敢使用云端录音服务,导致无法利用强大的 AI 模型即时分析内容。
- 在信号不佳的仓库或地下室,云端 AI 服务完全不可用,错失现场决策辅助机会。
使用 Owl 后
- 佩戴支持本地运行的穿戴设备自动全程记录,林浩只需专注交流,Owl 在后台无感捕捉音频与位置。
- Owl 利用本地大模型实时提取关键信息(如“客户偏好哑光金属”),并主动推送相关案例供现场参考。
- 所有数据按时间线和地理位置自动归档,林浩可随时询问"上周三在建材市场聊了什么”,Ow l 即刻还原场景。
- 采用说话人验证技术,Owl 仅响应林浩的指令且数据完全本地化处理,彻底消除隐私顾虑。
- 即使在无网络的施工现场,Owl 的离线模式仍能持续运行并进行基础推理,返回网络后自动同步深度分析结果。
Owl 将原本碎片化、高负担的记忆工作转化为流畅的主动式智能辅助,让创作者真正实现了“所思即所得”。
运行环境要求
- Linux
- macOS
- Windows
未说明 (支持完全本地运行或调用商业模型,若本地运行大模型需自行配置对应硬件)
未说明

快速开始
Owl - 始终在线的可穿戴人工智能
如果你拥有一款能够倾听并观察你生活中每一件事的人工智能,你会如何利用它呢?Owl 旨在通过始终在线的可穿戴设备来探索这一理念。强大的 LLM 和 VLM 模型与低功耗可穿戴设备的结合,为人类与计算机的交互开辟了全新的领域,包括记忆增强、主动式生活辅助以及分布式知识收集等。我们坚信以透明和开放的方式进行探索。
核心功能
- 📱 广泛的采集设备支持: 使用基于 ESP 平台、Sony Spresense 或 Apple Watch 等消费级硬件的自定义设备记录你的生活。我们将持续增加对更多设备的支持,任何配备传感器的设备都能将数据发送到 Owl。
- 🧠 灵活的推理选项: 完全在本地运行,或利用商用模型。你可以使用 Ollama 上的任意模型进行推理,也可以选择 GPT-4 等商用模型。语音合成方面,既可使用 Whisper,也可选用 Deepgram 等商业服务。
- 🌐 网页端采集: 轻松从桌面或任何手机上捕获内容。
- 🎙️ 多模态采集: 持续记录位置和音频信息。图像和视频的支持也将很快推出!
- 📶 丰富的连接方式: 支持 BLE、LTE 或 WiFi 的设备均可接入。
- 🚶♂️ 随身互动式 AI: 通过原生 iOS 和网页界面轻松与你的 AI 互动(Android 支持即将上线!)。
- 🔊 说话人验证: 你的 AI 会学习你的声音,从而识别何时是你本人在交谈。
- 📡 流媒体与离线模式: 可以实时将你的生活数据传输给 AI,获得主动协助;在无网络环境下则切换至离线模式。
- 💬 高级对话理解: 利用基于 VAD 的对话分段技术,对你的交流进行分割和理解。
目录
概述
项目目标
Owl 是一项关于人机交互的实验,利用可穿戴设备观察我们的生活,并借助 AI 从中提取信息和洞见。目前仅采集音频和位置信息,但我们计划逐步加入视觉和其他模态的数据。项目的总体目标如下:
- 构建一个始终在线且“实用”的 AI 系统,开启提升生产力、加深自我认知与世界理解、以及加强人际连接的新途径。
- 实现始终在线 AI 的具体应用场景(例如:生产力与记忆增强、知识采集与共享、健康管理等)。
- 探索人机交互相关问题:用户体验、界面设计、隐私保护、安全保障等。
本项目包含三大核心组件:
- 可穿戴采集设备。这些设备既有需要一定组装的半定制开发板(详见 开发板文档),也有像 Apple Watch 这样的现成产品。我们还希望开发完全开源的定制硬件。
- AI 服务器。
- 展示客户端。用于显示系统收集的信息(如文字稿、对话摘要)并允许用户与在线助手互动的应用程序。目前包括移动端应用和网页端应用。
首次亮相:我们的参考硬件设备——Bee 🐝
我们非常高兴地推出“Bee”,这是一款专为 AI 可穿戴开发者及爱好者打造的先锋参考硬件设备。Bee 具有惊人的 50 小时续航能力,同时外形轻巧紧凑,直径仅为 1.2 英寸。
Bee 的核心特性:
- 🔋 50 小时续航: 专为持久性设计,Bee 让你能将自己的全部生活作为上下文输入个人 AI,使其随时待命,助你一臂之力。
- 🤏 小巧便携: 直径仅 1.2 英寸的 Bee,能够无缝融入各种可穿戴场景。
- 🌍 社区测试计划: 我们将 Bee 提供给部分贡献者以及那些热衷于挖掘其潜力、探索生产力、记忆和智能代理等领域新用例的伙伴。
加入我们
如需了解有关 Bee 的详细信息、参与测试的机会,或与志同道合的 AI 可穿戴爱好者交流,请立即加入我们的 Discord 社区。
我们迫不及待地想看看你用 Bee 打造出什么作品!🌟
联系方式
请加入我们的 Discord 社区!
社交媒体:
隐私与安全
尊重当地的隐私和录音法律法规。 无论法律如何规定,我们仍建议用户在录制对话时提前告知对方,并尊重对方的意愿。在探索这一令人兴奋的技术的应用场景时,我们希望用户能够保持尊重和充分透明的态度。我们也欢迎针对如何提升用户体验的安全性和隐私保护方面的反馈与贡献。
根据服务器的托管方式,敏感数据可能会以明文形式传输和存储。例如,如果在家庭服务器上通过 HTTP 协议运行,并且 iOS 和 Watch Xcode 项目中配置了例外域名,则所有发送到服务器的音频数据都将未加密,而对话转录文本将以纯文本形式被沿途任何拦截数据包的人读取。此外,HTTP 连接还可能导致用户授权令牌被截获,从而获得对服务器上所有对话的访问权限。为提高安全性,建议采取以下措施:
- 服务器应使用 HTTPS 协议托管,并配备有效的 SSL 证书。
- 在个人服务器上运行时,请使用反向代理(如 ngrok),它将通过 HTTPS 加密流量。
- 如果您坚持使用未加密的家庭服务器,请定期更换授权令牌,并考虑频繁删除数据库和捕获目录,以避免大量对话暴露在外。
设置指南
服务器设置
各平台安装和运行服务器的具体说明:
服务器安装完成后,可以进行完全自定义配置:
iOS 和 watchOS 应用程序构建说明
iOS 应用程序是查看和交互对话的主要方式。Xcode 项目中还包含一个 watchOS 捕获客户端应用,允许 Apple Watch 作为可穿戴式捕获设备使用。
捕获设备设置
支持多种捕获设备:
技术指南
一次“源代码之旅”
为了帮助新加入的开发者快速熟悉代码库,我们将追踪数据在整个系统中从语音到最终显示摘要的完整流程。
流式蓝牙设备示例:XIAO ESP32S3 Sense
基于蓝牙的设备,例如本示例中的 XIAO ESP32S3 Sense 开发板,会连接到 iOS 客户端应用(clients/ios),并与之持续通信。
Sense 开发板上的麦克风以 16 kHz 的采样率持续采集音频,并将其编码为 AAC 格式。这样可以将数据包大小压缩至原来的三分之一,这一点非常重要,因为传输是耗电最多的环节。在开发板固件的
loop()函数中(位于clients/xiao-esp32s3-sense/firmware/src/main.cpp),数据包会以与录制速度相同的速度通过 BLE 广播出去。数据包会在 iOS 应用的
peripheral(_:,didUpdateValueFor:,error:)方法中进入应用(路径为clients/ios/Owl/Services/BLEManager.swift)。iOS 应用会通过套接字将完整的帧传递给服务器。“帧”在这里指一个 AAC 帧,并且使用了序列号机制来检测是否丢失了 BLE 数据包。由于 AAC 帧是独立的,我们可以丢弃不完整的帧,从而避免下游转写模型因处理异常而崩溃。帧数据会进入服务器的套接字,在
owl/server/capture_socket.py中的on_audio_data()方法中被接收。CaptureSocketApp对象是在main.py中与 FastAPI 服务器一同创建的。系统会根据捕获会话的 UUID 查找对应的StreamingCaptureHandler,并将数据转发到该处理器。在
owl/server/streaming_capture_handler.py中,音频数据会被追加到磁盘上的文件中,随后传递给转写服务进行实时转写和对话端点检测。同时会创建一个Capture对象,并将其记录在持久化数据库中,用于表示当前的捕获会话及磁盘上的文件。捕获文件包含了会话期间录制的所有音频。当检测到对话时,这些对话会被写入单独的“片段”文件中,并生成相应的CaptureSegment对象来表示它们,可以将其视为父级捕获文件的“子文件”。此外,还会生成Conversation对象来存储对话的具体内容(转写文本、摘要、处理状态等)。每当对话服务创建一个新的对话时,都会通过与 iOS 应用的套接字连接向服务器推送一条通知。转写服务使用流式转写模型(目前采用 Deepgram,未来计划支持本地部署),该模型会将话语片段传递给
handle_utterance()方法。后者再将包含时间戳的话语片段传递给端点检测服务。当端点检测服务判断对话结束时,就会调用on_endpoint()方法。随后,完成的对话片段文件会被更彻底地转写并生成摘要。系统会创建一个任务并将其放入服务器的异步后台处理队列中,该队列会在main.py中的process_queue()方法中被持续处理。这个任务仍然位于streaming_capture_handler.py文件中,它只是简单地调用ConversationService实例上的process_conversation_from_audio()方法,而ConversationService实例则是作为服务器应用共享状态的一部分(AppState)创建的。ConversationService位于owl/services/conversation/conversation_service.py文件中,它会使用非流式模型对对话音频进行转写,生成摘要,并根据 iOS 应用发送到服务器的位置信息为对话关联位置。所有这些信息都会被提交到数据库以及本地的捕获目录中,以 JSON 文件的形式保存,便于检查。最后,系统会通过NotificationService实例上的send_notification()方法发送通知(定义在owl/services/notification/notification_service.py文件中)。该方法利用套接字连接将新创建的对话推送到 iOS 应用。回到 iOS 应用端:
ConversationsViewModel位于clients/ios/Owl/ViewModels/ConversationsViewModel.swift文件中,它会订阅对话消息,并在收到消息时更新其公开属性。视图模型对象在 SwiftUI 的顶级视图ContentView中被实例化,并传递给ConversationsView。ConversationsView会观察视图模型的变化,并在变化发生时更新列表视图,从而将对话展示给用户。
以上就是从捕获设备客户端开始、经过服务器中转、最终到达 iOS 客户端的端到端流程。
分块与缓冲式音频示例:Apple Watch
服务器还支持以分块方式对捕获数据进行非实时同步,这种方式使用与实时流式传输不同的服务器路由。这些数据可以在捕获会话结束后很长时间才上传。Apple Watch 同时支持流式传输和分块上传两种模式,并且能够根据网络状况进行机会性分块上传。
在 Watch 应用的
ContentView中(路径为clients/ios/Owl Watch App/Views/ContentView.swift),点击录制按钮会使用CaptureManager单例对象启动一个捕获会话。CaptureManager(路径为clients/ios/Owl Watch App/Services/CaptureManager.swift)会通过设置AVAudioSession并安装一个音频样本捕捉器来开始录音(位于startAudioEngine()方法中)。该捕捉器会将音频降采样至 16 kHz,并将音频传递给AudioFileWriter实例,由其写入磁盘。即使是入门级的 Apple Watch 也拥有 32 GB 的存储空间!AudioFileWriter(路径为clients/ios/Shared/Files/AudioFileWriter.swift)会按顺序创建多个文件,文件名包含捕获的时间戳、UUID 以及一个递增的分块编号。每隔一段时间(例如 30 秒),当前分块就会完成,然后创建下一个文件。这些文件包含原始的 PCM 数据,相当于没有头部信息的 WAV 文件。同时,Watch 应用会运行一个异步任务(见
clients/ios/Shared/FileUploadTask.swift文件),该任务在应用启动时被创建,用于监控待上传的文件。文件会按顺序通过 POST 请求上传到服务器,上传成功后即被删除。一旦所有当前文件都上传完毕,系统会检查一个特殊的空标记文件,以确定捕获是否真正结束,并向服务器发送处理请求。这一过程的详细说明已在FileUploadTask.swift文件的注释中给出。由于文件存储在磁盘上,因此即使在录音进行中,或者数小时甚至数天之后,都可以继续传输文件。此外,用户还可以通过应用内的设置完全禁用上传功能。在服务器端,
/capture/upload_chunk路由会接收这些文件。具有相同capture_uuid的文件会按照到达顺序依次追加在一起。这一过程发生在owl/server/routes/capture.py文件中。每个分块的数据会被交给一个后台任务
ProcessAudioChunkTask,以异步方式处理(位于owl/server/main.py中的process_queue()方法)。该任务会逐步进行对话检测,以找到对话的开始和结束时间戳。这一处理方式与流式版本有所不同,尽管我们希望将来能够将两者统一起来。系统会使用语音活动检测器(VAD)来寻找长时间的静音段落,以此分割对话,但这种方法较为简单且可靠性较低。一旦识别出对话,就会将其提取到单独的文件中,然后调用ConversationService上的process_conversation_from_audio()方法进行进一步处理。从这一点开始,流程与上述流式传输的情况相同。需要注意的是,系统会尽早通过检查各个分块来检测对话。最后,如果捕获会话结束并使用
/process_capture路由,则会提交最后一个ProcessAudioChunkTask任务,以完成对最后一个分块中可能仍在进行的对话的处理。
分块上传进入服务器的方式与流式音频不同,使用的对话端点检测方法也有所区别,但后续的流程与流式传输一致,最终同样会返回到 iOS 应用。
捕获存储
捕获文件会存储在 YAML 配置文件中 capture_dir 键所指定的目录下。它们按日期和捕获设备进行组织,以便于手动检查。当捕获文件中检测到对话时,这些对话会被提取到以该捕获文件命名的子目录中。子目录内将包含对话音频文件以及 JSON 格式的转录本和摘要。需要注意的是,对话检测有时可能会出现误判;过短或完全不含对话的片段不会被生成摘要,相应的 JSON 文件也会缺失。

2024年2月17日录制的 Apple Watch 捕获文件,每个文件都有对应的对话子目录。

从某一捕获文件中提取出的对话。
贡献
我们欢迎讨论和贡献。请 联系我们。如需贡献,我们建议:
- 提交一个问题,并描述您正在开展的工作,以便团队成员了解情况并共同讨论。
- 分支我们的仓库,并在准备就绪时提交拉取请求。
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。