1.1 项目概述
OpenClaw 是一个多通道AI网关(Multi-Channel AI Gateway),通过可扩展的插件式架构将70+个消息通道(Slack、Discord、Telegram、WhatsApp、飞书、Signal、iMessage、IRC、Matrix、MS Teams等)与22+个LLM Provider(Anthropic、OpenAI、Google、Bedrock、DeepSeek、Groq、Mistral、Ollama、vLLM、OpenRouter等)连接,提供统一的Agent编排、工具执行、会话管理、安全审计和子Agent调度能力。
项目名称: openclaw
版本: 2026.4.15-beta.1
语言: TypeScript (ESM)
包管理: pnpm workspaces
总源文件: 6624+ 个 .ts 文件 (核心) + 867+ 个 (扩展插件)
扩展插件: 80+ 个(通道、Provider、工具、媒体等)
技能: 50+ 个(1password、github、slack、weather等)
OpenClaw 采用多层插件式架构 (Multi-Layer Plugin Architecture),具有以下特征:
设计原则
- 插件优先 (Plugin-First):核心功能通过插件实现,保持核心精简
- 边界隔离 (Boundary Isolation):插件只能通过 SDK 访问核心功能
- 延迟加载 (Lazy Loading):重型模块按需加载,优化启动性能
- 渐进式暴露 (Progressive Disclosure):从轻量元数据到完整运行时

1.2 架构模式:分层插件式网关架构
OpenClaw 采用 六层 + 插件式 架构模式,自顶向下:
跨切关注点:Config(Zod Schema)、Hooks(生命周期钩子)、Media Understanding、Image/Video Generation、TTS、Node Host、Pairing
1.3 整体运行流程
用户消息 → Channel Plugin (L2) → GatewayServer (L3) [认证/路由/会话] → AgentRunner (L4) [system prompt构建 + 上下文加载] → LLM Provider (L5) [stream调用] → Tool Execution (L4) [bash/read/write/edit + 审批] → Reply Delivery (L3→L2) [流式回复→通道] → Session Persistence (L3) [JSONL写入]
核心循环:Agent Loop 驱动 prompt → LLM stream → toolCall 检测 → 工具执行 → 结果回注 → 再次调用 LLM,直到 stopReason 终止。
2.1 Gateway Core — 网关核心

核心作用:OpenClaw 的中枢神经系统,处理HTTP/WS连接、消息路由、会话生命周期、认证授权、插件调度和定时任务。
关键模块:
startGatewayServer(), 生命周期管理 启动流程 server-startup.ts 启动序列:配置→认证→插件→路由
startup() 阶段化初始化 运行时配置 server-runtime-config.ts 热重载配置,无需重启
reloadConfig(), runtime overrides 插件引导 server-startup-plugins.ts 插件加载后激活
bootstrapPlugins() 聊天处理 server-chat.ts 消息入站→Agent分发→回复投递
handleChat(), 流式回复 会话管理 session-utils.ts JSONL持久化,历史查询
loadSession(),
addEntry() 会话归档 session-archive.ts 导入/导出/压缩
archiveSession(),
importSession() 认证 auth.ts Token验证、设备认证、API Key
validateAuth(),
resolveCredentials() 角色策略 role-policy.ts RBAC权限执行
checkPermission(), scope验证 速率限制 auth-rate-limit.ts 每方法限流
checkRateLimit(), 滑动窗口 设备认证 device-auth.ts 移动端/Node配对与授权
pairDevice(),
validateDeviceToken() 节点注册 node-registry.ts 连接节点追踪与能力查询
registerNode(),
getNodeCapabilities() 插件服务 server-plugins.ts 插件生命周期、激活、运行时
activatePlugin(),
reloadPlugin() Cron调度 server-cron.ts 定时任务调度与执行
scheduleCron(),
fireJob() 执行审批 exec-approval-manager.ts 命令审批流程
requestApproval(),
respondToApproval() 配置重载 config-reload.ts 热配置变更与路由更新
reload(), diff plan 健康监控 channel-health-monitor.ts 通道连通性与健康检查
checkHealth(), alerting 模型目录 server-model-catalog.ts 可用模型索引
getModelCatalog(), filter by provider 挂钩映射 hooks-mapping.ts Gateway hook 绑定
mapHooks(), lifecycle→handler MCP HTTP mcp-http.ts MCP协议HTTP端点
handleMcpRequest() OpenAI兼容 openai-http.ts OpenAI API兼容层
/v1/chat/completions endpoint Open Responses openresponses-http.ts OpenAI Responses API
/v1/responses endpoint
数据流:WebSocket连接 → 消息反序列化 → 认证检查 → Session解析 → Channel绑定 → Agent分发 → 流式回复 → Session持久化
2.2 Channel Plugins — 通道插件系统

