WindClaw-mac-arm64.dmg 详细分析报告

分析日期: 2026-04-21

分析目标: /Users/jay/Downloads/WindClaw-mac-arm64.dmg

分析者: Claude (Opus 4.7)

分析平台: macOS 26 (Darwin 25.3.0)

摘要

WindClaw-mac-arm64.dmg 是由 上海万得信息技术股份有限公司 (Shanghai Wind Information Co., Ltd.) 发布的 macOS Apple Silicon 原生安装包,内含一款名为 WindClaw 的 Electron 桌面 AI Agent 客户端,版本 0.9.19。该应用内核为开源项目 openclaw (2026.3.13),定位为面向投资/金融场景的多通道 AI Agent,深度整合 Wind 自家金融数据 API、网页搜索 MCP,以及桌面自动化、办公应用 (Excel/PPT/Notion/Obsidian 等) 的 70+ 个 skills。

包已通过 Apple 公证 (Notarized Developer ID),签名与 Hardened Runtime 配置完整,未发现恶意行为。存在若干值得关注的细节:自动更新走 HTTP、入口 plist 开放 NSAllowsArbitraryLoads、应用声明的系统权限覆盖面很广(与其桌面自动化定位相符)、构建产物里泄漏了内部开发者用户名与原代号 AB1Claw / ClawX

一、分析方法与过程

1.1 分析思路

对一个未知来源的 macOS .dmg 文件,采用由外至内、由静态到语义的分层方法:

1. 容器层:确认 dmg 本身格式、完整性、体积;

2. 文件系统层:挂载后枚举顶层内容;

3. Bundle 层:读取 Info.plist、签名、entitlements、资源目录;

4. 运行时/业务层:识别运行时 (Electron/Node/Python uv),检查主要 JS/配置,梳理插件与 skills;

5. 风险评估:签名链、网络配置 (ATS)、权限声明、自动更新通道、泄漏信息。

整个过程只使用只读挂载,不安装、不启动应用;分析结束立即 hdiutil detach

1.2 使用的命令与工具

目的命令
基础识别`file`, `shasum -a 256`, `ls -la`
DMG 元数据`hdiutil imageinfo`
只读挂载`hdiutil attach -readonly -nobrowse -mountpoint /tmp/windclaw_mnt`
签名/公证`codesign -dvv`, `codesign -d --entitlements :-`, `spctl --assess -vv`
文件读取`ls`, `cat`, 文件读取工具
大小统计`du -sh`
卸载`hdiutil detach`

1.3 关键步骤记录

Step 1 — 文件识别


file: zlib compressed data
size: 322,200,316 bytes (~307 MB)
sha256: fdd77d68ebc7a2443eed82f7fe24826c323e82e49281907979c89a04bf3b4955

Step 2 — DMG 元数据


Format: UDZO (已压缩为 UDIF 只读, zlib)
Class:  CUDIFDiskImage
Total Bytes: 846,718,464 (~807 MB 解压后容量)
Checksum Type: CRC32  Value: $B4422312
Partition scheme: GPT,主分区为 Apple_APFS

完整性校验全部 "已验证"。

Step 3 — 挂载与顶层结构


/tmp/windclaw_mnt/
├── Applications -> /Applications        (符号链接,DMG 安装惯例)
└── WindClaw.app/
    └── Contents/
        ├── Info.plist
        ├── MacOS/WindClaw               (53 KB, 典型 Electron loader)
        ├── Frameworks/ (Electron Framework + Squirrel + 4 个 Helper app)
        ├── Resources/
        └── _CodeSignature/

Squirrel.framework 的存在表明采用 Electron 标准的 Squirrel 自动更新。

Step 4 — Info.plist 要点


CFBundleIdentifier         : com.wind.windclaw
CFBundleDisplayName        : WindClaw
CFBundleShortVersionString : 0.9.19
CFBundleVersion            : 0.9.19
LSMinimumSystemVersion     : 12.0
LSApplicationCategoryType  : public.app-category.productivity
DTSDKName                  : macosx15.5
DTXcodeBuild               : 16F6
NSPrincipalClass           : AtomApplication      ← 确认 Electron
ElectronAsarIntegrity      : app.asar / default_app.asar 的 SHA256 预期值

