English | 中文
将 Claude Code 接入飞书,通过飞书聊天即可使用 Claude Code 的全部能力 —— 执行命令、读写文件、搜索代码、调用 MCP 工具等。
- 通过飞书消息直接与 Claude Code CLI 交互
- 自动维护对话上下文(session),支持多轮对话
- 实时显示工具调用状态(正在执行什么命令、读取什么文件)
- 自动检测并发送 Claude 生成的图片/视频/音频文件
- 支持动态切换工作目录(消息中说"在 ~/project 下...")
在飞书中发送长时间任务,不阻塞对话:
后台 分析整个项目的代码质量并写报告
后台列表 # 查看所有后台任务
后台停止 <id> # 终止指定任务
使用 cron 表达式设置定时任务,自动执行并推送结果到飞书:
定时 0 8 * * * 总结今日AI新闻 # 每天早上8点执行
定时列表 # 查看所有定时任务
取消定时 <id> # 取消指定任务
让 Bot 记住重要信息,在后续对话中自动注入相关上下文:
记住 项目Alpha用React+TypeScript,部署在Vercel上
搜索记忆 React # 搜索已保存的记忆
记忆列表 # 查看所有记忆
删除记忆 <id> # 删除指定记忆
启动多个 Claude Agent 协作完成复杂任务:
多agent 研究一下2025年AI Agent最新趋势
多agent research 对比分析几种前端框架
多agent feature 给项目添加用户认证功能
多agent review 审查最近的代码变更
支持三种工作流:
| 工作流 | 模式 | Agent 组合 |
|---|---|---|
research |
Pipeline(并行研究 + 综合) | 研究员 x 2 → 综合者 |
feature |
顺序执行 | 规划师 → 开发者 → 审查员 |
review |
顺序执行 | 审查员 → 综合者 |
重置 / reset / clear # 重置对话上下文
停止 / stop / cancel # 终止当前执行的任务
飞书 ←WebSocket→ Bot Server ←spawn→ Claude Code CLI
│
├── 对话管理 (session 复用)
├── 后台任务 (异步执行)
├── 定时调度 (node-cron)
├── 记忆系统 (本地文件)
└── 多Agent编排 (pipeline/parallel/sequential)
关键设计决策:
- 使用 Claude Code CLI(
claude -p)而非 Anthropic API,天然获得所有工具能力和 MCP 支持 - WebSocket 长连接,无需公网 IP 或域名
- 消息去重 + 过期消息跳过,防止重复执行
- Session 自动过期(2小时无活动),避免上下文膨胀
- Runtime: Node.js + TypeScript (ESM)
- 飞书 SDK:
@larksuiteoapi/node-sdk(WebSocket 长连接) - AI: Claude Code CLI(通过
child_process.spawn调用) - 调度:
node-cron - 构建:
tsup(打包)/tsx(开发)
- 已安装 Claude Code CLI(
claude命令可用) - 已安装 Node.js 18+
- 已创建飞书自建应用(开发者后台)
- 创建自建应用,获取
App ID和App Secret - 开启权限:
im:message(接收消息)im:message:send_as_bot(发送消息)im:resource(上传图片/文件)
- 事件订阅 → 选择「使用长连接接收事件」
- 订阅事件:
im.message.receive_v1 - 发布应用版本
git clone https://github.com/crawfordxx/claude-feishu-bot.git
cd claude-feishu-bot
npm installcp .env.example .env编辑 .env:
FEISHU_APP_ID=cli_your_app_id # 飞书应用 App ID
FEISHU_APP_SECRET=your_app_secret # 飞书应用 App Secret
DEFAULT_WORKING_DIR=/path/to/workspace # Claude 默认工作目录
CLAUDE_MODEL=sonnet # Claude 模型 (sonnet/opus/haiku)# 开发模式
npm run dev
# 生产模式
npm run build
npm start# 1. 复制并编辑 plist 模板
cp com.feishu-claude-bot.plist.example ~/Library/LaunchAgents/com.feishu-claude-bot.plist
# 2. 编辑 plist,填入你的路径和凭据
vim ~/Library/LaunchAgents/com.feishu-claude-bot.plist
# 3. 加载服务
launchctl load ~/Library/LaunchAgents/com.feishu-claude-bot.plist
# 4. 查看状态
launchctl list | grep feishu-claude-bot| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
FEISHU_APP_ID |
是 | - | 飞书应用 App ID |
FEISHU_APP_SECRET |
是 | - | 飞书应用 App Secret |
DEFAULT_WORKING_DIR |
否 | 当前目录 | Claude 默认工作目录 |
CLAUDE_MODEL |
否 | sonnet |
Claude 模型 |
CLAUDE_CLI_PATH |
否 | claude |
Claude CLI 路径 |
MAX_CLAUDE_TIMEOUT_MS |
否 | 600000 |
单次任务超时(10分钟) |
MAX_BACKGROUND_TIMEOUT_MS |
否 | 3600000 |
后台任务超时(1小时) |
MAX_CONCURRENT_AGENTS |
否 | 5 |
多Agent并发数 |
BOT_DATA_DIR |
否 | ~/.feishu-bot |
数据存储目录 |
src/
├── index.ts # 入口,启动 WebSocket 连接
├── config.ts # 配置管理(环境变量)
├── feishu/
│ ├── client.ts # 飞书 SDK 客户端
│ ├── handler.ts # 消息处理 & 命令路由
│ └── sender.ts # 发送文本/图片/文件
├── agent/
│ ├── claude-cli.ts # Claude CLI 封装(spawn + 流式解析)
│ ├── conversation.ts # 对话状态管理
│ ├── orchestrator.ts # 多Agent编排引擎
│ └── background.ts # 后台任务管理
├── scheduler/
│ ├── cron.ts # 定时任务调度
│ └── store.ts # 定时任务持久化
└── memory/
├── store.ts # 记忆存储(文件系统)
└── search.ts # 记忆检索 & 上下文注入
- 本项目使用
--dangerously-skip-permissions运行 Claude Code,意味着 Claude 可以不经确认执行任何操作 - 建议仅用于个人使用,不要在公开群聊中部署
- 敏感信息(API 密钥等)通过环境变量注入,不要提交
.env文件
MIT