从代码简单看看openclaw的历程

从代码简单看看openclaw的历程2025 年 11 24 日 一位名叫 Peter Steinberger 的大佬创建了一个项目 并提交了几十次代码 次日 v0 1 0 诞生 7074 行代码 代码结构如上 用 ai 解释如下 User 介绍一下这个项目的结构和做了什么 架构 思路 这个项目名为 warelay WhatsApp Relay 是一个基于 TypeScript 的 CLI 命令行界面 工具 主要用于发送

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



2025年11.24日,一位名叫Peter Steinberger的大佬创建了一个项目,并提交了几十次代码,次日,v0.1.0诞生,7074行代码。


GPT plus 代充 只需 145

代码结构如上。

用ai解释如下。。

User: 介绍一下这个项目的结构和做了什么,架构,思路

这个项目名为 warelay(WhatsApp Relay),是一个基于 TypeScript 的 CLI(命令行界面)工具,主要用于发送、接收和自动回复 WhatsApp 消息。它支持两种提供商:Twilio(默认,用于可靠的消息交付、状态跟踪和 webhook)和 WhatsApp Web(通过 QR 码登录个人账户,用于快速发送/接收)。项目旨在简化 WhatsApp 消息的自动化处理,适用于个人或开发场景,如监控、自动回复和 webhook 集成。

项目使用 MIT 许可证,依赖 Node.js 22+,通过 npm 发布。核心功能包括:

  • 发送消息:支持文本和媒体(图片),可等待交付状态。
  • 接收和监控:通过轮询或 webhook 监听消息。
  • 自动回复:支持静态模板或外部命令(如 Claude AI 驱动),可按发送者或全局会话管理。
  • Webhook 设置:一键启用 Tailscale Funnel 来公开 webhook URL,并更新 Twilio 回调。
  • 状态查询:查看最近的发送/接收消息。

项目灵感来源于简化 WhatsApp 集成,避免复杂的 API 封装,提供一个“即插即用”的 CLI 工具。适用于开发者快速原型、个人自动化或企业消息处理。

项目采用模块化设计,源代码位于 src 目录下,遵循 TypeScript ESM 规范。以下是主要目录和文件的组织(基于工作空间结构和 AGENTS.md):

  • src:核心源代码。

    • index.ts:主入口文件,负责 CLI 程序构建、导出公共 API 和模块。使用 Commander.js 构建 CLI 命令。
    • cli/:CLI 相关逻辑。
      • program.ts:定义 CLI 命令结构(如 send、relay、status 等)。
      • deps.ts:依赖注入工厂(createDefaultDeps),用于管理 Twilio 客户端、配置等。
      • prompt.tswait.ts:用户交互和等待逻辑。
    • commands/:具体命令实现。
      • send.ts:发送消息。
      • relay.ts:自动回复循环。
      • status.ts:查询消息状态。
      • webhook.ts:启动 webhook 服务器。
      • up.ts:可能用于启动服务。
    • twilio/:Twilio 提供商相关。
      • client.ts:Twilio 客户端创建。
      • send.tsmessages.ts:发送和消息处理。
      • webhook.ts:Webhook 处理。
      • monitor.ts:监控逻辑。
    • provider-web.ts:WhatsApp Web 提供商(使用 Baileys 库)。
    • auto-reply/:自动回复引擎。
      • reply.ts:回复逻辑。
      • claude.ts:Claude AI 集成。
      • templating.ts:模板应用。
    • config/:配置管理。
      • config.ts:加载配置。
      • sessions.ts:会话存储。
    • infra/:基础设施工具。
      • binaries.ts:确保二进制可用(如 Tailscale)。
      • ports.ts:端口管理。
      • tailscale.ts:Tailscale Funnel 集成。
    • media/:媒体管道。
      • host.tsserver.tsstore.ts:媒体托管和存储。
    • utils.ts:通用工具(如 E164 格式化、提供商断言)。
    • env.ts:环境变量读取。
    • logger.ts:日志记录(使用 Pino)。
    • runtime.ts:运行时逻辑。
  • docs:文档。

    • claude-config.md:Claude AI 配置指南。
    • images.mdqueue.md:特定功能文档。
    • RELEASING.md:发布指南。
  • test:测试文件(使用 Vitest,覆盖率 70%)。

    • 每个模块有对应的 .test.ts 文件。
    • mocks/:模拟 Twilio 和 Baileys。
  • 根目录文件

    • package.json:项目元数据、依赖(Twilio、Baileys、Express 等)和脚本。
    • tsconfig.json:TypeScript 配置。
    • biome.json:Biome 配置(linting 和格式化)。
    • AGENTS.md:项目指南(结构、命令、风格)。

