Skip to content

Latest commit

 

History

History
255 lines (203 loc) · 15.1 KB

File metadata and controls

255 lines (203 loc) · 15.1 KB

ZeroClaw 仓库地图

ZeroClaw 是一个以 Rust 为优先开发语言的自主代理运行时。它从消息平台接收消息,经由 LLM 路由,执行工具调用,持久化内存,并返回响应。它还可以控制硬件外设并作为长期运行的守护进程。

运行时流程

用户消息 (Telegram/Discord/Slack/...)
        │
        ▼
   ┌─────────┐     ┌────────────┐
   │ 渠道(Channel) │────▶│   代理(Agent)    │  (src/agent/)
   └─────────┘     │  循环(Loop)      │
                   │            │◀──── 内存加载器(加载相关上下文)
                   │            │◀──── 系统提示词构建器
                   │            │◀──── 查询分类器(模型路由)
                   └─────┬──────┘
                         │
                         ▼
                   ┌───────────┐
                   │  提供商(Provider)  │  (LLM: Anthropic, OpenAI, Gemini, 等)
                   └─────┬─────┘
                         │
                    是否为工具调用?
                    ┌────┴────┐
                    ▼         ▼
               ┌────────┐  文本响应
               │  工具(Tools)  │     │
               └────┬───┘     │
                    │         │
                    ▼         ▼
              将结果反馈     通过渠道发送
              给 LLM         返回响应

顶层布局

zeroclaw/
├── src/                  # Rust 源代码(运行时核心)
├── crates/robot-kit/     # 硬件机器人套件的独立 crate
├── tests/                # 集成/端到端测试
├── benches/              # 基准测试(代理循环)
├── docs/contributing/extension-examples.md  # 扩展示例(自定义提供商/渠道/工具/内存)
├── firmware/             # Arduino、ESP32、Nucleo 开发板的嵌入式固件
├── web/                  # Web UI(Vite + TypeScript)
├── python/               # Python SDK / 工具桥接
├── dev/                  # 本地开发工具(Docker、CI 脚本、沙箱)
├── scripts/              # CI 脚本、发布自动化、引导脚本
├── docs/                 # 文档系统(多语言、运行时参考)
├── .github/              # CI 工作流、PR 模板、自动化
├── playground/           # (空,实验性临时空间)
├── Cargo.toml            # 工作区清单
├── Dockerfile            # 容器构建文件
├── docker-compose.yml    # 服务编排
├── flake.nix             # Nix 开发环境
└── install.sh            # 一键安装脚本

src/ — 模块详解

入口点

文件 行数 角色
main.rs 1,977 CLI 入口点。Clap 解析器,命令分发。所有 zeroclaw <子命令> 路由都在此处。
lib.rs 436 模块声明、可见性(pubpub(crate))、库和二进制文件之间共享的 CLI 命令枚举(ServiceCommandsChannelCommandsSkillCommands 等)。

核心运行时

模块 关键文件 角色
agent/ agent.rsloop_.rs (5.6k)、dispatcher.rsprompt.rsclassifier.rsmemory_loader.rs 大脑。 AgentBuilder 组合提供商+工具+内存+观察者。loop_.rs 运行多轮工具调用循环。分发器处理原生与 XML 工具调用解析。分类器将查询路由到不同模型。
config/ schema.rs (7.6k)、mod.rstraits.rs 所有配置结构体。 每个子系统的配置都位于 schema.rs 中 —— 提供商、渠道、内存、安全、网关、工具、硬件、调度等。从 TOML 文件加载。
runtime/ native.rsdocker.rswasm.rstraits.rs 平台适配器。 RuntimeAdapter 特征抽象了 shell 访问、文件系统、存储路径、内存预算。原生模式 = 直接访问操作系统。Docker 模式 = 容器隔离。WASM 模式 = 实验性支持。

LLM 提供商

模块 关键文件 角色
providers/ traits.rsmod.rs (2.9k)、reliable.rsrouter.rs + 11 个提供商文件 LLM 集成。 Provider 特征:chat()chat_with_system()capabilities()convert_tools()mod.rs 中的工厂函数根据名称创建提供商实例。ReliableProvider 为任意提供商包装了重试/回退链。RoutedProvider 根据分类器提示进行路由。

提供商:anthropicopenaiopenai_codexopenroutergeminiollamacompatible(OpenAI 兼容)、copilotbedrocktelnyxglm

消息渠道

模块 关键文件 角色
channels/ traits.rsmod.rs (6.6k) + 22 个渠道文件 输入/输出传输层。 Channel 特征:send()listen()health_check()start_typing()、草稿更新。mod.rs 中的工厂函数将配置与渠道实例关联,管理每个发送者的对话历史(最多 50 条消息)。

