Files
nanoclaw/docs/zh/REQUIREMENTS.md
2026-05-12 13:14:17 +00:00

188 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NanoClaw 需求
项目创建者的原始需求和设计决策。
---
## 为什么存在这个项目
这是 OpenClaw原名 ClawBot的轻量、安全的替代方案。那个项目变得臃肿至极——4 到 5 个不同的进程运行不同的网关无穷无尽的配置文件无穷无尽的集成。它是一个安全噩梦agent 不在隔离的进程中运行;有各种漏洞百出的变通方案试图阻止它们访问不应访问的系统部分。任何人都不可能真正理解整个代码库。运行它基本上就是在赌运气。
NanoClaw 为您提供核心功能,没有那些混乱。
---
## 理念
### 小到可以读懂
整个代码库应该是您可以阅读和理解的东西。一个 Node.js 进程。少量源文件。没有微服务,没有消息队列,没有抽象层。
### 通过真正的隔离实现安全
不是通过应用级权限系统试图阻止 agent 访问东西agent 运行在实际的 Linux 容器中。隔离在操作系统层面。Agent 只能看到显式挂载的内容。Bash 访问是安全的,因为命令在容器内运行,而不是在您的 Mac 上。
### 为个人用户构建
这不是一个框架或平台。它是为每个用户量身定制的软件。您 fork 仓库添加您想要的渠道WhatsApp、Telegram、Discord、Slack、Gmail最终得到做您所需事情的干净代码。
### 定制 = 代码修改
没有配置膨胀。如果您想要不同的行为,修改代码。代码库足够小,这样做既安全又实用。极小部分内容如触发词在配置中。其他一切——只需修改代码做您想做的事。
### AI 原生开发
我不需要安装向导——Claude Code 引导设置。我不需要监控仪表板——我问 Claude Code 发生了什么。我不需要精心设计的日志 UI——我让 Claude 读日志。我不需要调试工具——我描述问题Claude 修复它。
代码库假设您有一个 AI 协作者。它不需要过度自文档化或自调试,因为 Claude 始终在那里。
### Skills 优先于功能
当人们贡献时,他们不应该在支持 WhatsApp 的同时再添加"Telegram 支持"。他们应该贡献一个 skill`/add-telegram`,来改造代码库。用户 fork 仓库,运行 skills 进行定制,最终得到做他们所需事情的干净代码——而不是一个试图同时支持每个人用例的臃肿系统。
---
## RFSRequest for Skills
我们希望看到贡献的 skills
### 通信渠道
- `/add-signal` - 添加 Signal 作为渠道
- `/add-matrix` - 添加 Matrix 集成
> **注意:** Telegram、Slack、Discord、Gmail 和 Apple Container 的 skills 已经存在。完整列表请参见 [skills 文档](https://docs.nanoclaw.dev/integrations/skills-system)。
---
## 愿景
一个可通过消息访问的个人 Claude 助手,使用最少的自定义代码。
**核心组件:**
- **Claude Agent SDK** 作为核心 agent
- **容器Containers** 用于隔离的 agent 执行Linux VM
- **多渠道消息**WhatsApp、Telegram、Discord、Slack、Gmail——仅添加您需要的渠道
- **持久化记忆**——按对话和全局
- **定时任务**,运行 Claude 并能回复消息
- **Web 访问**,用于搜索和浏览
- **浏览器自动化**,通过 agent-browser
**实现方法:**
- 使用现有工具渠道库、Claude Agent SDK、MCP 服务器)
- 最少的胶水代码
- 尽可能使用基于文件的系统CLAUDE.md 用于记忆,目录用于群组)
---
## 架构决策
### 消息路由
- 路由器监听已连接的渠道,根据配置路由消息
- 仅处理来自已注册群组的消息
- 触发词:`@Andy` 前缀(不区分大小写),可通过 `ASSISTANT_NAME` 环境变量配置
- 未注册的群组完全被忽略
### 记忆系统
- **按群组记忆**:每个群组有一个带自己 `CLAUDE.md` 的目录
- **全局记忆**:根 `CLAUDE.md` 供所有群组读取,但只能从"主群组"(自我聊天)写入
- **文件**:群组可以在其目录中创建/读取文件并引用它们
- Agent 运行在群组的目录中,自动继承两个 CLAUDE.md 文件
### Session 管理
- 每个群组维护一个对话 session通过 Claude Agent SDK
- Sessions 在上下文过长时自动压缩,保留关键信息
### 容器隔离
- 所有 agent 在容器(轻量级 Linux VM内运行
- 每次 agent 调用启动一个挂载了目录的容器
- 容器提供文件系统隔离——agent 只能看到已挂载的路径
- Bash 访问安全,因为命令在容器内运行,而非在宿主机上
- 通过 agent-browser 和容器中的 Chromium 进行浏览器自动化
### 定时任务
- 用户可以从任何群组要求 Claude 安排定期或一次性任务
- 任务在创建它们的群组上下文中作为完整 agent 运行
- 任务可以访问包括 Bash 在内的所有工具(在容器中安全)
- 任务可以选择性地通过 `send_message` 工具向群组发送消息,或静默完成
- 任务运行记录到数据库,包含持续时间和结果
- 调度类型cron 表达式、间隔毫秒或一次性ISO 时间戳)
- 从主群组:可以为任何群组安排任务,查看/管理所有任务
- 从其他群组:只能管理该群组的任务
### 群组管理
- 新群组通过主渠道显式添加
- 群组在 SQLite 中注册(通过主渠道或 IPC `register_group` 命令)
- 每个群组在 `groups/` 下获得一个专用目录
- 群组可以通过 `containerConfig` 挂载额外目录
### 主渠道权限
- 主渠道是管理员/控制群组(通常是自我聊天)
- 可以向全局记忆写入(`groups/CLAUDE.md`
- 可以为任何群组安排定时任务
- 可以查看和管理所有群组的任务
- 可以为任何群组配置额外的目录挂载
---
## 集成点
### 渠道
- WhatsApp (baileys)、Telegram (grammy)、Discord (discord.js)、Slack (@slack/bolt)、Gmail (googleapis)
- 每个渠道存于单独的 fork 仓库中,通过 skills例如 `/add-whatsapp``/add-telegram`)添加
- 消息存储在 SQLite 中,由路由器轮询
- 渠道在启动时自行注册——未配置的渠道被跳过并发出警告
### 调度器
- 内置调度器在宿主机上运行,启动容器执行任务
- 自定义 `nanoclaw` MCP 服务器(容器内)提供调度工具
- 工具:`schedule_task``list_tasks``pause_task``resume_task``cancel_task``send_message`
- 任务存储在 SQLite 中,带运行历史
- 调度器循环每分钟检查到期任务
- 任务在容器化的群组上下文中执行 Claude Agent SDK
### Web 访问
- 内置 WebSearch 和 WebFetch 工具
- 标准 Claude Agent SDK 能力
### 浏览器自动化
- 容器中的 agent-browser CLI 和 Chromium
- 基于快照的交互,带元素引用(@e1@e2 等)
- 截图、PDF、视频录制
- 认证状态持久化
---
## 设置与定制
### 理念
- 最小化配置文件
- 通过 Claude Code 进行设置和定制
- 用户克隆仓库并运行 Claude Code 进行配置
- 每个用户得到精确匹配其需求的定制设置
### Skills
- `/setup` - 安装依赖,配置渠道,启动服务
- `/customize` - 通用 skill用于添加能力
- `/update-nanoclaw` - 拉取上游更改,与定制合并
### 部署
- 运行在 macOS (launchd)、Linux (systemd) 或 Windows (WSL2) 上
- 单个 Node.js 进程处理一切
---
## 个人配置(参考)
以下是创建者的设置,存档于此供参考:
- **触发词**`@Andy`(不区分大小写)
- **响应前缀**`Andy:`
- **角色**:默认 Claude无自定义个性
- **主渠道**:自我聊天(在 WhatsApp 中给自己发消息)
---
## 项目名称
**NanoClaw** - 引用 Clawdbot现为 OpenClaw