构建输出在 dist/,测试在 test。

项目采用 模块化 CLI 架构,核心设计原则包括:

  • ESM + TypeScript:严格类型检查,避免 any;使用 Biome 进行 linting 和格式化。
  • 依赖注入:通过 createDefaultDeps 工厂函数管理依赖(如 Twilio 客户端、配置),便于测试和扩展。
  • 提供商抽象:支持 Twilio 和 Web 提供商,通过 assertProvider 和接口抽象(见 providers/provider.types.ts)。
  • 异步处理:使用 Promise 和 async/await 处理消息发送、轮询和 webhook。
  • 状态管理:会话存储在 /.warelay/(Web 凭据和配置),支持持久化。
  • 错误处理:自定义错误类(如 PortInUseError),日志使用 Pino。
  • 测试驱动:Vitest + 覆盖率,测试 colocated(与源文件同目录)。

架构图简述(基于代码结构):

  • 入口层index.tsbuildProgram() → 命令路由。
  • 业务层:命令模块调用提供商(Twilio/Web)、配置和基础设施。
  • 基础设施层:端口、Tailscale、媒体托管。
  • 数据流:消息通过 webhook(Express 服务器)或轮询进入,触发自动回复引擎。
  • 简化集成:提供“一键”设置(如 warelay webhook –ingress tailscale),减少开发者配置负担。支持轮询作为 webhook 的 fallback,便于无公网环境的部署。
  • 多提供商支持:Twilio 用于生产(交付跟踪、webhook),Web 用于快速原型(无需 API 密钥)。自动选择逻辑(–provider auto)提升用户体验。
  • 可扩展回复:自动回复支持模板和外部命令,允许集成 AI(如 Claude),并通过会话管理避免重复回复。
  • 安全和配置:环境变量存储敏感信息(.env),凭据缓存本地。使用 Tailscale Funnel 避免暴露公网端口。
  • 开发友好:CLI 命令直观,文档齐全,测试覆盖高。遵循“keep files concise”(文件简洁),提取工具函数。
  • 灵感来源:可能受 Twilio WhatsApp API 和 Baileys(WhatsApp Web 库)的启发,旨在填补个人/开发者在 WhatsApp 自动化上的空白。

如果需要深入某个模块的代码解释或运行示例,请提供更多细节!

可以看到,初始的目标并不惊艳。

时间来到12月20日。进入v2.0.0-beta1版本。

User: 介绍一下这个项目的结构和做了什么,架构,思路

项目概述

CLAWDIS 是一个基于 TypeScript/Node 的开源项目,旨在作为 WhatsApp 和 Telegram 的网关,将这些消息平台桥接到本地 AI 代理(目前仅支持 Pi 代理)。项目名称灵感来源于“CLAW + TARDIS”(爪子和时间机器),象征着为 AI 代理提供一个“时空机器”,让它像天才龙虾一样随时可用。项目由 Peter Steinberger 创建,专注于提供一个可靠的控制平面、伴侣应用和网络模型,避免会话腐败问题。核心理念是“EXFOLIATE! EXFOLIATE!”(去角质),强调简洁和高效。

