Dify Feishu Bot 是一个开源项目,让你可以轻松地将 Dify 的 AI 能力集成到飞书中。通过简单的配置,你的飞书用户就可以与 Dify 智能体进行自然语言对话。
- 🏢 企业内部智能客服 / 知识库问答
- 📚 基于文档的 AI 助手
- 🤝 团队协作 AI 工具
- 🔧 自定义工作流自动化
| 特性 | 描述 |
|---|---|
| 🔌 WebSocket 长连接 | 无需公网 IP、无需域名、无需配置 Webhook |
| 🤖 多智能体支持 | 可配置多个 AI 智能体,用户自由切换 |
| 💬 会话管理 | 自动管理对话上下文,支持多轮对话 |
| ⚙️ 可视化配置 | 提供 Web 管理面板,所有配置可视化操作 |
| 🔒 安全认证 | 基于 Token 的管理面板访问控制 |
| 📝 对话记录 | 保存完整对话历史,便于追溯 |
┌─────────────────┐ WebSocket ┌─────────────────┐
│ 飞书客户端 │ ◄─────────────────► │ Dify Feishu Bot │
└─────────────────┘ 长连接 └────────┬────────┘
│
│ HTTP API
▼
┌─────────────────┐
│ Dify Server │
│ (自部署) │
└─────────────────┘
技术栈:
- 运行时: Node.js 18+
- 框架: Next.js 15 (App Router)
- 数据库: SQLite + Prisma ORM
- 飞书 SDK: @larksuiteoapi/node-sdk
- UI: React + Tailwind CSS
在开始之前,请确保你已经准备好:
git clone https://github.com/joshleeeeee/dify-feishu-bot.git
cd dify-feishu-botnpm installnpx prisma generate
npx prisma db push复制示例配置文件:
cp .env.example .env编辑 .env 文件,设置管理面板的访问 Token:
# 管理面板访问 Token(请修改为你自己的安全 Token)
ADMIN_TOKEN=your-secure-token-here
# 数据库路径(默认即可)
DATABASE_URL="file:./dev.db"npm run dev服务启动后,访问管理面板进行配置:
http://localhost:3000/admin?token=your-secure-token-here
- 登录 飞书开放平台
- 点击「创建企业自建应用」
- 填写应用名称和描述
- 进入应用,获取 App ID 和 App Secret
在「权限管理」中添加以下权限:
| 权限 | 说明 |
|---|---|
im:message |
获取与发送单聊、群组消息 |
im:message:send_as_bot |
以应用的身份发送消息 |
在「事件订阅」页面:
- 找到「使用长连接接收事件」选项
- 开启 此功能
💡 提示: 使用长连接模式无需配置回调地址,这是本项目的核心优势!
- 在「版本管理与发布」中创建版本
- 提交审核并发布
- 飞书配置: 填入 App ID 和 App Secret,点击「启动连接」
- Dify 配置: 填入 Dify 的 Base URL 和 API Key
- 智能体管理: 添加至少一个智能体
配置完成后,用户可以在飞书中与 Bot 对话:
| 命令 | 说明 |
|---|---|
/help 或 帮助 |
显示帮助信息 |
/agent 或 选择助手 |
切换 AI 智能体 |
/new 或 新对话 |
开始新的对话 |
- 用户在飞书中找到 Bot 并发送消息
- 首次对话会提示选择智能体(如果有多个)
- 选择后即可开始对话
- 发送
/new可重置对话上下文
dify-feishu-bot/
├── src/
│ ├── app/
│ │ ├── admin/ # 管理面板页面
│ │ │ ├── page.tsx # 仪表盘
│ │ │ ├── feishu/ # 飞书配置
│ │ │ ├── dify/ # Dify 配置
│ │ │ ├── agents/ # 智能体管理
│ │ │ └── conversations/ # 会话记录
│ │ └── api/admin/ # 管理 API
│ ├── components/ # UI 组件
│ └── lib/ # 核心逻辑
│ ├── feishu.ts # 飞书 SDK 封装
│ ├── dify.ts # Dify API 客户端
│ ├── config.ts # 配置管理
│ ├── db.ts # 数据库操作
│ └── cards.ts # 卡片消息模板
├── config/
│ └── settings.json # 运行时配置
├── prisma/
│ └── schema.prisma # 数据库模型
└── .env # 环境变量
# 构建
npm run build
# 使用 PM2 启动(必须使用配置文件来加载 .env 环境变量)
pm2 start ecosystem.config.js
# 查看日志
pm2 logs dify-feishu-bot
# 重启服务
pm2 restart dify-feishu-bot
# 停止服务
pm2 stop dify-feishu-bot
⚠️ 重要: PM2 默认不会加载.env文件!必须使用ecosystem.config.js启动,否则ADMIN_TOKEN等环境变量不会生效。
# 1. 复制环境变量配置
cp .env.example .env
# 编辑 .env 设置你的 ADMIN_TOKEN
# 2. 启动服务
docker-compose up -d
# 3. 初始化数据库
docker-compose exec dify-feishu-bot npx prisma db push
# 4. 查看日志
docker-compose logs -f# 构建镜像
docker build -t dify-feishu-bot .
# 运行容器
docker run -d \
--name dify-feishu-bot \
-p 3000:3000 \
-e ADMIN_TOKEN=your-secure-token \
-v $(pwd)/config:/app/config \
-v $(pwd)/prisma:/app/prisma \
--restart unless-stopped \
dify-feishu-bot💡 提示: 配置和数据库文件通过 volume 挂载实现持久化,重启容器不会丢失数据。
A: WebSocket 长连接模式有以下优势:
- 无需公网 IP 或域名
- 无需配置回调 URL
- 本地开发无需内网穿透
- 更简单的部署流程
A: 目前仅支持单聊场景。群聊支持计划在后续版本中添加。
A: 在 Web 管理面板中修改配置后会自动保存。修改飞书配置后需要重新点击「启动连接」。
欢迎贡献代码!请遵循以下步骤:
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
本项目采用 MIT 协议 开源。
如果这个项目对你有帮助,请给一个 ⭐ Star 支持一下!