核心作用:统一70+个消息平台的适配层,处理消息收发、会话绑定、触发检测、状态反应和流式回复。
关键模块:
registerChannel(),
getChannel() 通道配置 channel-config.ts 每通道配置验证与默认值
validateConfig(),
applyDefaults() 目录扫描 bundled-channel-catalog-read.ts 内置通道元数据扫描
scanCatalog(),
readMetadata() 配置验证 channel-validation.ts Schema验证
validateChannelConfig() 会话绑定 session.ts 通道→会话绑定、线程追踪
resolveSession(), thread binding 对话绑定 conversation-binding.ts DM/群/话题路由
bindConversation(),
resolveTarget() 线程策略 thread-bindings-policy.ts 线程所有权与绑定规则
enforcePolicy(), ownership check 消息信封 session-envelope.ts 消息信封构建
buildEnvelope(), metadata attach 允许来源 allow-from.ts 发送者白名单/黑名单
checkAllowFrom(),
isAllowed() 提及门控 mention-gating.ts @提及/关键词触发
shouldRespond(),
matchMention() 去抖策略 inbound-debounce-policy.ts 消息去重与节流
debounce(),
isDuplicate() 运行状态机 run-state-machine.ts 通道运行状态转换
transition(), idle→running→done 状态反应 status-reactions.ts Emoji反应生命周期
addReaction(),
removeReaction() 打字指示 typing-lifecycle.ts typing start/stop管理
startTyping(),
stopTyping() 回复前缀 reply-prefix.ts 通道特定回复格式
formatReply(), channel prefix 草稿流控 draft-stream-controls.ts 流式回复分块与节流
chunk(),
throttle()
已支持的通道(70+):Slack、Discord、Telegram、WhatsApp、Feishu、Signal、iMessage、IRC、Matrix、MS Teams、Google Chat、LINE、 Bot、Nostr、Nextcloud Talk、Synology Chat、Zalo、BlueBubbles、Twitch等。
2.3 Agent Engine — Agent引擎

核心作用:OpenClaw的"大脑",驱动LLM调用循环、工具执行、上下文管理、模型选择、子Agent调度和技能执行。
关键模块:
runEmbeddedPiSession() 流订阅 pi-embedded-subscribe.ts 流事件处理,block reply,压缩
subscribeEmbeddedPiSession() 上下文管理 context.ts 上下文窗口管理,消息裁剪
loadContext(),
pruneHistory() 系统提示 system-prompt.ts 动态系统提示组合
buildSystemPrompt(), skill injection 模型配置 models-config.ts Provider/model配置加载与合并
loadModelsConfig(),
mergeProviders() 模型目录 model-catalog.ts 模型发现与能力索引
discoverModels(),
getModelCapabilities() 模型选择 model-selection.ts 模型解析(别名/允许列表/覆盖)
resolveModel(),
selectModel() 认证轮换 model-auth.ts Auth Profile轮换,故障转移,冷却
rotateAuthProfile(),
cooldown() 故障转移 model-fallback.ts Provider故障转移与重试
tryNextProvider(),
handleError() 工具注册 openclaw-tools.ts 内置工具(read/write/edit/bash…)
registerTools(), tool definitions Bash执行 bash-tools.ts Shell命令执行,PTY,审批流
execCommand(),
requestApproval() 工具策略 tool-policy.ts 工具允许/拒绝策略
isToolAllowed(), allowlist enforcement 工具目录 tool-catalog.ts 可用工具枚举
listTools(),
getToolSchema() 子Agent注册 subagent-registry.ts 子Agent生命周期与状态追踪
spawn(),
steer(),
kill(),
list() 上下文压缩 compaction.ts 上下文溢出→摘要压缩
compact(),
shouldCompact(),
summarize() 技能引擎 skills.ts Markdown技能加载与提示注入
loadSkills(),
buildSkillsPrompt() 工作空间 workspace.ts 工作空间引导,文件模板
bootstrapWorkspace(), template init
Agent Loop 详细流程:
buildSystemPrompt()— 组合identity + skills + tools + bootstraploadContext()— SessionManager加载历史消息resolveModel()— 按优先级选择provider+modelstream()— 调用LLM provider流式API- 检测
toolCall→resolveTool()→execTool()→ 结果回注 shouldCompact()— 上下文溢出时触发压缩- 重复3-6直到
stopReason终止 saveSession()— 持久化到JSONL
2.4 Plugin System — 插件系统