渠道:telegram (4.6k)、discordslackwhatsappwhatsapp_webmatrixsignalemail_channelqqdingtalklarkimessageircnostrmattermostnextcloud_talkwatimqttlinqclawdtalkcli

工具(代理能力)

模块 关键文件 角色
tools/ traits.rsmod.rs (635) + 38 个工具文件 代理可执行的操作。 Tool 特征:name()description()parameters_schema()execute()。两个注册表:default_tools()(6 个基础工具)和 all_tools_with_runtime()(完整集合,配置门控)。

工具类别:

  • 文件/Shell: shellfile_readfile_writefile_editglob_searchcontent_search
  • 内存: memory_storememory_recallmemory_forget
  • Web: browserbrowser_openweb_fetchweb_search_toolhttp_request
  • 调度: cron_addcron_listcron_removecron_updatecron_runcron_runsschedule
  • 委托: delegate(子代理生成)、composio(OAuth 集成)
  • 硬件: hardware_board_infohardware_memory_maphardware_memory_read
  • SOP: sop_executesop_advancesop_approvesop_listsop_status
  • 实用工具: git_operationsimage_infopdf_readscreenshotpushovermodel_routing_configproxy_configcli_discoveryschema

内存

模块 关键文件 角色
memory/ traits.rsbackend.rsmod.rs + 8 个后端文件 持久化知识。 Memory 特征:store()recall()get()list()forget()count()。类别:核心、日常、对话、自定义。

后端:sqlitemarkdownlucid(混合 SQLite + 向量嵌入)、qdrant(向量数据库)、postgresnone

支持模块:embeddings.rs(向量嵌入生成)、vector.rs(向量操作)、chunker.rs(文本拆分)、hygiene.rs(清理)、snapshot.rs(备份)、response_cache.rs(缓存)、cli.rs(CLI 命令)

安全

模块 关键文件 角色
security/ policy.rs (2.3k)、secrets.rspairing.rsprompt_guard.rsleak_detector.rsaudit.rsotp.rsestop.rsdomain_matcher.rs + 4 个沙箱文件 策略引擎与执行。 SecurityPolicy:自主级别(只读/监督/完全)、工作区限制、命令白名单、禁止路径、速率限制、成本上限。

沙箱:bubblewrap.rsfirejail.rslandlock.rsdocker.rsdetect.rs(自动检测最佳可用沙箱)

网关(HTTP API)

模块 关键文件 角色
gateway/ mod.rs (2.8k)、api.rs (1.4k)、sse.rsws.rsstatic_files.rs Axum HTTP 服务器。 Webhook 接收器(WhatsApp、WATI、Linq、Nextcloud Talk)、REST API、SSE 流、WebSocket 支持。速率限制、幂等键、64KB 主体限制、30 秒超时。

硬件与外设

模块 关键文件 角色
peripherals/ traits.rsmod.rsserial.rsrpi.rsarduino_flash.rsuno_q_bridge.rsuno_q_setup.rsnucleo_flash.rscapabilities_tool.rs 硬件开发板抽象。 Peripheral 特征:connect()disconnect()health_check()tools()。每个外设将其能力暴露为代理可以调用的工具。
hardware/ discover.rsintrospect.rsregistry.rsmod.rs USB 发现与开发板识别。 扫描 VID/PID,匹配已知开发板,内省连接的设备。

可观测性

模块 关键文件 角色
observability/ traits.rsmod.rslog.rsprometheus.rsotel.rsverbose.rsnoop.rsmulti.rsruntime_trace.rs 指标与追踪。 Observer 特征:log_event()。复合观察者(multi.rs)将事件扇出到多个后端。

技能与 SkillForge

模块 关键文件 角色
skills/ mod.rs (1.5k)、audit.rs 用户/社区创作的能力。~/.zeroclaw/workspace/skills/<name>/SKILL.md 加载。CLI 命令:列表、安装、审计、移除。可选从开放技能仓库同步社区内容。
skillforge/ scout.rsevaluate.rsintegrate.rsmod.rs 技能发现与评估。 搜寻技能,评估质量/适用性,集成到运行时。

SOP(标准操作流程)

模块 关键文件 角色
sop/ engine.rs (1.6k)、metrics.rs (1.5k)、types.rsdispatch.rscondition.rsgates.rsaudit.rsmod.rs 工作流引擎。 定义包含条件、门控(审批检查点)和指标的多步骤流程。代理可以执行、推进和审计 SOP 运行。

调度与生命周期

