Files
compose-anything/apps/nanobot/README.zh.md
Sun-ZhenXing d53dffca83 feat(nanobot): add README and docker-compose configuration for multi-channel AI assistant
feat(openclaw): introduce OpenClaw personal AI assistant with multi-channel support and CLI

fix(mineru): update MinerU version to 2.7.6 in Dockerfile and documentation
2026-02-07 13:34:36 +08:00

270 lines
6.6 KiB
Markdown
Raw 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.
# Nanobot
[中文说明](README.zh.md) | [English](README.md)
Nanobot 是一个轻量级、生产就绪的个人 AI 助手支持多渠道Telegram、Discord、WhatsApp、飞书本地模型集成以及强大的工具能力。
## 特性
- 🤖 **多 LLM 提供商支持**OpenRouter、Anthropic、OpenAI、DeepSeek、Groq、Gemini 等
- 🖥️ **本地模型**:使用 vLLM 或任何 OpenAI 兼容服务器运行您自己的模型
- 💬 **多渠道**:集成 Telegram、Discord、WhatsApp 和飞书
- 🛠️ **强大工具**文件操作、Shell 执行、网络搜索和自定义技能
- 📅 **定时任务**:支持自然语言的类 Cron 任务调度
- 🎯 **记忆与技能**:持久化记忆和可扩展技能系统
- 🔒 **安全性**:沙盒模式、访问控制和安全命令执行
## 快速开始
### 前置要求
- 已安装 Docker 和 Docker Compose
- 至少一个 LLM 提供商 API 密钥(推荐:[OpenRouter](https://openrouter.ai/keys)
### 配置步骤
1. **复制环境变量示例文件:**
```bash
cp .env.example .env
```
2. **编辑 `.env` 并至少配置一个 LLM 提供商:**
```bash
# 使用 OpenRouter推荐可访问所有模型
OPENROUTER_API_KEY=sk-or-v1-xxxxx
# 或使用其他提供商
ANTHROPIC_API_KEY=sk-ant-xxxxx
OPENAI_API_KEY=sk-xxxxx
```
3. **启动服务:**
```bash
docker compose up -d
```
4. **初始化配置(仅首次需要):**
```bash
docker compose exec nanobot nanobot onboard
```
5. **检查状态:**
```bash
docker compose exec nanobot nanobot status
```
## 使用方法
### CLI 模式
直接与 nanobot 对话:
```bash
docker compose exec nanobot nanobot agent -m "2+2 等于多少?"
```
交互模式:
```bash
docker compose exec nanobot nanobot agent
```
### 网关模式(默认)
默认的 `docker compose up` 会启动网关服务器,支持:
- Telegram 机器人集成
- Discord 机器人集成
- WhatsApp 消息(需要额外配置)
- 飞书 / Lark 集成
- HTTP API 访问(端口 18790
### 渠道配置
#### Telegram
1. 通过 Telegram 上的 [@BotFather](https://t.me/BotFather) 创建机器人
2. 从 [@userinfobot](https://t.me/userinfobot) 获取您的用户 ID
3. 在 `.env` 中配置:
```bash
TELEGRAM_ENABLED=true
TELEGRAM_TOKEN=你的机器人令牌
```
4. 重启服务
#### Discord
1. 在 [Discord 开发者门户](https://discord.com/developers/applications) 创建机器人
2. 在机器人设置中启用 **MESSAGE CONTENT INTENT**
3. 在 `.env` 中配置:
```bash
DISCORD_ENABLED=true
DISCORD_TOKEN=你的机器人令牌
```
4. 重启服务
#### WhatsApp
需要 Node.js 和额外配置。详见 [官方文档](https://github.com/HKUDS/nanobot#-chat-apps)。
#### 飞书
1. 在 [飞书开放平台](https://open.feishu.cn/app) 创建应用
2. 启用机器人能力并添加 `im:message` 权限
3. 在 `.env` 中配置:
```bash
FEISHU_ENABLED=true
FEISHU_APP_ID=你的应用ID
FEISHU_APP_SECRET=你的应用密钥
```
4. 重启服务
## 配置
### 环境变量
所有可用配置选项请参见 [.env.example](.env.example)。
关键设置:
| 变量 | 描述 | 默认值 |
| ----------------------- | -------------------------------------- | --------------------------- |
| `NANOBOT_MODEL` | 要使用的 LLM 模型 | `anthropic/claude-opus-4-5` |
| `NANOBOT_COMMAND` | 要运行的命令gateway、agent、status | `gateway` |
| `RESTRICT_TO_WORKSPACE` | 沙盒模式 - 限制工具访问工作空间 | `false` |
| `BRAVE_API_KEY` | 网络搜索工具的 API 密钥 | (空) |
| `TELEGRAM_ENABLED` | 启用 Telegram 渠道 | `false` |
| `DISCORD_ENABLED` | 启用 Discord 渠道 | `false` |
### LLM 提供商优先级
当配置了多个提供商时nanobot 将:
1. 根据模型名称匹配提供商(例如 `gpt-4` → OpenAI
2. 回退到第一个可用的 API 密钥
### 安全性
对于生产部署:
- 设置 `RESTRICT_TO_WORKSPACE=true` 以沙盒化所有文件和 Shell 操作
- 在配置文件中为渠道访问控制配置 `allowFrom` 列表
- 为渠道集成使用专用用户账户
- 监控 API 使用并设置支出限制
- 将凭证保存在环境变量中,绝不在代码中
## 定时任务
按计划运行任务:
```bash
# 添加每日提醒
docker compose exec nanobot nanobot cron add \
--name "morning" \
--message "早上好!今天有什么安排?" \
--cron "0 9 * * *"
# 列出计划任务
docker compose exec nanobot nanobot cron list
# 删除任务
docker compose exec nanobot nanobot cron remove <job_id>
```
## 本地模型vLLM
使用您自己的本地模型运行 nanobot
1. **启动 vLLM 服务器:**
```bash
vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000
```
2. **在 `.env` 中配置:**
```bash
VLLM_API_KEY=dummy
VLLM_API_BASE=http://host.docker.internal:8000/v1
NANOBOT_MODEL=meta-llama/Llama-3.1-8B-Instruct
```
3. **重启服务**
## 数据卷
- `nanobot_config`:配置文件和凭证
- `nanobot_workspace`:代理工作空间和文件
## 端口
- `18790`:网关 HTTP API可通过 `NANOBOT_PORT_OVERRIDE` 配置)
## 资源限制
默认资源限制:
- CPU1.0 核心限制0.5 核心(预留)
- 内存1GB限制512MB预留
通过环境变量调整:`NANOBOT_CPU_LIMIT`、`NANOBOT_MEMORY_LIMIT` 等。
## 故障排除
### 查看日志
```bash
docker compose logs -f nanobot
```
### 验证配置
```bash
docker compose exec nanobot nanobot status
```
### 测试 LLM 连接
```bash
docker compose exec nanobot nanobot agent -m "你好!"
```
### 常见问题
**未配置 API 密钥:**
- 确保在 `.env` 中至少设置了一个提供商 API 密钥
- 更新环境变量后重启服务
**渠道无响应:**
- 检查渠道是否在 `.env` 中启用
- 验证机器人令牌是否正确
- 检查日志中的连接错误
**文件权限错误:**
- 确保数据卷具有适当的权限
- 调试时尝试使用 `RESTRICT_TO_WORKSPACE=false` 运行
## 许可证
Nanobot 是一个开源项目。许可证详情请参见 [官方仓库](https://github.com/HKUDS/nanobot)。
## 链接
- 官方仓库:<https://github.com/HKUDS/nanobot>
- 文档:<https://github.com/HKUDS/nanobot#readme>
- 问题反馈:<https://github.com/HKUDS/nanobot/issues>