核心作用:OpenClaw的扩展骨架,支持Provider注册、通道集成、Hook绑定、内存提供者和交互绑定的统一插件框架。
关键模块:
loadPlugin(),
scanPlugins() 插件注册 registry.ts 注册、状态管理、激活
register(),
activate(),
deactivate() 运行时 runtime.ts 插件运行时边界,沙箱执行
runInBoundary(), error isolation 安装/卸载 install.ts / uninstall.ts npm/路径安装与清理
installPlugin(),
uninstallPlugin() Provider运行时 provider-runtime.ts Provider激活、模型注册、stream()
activateProvider(),
registerModels() Provider发现 provider-discovery.ts 从Provider API自动发现模型
discoverModels() Provider认证 provider-auth-choice.ts API Key/OAuth认证选择
selectAuthMode(),
configureAuth() Provider目录 provider-catalog.ts Provider元数据、能力、默认值
getProviderInfo(), capabilities Hook系统 hooks.ts 生命周期钩子:beforeAgentStart等
fireHook(), hook registry Hook调度 hook-runner-global.ts Hook调度与错误隔离
runHook(), error boundary 预绑定Hook wired-hooks-*.ts 核心流程预绑定Hook message/reply/tool/session hooks 对话绑定 conversation-binding.ts 通道↔插件对话绑定
bindConversation(), routing 通道运行时 bundled-channel-runtime.ts 内置通道插件激活
activateBundledChannel() 内存运行时 memory-runtime.ts 内存Provider(嵌入/搜索/存储)
activateMemory(), embedding 嵌入Provider memory-embedding-provider-runtime.ts 嵌入模型集成
computeEmbedding() 交互绑定 interactive-binding-helpers.ts 交互CLI↔插件绑定
bindInteractive()
插件生命周期:
scanPlugins()— 扫描extensions/目录和node_modulesloadPlugin()— 解析manifest.json5,加载代码模块register()— 注册到Registry,记录capabilitiesactivate()— 按依赖顺序激活,注册Provider/Channel/HookfireHook()— 在对应生命周期触发Hook回调deactivate()/uninstall()— 清理与卸载
2.5 Config & Schema — 配置与Schema

核心作用:OpenClaw的配置中枢,使用Zod Schema定义和验证所有配置项(agents、channels、providers、plugins、hooks、secrets),支持热重载和环境变量替换。
关键模块:
readConfig(),
writeConfig(),
validate() 变更审计 io.audit.ts 配置变更审计轨迹
auditChange(), diff log 原子写入 io.write-prepare.ts 带备份轮换的原子写入
prepareWrite(), backup rotation 主配置 config.ts 配置对象:agents/channels/providers/plugins
loadConfig(),
resolveConfig() 根Schema schema.ts Zod根Schema定义
ConfigSchema, nested schemas Provider Schema zod-schema.providers.ts 22+ Provider配置Schema
ProviderSchema, per-provider validation Channel Schema zod-schema.channels.ts 通道配置Schema
ChannelSchema, Slack/Discord/TG… Agent Schema zod-schema.agents.ts Agent配置Schema
AgentSchema, model/tools/sandbox Hook Schema zod-schema.hooks.ts Hook配置Schema
HookSchema, lifecycle bindings 运行时Schema runtime-schema.ts 运行时验证的配置快照
validateRuntime(), snapshot 运行时覆盖 runtime-overrides.ts 热重载覆盖无需重启
applyOverrides(), diff merge 运行时快照 runtime-snapshot.ts 不可变配置快照
createSnapshot(), immutability 配置具化 materialize.ts 配置解析:默认值→Schema→运行时
materializeConfig(), layered resolution Secret解析 secrets/resolve.ts Secret解析:env/file/inline
resolveSecret(), secret ref 环境替换 env-substitution.ts ${VAR}变量替换
substitute(), env var interpolation Secret脱敏 redact-snapshot.ts 日志/显示用Secret脱敏
redact(), mask sensitive values
配置层级:
Defaults (code) → Schema (Zod) → Config File (JSON) → Runtime Overrides (hot) → Env Vars
2.6 CLI & Commands — 命令行接口