项目的主要目标是让 AI 代理能够通过 WhatsApp 或 Telegram 与用户交互,同时支持媒体处理、语音唤醒、浏览器控制等高级功能。它不是一个独立的聊天机器人,而是作为一个“网关”来管理状态和连接,确保只有一个进程拥有 WhatsApp Web 会话。

  • 消息桥接:支持 WhatsApp Web(通过 Baileys)和 Telegram Bot API(通过 grammY)。消息可以双向传递,包括文本、媒体(图片、音频、文档、语音笔记)。
  • AI 代理集成:仅支持 Pi 代理(Pi CLI 在 RPC 模式下运行),支持工具流式传输(实时显示工具状态,如 💻📄✍️📝)。
  • 会话管理:直接聊天默认合并到 main 会话;群聊隔离。支持心跳检查(定期 AI 主动检查)。
  • 浏览器控制:专用的 Chrome/Chromium 配置文件,支持标签页管理和截图(不干扰用户日常浏览器)。
  • 群聊支持:基于提及的触发机制。
  • 语音与转录:支持语音唤醒(macOS/iOS)和可选转录管道。
  • 伴侣应用
    • macOS 应用 (Clawdis.app):菜单栏控件、语音唤醒、WebChat 嵌入、调试工具。
    • iOS 节点:作为远程节点连接,暴露 Canvas 表面,转发语音唤醒转录。
  • 其他:支持定时任务(cron)、节点配对(Bonjour 发现)、远程控制(通过 VPN/SSH 隧道)。

