一、一个令人不安的事实
OpenClaw 是一个令人印象深刻的项目,愿景宏大。但作者 Gavriel Cohen 无法安心使用它——
一个他不了解、却能访问他个人隐私的软件。
看看 OpenClaw 的架构:
- 52+ 个模块
- 8 个配置管理文件
- 45+ 个依赖项
- 15 个渠道提供商的抽象层
- 所有东西在一个共享内存的 Node 进程中运行
- 安全是应用级别的(白名单、配对码),而非操作系统级别的隔离
NanoClaw 的诞生,就是为了解决这个问题。
二、NanoClaw 是什么?
NanoClaw 是一个轻量级、容器化、AI 原生的个人 AI 助手。
| 维度 | OpenClaw | NanoClaw |
|---|---|---|
| 代码量 | 52+ 模块,数万行 | 单一进程,少量文件 |
| 配置 | 8 个配置文件 | 无配置文件 |
| 安全 | 应用级权限检查 | OS 级容器隔离 |
| 依赖 | 45+ | 最小化 |
| 理解时间 | 数天 | 8 分钟 |
1. 小巧易懂 —— 代码库小到你能真正读完 2. 容器隔离 —— Agent 运行在真实 Linux 容器中,不是权限检查 3. AI 原生 —— 没有安装向导、监控仪表盘或调试工具,直接问 Claude 4. 技能优于功能 —— 不添加功能,而是添加技能来改造你的 fork
三、设计哲学:少即是多
1. 通过隔离保障安全
传统方式:
应用层安全检查 → 允许/拒绝操作
└── 如果检查代码有 bug,整个系统暴露
NanoClaw 方式:
Agent 运行在容器中 ──→ 只能看到被挂载的内容
└── 即使容器被攻破,宿主机仍然安全
容器运行时:
- macOS: Apple Container 或 Docker
- Linux: Docker
2. 为单一用户打造
这不是一个框架,是一个完全符合个人需求的、可工作的软件。
> "您可以 Fork 本项目,然后让 Claude Code 根据您的精确需求进行修改和适配。"
每个人的 NanoClaw 都应该是独一无二的——只做你需要的事,没有多余功能。
3. 定制即代码修改
没有配置文件。
想要不同的行为?直接修改代码。代码库足够小,这样做是安全的。
| 传统软件 | NanoClaw |
|---|---|
编辑 config.yaml | 告诉 Claude "把触发词改成 @Bob" |
| 查阅文档了解选项 | 直接描述你想要的行为 |
| 被不支持的功能困扰 | 删除不需要的代码 |
4. AI 原生
| 传统软件 | AI 原生 |
|---|---|
| 安装向导 | Claude Code 指导安装 |
| 监控仪表盘 | 直接问 Claude "系统状况如何?" |
| 调试工具 | 描述问题,Claude 修复它 |
四、核心功能
已内置
- WhatsApp 输入/输出 —— 通过手机给 Claude 发消息
- 隔离的群组上下文 —— 每个群组独立
CLAUDE.md记忆和文件系统 - 主频道 —— 私有频道(self-chat)用于管理控制
- 计划任务 —— 周期性作业,可回发消息
- 网络访问 —— 搜索和抓取网页
- 容器隔离 —— Apple Container 或 Docker 沙箱
- 智能体集群(Agent Swarms) —— 首个支持此功能的个人 AI 助手
通过技能添加
运行命令,Claude 会自动改造代码:
/add-gmail—— 添加 Gmail 集成/add-telegram—— 添加 Telegram 支持/add-slack—— 添加 Slack/add-discord—— 添加 Discord
五、使用方法
快速开始
git clone https://github.com/qwibitai/nanoclaw.git
cd nanoclaw
claude
然后运行 /setup。Claude Code 会处理:依赖安装、身份验证、容器设置、服务配置。
与助手对话
使用触发词(默认为 @Andy):
@Andy 每周一到周五早上9点,给我发一份销售渠道的概览
@Andy 每周五回顾过去一周的 git 历史,如果与 README 有出入,就更新它
@Andy 每周一早上8点,从 Hacker News 收集 AI 资讯,发给我简报
管理群组和任务
在主频道(self-chat)中:
@Andy 列出所有群组的计划任务
@Andy 暂停周一简报任务
@Andy 加入"家庭聊天"群组
定制
直接告诉 Claude Code:
- "把触发词改成 @Bob"
- "记住以后回答要更简短直接"
- "当我说早上好的时候,加一个自定义问候"
- "每周存储一次对话摘要"
/customize 进行引导式修改。六、架构:极简主义的艺术
WhatsApp (baileys) --> SQLite --> 轮询循环 --> 容器 (Claude Agent SDK) --> 响应
单一 Node.js 进程。
| 文件 | 职责 |
|---|---|
src/index.ts | 编排器:状态管理、消息循环、智能体调用 |
src/channels/whatsapp.ts | WhatsApp 连接、认证、收发消息 |
src/ipc.ts | IPC 监听与任务处理 |
src/router.ts | 消息格式化与出站路由 |
src/group-queue.ts | 各带全局并发限制的群组队列 |
src/container-runner.ts | 生成流式智能体容器 |
src/task-scheduler.ts | 运行计划任务 |
src/db.ts | SQLite 操作(消息、群组、会话、状态) |
groups/*/CLAUDE.md | 各群组的记忆 |
- 每个群组的消息队列都带有全局并发控制
- 通过文件系统进行进程间通信(IPC)
- Agent 在具有挂载目录的隔离 Linux 容器中执行
七、Agent Swarms:智能体集群
NanoClaw 是首个支持 Agent Swarms 的个人 AI 助手。
这意味着你可以:
- 启动多个专业智能体
- 让它们协作完成复杂任务
- 每个智能体在自己的容器中运行,拥有独立的上下文
@Andy 启动一个研究团队,分析这个市场机会
→ Agent 1: 研究竞争对手
→ Agent 2: 分析市场规模
→ Agent 3: 评估技术可行性
→ 汇总结果,生成报告
八、贡献:技能而非功能
核心理念:不要添加功能,而是添加技能。
如果你想添加 Telegram 支持:
❌ 错误方式: 创建一个 PR,在代码库中同时添加 Telegram 和 WhatsApp 支持。
✅ 正确方式:
贡献一个技能文件 .claude/skills/add-telegram/SKILL.md,教 Claude Code 如何改造 NanoClaw 以使用 Telegram。
然后用户在自己的 fork 上运行 /add-telegram,得到只做他们需要事情的整洁代码,而不是一个试图支持所有用例的臃肿系统。
希望看到的技能
通信渠道
/add-telegram—— 添加 Telegram,可选择替换 WhatsApp 或作为额外渠道/add-slack—— 添加 Slack/add-discord—— 添加 Discord
/setup-windows—— 通过 WSL2 + Docker 支持 Windows
/add-clear—— 添加/clear命令,用于压缩会话
九、FAQ
Q: 为什么是 WhatsApp 而不是 Telegram/Signal? A: 因为我用 WhatsApp。Fork 这个项目然后运行一个技能来改变它。正是这个项目的核心理念。
Q: 这个项目安全吗? A: 智能体在容器中运行,而不是在应用级别的权限检查之后。它们只能访问被明确挂载的目录。代码库小到你可以真正审查它。
Q: 为什么没有配置文件? A: 我们不希望配置泛滥。每个用户都应该定制它,让代码完全符合他们的需求,而不是去配置一个通用的系统。
Q: 我该如何调试问题? A: 问 Claude Code。"为什么计划任务没有运行?" "最近的日志里有什么?" 这就是 AI 原生的方法。
十、结语:软件的新范式
NanoClaw 代表了一种新的软件设计哲学:
在 AI 能写代码的时代,软件应该小到人类能理解,让 AI 来负责定制和扩展。
不是做一个包罗万象的框架,而是做一个最小化的核心,让每个人都能拥有完全符合自己需求的版本。
关键启示:
- 安全通过隔离实现,而非权限检查
- 定制通过代码修改实现,而非配置文件
- 功能通过技能添加实现,而非功能膨胀
- 调试通过对话实现,而非工具
---
参考
- GitHub: https://github.com/qwibitai/nanoclaw
- 官网: https://nanoclaw.dev
- Discord: https://discord.gg/VDdww8qS42
*你会考虑用 NanoClaw 替代 OpenClaw 吗?或者你已经尝试过其他轻量级 AI 助手方案?欢迎在评论区分享你的想法。*