# 钉钉机器人对接千问 **Repository Path**: yrjlw/ding ## Basic Information - **Project Name**: 钉钉机器人对接千问 - **Description**: 钉钉机器人对接千问 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-25 - **Last Updated**: 2026-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 钉钉机器人对接通义千问 本机/内网运行:钉钉 Stream 收消息,通义千问回答,短期记忆存在本机 MySQL。 默认数据库:`127.0.0.1:3306` / 库名 `ding_qwen` / 账号 `root` / 密码 `120724.x` ## 先建库 本机 MySQL 已启动时,执行一次: ```sql CREATE DATABASE IF NOT EXISTS ding_qwen DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 容器要连宿主机 MySQL 时,还需要允许非 localhost 登录(Docker 进来的不是 `127.0.0.1`): ```sql ALTER USER 'root'@'%' IDENTIFIED BY '120724.x'; GRANT ALL PRIVILEGES ON ding_qwen.* TO 'root'@'%'; FLUSH PRIVILEGES; ``` 如果没有 `'root'@'%'`,先执行: ```sql CREATE USER 'root'@'%' IDENTIFIED BY '120724.x'; GRANT ALL PRIVILEGES ON ding_qwen.* TO 'root'@'%'; FLUSH PRIVILEGES; ``` MySQL 的 `bind-address` 需允许外部连接(常见为 `0.0.0.0`),并确保 3306 端口可从 Docker 访问。 表会在应用首次启动时由 Hibernate 自动创建,也可手动执行 `src/main/resources/schema.sql`。 ## 线上发布(compose + JAR) 服务器上的目录固定为(JAR 和 compose 放同一层): ```text ~/docker/ding/ docker-compose.ding-qwen.yml Dockerfile ding-qwen-1.0.0.jar ``` 先确认 JAR 在: ```bash ls -lh ~/docker/ding/ding-qwen-1.0.0.jar ``` 应约为 69MB。没有这个文件时,从开发机拷过去: ```powershell scp d:\music\ding\jar\ding-qwen-1.0.0.jar luobo@服务器IP:~/docker/ding/ding-qwen-1.0.0.jar ``` 然后再: ```bash cd ~/docker/ding docker compose -f docker-compose.ding-qwen.yml up -d --build ``` ## 本机 / 服务器运行 ```powershell docker compose -f docker-compose.ding-qwen.yml up -d --build docker compose -f docker-compose.ding-qwen.yml ps docker compose -f docker-compose.ding-qwen.yml logs -f docker compose -f docker-compose.ding-qwen.yml down ``` 容器通过 `host.docker.internal` 连接你本机已启动的 MySQL,不在容器里再起数据库。 健康检查:http://localhost:8080/health ## 钉钉与千问 1. [钉钉开发者后台](https://open-dev.dingtalk.com/) 创建企业内部应用,机器人消息接收选 **Stream** 2. [阿里云百炼](https://bailian.console.aliyun.com/) 创建 API Key 3. 发布应用后,单聊搜索机器人或拉进群 ## 使用方式 - 发文字:按最近对话回答(默认 AI 卡片流式打字机效果) - 只发图片:回复「已收到图片,请告诉我你想了解什么」 - 再提问 / 图文同发:先用 `qwen-vl-max` 读图提取,再用 `qwen3.8-max` 深度解答;同一会话图片不变时会复用读图缓存,不再重复调用 VL - 单发 `1`:开启新一轮对话(清空当前会话记忆) ## 流式回复 默认开启钉钉 **AI Markdown 卡片** 流式输出(内置模板,无需自建)。 1. 开发者后台 → 应用 → **权限管理**,开通并申请: - `Card.Instance.Write`(创建/投放卡片) - `Card.Streaming.Write`(流式更新) 2. 发布应用后重新部署本服务 3. 若未开通权限,会自动回退:先发「正在思考…」,再发完整答案 关闭流式:环境变量 `DINGTALK_STREAMING_ENABLED=false` ## 配置说明 | 项 | 默认值 | |----|--------| | MySQL | `127.0.0.1:3306` / `ding_qwen` / `root` / `120724.x` | | 容器连库 | `MYSQL_HOST=host.docker.internal` | | 文本模型 | `qwen3.8-max` | | 视觉模型 | `qwen-vl-max` | | 摘要模型 | `qwen-plus`(滚动压缩旧对话) | | 流式回复 | 开启(内置 AI Markdown 卡片) | | 记忆 | 最近 10 轮原文 + 更早内容滚动摘要;空闲 1 天清理 | | 新开对话 | 单发 `1` |