CLAWDIS 的架构设计强调“单源真理”和“网络模型的新现实”,以避免传统网关的会话腐败问题:

  • 网关控制平面:一个长期运行的网关进程(Gateway)是唯一拥有提供商状态的实体。它监听 WebSocket(默认 ws://127.0.0.1:18789),客户端(如 CLI、Web UI、macOS 应用)通过此连接进行操作。网关还可选暴露桥接(Bridge)在 tcp://0.0.0.0:18790,用于配对节点(通过 Bonjour 发现)。
  • 网络模型
    • Loopback-first:默认仅本地环回,防止意外暴露。
    • 远程访问:通过设置 gateway.bind: “tailnet” 或 SSH 隧道(ssh -N -L 18789:127.0.0.1:18789 user@host)支持远程控制。macOS 应用可驱动此流程。
    • Wide-Area Bonjour:可选跨网络自动发现(通过 Tailscale 的 unicast DNS-SD)。
  • 组件分离
    • CLI:命令行接口,用于登录、发送消息、启动网关等。
    • Web UI:浏览器控制界面(http://127.0.0.1:18789/ui/),用于状态监控和操作。
    • 代理运行时:Pi 代理在指定工作目录(默认 /clawd)运行,支持注入文件(如 AGENTS.md、SOUL.md)和自定义技能。
    • 提供商:WhatsApp(Baileys)和 Telegram(grammY),共享 main 会话。
  • 安全与配置:凭证存储在 /.clawdis/credentials/,会话在 /.clawdis/sessions/。支持令牌认证(CLAWDIS_GATEWAY_TOKEN)和允许列表(inbound.allowFrom)。
  • 技术栈:TypeScript (ESM),Node ≥22。macOS/iOS 使用 Swift。构建工具:pnpm、Biome(格式化/检查)、Vitest(测试)。

架构的核心思路是“去中心化但集中控制”:网关作为单一权威,避免多进程竞争,同时允许灵活的客户端连接和节点扩展。

项目采用模块化组织,遵循 TypeScript ESM 规范。以下是主要目录结构(基于工作区根目录):

  • src:核心源代码(TypeScript)。

    • cli/:命令行接口。
    • commands/:CLI 命令实现。
    • providers/:提供商(WhatsApp、Telegram)。
    • agents/:代理相关(auto-reply、browser、canvas-host 等)。
    • infra/:基础设施(网关、桥接)。
    • media/:媒体处理管道。
    • gateway/:网关服务器。
    • utils.tslogger.ts 等:工具和日志。
    • 测试文件:*.test.ts,使用 Vitest。
  • apps:平台特定应用。

    • macos/:macOS 菜单栏应用(Swift)。
    • ios/:iOS 节点应用(Swift)。
    • android/:Android 应用(Kotlin/Gradle)。
    • shared/:跨平台共享代码。
  • docs:文档(Markdown)。

    • 包括架构、配置、运行手册(如 architecture.mdgateway.mdtelegram.md)。
    • 子目录如 _layouts/android/ 等。
  • scripts:构建和部署脚本(Shell/TypeScript)。

    • restart-mac.sh(重启 macOS 应用)、committer(提交工具)。
  • ui:Web UI(Vite + TypeScript)。

    • src:前端代码。
    • index.htmlvite.config.ts
  • test:测试文件和模拟。
  • vendor:第三方库(如 a2ui)。
  • Peekaboo:子项目或实验(包括自己的 AGENTS.md、package.json)。
  • Swabble:另一个子项目(Swift 包)。
  • 根文件

    • package.json:依赖和脚本(pnpm)。
    • tsconfig.json:TypeScript 配置。
    • biome.json:代码格式化/检查。
    • vitest.config.ts:测试配置。
    • AGENTS.md:代理指南(项目结构、编码风格、测试等)。
    • README.md:项目介绍。

项目强调文件大小限制(≤500 LOC),使用现有模式,避免“V2”副本。测试覆盖率目标 70%。

CLAWDIS 的思路源于对 AI 代理的“人性化”需求:让 AI 像个人助手一样,通过熟悉的平台(WhatsApp/Telegram)交互,而不是局限于命令行或专用应用。核心理念包括:

  • 可靠性:单一网关避免会话冲突,支持持久状态和心跳。
  • 扩展性:通过 WebSocket 和桥接支持多客户端/节点,易于远程控制。
  • 隐私与安全:Loopback 默认、本地凭证存储、允许列表。
  • 开发者友好:TypeScript 严格类型、模块化代码、详细文档。
  • 乐趣与个性:项目充满幽默(如龙虾主题、TARDIS 比喻),强调“玩转自己的提示”(We’re all just playing with our own prompts)。

可以看到作者多了一些新的想法,已经支持了很多功能了,代码一下就到了38万行,真棒。

看一下贡献者。可以看到基本就是作者一个人嗨的很。

后续的版本基本就是用v2026.月.日作为tag了,我这会看到的最后一次是v2026.3.2。

ai时代,确实夸张哈

User: 介绍一下这个项目的结构和做了什么,架构,思路

基于我对项目文档和代码结构的分析,以下是对 OpenClaw 项目的全面介绍,包括其结构、功能、架构和设计思路。我将从项目概述开始,逐步深入。

OpenClaw 是一个个人 AI 助手,旨在让用户在自己的设备上运行一个强大的 AI 系统。它支持多种消息通道(如 WhatsApp、Telegram、Slack、Discord、Signal、iMessage 等),允许用户通过这些熟悉的平台与 AI 交互。项目强调隐私和安全性,所有数据和处理都在本地设备上进行,不依赖外部云服务。

  • 起源和发展:项目从一个个人实验开始(最初名为 Warelay、Clawdbot、Moltbot),目标是构建一个真正实用的 AI 助手,能够在真实计算机上执行任务。目前处于早期阶段,迭代迅速。
  • 核心理念:用户控制一切,AI 运行在本地,支持多平台扩展,同时保持安全默认。
  • 当前版本:基于 package.json,最新版本为 2026.3.2,支持 Node.js ≥22 运行时。

OpenClaw 的功能围绕消息传递、AI 推理和自动化展开:

  • 多通道消息支持:集成超过 20 种消息平台,包括 WhatsApp、Telegram、Discord、Slack、Google Chat、Signal、iMessage、BlueBubbles、IRC、Microsoft Teams、Matrix、Feishu、LINE、Mattermost、Nextcloud Talk、Nostr、Synology Chat、Tlon、Twitch、Zalo 等。用户可以在这些通道中发送/接收消息,并与 AI 对话。
  • AI 对话和推理:支持多种 AI 模型提供商(如 OpenAI、Vercel 等),用户可以配置模型进行高思考(high-thinking)或低思考(low-thinking)模式的对话。支持模型故障转移和 OAuth 认证。
  • 自动化和任务执行:可以执行计算机任务,如发送消息、控制设备、渲染 Canvas 等。支持语音输入/输出(在 macOS/iOS/Android 上)。
  • 插件系统:通过扩展插件添加功能,如内存管理、诊断、语音调用等。插件可以本地开发或通过 npm 分发。
  • 跨平台应用:提供 macOS、iOS、Android 应用,支持桌面和移动端使用。
  • 网关和 CLI:核心是 CLI 工具(openclaw 命令),网关作为控制平面运行后台服务。支持 Docker 和 Nix 部署。
  • 其他特性:支持 MCP(Model Context Protocol)通过外部桥接,技能系统(bundled skills),以及丰富的文档和诊断工具。

OpenClaw 的架构设计强调模块化、可扩展性和安全性:

  • 技术栈

    • 语言和运行时:主要使用 TypeScript(ESM 模块),支持 Node.js ≥22。构建工具包括 pnpm(推荐)、Bun(可选)。测试框架为 Vitest,覆盖率要求 70%。
    • 包管理:使用 pnpm workspace,支持 monorepo 结构。核心依赖包括 AI 模型集成、消息协议库等。
    • 构建和部署:使用 tsdown.config.ts 构建,输出到 dist/。支持 Docker(多个 Dockerfile 变体)、Nix 和传统安装。
  • 核心组件

    • CLI 和网关:cli 处理命令行接口,gateway 作为后台服务运行。网关监听端口(如 18789),处理消息路由和 AI 推理。
    • 通道集成:channels 和 extensions 处理不同消息平台的适配。每个通道有独立的实现,支持路由、允许列表和命令门控。
    • 插件系统:extensions 目录包含插件,每个插件是独立的 npm 包。核心提供插件 SDK(plugin-sdk),允许扩展功能而不修改核心。
    • 应用层:apps 包含跨平台应用(macOS、iOS、Android),使用 SwiftUI(iOS/macOS)和原生框架。
    • 媒体和管道:media 处理媒体处理,canvas-host 支持实时 Canvas 渲染。
    • 基础设施:infra 处理底层服务,如数据库、日志等。
  • 数据流和安全

    • 消息流:用户消息 → 通道适配器 → 路由 → AI 推理 → 响应 → 通道输出。
    • 安全模型:强调安全默认,用户控制权限。支持 OAuth 和 API 密钥,优先考虑隐私。插件和扩展需要明确权限。
    • 内存和状态:支持多种内存插件(e.g., LanceDB),用于持久化对话状态。
  • 部署模式

    • 本地运行:推荐通过 openclaw onboard 向导安装,包括守护进程(launchd/systemd)。
    • 容器化:支持 Docker Compose 和多种 Dockerfile(sandbox、browser 等)。
    • 开发模式:从源码构建,使用 pnpm install 和相关脚本。

项目采用清晰的目录结构,便于模块化和扩展:

  • 根目录

    • src:核心源码,包括 CLI、命令、通道、网关、媒体管道等。
    • extensions:插件目录,每个子目录是一个扩展(e.g., discord/, telegram/, voice-call/)。
    • apps:跨平台应用源码(android/, ios/, macos/, shared/)。
    • docs:文档,包括用户指南、API 参考、平台特定说明(支持 i18n,如 zh-CN)。
    • packages:共享包(如 clawdbot/, moltbot/)。
    • scripts:构建和维护脚本。
    • test:测试文件,使用 Vitest 配置。
    • skills:内置技能目录。
    • patches:依赖补丁。
    • assets:静态资源,如图标和扩展。
    • 配置文件:package.json, tsconfig.json, vitest.config.ts 等。
  • 关键文件

    • README.md:项目概述和快速开始。
    • VISION.md:愿景和设计原则。
    • AGENTS.md / CLAUDE.md:开发指南和约定。
    • CHANGELOG.md:版本更新日志。
    • SECURITY.md:安全政策。
  • 用户为中心:优先考虑易用性和隐私。终端优先设计,确保用户了解设置和权限。长期目标是简化 onboarding,同时不隐藏安全决策。
  • 插件化和扩展性:核心保持精简,可选功能通过插件实现。鼓励社区插件,但核心插件添加门槛高。支持 MCP 桥接以保持灵活性。
  • 安全与权衡:安全是首要,但不牺牲能力。提供明确控制选项,支持高功率工作流。
  • 多平台和兼容性:支持主流平台(macOS、Linux、Windows via WSL2),强调跨设备一致性。使用 TypeScript 以便于黑客和扩展。
  • 迭代和贡献:早期项目,快速迭代。贡献规则严格:一个 PR 一个主题,避免大型变更。优先修复 bug 和稳定性。
  • 未来方向:扩展模型支持、通道覆盖、性能优化、计算机使用能力、UI 改进。避免过度复杂,保持本地化和控制。

2025年1月份,我写过好几篇关于这块的文章,没想到现在好多人在这块发力。简单看看浏览器这块如何处理的

直接问问题

User: 介绍一下这个项目的结构和做了什么,架构,思路

基于我对项目文档和代码结构的分析,以下是对 OpenClaw 项目的全面介绍,包括其结构、功能、架构和设计思路。我将从项目概述开始,逐步深入。

OpenClaw 是一个个人 AI 助手,旨在让用户在自己的设备上运行一个强大的 AI 系统。它支持多种消息通道(如 WhatsApp、Telegram、Slack、Discord、Signal、iMessage 等),允许用户通过这些熟悉的平台与 AI 交互。项目强调隐私和安全性,所有数据和处理都在本地设备上进行,不依赖外部云服务。

  • 起源和发展:项目从一个个人实验开始(最初名为 Warelay、Clawdbot、Moltbot),目标是构建一个真正实用的 AI 助手,能够在真实计算机上执行任务。目前处于早期阶段,迭代迅速。
  • 核心理念:用户控制一切,AI 运行在本地,支持多平台扩展,同时保持安全默认。
  • 当前版本:基于 package.json,最新版本为 2026.3.2,支持 Node.js ≥22 运行时。

OpenClaw 的功能围绕消息传递、AI 推理和自动化展开:

  • 多通道消息支持:集成超过 20 种消息平台,包括 WhatsApp、Telegram、Discord、Slack、Google Chat、Signal、iMessage、BlueBubbles、IRC、Microsoft Teams、Matrix、Feishu、LINE、Mattermost、Nextcloud Talk、Nostr、Synology Chat、Tlon、Twitch、Zalo 等。用户可以在这些通道中发送/接收消息,并与 AI 对话。
  • AI 对话和推理:支持多种 AI 模型提供商(如 OpenAI、Vercel 等),用户可以配置模型进行高思考(high-thinking)或低思考(low-thinking)模式的对话。支持模型故障转移和 OAuth 认证。
  • 自动化和任务执行:可以执行计算机任务,如发送消息、控制设备、渲染 Canvas 等。支持语音输入/输出(在 macOS/iOS/Android 上)。
  • 插件系统:通过扩展插件添加功能,如内存管理、诊断、语音调用等。插件可以本地开发或通过 npm 分发。
  • 跨平台应用:提供 macOS、iOS、Android 应用,支持桌面和移动端使用。
  • 网关和 CLI:核心是 CLI 工具(openclaw 命令),网关作为控制平面运行后台服务。支持 Docker 和 Nix 部署。
  • 其他特性:支持 MCP(Model Context Protocol)通过外部桥接,技能系统(bundled skills),以及丰富的文档和诊断工具。

OpenClaw 的架构设计强调模块化、可扩展性和安全性:

  • 技术栈

    • 语言和运行时:主要使用 TypeScript(ESM 模块),支持 Node.js ≥22。构建工具包括 pnpm(推荐)、Bun(可选)。测试框架为 Vitest,覆盖率要求 70%。
    • 包管理:使用 pnpm workspace,支持 monorepo 结构。核心依赖包括 AI 模型集成、消息协议库等。
    • 构建和部署:使用 tsdown.config.ts 构建,输出到 dist/。支持 Docker(多个 Dockerfile 变体)、Nix 和传统安装。
  • 核心组件

    • CLI 和网关:cli 处理命令行接口,gateway 作为后台服务运行。网关监听端口(如 18789),处理消息路由和 AI 推理。
    • 通道集成:channels 和 extensions 处理不同消息平台的适配。每个通道有独立的实现,支持路由、允许列表和命令门控。
    • 插件系统:extensions 目录包含插件,每个插件是独立的 npm 包。核心提供插件 SDK(plugin-sdk),允许扩展功能而不修改核心。
    • 应用层:apps 包含跨平台应用(macOS、iOS、Android),使用 SwiftUI(iOS/macOS)和原生框架。
    • 媒体和管道:media 处理媒体处理,canvas-host 支持实时 Canvas 渲染。
    • 基础设施:infra 处理底层服务,如数据库、日志等。
  • 数据流和安全

    • 消息流:用户消息 → 通道适配器 → 路由 → AI 推理 → 响应 → 通道输出。
    • 安全模型:强调安全默认,用户控制权限。支持 OAuth 和 API 密钥,优先考虑隐私。插件和扩展需要明确权限。
    • 内存和状态:支持多种内存插件(e.g., LanceDB),用于持久化对话状态。
  • 部署模式

    • 本地运行:推荐通过 openclaw onboard 向导安装,包括守护进程(launchd/systemd)。
    • 容器化:支持 Docker Compose 和多种 Dockerfile(sandbox、browser 等)。
    • 开发模式:从源码构建,使用 pnpm install 和相关脚本。

项目采用清晰的目录结构,便于模块化和扩展:

  • 根目录

    • src:核心源码,包括 CLI、命令、通道、网关、媒体管道等。
    • extensions:插件目录,每个子目录是一个扩展(e.g., discord/, telegram/, voice-call/)。
    • apps:跨平台应用源码(android/, ios/, macos/, shared/)。
    • docs:文档,包括用户指南、API 参考、平台特定说明(支持 i18n,如 zh-CN)。
    • packages:共享包(如 clawdbot/, moltbot/)。
    • scripts:构建和维护脚本。
    • test:测试文件,使用 Vitest 配置。
    • skills:内置技能目录。
    • patches:依赖补丁。
    • assets:静态资源,如图标和扩展。
    • 配置文件:package.json, tsconfig.json, vitest.config.ts 等。
  • 关键文件

    • README.md:项目概述和快速开始。
    • VISION.md:愿景和设计原则。
    • AGENTS.md / CLAUDE.md:开发指南和约定。
    • CHANGELOG.md:版本更新日志。
    • SECURITY.md:安全政策。
  • 用户为中心:优先考虑易用性和隐私。终端优先设计,确保用户了解设置和权限。长期目标是简化 onboarding,同时不隐藏安全决策。
  • 插件化和扩展性:核心保持精简,可选功能通过插件实现。鼓励社区插件,但核心插件添加门槛高。支持 MCP 桥接以保持灵活性。
  • 安全与权衡:安全是首要,但不牺牲能力。提供明确控制选项,支持高功率工作流。
  • 多平台和兼容性:支持主流平台(macOS、Linux、Windows via WSL2),强调跨设备一致性。使用 TypeScript 以便于黑客和扩展。
  • 迭代和贡献:早期项目,快速迭代。贡献规则严格:一个 PR 一个主题,避免大型变更。优先修复 bug 和稳定性。
  • 未来方向:扩展模型支持、通道覆盖、性能优化、计算机使用能力、UI 改进。避免过度复杂,保持本地化和控制。

如果您需要更详细的某个部分(如特定通道的实现或插件开发),或者有具体代码示例,请提供更多细节!

User: 它是如何调用浏览器做浏览器的任务的,代码在哪块,简单解释一下原理

基于代码分析,以下是 OpenClaw 如何调用浏览器执行任务的解释,包括代码位置和原理。

OpenClaw 使用客户端-服务器模式来控制浏览器:

  • 客户端:通过 HTTP API 调用浏览器服务(位于 client.ts)。
  • 服务器:Express.js 服务器(server.ts),监听本地端口,提供 REST API 来管理浏览器实例。
  • 浏览器控制:使用 Chrome DevTools Protocol (CDP) 通过 WebSocket 与 Chrome 通信,执行任务如页面导航、截图、元素交互等。
  • 工具:底层可能使用 Playwright(见 pw-ai.ts)或直接 CDP 助手(cdp.ts)来封装 CDP 操作。
  • 客户端调用:client.ts - 定义函数如 browserStart()browserSnapshot(),通过 fetchBrowserJson 发送 HTTP 请求。
  • HTTP 客户端实现:client-fetch.ts - 处理请求发送、认证和错误处理。
  • 服务器端:server.ts - 启动 Express 服务器,注册路由(routes)。
  • 路由处理:basic.ts(基本操作如启动/停止)、tabs.ts(标签管理)、agent.ts(AI 相关任务)。
  • 浏览器启动:chrome.ts - launchOpenClawChrome() 函数,使用 Node.js spawn 启动 Chrome 进程。
  • 上下文管理:server-context.ts - 管理浏览器状态、配置文件和可用性检查。
  • CDP 交互:cdp.ts 和 pw-ai.ts - 处理 CDP WebSocket 连接和页面操作。
  1. 启动浏览器

  • 用户调用 browserStart()(客户端)。
  • 发送 POST 请求到服务器的 /start 端点。
  • 服务器调用 ensureBrowserAvailable()(server-context.availability.ts)。
  • 如果浏览器未运行,调用 launchOpenClawChrome()(chrome.ts):
    • 使用 spawn() 启动 Chrome 进程,传递参数如 –remote-debugging-port=9222(启用 CDP)。
    • Chrome 以调试模式运行,监听本地端口。
    • 等待 CDP WebSocket 连接就绪(通过 isChromeCdpReady() 检查)。
  1. 执行任务

  • 任务如 browserSnapshot()(获取页面快照):
    • 发送 GET 请求到 /snapshot 端点,带参数(如格式、目标标签 ID)。
    • 服务器使用 CDP 或 Playwright 连接到 Chrome 的 WebSocket。
    • 执行操作:导航页面、提取 DOM、生成快照(ARIA 或 AI 格式)。
    • 返回结果给客户端。
  1. 关键技术

  • CDP (Chrome DevTools Protocol):Chrome 内置协议,允许外部控制浏览器。OpenClaw 通过 WebSocket 连接到 http://127.0.0.1:9222/json/version 获取调试 URL,然后发送命令(如 Page.captureScreenshot)。
  • Playwright 集成pw-ai.ts 可能封装 Playwright API,用于高级页面操作和 AI 驱动的任务。
  • 认证和安全:请求使用令牌或密码认证(control-auth.ts),防止未授权访问。
  • 多配置文件:支持多个浏览器配置文件(profiles.ts),每个有独立用户数据目录和 CDP 端口。
  1. 示例流程

  • 启动:browserStart() → HTTP POST /start → spawn Chrome → CDP 就绪。
  • 快照:browserSnapshot() → HTTP GET /snapshot → CDP 命令 → 返回页面数据。

这种设计允许 OpenClaw 在本地安全地控制浏览器,执行自动化任务,同时保持模块化和可扩展性。如果需要更详细的代码片段或特定任务的实现,请提供更多细节!AGENTS.md这种设计允许 OpenClaw 在本地安全地控制浏览器,执行自动化任务,同时保持模块化和可扩展性。如果需要更详细的代码片段或特定任务的实现,请提供更多细节!

去年爬的那块控制浏览器是直接打开浏览器,然后截图,然后让大模型识别,判断图片位置,鼠标位置,然后直接用系统api操作鼠标键盘,让鼠标移动到哪块,几帧一次,反反复复。当然,这个方式存在巨大bug,导致正确率非常低,基本不可用,算位置基本是算不对的,而且有一些系统api兼容性很差。

这次换的新思路都在上方有解释啦。

其余代码就不一一解释了,读起来应该是相当累的,毕竟100多万行,才4个多月。

发展到现在,其实大家都在默默发力,想搞个很贴切的个人本地ai助手,嗯,加油吧。这次我也是偷懒了,简单看了看代码,没做深究,毕竟ai写的,要以常理读代码,会非常累,我受够了,当初用ai其实每天都到中午,基本脑子就晕晕的,太消耗精力了,这次就不仔细看了,就简单看看操作浏览器相关的原理那部分的代码就行了,毕竟我已经半年没写代码了,虽然这些东西还深刻在我脑子里

为啥突然写这个文章,其实是因为最近miclaw发布,让我在算力上赚了一笔。我就看看openclaw是个啥情况。其实这块的历程,从我2025年1月写的文章开始,就一直都有所关注。目前来看,还没有到爆发的时候。这种智能程度,是不够的。

小讯
上一篇 2026-03-11 19:16
下一篇 2026-03-11 19:18

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/213540.html