本文基于 Self-System 与 OpenClaw 两个项目的完整源码分析,从架构、功能、生态三个维度进行深度拆解。阅读时间约 15 分钟。

在这里插入图片描述

前言:为什么写这篇文章

最近在做"一年100个AI产品挑战"的过程中,我同时关注了两个方向完全不同的 AI 分身项目:
请添加图片描述

  • OpenClaw(🦞 龙虾):由 iOS 社区传奇开发者 @steipete 主导的开源项目,MIT 协议,18+ 核心维护者,定位是"Personal AI Assistant"
  • Self-System**(🦀 帝王蟹):一个 Solo Developer + AI 构建的项目,定位是"数字渐进式分身"

它们看似解决同一个问题——“让每个人拥有自己的 AI 助手”,但源码一扒,差异大到让我觉得它们根本不是同一个物种。

一、架构设计:Hub-and-Spoke vs Docker-in-Docker

OpenClaw:消息路由器 + Agent 运行时

[Telegram] ──┐
[Discord] ───┤
[Slack] ─────┼──→ [Gateway WebSocket] → [Pi Agent Runtime] → [Model Provider]
[WhatsApp] ──┤
[iMessage] ──┘

经典的 Hub-and-Spoke 架构。Gateway 是轮毂,40+ Channel 是辐条。所有消息汇聚到中心点,由 Agent 统一处理。

优点:连接能力极强(40+ Channel),消息流向清晰
代价:Gateway 是单点,扩展受限于 Agent 运行时吞吐

Self-System:双容器自生长系统

┌──────────────────────────────┐
│  CONTROL 容器(大脑)         │
│  - Claude Code 引擎          │
│  - Docker Socket 控制权      │
│  - 代码生成 + 热部署         │
└──────────┬───────────────────┘
           │ Docker API
           ↓
┌──────────────────────────────┐
│  APP 容器(身体)             │
│  - 用户的数字分身             │
│  - 所有 AI 生成的页面和 API  │
│  - 可以是任何东西             │
└──────────────────────────────┘

核心创新:Control 容器通过挂载 Docker Socket 来管理 App 容器。Claude 修改代码后热重启 App 容器,用户无感知。每次修改自动 Git 提交,可随时回滚。

本质区别:OpenClaw 的代码是预编译的、固定的;Self-System 的代码是活的、流动的、持续被 AI 改写的。

二、技术栈选型背后的哲学

维度 OpenClaw Self-System
主语言 TypeScript(严格模式,零 any JavaScript(ES6 Modules)
数据库 SQLite(本地)+ sqlite-vec(向量) Supabase(PostgreSQL 云端)
前端 Lit(Web Components) Vue 3 + Tailwind CSS 4
移动端 Swift 6.2 + Kotlin 原生 PWA
构建 tsdown + tsx + oxlint Vite(无 linting)
测试 Vitest,70% 覆盖率目标 无自动化测试

为什么 Self-System 不用 TypeScript?

因为它的代码主要由 AI 生成。AI 不需要类型提示来理解代码,动态类型反而减少了生成代码时的类型兼容问题。当你的代码写手是 AI 时,TypeScript 的严格性反而成了绊脚石。

为什么 Self-System 不写测试?

因为代码是可消耗品。坏了不需要调试——重新让 AI 生成一个就好。「测试」被「可重生性」替代。

三、Skill 系统:代码抽象 vs 知识抽象

OpenClaw 的 Skill = TypeScript 类

export class AppleRemindersSkill extends Skill {
  async createReminder(title: string, list?: string): Promise<Reminder> {
    return await this.node.exec('osascript', [...]);
  }
}

需要理解 SDK、遵循接口规范、通过 lint 检查、发布到 npm。

Self-System 的 Skill = Markdown 文件

---
name: wechat-message-automation
description: 通过 n8n Webhook 实现微信消息自动发送
---
## Webhook URL
https://xxx
## 数据格式
{ "userName": "群名", "group": true, "message": "内容" }

纯文本,零代码,通过对话创建,自动注入到后续所有 AI 提示词中。

本质:OpenClaw Skill 告诉系统 How(如何做),Self-System Skill 告诉 AI What & Why(做什么和为什么)。当你的执行者是 AI 时,你不需要精确到函数签名,你只需要把上下文和意图说清楚。

四、功能生长模型对比

场景:我需要微信消息自动化

OpenClaw 路径:搜索 Plugin → 没有官方 WeChat Channel → 自己写 Plugin 对接 → 学习 SDK → 1-3 天

Self-System 路径:“帮我创建一个微信消息自动化的 Skill,Webhook 地址是 https://xxx” → 10 秒搞定

场景:我需要管理 20 个 IM 渠道

OpenClaw 路径:配置 20 个 Token → 启动 → 30 分钟搞定 ✅

Self-System 路径:逐个创建集成 → 没有统一消息路由 → 需要多次对话 ❌

结论:OpenClaw 是 X 轴(连接广度)之王,Self-System 是 Y 轴(定制深度)之王。

五、定位分析:应用层 vs 操作系统层

层次差异:
OpenClaw  = Application Layer — 你在 App 里做事
Self-System = OS Layer        — 你在定义 App 本身

OpenClaw 正在成为「个人 AI 的 Android」——开放、多渠道、生态丰富。
Self-System 正在成为「程序员的 AI 操作系统」——自我进化、无边界、代码即思想。

六、数据总表

对比维度 OpenClaw 🦞 Self-System 🦀
团队规模 18+ 维护者 1 人 + AI
代码语言 TypeScript + Swift + Kotlin JavaScript
Channel 数 40+ 通过 Webhook/Skill 集成
Model 数 15+ 4
内置 Skill 50+ 15+(全部 AI 对话生成)
部署方式 npm/Docker/Nix/Native Docker Compose
数据存储 SQLite(本地) Supabase(云端)
扩展方式 Plugin SDK 自然语言对话
核心价值 连接万物 生长万物

七、给程序员的选择建议

你的需求 选择
多 IM 统一管理 OpenClaw 🦞
快速搭建个人定制化工具 Self-System 🦀
原生移动端体验 OpenClaw 🦞
系统按你的想法持续进化 Self-System 🦀
社区共享的插件生态 OpenClaw 🦞
深度融合私人工作流 Self-System 🦀
极客式数字分身 Self-System 🦀

结语

龙虾的武器是触角,能感知海里一切信号。
帝王蟹的武器是身体,能承载海里一切重量。

它们不是竞品,而是同一赛道上占据不同生态位的物种。如果两个都想要——用 OpenClaw 管通信,用 Self-System 管建造,通过 Webhook 打通,你就拥有了一条数字龙 🐉。


本文基于 Self-System (commit: 65757b7) 与 OpenClaw (v2026.3.1, commit: 3fc19ed) 的源码深度分析。

我是 MaskerPRC,正在做"一年100个AI产品挑战",Self-System 是其中一个项目。欢迎关注交流。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