Gnosis Slack机器人
一个基于Python的异步Slack机器人,支持Docker,并集成了MCP工具。
特点/功能
- 🤖 使用异步Slack机器人的助手
slack-bolt - 🐳 使用Docker容器化以简化部署
- 基于FastAPI的API,用于外部集成
- 🛠️ 用于Claude集成的MCP工具
- 📸 支持文本、图片和文件上传
- 🔄 线程回复和丰富的消息格式化
文档
所有扩展指南现在都位于 vibe/ 目录:
快速入门
1. 安装
运行交互式安装向导:
python setup.py --install这将提示您输入:
- Slack 机器人令牌 (xoxb-...)
- Slack 应用令牌 (xapp-...)
- Slack 签名密钥
- 可选:默认频道ID
- API配置
2. 构建Docker容器
python setup.py --build3. 启动机器人
python setup.py --start在Windows(PowerShell)上:
scripts\start_bot.ps1或者在不使用 Docker 的情况下本地运行:
python -m bot.main设置Slack应用
- 访问 https://api.slack.com/apps
- 创建一个新应用(或使用现有应用)
- 配置机器人令牌范围:
- app_mentions:read - channels:history - channels:read - chat:write - files:write - im:history - im:read - im:write - users:read
- 启用套接字模式并获取应用令牌
- 将应用程序安装到您的工作区
- 复制令牌并运行
python setup.py --install
API 使用
该机器人在8765端口(可配置)上提供了一个REST API。
发送消息
curl -X POST http://localhost:8765/send \
-H "Content-Type: application/json" \
-d '{
"channel": "C1234567890",
"text": "Hello from Gnosis!"
}'发送图片
curl -X POST http://localhost:8765/send-with-image \
-F "channel=C1234567890" \
-F "text=Check out this image!" \
-F "image=@/path/to/image.png"回复线程
curl -X POST http://localhost:8765/reply \
-F "channel=C1234567890" \
-F "thread_ts=1234567890.123456" \
-F "text=This is a reply"MCP工具集成
MCP工具使Claude和其他MCP客户端能够与Slack进行交互。
设置MCP工具
- 安装MCP依赖项:
cd mcp
pip install -r requirements.txt- 添加到您的MCP配置中(例如,Claude Desktop配置):
{
"mcpServers": {
"gnosis-slackbot": {
"command": "python",
"args": [
"/path/to/gnosis-slackbot/mcp/slackbot_mcp.py"
]
}
}
}可用的MCP工具
slack_send_message- 发送短信slack_send_image- 发送图片slack_reply- 回复帖子slack_upload_file- 上传文件slack_get_user- 获取用户信息slack_get_channel- 获取频道信息
消息记录与监控
所有发出去的机器人消息(API发送、私信自动回复、提及回复、斜杠命令回复和文件上传)都会被同步到 logs/slack_messages.log日志是以换行符分隔的JSON格式,因此可以被其他代理程序追踪。
- 使用以下配置路径
SLACK_MESSAGE_LOG(默认为logs/slack_messages.log)。 - 通过机器人上传的附件会被同步到
logs/slack_messages/attachments/(用……覆盖SLACK_ATTACHMENTS_DIR)。 每条日志条目都包含一个local_copy当文件已保存时,字段指向该文件。 - 在Codex容器内
slack-logMCP服务器提供辅助程序:
- slack_log_status — 确认文件存在,并报告文件大小/修改时间。 - slack_log_tail — 获取最新的条目。 - slack_log_since — 检索比某个ISO时间戳更新的条目。
来自 Codex CLI 的示例 tail 命令:
codex tool slack-log slack_log_tail '{"tail": 20}'Docker 命令
查看日志
docker logs -f gnosis-slackbot停止机器人
python setup.py --stop或者手动地:
docker stop gnosis-slackbot
docker rm gnosis-slackbot重建并重启
python setup.py --stop
python setup.py --build
python setup.py --start项目结构
gnosis-slackbot/
├── bot/
│ ├── __init__.py
│ ├── main.py # Entry point
│ ├── slack_bot.py # Slack bot logic
│ └── api_server.py # FastAPI server
├── vibe/
│ ├── API_DOCUMENTATION.md
│ ├── CHECKLIST.md
│ ├── PROJECT_SUMMARY.md
│ └── SETUP_GUIDE.md
├── mcp/
│ ├── slackbot_mcp.py # MCP tool implementation
│ └── requirements.txt
├── scripts/
│ ├── start_bot.sh # Unix/macOS launcher
│ ├── start_bot.ps1 # Windows PowerShell launcher
│ ├── restart_container.sh
│ ├── check_channel_join.py
│ ├── test_container.py
│ └── test_send_message.py
├── Dockerfile
├── requirements.txt
├── setup.py # Setup and management script
├── .env # Configuration (created by setup)
└── README.md配置
所有配置都存储在 .env:
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
SLACK_SIGNING_SECRET=...
SLACK_DEFAULT_CHANNEL=C1234567890
API_HOST=0.0.0.0
API_PORT=8765
DEBUG=false发展
本地运行
# Install dependencies
pip install -r requirements.txt
# Run bot
python -m bot.main调试模式
设定 DEBUG=true 在 .env 用于详细日志记录。
故障排除
机器人未响应
- 检查日志:
docker logs gnosis-slackbot - 验证令牌在
.env - 确保在Slack应用中已启用套接字模式
- 检查机器人是否具有所需的范围权限
API无法访问
- 检查容器是否正在运行:
docker ps - 验证端口映射:
-p 8765:8765 - 检查防火墙设置
MCP工具问题
- 验证API是否正在运行:
curl http://localhost:8765/health - 检查MCP工具配置路径
- 查看MCP日志
许可证
麻省理工学院(MIT)
支持
对于问题和疑问,请在仓库中创建一个议题。