声明的权限使用说明 (UsageDescription) 极其全面:麦克风、摄像头、蓝牙、日历、提醒、通讯录、定位、照片库、桌面/文档/下载/可移动/网络卷文件夹、语音识别、Apple Events(控制其他 App)。同时开启:


NSAppTransportSecurity.NSAllowsArbitraryLoads = true
NSAppTransportSecurity.NSAllowsLocalNetworking = true
127.0.0.1 / localhost: 允许 HTTP 明文(本地 MCP 服务常见)

还有两个遗留名字 "ClawX"(摄像头、麦克风描述里),暗示应用曾用此代号。

Step 5 — 代码签名与公证


Identifier         : com.wind.windclaw
Format             : app bundle with Mach-O thin (arm64)
CodeDirectory      : v=20500 flags=0x10000(runtime)       ← Hardened Runtime
Authority chain    : Developer ID Application: Shanghai Wind Information Co., Ltd. (VGTWX38GBJ)
                   : Developer ID Certification Authority
                   : Apple Root CA
Timestamp          : Apr 17, 2026 at 16:09:42
TeamIdentifier     : VGTWX38GBJ
Runtime Version    : 26.1.0
Sealed Resources   : v2 rules=13 files=19134

spctl --assess: accepted
source=Notarized Developer ID

Apple Gatekeeper 判定为已公证的 Developer ID,可正常运行。

Entitlements


com.apple.security.cs.allow-dyld-environment-variables : true
com.apple.security.cs.allow-jit                        : true
com.apple.security.cs.allow-unsigned-executable-memory : true
com.apple.security.cs.disable-library-validation       : true
com.apple.security.device.audio-input                  : true
com.apple.security.files.downloads.read-write          : true
com.apple.security.files.user-selected.read-write      : true
com.apple.security.network.client                      : true

前四项是 Electron 应用的必要配置(加载 V8 JIT、允许第三方 framework 装入);network.clientfiles.user-selected 是客户端基础。

Step 6 — Resources 结构


Resources/
├── app-update.yml                      (Squirrel 更新配置)
├── app.asar (19.3 MB)                 (Electron 主进程/渲染业务代码)
├── default_app.asar (109 KB)
├── icon.icns (668 KB)
├── bin/uv (43.5 MB, arm64)            (Python 包管理器 uv 0.10.0)
├── cli/openclaw                        (用户可调用的 CLI 入口 shell 脚本)
├── openclaw/       (293 MB) ← 核心 Node.js 运行代码、dist、node_modules、skills、docs
├── openclaw-extensions/ (1.7 MB) ← Wind 官方扩展 + skills
├── openclaw-plugins/    (11 MB)  ← 第三方通讯平台插件
└── resources/                          (图标、licenses、context md 文件)

Step 6.1 — 自动更新配置


provider: generic
url: http://upgcdn.wind.com.cn/Windnet/RUNIMAGE.cosmos/10060
useMultipleRangeRequest: false
updaterCacheDirName: windclaw-updater

更新通道为明文 HTTPupgcdn.wind.com.cn)。理论上 Squirrel 会再校验下载产物的代码签名,但该配置仍是一个值得记录的弱点。

Step 6.2 — OpenClaw 内核元信息

openclaw/package.json


name        : openclaw
version     : 2026.3.13
description : Multi-channel AI gateway with extensible messaging integrations
license     : MIT
homepage    : https://github.com/openclaw/openclaw#readme
dependencies: 约 90 个

openclaw/.bundle-fingerprint.json 可见内部构建路径:


/Users/pguo/Documents/gitDev/AB1Claw/windows/node_modules/.pnpm/openclaw@2026.3.13_.../openclaw

泄漏信息:

