| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Lumo 是一个基于 Django REST Framework、Slack SDK 以及 LiteLLM 的 Slack 机器人。 它可以在 Slack 中和用户对话,并且能够对 thread 及 channel 的历史消息进行总结:
pip install -r requirements.txtpython manage.py migratepython manage.py runserver 0.0.0.0:8000项目内置了 docker-compose.yml 与 Dockerfile,默认使用 uv 来安装依赖并运行 Django。 组合服务包含:
使用方式:
docker compose up --build若需要停止服务,执行 docker compose down;若希望清理向量存储数据,可同时加上 -v 删除 qdrant_data 卷。
项目包含一个基于 Model Context Protocol(MCP)的文档搜索服务,方便在本地用 LLM 工具调用已索引的 Slack 上传文档:
python scripts/mcp_document_search_server.py| 变量 | 描述 |
|---|---|
| SLACK_BOT_TOKEN | Slack Bot Token (xoxb-...) |
| SLACK_APP_TOKEN | Slack App Token (xapp-...) |
| SLACK_SIGNING_SECRET | 验证 Slack 请求使用 |
| LITELLM_MODEL | LiteLLM 使用的模型名称,例如 gpt-4o-mini |
| SLACK_SUMMARY_MAX_MESSAGES | 每次拉取的最大消息条数 |
LiteLLM 需要配置对应模型供应商的 API Key,例如 OPENAI_API_KEY,配置方式详见 LiteLLM 文档.
| 变量 | 描述 |
|---|---|
| FILE_STORAGE_DIR | 自定义统一的文件存储目录,默认为 <BASE_DIR>/downloads |
项目内置了基于 LlamaIndex 的文档索引能力,用于处理用户在 Slack 中上传的文件,并在后续对话问答中利用这些文档作为上下文。
依赖与环境变量
文件下载与索引流程
已成功下载你发的文件,我正在阅读中,稍后再帮你分析。
索引的持久化存储
在问答中使用文档上下文
后续如果需要按 channel / thread 进一步拆分索引或优化查询策略,可以基于 Document 中的 channel、thread_ts 等元数据做更细粒度的扩展。
| Method | Endpoint | 说明 |
|---|---|---|
| POST | /api/slack/events/ | Slack Events API 入口,支持 url_verification 与 app_mention 事件 |
| POST | /api/summaries/channel/ | 主动请求 channel 总结,支持指定日期或 start_date/end_date |
| POST | /api/summaries/thread/ | 主动请求 thread 总结,需要传 channel_id + thread_ts |
| GET | /api/health/ | 健康检查 |
POST /api/summaries/channel/
Content-Type: application/json
{
"channel_id": "C123",
"date": "2024-05-01",
"max_messages": 100
}POST /api/summaries/thread/
Content-Type: application/json
{
"channel_id": "C123",
"thread_ts": "1714567890.123456"
}python manage.py testLumo ├── manage.py ├── application/ # Django 项目配置 ├── slackbot/ # 业务逻辑 (API、服务、模型) └── requirements.txt
欢迎根据业务需求扩展消息持久化、身份认证以及定时调度任务。
| Back | FazBrowse Home | New Git URL |