核心作用:用户与OpenClaw交互的主要入口,基于Commander.js实现的CLI,提供gateway/daemon/config/models/plugins/sessions/doctor等30+子命令。
关键模块:
createProgram(), subcommand dispatch 参数解析 argv.ts Argv解析,全局选项转发
parseArgv(), option forwarding 主入口 run-main.ts 入口分发:daemon/gateway/agent
runMain(), mode selection 命令引导 command-bootstrap.ts 插件命令注册
registerPluginCommands() Gateway命令 gateway-cli.ts openclaw gateway start/stop/restart
startGateway(),
stopGateway() Daemon命令 daemon-cli.ts openclaw daemon install/uninstall/status
installDaemon(), cross-platform Config命令 config-cli.ts openclaw config set/get/edit
setConfig(),
getConfig() Models命令 models-cli.ts openclaw models list/set
listModels(),
setModel() Plugins命令 plugins-cli.ts openclaw plugins install/list/update
installPlugin(),
updatePlugin() Agent命令 agent-command.ts openclaw agent 交互
runAgent(), interactive session Sessions命令 sessions.ts (commands) openclaw sessions list/kill/clean
listSessions(),
killSession() Channels命令 channels-cli.ts openclaw channels add/remove/status
addChannel(),
removeChannel() Skills命令 skills-cli.ts openclaw skills install/list
installSkill(),
listSkills() Doctor命令 doctor.ts openclaw doctor 综合健康检查
runDoctor(), diagnostics + repair Status命令 status.ts (commands) openclaw status 系统概览
showStatus(), comprehensive view Security命令 security-cli.ts openclaw security audit
auditSecurity() Secrets命令 secrets-cli.ts openclaw secrets configure
configureSecrets()
2.7 Security & Infrastructure — 安全与基础设施

核心作用:系统级安全保障和运行时基础设施,包括安全审计、命令审批、Daemon管理、进程控制和Node/设备配对。
关键模块:
runAudit(), comprehensive scan Gateway审计 audit-gateway.ts 网关暴露与认证审计
auditGatewayExposure() 通道审计 audit-channel.ts 通道白名单/命令安全审计
auditChannelSecurity() 执行面审计 audit-exec-surface.ts 命令攻击面分析
auditExecSurface() 插件代码审计 audit-plugin-code-safety.ts 插件代码静态分析
scanPluginCode() 自动修复 fix.ts 自动修复安全问题
fixIssues(), auto-remediation 审批存储 exec-approvals.ts 审批存储、白名单、信任级别
requestApproval(),
isAutoApproved() 安全二进制 exec-safe-bin-policy.ts 安全二进制白名单
isSafeBin(), whitelist enforcement 审批处理 approval-handler-runtime.ts 审批请求→通道投递
handleApproval(), delivery 审批绑定 system-run-approval-binding.ts Gateway↔Agent审批绑定
bindApproval(), gateway routing Daemon服务 service.ts 跨平台Daemon:systemd/launchd/schtasks
install(),
start(),
stop() 优雅重启 restart.ts Sentinel/deferral保护重启
restart(), graceful drain 进程清理 process/kill-tree.ts 关闭时进程树清理
killTree(), signal propagation 网关进程 gateway-processes.ts Gateway进程管理
spawnGateway(), health monitoring Node调用 node-host/invoke.ts Node命令执行(沙箱化)
invokeCommand(), sandboxed exec 配对存储 pairing-store.ts 设备配对状态持久化
storePairing(),
loadPairing() 设备认证 device-auth-store.ts 设备Token管理
registerDevice(),
rotateToken() Node配对 node-pairing.ts QR/Setup Code配对流程
startPairing(), QR generation