openclaw/.bundle-idopenclaw@2026.3.13+44eb11932fbc

Step 6.3 — CLI 入口

Resources/cli/openclaw 是一个 sh 脚本,复用 Electron 可执行作为 Node 运行:


export OPENCLAW_EMBEDDED_IN="WindClaw"
ELECTRON_RUN_AS_NODE=1 exec "$ELECTRON" "$CLI" "$@"

也就是说:即使用户不打开 GUI,也能通过 WindClaw.app/.../cli/openclaw 直接以命令行方式驱动 openclaw。这解释了为何需要 allow-dyld-environment-variables 权限。

Step 6.4 — Python 运行时


bin/uv: Mach-O 64-bit executable arm64 (uv 0.10.0, build 0ba432459, 2026-02-05)

打包了 Astral 公司出品的 uv Python 包管理器。通常用于启动 Python 实现的 MCP server / skill 运行时。

Step 6.5 — Plugin/Extension 分类

openclaw-extensions/:

目录作用
`wind_financial_data/`调用 Wind AB1 workflow API(非 MCP)
`wind_web_search/`调用 Wind MCP `internet_search`
`ab1-mcp/`标记为 deprecated placeholder
`skills/`70+ 技能目录(见下)

openclaw-plugins/:

目录作用
`dingtalk/`钉钉集成
`openclaw-weixin/`微信(Weixin)集成

Step 6.6 — Skills 目录 (重点)

openclaw/skills/ (通用技能 50+):

1password, apple-notes, apple-reminders, bear-notes, blogwatcher, blucli, bluebubbles, camsnap, canvas, clawhub, coding-agent, discord, eightctl, gemini, gh-issues, gifgrep, github, gog, healthcheck, himalaya, imsg, mcporter, model-usage, nano-banana-pro, nano-pdf, node-connect, notion, obsidian, openai-image-gen

openclaw-extensions/skills/ (业务/自动化技能 70+):

agentmail-1.1.1, auto-updater, A股市场主线识别, chart-image-2.5.1, computer-use-1.2.1, daily-planner-1.0.0, desktop-control-1.0.0, elite-longterm-memory, ems-sim-trading, excel-xlsx, fast-browser-use-1.0.5, file-search-1.0.0, find-skills, github, humanizer, image-1.0.4, imap-smtp-email, macro-analysis, markdown-converter-1.0.0, market-analysis, mcporter, multi-search-engine, n8n-workflow-automation-1.0.0, nano-pdf, ontology, outlook-api-1.0.3, pdf-0.1.0, powerpoint-pptx, proactive-agent

可见产品定位为 "会下单/会炒股/会写报告/会操作你电脑"的投资 AI Agent

Step 6.7 — Agent 人格与工作流

Resources/resources/context/ 下 7 个 markdown 定义了 Agent 行为:

- 会话启动自动读取 SOUL.md / USER.md / 今天与昨天 memory / MEMORY.md

- Skills First → Tools Second → Reasoning Third

- 工具调用优先顺序:Wind 金融数据 > Web 搜索 > 本地研究资料

- 对 Wind 工具设了"单次回答调用限制"

二、分析结果

2.1 产品定性

维度结论
产品名WindClaw(万得爪 / 投资小龙虾)
类型Electron 桌面 AI Agent 客户端
厂商上海万得信息技术股份有限公司(Wind 资讯)
内核openclaw 2026.3.13(自家/关联开源项目,MIT)
目标用户金融/投资领域终端用户(A股分析、宏观研究等)
交付渠道DMG + Squirrel 自动更新

2.2 技术组成


