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.ts、wait.ts:用户交互和等待逻辑。
commands/:具体命令实现。send.ts:发送消息。relay.ts:自动回复循环。status.ts:查询消息状态。webhook.ts:启动 webhook 服务器。up.ts:可能用于启动服务。
twilio/:Twilio 提供商相关。client.ts:Twilio 客户端创建。send.ts、messages.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.ts、server.ts、store.ts:媒体托管和存储。
utils.ts:通用工具(如 E164 格式化、提供商断言)。env.ts:环境变量读取。logger.ts:日志记录(使用 Pino)。runtime.ts:运行时逻辑。
- docs:文档。
claude-config.md:Claude AI 配置指南。images.md、queue.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.ts→buildProgram()→ 命令路由。 - 业务层:命令模块调用提供商(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.ts、logger.ts等:工具和日志。- 测试文件:
*.test.ts,使用 Vitest。
- apps:平台特定应用。
macos/:macOS 菜单栏应用(Swift)。ios/:iOS 节点应用(Swift)。android/:Android 应用(Kotlin/Gradle)。shared/:跨平台共享代码。
- docs:文档(Markdown)。
- 包括架构、配置、运行手册(如
architecture.md、gateway.md、telegram.md)。 - 子目录如
_layouts/、android/等。
- scripts:构建和部署脚本(Shell/TypeScript)。
- 如
restart-mac.sh(重启 macOS 应用)、committer(提交工具)。
- ui:Web UI(Vite + TypeScript)。
- src:前端代码。
index.html、vite.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.jsspawn启动 Chrome 进程。 - 上下文管理:server-context.ts - 管理浏览器状态、配置文件和可用性检查。
- CDP 交互:cdp.ts 和 pw-ai.ts - 处理 CDP WebSocket 连接和页面操作。
- 启动浏览器:
- 用户调用
browserStart()(客户端)。 - 发送 POST 请求到服务器的
/start端点。 - 服务器调用
ensureBrowserAvailable()(server-context.availability.ts)。 - 如果浏览器未运行,调用
launchOpenClawChrome()(chrome.ts): - 使用
spawn()启动 Chrome 进程,传递参数如–remote-debugging-port=9222(启用 CDP)。 - Chrome 以调试模式运行,监听本地端口。
- 等待 CDP WebSocket 连接就绪(通过
isChromeCdpReady()检查)。
- 执行任务:
- 任务如
browserSnapshot()(获取页面快照): - 发送 GET 请求到
/snapshot端点,带参数(如格式、目标标签 ID)。 - 服务器使用 CDP 或 Playwright 连接到 Chrome 的 WebSocket。
- 执行操作:导航页面、提取 DOM、生成快照(ARIA 或 AI 格式)。
- 返回结果给客户端。
- 关键技术:
- 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 端口。
- 示例流程:
- 启动:
browserStart()→ HTTP POST /start →spawnChrome → CDP 就绪。 - 快照:
browserSnapshot()→ HTTP GET /snapshot → CDP 命令 → 返回页面数据。
这种设计允许 OpenClaw 在本地安全地控制浏览器,执行自动化任务,同时保持模块化和可扩展性。如果需要更详细的代码片段或特定任务的实现,请提供更多细节!AGENTS.md这种设计允许 OpenClaw 在本地安全地控制浏览器,执行自动化任务,同时保持模块化和可扩展性。如果需要更详细的代码片段或特定任务的实现,请提供更多细节!
去年爬的那块控制浏览器是直接打开浏览器,然后截图,然后让大模型识别,判断图片位置,鼠标位置,然后直接用系统api操作鼠标键盘,让鼠标移动到哪块,几帧一次,反反复复。当然,这个方式存在巨大bug,导致正确率非常低,基本不可用,算位置基本是算不对的,而且有一些系统api兼容性很差。
这次换的新思路都在上方有解释啦。
其余代码就不一一解释了,读起来应该是相当累的,毕竟100多万行,才4个多月。
发展到现在,其实大家都在默默发力,想搞个很贴切的个人本地ai助手,嗯,加油吧。这次我也是偷懒了,简单看了看代码,没做深究,毕竟ai写的,要以常理读代码,会非常累,我受够了,当初用ai其实每天都到中午,基本脑子就晕晕的,太消耗精力了,这次就不仔细看了,就简单看看操作浏览器相关的原理那部分的代码就行了,毕竟我已经半年没写代码了,虽然这些东西还深刻在我脑子里。
为啥突然写这个文章,其实是因为最近miclaw发布,让我在算力上赚了一笔。我就看看openclaw是个啥情况。其实这块的历程,从我2025年1月写的文章开始,就一直都有所关注。目前来看,还没有到爆发的时候。这种智能程度,是不够的。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/213540.html