nanoclaw
将 Claude AI 助手运行在 Linux 容器隔离环境中的开源工具包,兼顾安全与实用性
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将 Claude AI 助手运行在 Linux 容器隔离环境中的开源工具包,兼顾安全与实用性
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你让 AI 助手帮你整理项目文档,它顺手翻了你桌面上的银行邮件;你让它发个消息,它悄悄读取了你的聊天记录。这种"权限过大"的担忧,正是 NanoClaw 诞生的起点。
NanoClaw 的作者 Gavriel Cohen 在 GitHub 上这样解释他的动机:OpenClaw 是一个令人印象深刻的项目,功能丰富生态完善,但它有近 50 万行代码、53 个配置文件、70+ 依赖项,所有代码运行在同一个 Node.js 进程中共享内存。安全防护靠的是应用层的白名单和配对码,并非真正的操作系统级隔离。
用 Cohen 的话说:"我不会安心让一个我无法理解的复杂软件拥有我生活所有方面的访问权限。"于是他决定做一件事——用足够少的代码实现同样的核心功能,让任何人都能在几分钟内读完并完全理解。
NanoClaw 于 2024 年底发布,迅速在 GitHub 获得关注,短时间内突破 29,000+ stars,成为 AI Agent 领域最具话题性的开源项目之一。VirtusLab 将其列入 GitHub All-Stars 系列,称其为"容器笼子里的个人 AI 管家"。
你可以把 NanoClaw 理解成:为你的 AI 助手专门建了一间带门锁的"安全屋"。在这个屋里,AI 可以工作(运行 Claude Agent SDK、执行代码、浏览网页),但它无法翻到屋外去——你的文件系统和网络都是隔离的。
相比之下,OpenClaw 更像是一个"敞开门的办公室",虽然有保安(权限检查),但保安也是代码,代码可能被绕过。而 NanoClaw 的"安全屋"是 Linux 容器层面的隔离,即使保安被攻破,门外还有操作系统的物理隔离在保护你。
NanoClaw 绝不只是接入了 Claude API 的聊天机器人。它的架构设计中包含几个关键能力:
1. 多渠道消息接入 NanoClaw 可以同时连接多个即时通讯平台:WhatsApp、Telegram、Discord、Slack、Signal、Teams 等。你在微信上问它问题,它在 Telegram 上回复——这在需要把工作和个人通讯分开时非常实用。
2. 容器级安全隔离 这是 NanoClaw 与同类方案最大的差异点。每个 Claude Agent 实例运行在自己的 Linux 容器中,拥有独立的文件系统视图。网络访问受限,进程隔离,AI 的"手"被锁在容器里伸不出来。
3. 定时任务与记忆 可以配置定时任务(如每天早上 8 点推送天气摘要),以及跨会话的记忆能力——下次对话时 AI 记得之前的上下文。
4. Claude Code 深度集成
NanoClaw 默认在容器内运行 @anthropic-ai/claude-code,这意味着 AI 不仅能聊天,还能真正执行终端命令、读写文件、运行测试——就像你在 Terminal 里调用 Claude Code 一样,只是换成了消息触发。
5. MCP 协议支持 支持 Model Context Protocol(MCP),可以扩展接入各种外部工具和数据源。
6. Browser Automation 容器内内置 Chromium 浏览器和 Playwright,AI 可以执行网页操作(点击、填表、抓取页面),这对自动化测试和数据采集场景很有价值。
NanoClaw 目前没有独立的 Web 管理界面。安装和配置主要通过命令行完成:
nanoclaw.sh:一键引导脚本,从裸机到可用的 AI 助手全程自动化。检测并安装 Node.js、pnpm、Docker,配置 Anthropic API 凭证,初始化第一个消息渠道(Telegram/Discord/WhatsApp/本地 CLI)。setup.sh:底层安装脚本,负责环境探测和依赖安装。ncl CLI:安装完成后,用户通过消息渠道与 Agent 交互,不再需要 Terminal。因此,NanoClaw 的目标用户是有基本技术背景的用户:需要能读 README、理解 Docker 概念、能够申请 Anthropic API Key。如果你是纯非技术用户,可能需要有人帮你完成初始配置。
从代码结构来看,NanoClaw 的核心由以下部分组成:
| 模块 | 技术 | 职责 |
|---|---|---|
| 主机核心 | TypeScript/Node.js | 消息路由、渠道管理、会话状态(SQLite)、定时任务 |
| 容器运行时 | Node.js/Docker | 为每个 Agent 创建隔离容器,执行 Claude Code |
| 渠道适配器 | TypeScript | Telegram/Discord/WhatsApp 等平台的接入层 |
| 配置管理 | TypeScript | 环境变量、凭证、群组配置管理 |
| 安装脚本 | Bash + TypeScript | 自动安装流程 |
项目使用 pnpm workspaces 管理 monorepo 结构(根 package.json + pnpm-workspace.yaml),TypeScript 编译输出到 dist/。测试框架使用 Vitest,代码风格用 Prettier + ESLint 统一规范。
容器镜像基于 node:22-slim,内置:
多阶段 Dockerfile 设计保证了镜像体积优化,源代码通过只读 bind mount 挂载而非 COPY 进镜像——这意味着开发者改代码后无需重建镜像,容器重启即可生效。
1. 维护者风险 NanoClaw 是个人维护项目(非公司背景),高度依赖作者 Gavriel Cohen 的持续投入。如果他停止维护,项目可能面临搁置风险。相比之下,OpenClaw 已有更成熟的社区和更长的迭代历史。
2. 功能范围受限 Cohen 刻意保持代码"足够小可以读完",意味着 NanoClaw 不会像 OpenClaw 那样追求大而全的集成。某些高级功能(如复杂的团队协作节点)短期内不会出现在 NanoClaw 中。
3. Anthropic 强依赖 NanoClaw 深度绑定 Anthropic 的 Claude Agent SDK 和 Claude Code CLI。如果 Anthropic 调整 API 定价或 SDK 架构,项目需要相应重构。
4. CLI 门槛 缺少 Web UI 对非技术用户不友好。社区中有人提议增加 Gradio/Streamlit 界面,但作者明确表示"不会为所有功能做一个 Web 界面"。
5. 安全局限 容器隔离虽然比应用层白名单强,但并非银弹。容器逃逸漏洞(Linux kernel CVE)理论上仍可突破隔离。Cohen 也坦承这一点,并在文档中诚实说明了当前架构的安全边界。
NanoClaw 的出现代表了 AI Agent 开源社区中一股值得关注的思潮:与其堆砌功能,不如保持简洁;与其黑箱复杂,不如白盒透明。
在 AI Agent 工具越来越"大而全"的趋势下,NanoClaw 证明了一个小团队(甚至个人)完全可以用几千行代码做出一个有灵魂的产品。它的成功说明:市场需要的不只是"能用的"AI 助手,也需要"我能看懂的"AI 助手。
从技术趋势看,容器化 + AI Agent 的组合正在成为安全运行 AI 工具的标准范式之一。NanoClaw 在这个方向上做了一个漂亮示范,也为后续类似项目提供了可参考的架构模板。
图1:NanoClaw 官方 Logo
图2:NanoClaw 社交预览图