┌─ WindClaw.app (Electron shell) ─────────────────────────────┐
│   ├── Electron Framework (Chromium + V8 + Node)             │
│   ├── 4 Helper 子进程 (GPU / Plugin / Renderer / 默认)       │
│   ├── Squirrel.framework (自动更新)                          │
│   └── Resources/                                             │
│       ├── app.asar              ← 主进程/UI                  │
│       ├── openclaw/             ← Node AI Agent 内核         │
│       │    └── dist/*.js (600+), node_modules (385+)         │
│       ├── openclaw-extensions/  ← 业务扩展 + skills          │
│       ├── openclaw-plugins/     ← 钉钉/微信                  │
│       ├── bin/uv (43 MB)        ← Python uv 运行时           │
│       └── cli/openclaw          ← 命令行入口 (Electron as Node)│
└─────────────────────────────────────────────────────────────┘

双形态运行:

1. GUI 模式:用户点开 app,主进程加载 app.asar

2. CLI 模式:通过 ELECTRON_RUN_AS_NODE=1 直接把 Electron 当 Node 用,执行 openclaw.mjs

2.3 签名与分发可信度

检查结果
Developer ID 签名✅ 上海万得 (Team ID `VGTWX38GBJ`)
Apple 公证✅ `source=Notarized Developer ID`
Hardened Runtime✅ 已启用 (`flags=0x10000`)
Gatekeeper✅ `accepted`
ASAR 完整性✅ Info.plist 中有 `ElectronAsarIntegrity` 预期哈希
DMG 校验和✅ CRC32 全部通过

可认定 来源与完整性可信,非钓鱼/破解/伪签名包。

2.4 权限画像

必需/合理:

需用户知情的宽授权:

Electron 内部放宽:

2.5 发现的风险与观察项

#风险/观察级别说明与建议
1自动更新走 HTTP (`upgcdn.wind.com.cn`)⚠ 中Squirrel 默认校验代码签名可缓解,但仍建议厂商迁移 HTTPS;企业/高风险用户可在边界禁用或代理审计
2`NSAllowsArbitraryLoads = true` + `127.0.0.1`/`localhost` HTTP 明文豁免⚠ 低本地 MCP/子进程常用,非对外暴露,但会放宽整包 ATS
3声明了 Apple Events / 全设备权限⚠ 中产品的确有 `desktop-control` / `computer-use` 能力;用户应在"系统设置→隐私与安全性"按需关闭
44 个 Electron `disable-library-validation` 类 entitlement⚠ 低Electron 生态标配,风险可接受
5构建产物泄漏内部路径:`/Users/pguo/Documents/gitDev/AB1Claw/windows/...`ℹ 信息泄漏暴露开发者用户名与内部代号,建议 CI 里清理
6Info.plist 残留旧名 "ClawX"ℹ 瑕疵多处权限描述仍写 `ClawX requires ...`,与 `WindClaw` 不一致
7业务包极大(Resources 344 MB,含 600+ JS 与 385+ node_modules)ℹ 信息攻击面相应增大,第三方依赖众多;未做 SCA 扫描
8桌面自动化 + 钉钉/微信插件组合⚠ 需知情具备可自动发消息/调 IM 能力,企业部署时应评估合规
9捆绑 `uv` + 允许动态下载 Python 依赖ℹ 信息Skills 运行时可能在首次运行拉取外部 Python 包;建议在隔离网络评估

未发现:

2.6 版本与时间线

App 版本0.9.19
openclaw 内核版本2026.3.13
签名时间2026-04-17 16:09:42
SDKmacOS 15.5, Xcode 16F6
Electron Runtime26.1.0

版本号 0.9.x 暗示产品仍属 公测/早期阶段

三、证据清单(原始数据片段)

3.1 sha256


fdd77d68ebc7a2443eed82f7fe24826c323e82e49281907979c89a04bf3b4955  WindClaw-mac-arm64.dmg

3.2 签名链


Developer ID Application: Shanghai Wind Information Co., Ltd. (VGTWX38GBJ)
 └─ Developer ID Certification Authority
     └─ Apple Root CA

3.3 Entitlements


<key>com.apple.security.cs.allow-dyld-environment-variables</key><true/>
<key>com.apple.security.cs.allow-jit</key><true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
<key>com.apple.security.cs.disable-library-validation</key><true/>
<key>com.apple.security.device.audio-input</key><true/>
<key>com.apple.security.files.downloads.read-write</key><true/>
<key>com.apple.security.files.user-selected.read-write</key><true/>
<key>com.apple.security.network.client</key><true/>

3.4 自动更新


provider: generic
url: http://upgcdn.wind.com.cn/Windnet/RUNIMAGE.cosmos/10060
useMultipleRangeRequest: false
updaterCacheDirName: windclaw-updater

3.5 内部构建路径泄漏


/Users/pguo/Documents/gitDev/AB1Claw/windows/node_modules/.pnpm/
  openclaw@2026.3.13_.../openclaw

3.6 目录大小


293M   Resources/openclaw
 11M   Resources/openclaw-plugins
1.7M   Resources/openclaw-extensions
 44M   Resources/bin/uv
 19M   Resources/app.asar

四、建议

对普通用户

1. 从官方渠道下载(claw-x.com / wind.com.cn),并比对 sha256:

fdd77d68ebc7a2443eed82f7fe24826c323e82e49281907979c89a04bf3b4955

2. 首次启动后,在"系统设置 → 隐私与安全性"里按需授权:建议仅开启必要项(网络、麦克风/语音),其余(通讯录、位置、相册、蓝牙、照片库)默认拒绝,等真正用到再开。

3. Apple Events("自动化")授权涉及"控制其他 App",如不使用 computer-use / desktop-control skill,建议拒绝。

对企业/合规用户

1. 自动更新的 HTTP 通道建议通过企业代理代为审计,或在边界阻断,统一由 MDM 下发版本。

2. 钉钉/微信插件具备发消息能力,需走企业 IM 合规评审。

3. uv + skills 可能动态拉取 Python 依赖,应在出口控制里记录到 PyPI 的访问;必要时隔离运行。

4. 已泄漏的构建路径信息可反馈给厂商,以改进 CI。

对开发方(可反馈)

1. 升级自动更新到 HTTPS;

2. CI 里清理 .bundle-fingerprint.json 与 dist 中的本机绝对路径;

3. 统一 Info.plist 里的产品名(仍有 ClawX 残留);

4. 版本号从 0.9.x 提升并完善变更说明。

五、附录

5.1 顶层文件树(节选)


WindClaw.app/
└── Contents/
    ├── Info.plist
    ├── MacOS/WindClaw
    ├── Frameworks/
    │   ├── Electron Framework.framework/
    │   ├── Mantle.framework/
    │   ├── ReactiveObjC.framework/
    │   ├── Squirrel.framework/
    │   ├── WindClaw Helper.app/
    │   ├── WindClaw Helper (GPU).app/
    │   ├── WindClaw Helper (Plugin).app/
    │   └── WindClaw Helper (Renderer).app/
    ├── Resources/
    │   ├── app.asar
    │   ├── default_app.asar
    │   ├── app-update.yml
    │   ├── icon.icns
    │   ├── bin/uv
    │   ├── cli/openclaw
    │   ├── openclaw/ (dist, node_modules, skills, docs, extensions)
    │   ├── openclaw-extensions/ (wind_financial_data, wind_web_search, ab1-mcp, skills)
    │   ├── openclaw-plugins/ (dingtalk, openclaw-weixin)
    │   └── resources/ (cli, context, icons, licenses, skills, dmg-background.png)
    ├── PkgInfo
    └── _CodeSignature/

5.2 关于 "openclaw"

5.3 关于 "投资小龙虾"

产品在 IDENTITY.windclaw.md 中为 Agent 赋予了拟人化形象(Emoji 🦞):数据驱动、结构化表达、侧重投资/行业研究、强调效率。其 AGENTS.windclaw.md 工作流强制 Skill 优先与工具调用限额,这是典型的 Anthropic Skills 式架构。

报告结束。

分析全程在本地只读挂载环境下进行,已卸载 (hdiutil detach /tmp/windclaw_mnt → "disk8" ejected),未运行任何 WindClaw 二进制。