OpenClaw核心功能特性
全网唯一系统剖析OpenClaw学习专栏
本文档引用的文件
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist)
-
ios-device-identifiers.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/DeviceModels/ios-device-identifiers.json)
-
tool-display.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/tool-display.json)
-
CodeResources\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/_CodeSignature/CodeResources)
-
SUUpdatePermissionResponse.h\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Frameworks/Sparkle.framework/Versions/B/Headers/SUUpdatePermissionResponse.h)
目录
简介
本文件面向使用者与开发者,系统化梳理 OpenClaw 的核心功能特性与实现要点,覆盖以下方面:
- AI 模型集成:支持多厂商多模型的统一接入与参数配置
- 设备兼容性:对 iOS/Mac 硬件型号识别与适配
- 权限管理:基于 macOS 系统权限声明与用户授权流程
- 自动更新系统:基于 Sparkle 的应用更新机制
- 关键特性:语音唤醒、多模态输入(文本/图像)、屏幕捕获、相机捕获等
- 使用场景:帮助用户理解 OpenClaw 能解决的问题与提供价值

项目结构
OpenClaw 以 macOS 应用包形式分发,核心资源位于 Contents 下:
- 配置与元数据:Info.plist(应用标识、权限描述、更新配置)
- AI 模型定义:models.generated.js(模型清单与能力参数)
- 设备识别:DeviceModels 下的 JSON 文件(iOS/Mac 型号映射)
- 工具显示与交互:OpenClawKit.bundle 内的 tool-display.json 与 scaffold.html
- 更新框架:Sparkle.framework(自动更新相关头文件)
- 安全签名:_CodeSignature/CodeResources(资源校验)
OpenClaw 应用包
OpenClaw.app
Contents/Info.plist
应用配置与权限声明
Contents/Resources/models.generated.js
AI 模型清单
Contents/Resources/DeviceModels/
iOS/Mac 型号映射
Contents/Resources/OpenClawKit_OpenClawKit.bundle/
tool-display.json + scaffold.html
Contents/Frameworks/Sparkle.framework/
自动更新组件
Contents/_CodeSignature/CodeResources
资源签名校验
图表来源
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist#L1-L82)
-
ios-device-identifiers.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/DeviceModels/ios-device-identifiers.json#L1-L177)
-
tool-display.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/tool-display.json#L1-L198)
-
CodeResources\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/_CodeSignature/CodeResources#L1-L52)
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist#L1-L82)
-
ios-device-identifiers.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/DeviceModels/ios-device-identifiers.json#L1-L177)
-
tool-display.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/tool-display.json#L1-L198)
-
CodeResources\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/_CodeSignature/CodeResources#L1-L52)
-
AI 模型集成层
- 作用:集中管理可选模型清单,包含提供商、API 类型、输入类型、上下文窗口、最大输出长度、计费参数等
- 实现:通过 models.generated.js 导出的 MODELS 对象,按需选择与调用
- 使用场景:在需要多模态(文本/图像)推理时,根据任务选择合适模型
-
设备兼容性层
- 作用:提供 iOS 与 Mac 设备型号到人类可读名称的映射,辅助设备识别与适配
- 实现:分别由 ios-device-identifiers.json 与 mac-device-identifiers.json 提供映射表
- 使用场景:在跨设备执行任务时,依据设备型号进行差异化处理
-
权限管理层
- 作用:在 Info.plist 中声明各类系统权限需求,确保运行时获得必要授权
- 实现:针对自动化控制、摄像头、麦克风、屏幕截图、语音识别、通知等场景设置用途描述
- 使用场景:首次运行或触发对应能力时,系统弹窗请求用户授权
-
自动更新系统
- 作用:基于 Sparkle 框架实现应用版本检查与更新安装
- 实现:通过 Info.plist 中的 SU* 配置项启用自动检查;SPUUpdater.h 等头文件提供更新接口
- 使用场景:新版本发布后自动提示或静默下载安装,保持客户端最新
-
关键特性层
- 作用:支撑语音唤醒、多模态输入、屏幕捕获、相机捕获等核心能力
- 实现:tool-display.json 描述工具与动作集合;scaffold.html 提供状态展示与调试开关
- 使用场景:Agent 在需要时调用相应工具完成操作,如截图、拍照、录制屏幕等
章节来源
-
models.generated.js\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/models.generated.js#L1-L200)
-
mac-device-identifiers.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/DeviceModels/mac-device-identifiers.json#L1-L200)
-
SPUUpdater.h\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Frameworks/Sparkle.framework/Versions/B/Headers/SPUUpdater.h#L94-L109)
-
scaffold.html\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/scaffold.html#L149-L221)
下图展示了 OpenClaw 的主要模块及其交互关系:
资源与配置
系统与框架
应用层
界面与状态展示
scaffold.html
工具与动作定义
tool-display.json
权限声明
Info.plist
自动更新
Sparkle.framework
模型清单
models.generated.js
设备映射
ios/mac device-identifiers.json
资源签名
CodeResources
图表来源
-
scaffold.html\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/scaffold.html#L149-L221)
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist#L53-L70)
-
models.generated.js\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/models.generated.js#L1-L200)
-
mac-device-identifiers.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/DeviceModels/mac-device-identifiers.json#L1-L200)
详细组件分析
AI 模型集成
- 功能概述
- 统一管理多厂商(如 Amazon Bedrock、OpenAI、Google 等)与多模型(文本/图像多模态)的能力参数
- 提供上下文窗口大小、最大输出长度、成本参数等,便于任务规划与成本控制
- 数据结构与复杂度
- 模型清单为常量级查找结构,访问复杂度 O(1),适合频繁切换模型
- 处理逻辑
- Agent 根据任务类型与可用权限选择合适模型,调用统一接口进行推理
- 集成点
- 通过 models.generated.js 导出的 MODELS 对象进行模型检索与参数读取
- 性能影响
- 模型参数仅用于配置与预算估算,实际推理发生在外部服务端,本地开销极低
满足条件
不满足
开始
加载模型清单
models.generated.js
选择模型
调用模型接口
回退策略或提示
结束
图表来源
-
models.generated.js\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/models.generated.js#L1-L200)
-
models.generated.js\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/models.generated.js#L1-L200)
-
功能概述
- 提供 iOS 与 Mac 设备型号到人类可读名称的映射,辅助在不同硬件上执行一致的任务
-
数据结构
- JSON 映射表,键为设备代号,值为设备名称或数组形式的多个名称
-
使用场景
- 在跨设备执行任务时,依据设备型号进行差异化处理(如分辨率、性能限制等)
是
否
获取设备型号代号
是否在映射表中
解析为设备名称
使用默认或未知标识
执行兼容性处理
图表来源
-
ios-device-identifiers.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/DeviceModels/ios-device-identifiers.json#L1-L177)
章节来源
-
ios-device-identifiers.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/DeviceModels/ios-device-identifiers.json#L1-L177)
权限管理
- 功能概述
- 在 Info.plist 中声明各类系统权限用途,确保运行时获得必要授权
- 关键权限
- 自动化控制(Apple Events)、摄像头、麦克风、屏幕截图、语音识别、通知等
- 用户体验
- 首次使用或触发对应能力时,系统弹窗请求授权;用户可在系统设置中管理
"OpenClaw 应用" "macOS 系统" "用户" "OpenClaw 应用" "macOS 系统" "用户" 请求使用某能力如摄像头 读取 Info.plist 中的用途描述 弹出授权对话框 授权/拒绝 返回授权结果
图表来源
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist#L53-L70)
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist#L53-L70)
-
功能概述
- 基于 Sparkle 框架实现应用版本检查与更新安装,支持自动检查与静默下载
-
配置与行为
- Info.plist 中启用自动检查并指定更新源;SPUUpdater.h 提供检查接口;SPUUpdaterSettings.h 控制自动下载与系统信息上报
-
用户控制
- 可通过 SUUpdatePermissionResponse.h 的响应对象控制自动下载与系统画像上报选项
"更新源(SUFeedURL)" "Sparkle 框架" "OpenClaw 应用" "更新源(SUFeedURL)" "Sparkle 框架" "OpenClaw 应用" 触发检查更新 请求 appcast.xml 返回可用更新 展示更新提示/静默下载 安装更新 完成并重启
图表来源
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist#L75-L80)
-
SPUUpdaterSettings.h\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Frameworks/Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h#L49-L79)
章节来源
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist#L75-L80)
-
SPUUpdaterSettings.h\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Frameworks/Sparkle.framework/Versions/B/Headers/SPUUpdaterSettings.h#L49-L79)
关键特性:语音唤醒、多模态输入、屏幕捕获、相机捕获
- 语音唤醒
- 通过 Info.plist 中的语音识别用途描述,系统在需要时启用语音识别能力检测唤醒词
- 多模态输入
- models.generated.js 中模型的 input 字段指示支持文本/图像等输入类型,便于 Agent 进行多模态推理
- 屏幕捕获
- 通过 tool-display.json 中 nodes 工具的 screen_record 动作,支持录制屏幕并配置帧率、时长、屏幕索引等参数
- 相机捕获
- 通过 nodes 工具的 camera_snap/camera_clip 动作,支持拍照与录制短片,并可指定前置/后置与设备 ID
"工具集 tool-display.json" "界面/状态展示 scaffold.html" "Agent" "工具集 tool-display.json" "界面/状态展示 scaffold.html" "Agent" 请求屏幕录制 返回录制参数时长/帧率/屏幕索引 请求相机拍照 返回设备列表/拍摄参数 更新状态就绪/等待
图表来源
-
tool-display.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/tool-display.json#L110-L160)
-
models.generated.js\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/models.generated.js#L1-L200)
-
tool-display.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/tool-display.json#L110-L160)
-
models.generated.js\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/models.generated.js#L1-L200)
-
组件耦合
- 工具层(tool-display.json)依赖模型层(models.generated.js)以确定输入类型与能力
- 界面层(scaffold.html)依赖工具层以呈现状态与调试信息
- 权限层(Info.plist)贯穿各能力调用,决定是否可执行
- 更新层(Sparkle.framework)独立于业务逻辑,通过配置项启用
-
资源签名
- CodeResources 确保资源完整性与来源可信,避免篡改
models.generated.js
tool-display.json
scaffold.html
Info.plist
Sparkle.framework
CodeResources
图表来源
-
models.generated.js\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/models.generated.js#L1-L200)
-
scaffold.html\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/scaffold.html#L149-L221)
-
CodeResources\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/_CodeSignature/CodeResources#L1-L52)
-
models.generated.js\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/models.generated.js#L1-L200)
-
scaffold.html\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/scaffold.html#L149-L221)
-
CodeResources\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/_CodeSignature/CodeResources#L1-L52)
-
模型选择与成本控制
- 利用 models.generated.js 中的成本参数与上下文窗口,合理选择模型以平衡质量与成本
-
资源加载与缓存
- 模型清单与设备映射为静态资源,建议在应用启动时一次性加载并缓存
-
更新策略
- 合理配置 Sparkle 的自动检查与下载策略,避免频繁网络请求影响用户体验
故障排除指南
- 权限被拒绝
- 检查 Info.plist 中的用途描述是否准确;在系统设置中重新授予权限
- 更新无法检查
- 确认 SUFeedURL 配置正确;检查网络连通性;查看 Sparkle 的日志与错误提示
- 工具不可用
- 检查 tool-display.json 中的动作定义是否完整;确认当前设备支持相应能力
章节来源
-
Info.plist\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Info.plist#L53-L70)
-
tool-display.json\](file://OpenClaw-2026.1.30/OpenClaw.app/Contents/Resources/OpenClawKit_OpenClawKit.bundle/tool-display.json#L27-L198)
OpenClaw 通过清晰的模块划分与系统化配置,实现了从 AI 模型接入、设备兼容、权限管理到自动更新的完整闭环。其关键特性(语音唤醒、多模态输入、屏幕/相机捕获)为 Agent 执行复杂任务提供了坚实基础。用户可根据自身需求选择合适的模型与设备,并在系统权限与更新策略之间取得平衡,从而获得稳定、安全且持续演进的使用体验。