主 README 聚焦早报 Quick Start,Bot 文档迁至 bot/README.md 并标 experimental。 Co-authored-by: Cursor <cursoragent@cursor.com>
144 lines
4.6 KiB
Markdown
144 lines
4.6 KiB
Markdown
# bot/ — 企微 API 模式智能机器人
|
||
|
||
> **EXPERIMENTAL** — 本模块不在 daily-robots v1 开源支持范围内。
|
||
> 主产品为根目录 **早报推送**(webhook),见 [README](../README.md)。
|
||
> Bot 需独立 venv、企微 API 凭证、常驻进程;问题请自行排查或提 issue 标注 `bot`。
|
||
|
||
在企微里 @ 机器人即可:
|
||
|
||
- **快查**:`trending 10`、`hot 10`、`搜索 react`(本地 skills 数据,秒回)
|
||
- **截图预览**:`preview` / `截图`(基于 `CURSOR_CWD` 启动前端并发图)
|
||
- **通用任务**:任意自然语言需求,由 **Cursor Agent** 执行并回传结果
|
||
|
||
数据层与早报共用 [`shared/skills_data.py`](../shared/skills_data.py)。
|
||
|
||
---
|
||
|
||
## 1. 创建 API 模式机器人
|
||
|
||
1. [企业微信管理后台](https://work.weixin.qq.com/) → **安全与管理** → **管理工具** → **智能机器人** → **创建机器人**
|
||
2. 选择 **API 模式创建** → **使用长连接**
|
||
3. 记录 **Bot ID** 和 **Secret**(Secret 只显示一次,请立即保存)
|
||
4. 设置可见范围,将机器人 **添加到目标群** 或允许成员单聊
|
||
|
||
普通成员路径:工作台 → 智能机器人 → 手动创建 → API 模式 → 长连接
|
||
|
||
---
|
||
|
||
## 2. 启动本地服务
|
||
|
||
```powershell
|
||
cd path\to\daily-robots\bot
|
||
python -m venv .venv
|
||
.\.venv\Scripts\Activate.ps1
|
||
pip install -r requirements.txt
|
||
playwright install chromium
|
||
copy .env.example .env
|
||
# 编辑 .env:WECOM_BOT_ID / WECOM_BOT_SECRET / CURSOR_API_KEY
|
||
python main.py
|
||
```
|
||
|
||
服务需 **常驻运行**(本机、服务器或 Docker)。长连接模式下机器人进程须在线才能收消息。
|
||
|
||
---
|
||
|
||
## 3. 路由模式(ROUTING_MODE)
|
||
|
||
| 模式 | 行为 |
|
||
|------|------|
|
||
| `hybrid`(默认) | `trending`/`hot`/`搜索`/`详情` 走本地快查;其余 @ 消息交给 Cursor |
|
||
| `cursor` | 所有消息都交给 Cursor 执行 |
|
||
| `skills` | 仅本地 skills 快查 |
|
||
|
||
**Cursor 任务示例**(群里发送):
|
||
|
||
```
|
||
@test 总结 trending top10,并推荐 3 个适合前端团队的 skill
|
||
@test 对比 mattpocock/skills 和 obra/superpowers 各有哪些热门 skill
|
||
@test 帮我写一段 npx skills add 的安装说明
|
||
```
|
||
|
||
Cursor 在本机 `CURSOR_CWD` 目录下运行(见 `bot/.env`)。复杂任务可能需要 1–10 分钟,流式消息会显示「Cursor 正在执行任务…」。
|
||
|
||
---
|
||
|
||
## 4. 前端截图预览(API 模式发图)
|
||
|
||
项目路径读取 `.env` 中的 **`CURSOR_CWD`**。机器人会:
|
||
|
||
1. 在 `CURSOR_CWD` 检测 `package.json`,若有 `dev` 脚本则执行 `PREVIEW_DEV_COMMAND`(默认 `npm run dev`)
|
||
2. 等待 `PREVIEW_PORT`(默认 `5173`)就绪,或用 `PREVIEW_URL` 直接访问
|
||
3. Playwright 打开页面并截图
|
||
4. 通过 API 模式 **上传图片 + 回复 image 消息** 到群
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `preview` / `截图` / `预览` | 访问 `http://127.0.0.1:5173/` 并截图 |
|
||
| `preview /login` | 指定路径 |
|
||
| `preview / 3000` | 指定端口 |
|
||
| `preview http://127.0.0.1:8080/` | 指定完整 URL |
|
||
|
||
`.env` 可选配置:
|
||
|
||
```env
|
||
CURSOR_CWD=.
|
||
PREVIEW_PORT=5173
|
||
PREVIEW_URL=http://127.0.0.1:5173/
|
||
PREVIEW_DEV_COMMAND=npm run dev
|
||
PREVIEW_STARTUP_TIMEOUT=120
|
||
```
|
||
|
||
---
|
||
|
||
## 4b. 网页操作(Playwright 步骤引擎)
|
||
|
||
支持三种方式定义操作流程,**无需改 Python 代码**:
|
||
|
||
**1. 自然语言(企微里直接说)**
|
||
|
||
```
|
||
@test 访问登录页,输入账号密码,点击登录后进入主页,点击智能体管理菜单然后截图
|
||
```
|
||
|
||
账号密码从 `.env` 读取(`{{PREVIEW_LOGIN_USER}}` / `{{PREVIEW_LOGIN_PASSWORD}}`),勿在群里发密码。
|
||
|
||
**2. 场景文件 YAML** — 见 `scenarios/`,触发:`@test browser <场景名>`
|
||
|
||
**3. 消息内 DSL** — 以 `browser:` 开头的多行步骤
|
||
|
||
支持的步骤:`goto` · `fill` · `click` · `wait` · `screenshot` · `press`
|
||
|
||
---
|
||
|
||
## 5. 快查命令
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `trending 10` / `趋势 10` | 近期增长榜 Top N(默认 10,最大 30) |
|
||
| `hot 10` / `实时 10` | 实时热度榜 |
|
||
| `all 10` / `总榜 10` | 历史总安装榜 |
|
||
| `搜索 react` / `search tdd` | 关键词搜索 |
|
||
| `详情 find-skills` | 单个 skill 详情 + 安装命令 |
|
||
| `preview` / `截图` | 启动 CURSOR_CWD 前端并截图发群 |
|
||
| `帮助` | 命令列表 |
|
||
|
||
---
|
||
|
||
## 6. 本地测试(无需企微凭证)
|
||
|
||
```powershell
|
||
cd path\to\daily-robots\bot
|
||
python -c "from skills_service import handle_command; print(handle_command('trending 5'))"
|
||
```
|
||
|
||
---
|
||
|
||
## 配置
|
||
|
||
| 文件 | 说明 |
|
||
|------|------|
|
||
| `bot/.env` | `WECOM_BOT_ID`、`WECOM_BOT_SECRET`、`CURSOR_API_KEY` 等 |
|
||
| `.env.example` | 模板 |
|
||
|
||
与根目录 `.env`(早报 webhook)**相互独立**,勿混用。
|