3.1 核心依赖关系
CLI/TUI (L1) → Channel Plugins (L2) → Gateway Core (L3) → Agent Engine (L4) → Providers (L5) ↕ ↕ Plugin System Tool System / Subagent ↕ ↕ Config/Schema Skills / Workspace ↕ Security / Daemon (L6)
具体调用链:
3.2 核心请求链路
链路1:Slack消息处理
SlackBot.onMessage() → Channel Plugin (allow-from, mention-gating) → GatewayServer.handleChat() → Auth.checkPermission() → SessionManager.resolveSession() → PluginHooks.fire("beforeAgentStart") → AgentRunner.runEmbeddedPiSession() → buildSystemPrompt() (identity + skills + tools) → ModelConfig.resolveModel() → Provider.stream() → ToolDispatch (toolCall → exec → result) → Compaction (if overflow) → SessionManager.persist() → Channel Plugin.sendReply() → SlackBot.postMessage()
链路2:CLI交互
openclaw gateway start → Daemon.install() / GatewayServer.start() → WebSocket connection from TUI/CLI → TUI.submitMessage() → GatewayServer.handleChat() → (同链路1的Agent流程)
链路3:Web UI交互
Web UI (React/Lit) → HTTP/WS to GatewayServer → Control UI (config/status management) → Chat → handleChat() → (同链路1)
链路4:Cron定时任务
CronService.fireJob() → SessionResolver.resolveTarget() → AgentRunner.runEmbeddedPiSession() → DeliveryPlan.execute() → Channel Plugin.deliver()
3.3 关键数据传递
3.4 状态管理
会话状态:SessionManager 维护每会话JSONL文件,支持:
- 历史消息查询与窗口裁剪
- 上下文压缩(compaction)防止溢出
- 会话归档与导入
- 分支对话(branching)
- 子Agent会话隔离
配置状态:
- 不可变快照(runtime-snapshot)保证一致性
- 热重载覆盖(runtime-overrides)无需重启
- 变更审计(io.audit)追踪所有修改
- 备份轮换(backup-rotation)防止丢失
认证状态:
- Auth Profile轮换与冷却机制
- 设备Token自动轮换
- API Key来源优先级(config > env > store)
安全状态:
- Exec审批白名单与信任级别
- 通道Allow-from策略
- 工具Allow/Deny策略
4.1 设计优势
- 极致插件化:70+通道 + 22+Provider + 50+技能 均为独立插件,新增通道/Provider只需创建扩展目录
- 六层清晰分层:从客户端到基础设施,每层职责明确,依赖方向单一
- 多通道统一:一套Agent核心服务所有通道,消息格式统一转换
- 热重载设计:配置/插件/模型均支持运行时更新,无需重启
- 安全纵深防御:Auth→RBAC→Allow-from→Tool Policy→Exec Approval→Security Audit 六层安全
- 子Agent编排:支持嵌套spawn、深度限制、模型隔离、生命周期管理
- 多Provider故障转移:Auth Profile轮换 + Provider failover + cooldown机制
4.2 架构模式
4.3 规模指标
4.4 技术债务与改进方向
- Gateway Server 单体:server.impl.ts 超过数千行,建议拆分为独立的微服务(Chat Service、Auth Service、Plugin Service)
- Agent模块膨胀:agents/目录文件过多(200+),pi-embedded-* 系列可提取为独立包
- 配置Schema耦合:所有Provider Schema在一个文件中,新增Provider需修改核心代码
- 测试覆盖不均:gateway和agents有大量测试,但部分通道插件测试较少
- TypeScript编译性能:6624+文件的增量编译较慢,建议项目分区编译
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/271971.html