模块 关键文件 角色
cron/ scheduler.rsschedule.rsstore.rstypes.rsmod.rs 任务调度器。 Cron 表达式、一次性定时器、固定间隔。持久化存储。
heartbeat/ engine.rsmod.rs 存活监控。 对渠道/网关的定期健康检查。
daemon/ mod.rs 长期运行守护进程。 同时启动网关 + 渠道 + 心跳 + 调度器。
service/ mod.rs (1.3k) 操作系统服务管理。 通过 systemd 或 launchd 安装/启动/停止/重启。
hooks/ mod.rsrunner.rstraits.rsbuiltin/ 生命周期钩子。 在事件发生时运行用户脚本(工具执行前/后、消息接收等)。

支持模块

模块 关键文件 角色
onboard/ wizard.rs (7.2k)、mod.rs 首次运行设置向导。 交互式或快速模式引导:提供商、API 密钥、渠道、内存后端。
auth/ profiles.rsanthropic_token.rsgemini_oauth.rsopenai_oauth.rsoauth_common.rs 认证配置文件与 OAuth 流程。 按提供商管理凭证。
approval/ mod.rs 审批工作流。 对风险操作进行人工审批门控。
doctor/ mod.rs (1.3k) 诊断工具。 检查守护进程健康状态、调度器新鲜度、渠道连通性。
health/ mod.rs 健康检查端点。
cost/ tracker.rstypes.rsmod.rs 成本追踪。 按会话和按日成本核算。
tunnel/ cloudflare.rsngrok.rstailscale.rscustom.rsnone.rsmod.rs 隧道适配器。 通过 Cloudflare、ngrok、Tailscale 或自定义隧道暴露网关。
rag/ mod.rs 检索增强生成(Retrieval-Augmented Generation)。 PDF 提取、分块支持。
integrations/ registry.rsmod.rs 集成注册表。 第三方集成目录。
identity.rs (1.5k) 代理身份。 代理实例的名称、描述、角色设定。
multimodal.rs 多模态支持。 图像/视觉处理配置。
migration.rs 数据迁移。 从 OpenClaw 工作区导入。
util.rs 共享工具函数。

src/ 之外的目录

目录 角色
crates/robot-kit/ 硬件机器人套件功能的独立 Rust crate
tests/ 集成和端到端测试(代理循环、配置持久化、渠道路由、提供商解析、Webhook 安全)
benches/ 性能基准测试(agent_benchmarks.rs
docs/contributing/extension-examples.md 自定义提供商、渠道、工具和内存后端的扩展示例
firmware/ 嵌入式固件:arduino/esp32/esp32-ui/nucleo/uno-q-bridge/
web/ Web UI 前端(Vite + TypeScript)
python/ Python SDK / 工具桥接,包含自身测试
dev/ 本地开发:Docker Compose、CI 脚本(ci.sh)、配置模板、沙箱配置
scripts/ CI 辅助工具、发布自动化、引导脚本、贡献者层级计算
docs/ 文档系统:多语言(en/zh-CN/ja/ru/fr/vi)、运行时参考、运维操作手册、安全提案
.github/ CI 工作流、PR 模板、Issue 模板、自动化

依赖方向

main.rs ──▶ agent/ ──▶ providers/  (LLM 调用)
               │──▶ tools/      (能力执行)
               │──▶ memory/     (上下文持久化)
               │──▶ observability/ (事件日志)
               │──▶ security/   (策略执行)
               │──▶ config/     (所有配置结构体)
               │──▶ runtime/    (平台抽象)
               │
main.rs ──▶ channels/ ──▶ agent/ (消息路由)
main.rs ──▶ gateway/  ──▶ agent/ (HTTP/WS 路由)
main.rs ──▶ daemon/   ──▶ gateway/ + channels/ + cron/ + heartbeat/

具体模块向内依赖于特征/配置。
特征从不导入具体实现。

CLI 命令树

zeroclaw
├── onboard [--interactive] [--force]     # 首次运行设置
├── agent [-m "msg"] [-p provider]        # 启动代理循环
├── daemon [-p port]                      # 完整运行时(网关+渠道+cron+心跳)
├── gateway [-p port]                     # 仅 HTTP API 服务器
├── channel {list|start|doctor|add|remove|bind-telegram}
├── skill {list|install|audit|remove}
├── memory {list|get|stats|clear}
├── cron {list|add|add-at|add-every|once|remove|update|pause|resume}
├── peripheral {list|add|flash|flash-nucleo|setup-uno-q}
├── hardware {discover|introspect|info}
├── service {install|start|stop|restart|status|uninstall}
├── doctor                                # 诊断工具
├── status                                # 系统概览
├── estop [--level] [status|resume]       # 紧急停止
├── migrate openclaw                      # 数据迁移
├── pair                                  # 设备配对
├── auth-profiles                         # 凭证管理
├── version / completions                 # 元命令
└── config {show|edit|validate|reset}