根因分析: - P0: index-stream.js 导入了不存在的 handleMessage (应为 routeMessage), 且 EventEmitter 回调的 return 值被忽略导致无法 ACK 消息 - P1: LLM 调用无 try-catch 隔离,失败时阻断消息接收 - P2: .env.example 不存在,GITHUB_TOKEN 格式无文档说明 修复方案: - 重写 index-stream.js: 自包含、独立 try-catch、socketCallBackResponse ACK - 创建 .env.example: 文档化所有 10 个环境变量 - 修复 .gitignore: 添加 node_modules/ - 更新 ecosystem.config.js: 指向 index-stream.js, 进程名 dingtalk-stream - 更新 package.json: 添加 @notionhq/client, 修正 main 和 start 脚本 - 更新 README.md: 反映当前 Stream 模式架构 Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| conversations | ||
| data | ||
| dingtalk | ||
| knowledge-base | ||
| loop | ||
| pca | ||
| portrait | ||
| public | ||
| quality | ||
| scheduler | ||
| sync | ||
| webhook | ||
| .env.example | ||
| .gitignore | ||
| README.md | ||
| broadcast-generator.js | ||
| config.json | ||
| conversation-manager.js | ||
| dingtalk-api.js | ||
| dingtalk-event-handler.js | ||
| dingtalk-webhook-v3.js | ||
| ecosystem.config.js | ||
| git-helper.js | ||
| github-bridge.js | ||
| index-stream.js | ||
| index.js | ||
| index.js.bak.phase7 | ||
| llm-engine.js | ||
| message-router.js | ||
| message-router.js.bak.phase7 | ||
| notion-test-nossl.js | ||
| notion-test.js | ||
| package-lock.json | ||
| package.json | ||
| server.js | ||
| setup-phase1-phase2.js | ||
| syslog-parser.js | ||
| syslog-receiver.js | ||
| test-stream.js | ||
README.md
钉钉AI人格体「秋秋」· HoloLake dingtalk-bot
📋 项目简介
钉钉AI人格体「秋秋」,运行于钉钉 Stream 模式。在钉钉群内被 @秋秋 时,接收消息并调用 LLM 生成人格化回复,同时将消息记录写入 Notion SYSLOG 数据库。
🏗️ 系统架构
- 运行模式:钉钉 Stream 模式(dingtalk-stream SDK,长连接)
- 进程管理:pm2,进程名
dingtalk-stream - 入口文件:
index-stream.js - 错误处理:LLM/Notion 调用失败时降级为固定回复,不影响消息接收主流程
📁 文件结构
| 文件 | 作用 |
|---|---|
| index-stream.js | Stream 模式主入口(接收消息 → AI回复 → Notion写入) |
| package.json | 依赖声明 |
| ecosystem.config.js | pm2 进程配置 |
| .env.example | 环境变量模板(不含真实值) |
| .gitignore | Git 忽略规则 |
| README.md | 本说明文档 |
🚀 快速开始
1. 安装依赖
cd dingtalk-bot
npm install
2. 配置环境变量
cp .env.example .env
# 编辑 .env 填入真实密钥
3. 启动(开发)
node index-stream.js
4. 启动(生产 · pm2)
pm2 start ecosystem.config.js --env production
pm2 logs dingtalk-stream -f --lines 0
🔄 部署流程
cd /opt/guanghulab-dingtalk/dingtalk-bot
git pull origin main
npm install
pm2 restart dingtalk-stream
pm2 logs dingtalk-stream -f --lines 0
🔑 环境变量说明
参见 .env.example 文件,真实密钥存储于服务器 /opt/guanghulab-dingtalk/dingtalk-bot/.env。