docs: Phase 2 重写 onboarding 文档与示例产出
主 README 聚焦早报 Quick Start,Bot 文档迁至 bot/README.md 并标 experimental。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
442
README.md
442
README.md
@@ -1,338 +1,126 @@
|
|||||||
# skills-hot-daily
|
# daily-robots
|
||||||
|
|
||||||
Skills / GitHub 早报推送 + 企微对话机器人(同一仓库、两套企微接入)。
|
> **Daily Briefing** · **WeCom Push** · **Agent Mode**
|
||||||
|
|
||||||
|
给 AI 工程小团队推送**每日 curated 情报**:skills.sh 榜单、GitHub AI 趋势、国际/国内 RSS,生成叙事化早报并推到企业微信群。
|
||||||
|
|
||||||
|
与 TLDR AI / Ben's Bites 不同,这里专注 **Agent Skills 生态** + **可 fork 的自托管流水线**(不是又一个 email newsletter)。
|
||||||
|
|
||||||
|
**产出示例**:[docs/sample-output/wecom-agent-sample.md](docs/sample-output/wecom-agent-sample.md)(Agent 模式企微版节选)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
1. **Clone** 本仓库
|
||||||
|
2. **安装依赖**:`pip install -r requirements.txt`
|
||||||
|
3. **配置环境**:`copy .env.example .env`
|
||||||
|
4. **填写 webhook**:企微群 → 群机器人 → 添加 → 把 `key=` 写入 `.env`
|
||||||
|
```env
|
||||||
|
WECOM_WEBHOOK_KEY=your-webhook-key
|
||||||
|
```
|
||||||
|
5. **生成并推送**:`.\run-daily.ps1`
|
||||||
|
|
||||||
|
生成文件在 `output/`:
|
||||||
|
|
||||||
|
| 文件 | 说明 |
|
||||||
|
|------|------|
|
||||||
|
| `YYYY-MM-DD.wecom.md` | 企微推送版(主产物) |
|
||||||
|
| `YYYY-MM-DD.md` | 完整归档版 |
|
||||||
|
| `YYYY-MM-DD.data.json` | 结构化数据(供 LLM / 调试) |
|
||||||
|
|
||||||
|
常用变体:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
.\run-daily.ps1 -SkipPush # 只生成
|
||||||
|
python -m daily push output\2026-07-03.wecom.md # 只推送
|
||||||
|
```
|
||||||
|
|
||||||
|
**前置条件**:Python 3.10+、企业微信群机器人 webhook。无需 Bot API 凭证。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agent 模式(推荐)
|
||||||
|
|
||||||
|
默认 `classic` 是分区榜单模板;**推荐 Agent 模式**——导语 + 今日信号 + 精选新闻 + 榜单,全中文叙述。
|
||||||
|
|
||||||
|
```env
|
||||||
|
DAILY_REPORT_MODE=agent
|
||||||
|
CURSOR_API_KEY=cursor_...
|
||||||
|
CURSOR_MODEL=composer-2.5
|
||||||
|
DAILY_CURSOR_CWD=.
|
||||||
|
```
|
||||||
|
|
||||||
|
| 模式 | 环境变量 | 风格 |
|
||||||
|
|------|----------|------|
|
||||||
|
| `classic` | — | 分区榜单 + 模板 |
|
||||||
|
| `editor` | `DAILY_CURSOR_EDITOR=1` | 模板 + LLM 中文化 |
|
||||||
|
| **`agent`** | `DAILY_REPORT_MODE=agent` | **叙事化早报(推荐)** |
|
||||||
|
|
||||||
|
流水线:
|
||||||
|
|
||||||
|
```
|
||||||
|
Python 抓取 → Step1 趋势分析 (.trends.json) → Step2 写企微稿 (.wecom.md) → webhook 分条推送
|
||||||
|
```
|
||||||
|
|
||||||
|
- 规范见 `skills/daily-agent/SKILL.md`
|
||||||
|
- LLM 失败自动回退 `classic`,不影响 `run-daily.ps1`
|
||||||
|
- 无 `CURSOR_API_KEY` 时请用 `classic`,或配置 `DAILY_LLM_API_KEY`(OpenAI 兼容 API)
|
||||||
|
|
||||||
|
定时推送:Windows 任务计划程序每日执行 `run-daily.ps1`,或 cron / `schtasks`。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 自定义 RSS 源
|
||||||
|
|
||||||
|
国际 RSS 列表:`daily/news/feeds.py`
|
||||||
|
国内 RSS 列表:`daily/news/feeds_cn.py`
|
||||||
|
|
||||||
|
在对应文件的 `FEEDS` 列表中增删 URL 即可。常用开关(见 `.env.example`):
|
||||||
|
|
||||||
|
```env
|
||||||
|
DAILY_AI_NEWS=1
|
||||||
|
DAILY_CN_AI_NEWS=1
|
||||||
|
DAILY_AI_NEWS_HOURS=72
|
||||||
|
DAILY_WECOM_AI_NEWS=10
|
||||||
|
DAILY_WECOM_CN_AI_NEWS=8
|
||||||
|
```
|
||||||
|
|
||||||
|
Skills 榜单默认爬 skills.sh 官网(600+ 条);可改为第三方 feed:
|
||||||
|
|
||||||
|
```env
|
||||||
|
# SKILLS_BOARD_SOURCE=feed
|
||||||
|
```
|
||||||
|
|
||||||
|
GitHub 新兴/Topic 榜需 `GITHUB_TOKEN`(见 `.env.example` 注释)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Experimental:`bot/` 企微对话机器人
|
||||||
|
|
||||||
|
同仓库内的 **API 模式智能机器人**(@ 机器人快查 skills、Cursor 任务、Playwright 截图)**不在 v1 开源支持范围内**,需独立 venv 与 `WECOM_BOT_ID` / `SECRET`。
|
||||||
|
|
||||||
|
详见 **[bot/README.md](bot/README.md)**。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 项目结构
|
## 项目结构
|
||||||
|
|
||||||
```
|
```
|
||||||
skills-hot-daily/
|
daily-robots/
|
||||||
├── README.md
|
├── run-daily.ps1 # 生成 + 推送
|
||||||
├── .env.example # 早报 webhook、GitHub 等
|
├── daily/ # 早报主包
|
||||||
├── requirements.txt # 早报 Python 依赖
|
├── shared/skills_data.py # skills feed 共用数据层
|
||||||
├── run-daily.ps1 # 生成 + 推送一条龙
|
├── skills/daily-agent/ # Agent 工作流规范
|
||||||
├── send-wecom.ps1 # 仅推送
|
├── output/ # 生成产物(gitignore)
|
||||||
├── daily/ # 早报 Python 包
|
└── bot/ # experimental
|
||||||
│ ├── __main__.py # python -m daily [generate|push]
|
|
||||||
│ ├── config.py
|
|
||||||
│ ├── generate.py
|
|
||||||
│ ├── report_data.py # JSON 中间层
|
|
||||||
│ ├── cursor_editor.py # Cursor 编辑层
|
|
||||||
│ ├── llm_client.py
|
|
||||||
│ ├── localize.py # 仅中文化(Tier A)
|
|
||||||
│ ├── format_wecom.py
|
|
||||||
│ ├── webhook.py
|
|
||||||
│ ├── news/ # 国际 AI 时讯 RSS
|
|
||||||
│ │ ├── feeds.py
|
|
||||||
│ │ └── fetch.py
|
|
||||||
│ └── github/
|
|
||||||
│ ├── auth.py
|
|
||||||
│ ├── search.py
|
|
||||||
│ └── trending.py
|
|
||||||
├── output/ # YYYY-MM-DD.md / .wecom.md / .data.json / .editorial.json
|
|
||||||
├── skills/daily-editor/ # 早报 Cursor 编辑 Skill
|
|
||||||
│ └── SKILL.md
|
|
||||||
├── logs/
|
|
||||||
├── .cache/
|
|
||||||
└── bot/ # 企微 API 模式对话机器人(独立 venv)
|
|
||||||
├── main.py
|
|
||||||
├── skills_service.py
|
|
||||||
└── scenarios/
|
|
||||||
```
|
```
|
||||||
|
|
||||||
| 模块 | 配置文件 | 启动方式 |
|
|
||||||
|------|----------|----------|
|
|
||||||
| **早报推送** | 根目录 `.env`(`WECOM_WEBHOOK_KEY` 等) | `.\run-daily.ps1` |
|
|
||||||
| **对话 Bot** | `bot/.env`(`WECOM_BOT_ID` / `SECRET` 等) | `cd bot` → `python main.py` |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 一、早报推送
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd d:\LY\test\tech\skills-hot-daily
|
|
||||||
pip install -r requirements.txt
|
|
||||||
copy .env.example .env
|
|
||||||
.\run-daily.ps1
|
|
||||||
```
|
|
||||||
|
|
||||||
- 生成:`output/YYYY-MM-DD.md`(完整版)、`output/YYYY-MM-DD.wecom.md`(企微短版)
|
|
||||||
- 仅生成:`.\run-daily.ps1 -SkipPush`
|
|
||||||
- 仅推送:`python -m daily push output\2026-06-25.wecom.md`
|
|
||||||
|
|
||||||
**Webhook 配置**:企微群 → 群机器人 → 添加,将 `key=` 后的值写入项目根 `.env`:
|
|
||||||
|
|
||||||
```env
|
|
||||||
WECOM_WEBHOOK_KEY=your-key
|
|
||||||
```
|
|
||||||
|
|
||||||
**GitHub 数据源**(见 `.env.example`):
|
|
||||||
|
|
||||||
| 来源 | 说明 |
|
|
||||||
|------|------|
|
|
||||||
| GitHub Trending | `GITHUB_TRENDING_MODE=scrape` 或 `api` |
|
|
||||||
| 新兴 / Topic | Search API,需 `GITHUB_TOKEN` |
|
|
||||||
| Release | 可选 `GITHUB_REPOS=owner/repo` |
|
|
||||||
|
|
||||||
**国际 AI 时讯**(RSS,见 `daily/news/feeds.py`):
|
|
||||||
|
|
||||||
| 类别 | 覆盖 |
|
|
||||||
|------|------|
|
|
||||||
| 厂商官方 | Anthropic、OpenAI、Google、Meta、Microsoft、Mistral、Cursor 等 |
|
|
||||||
| Agent / LLM 开发者 | LangChain、LlamaIndex、Hugging Face、Copilot 等 |
|
|
||||||
| 综合科技媒体 | The Verge、TechCrunch、Ars、Wired、MIT TR 等 |
|
|
||||||
| Newsletter | Ben's Bites、Latent Space、Simon Willison、TLDR AI 等 |
|
|
||||||
| 研究 / 论文 | arXiv cs.CL/AI/LG、HF Papers |
|
|
||||||
| 社区讨论 | HN、Reddit r/LocalLLaMA / ClaudeAI / ML 等 |
|
|
||||||
|
|
||||||
环境变量:`DAILY_AI_NEWS=1` · `DAILY_CN_AI_NEWS=1` · `DAILY_AI_NEWS_HOURS=72` · `DAILY_WECOM_AI_NEWS=10` · `DAILY_WECOM_CN_AI_NEWS=8`
|
|
||||||
|
|
||||||
**国内 AI 时讯**(RSS,见 `daily/news/feeds_cn.py`):
|
|
||||||
|
|
||||||
| 类别 | 覆盖 |
|
|
||||||
|------|------|
|
|
||||||
| AI 专业媒体 | 量子位、InfoQ 中文 |
|
|
||||||
| 综合科技 | 36氪、雷锋网、Google News 中文 |
|
|
||||||
| 开发者社区 | 掘金(标题 AI 关键词过滤) |
|
|
||||||
|
|
||||||
|
|
||||||
### 生成架构(Tier B · Cursor 编辑层)
|
|
||||||
|
|
||||||
早报默认走 **Python 抓取 + 模板渲染**;可选开启 Cursor 做「编辑」:
|
|
||||||
|
|
||||||
```
|
|
||||||
抓取数据 → output/日期.data.json → Cursor 读 Skill 写 editorial → 模板填字 → .md / .wecom.md
|
|
||||||
```
|
|
||||||
|
|
||||||
| 文件 | 说明 |
|
|
||||||
|------|------|
|
|
||||||
| `output/YYYY-MM-DD.data.json` | 结构化榜单(供 LLM 输入) |
|
|
||||||
| `output/YYYY-MM-DD.editorial.json` | Cursor 输出的主题、速览、中文描述 |
|
|
||||||
| `skills/daily-editor/SKILL.md` | 编辑规范(语气、JSON 格式) |
|
|
||||||
|
|
||||||
```env
|
|
||||||
# 开启 Tier B(需 CURSOR_API_KEY 或 DAILY_LLM_API_KEY)
|
|
||||||
DAILY_CURSOR_EDITOR=1
|
|
||||||
```
|
|
||||||
|
|
||||||
- 开启后:**一次 LLM 调用** 生成 `theme_line` + `highlights` + 全部中文描述
|
|
||||||
- 关闭时(默认):规则主题 + `DAILY_ZH_DESC` 仅中文化描述
|
|
||||||
- LLM 失败自动回退规则模式,不影响推送
|
|
||||||
|
|
||||||
### 生成架构(Agent 工作流 · 推荐)
|
|
||||||
|
|
||||||
若觉得模板版「榜单堆砌」不友好,可改用 **Agent 三步流水线**:
|
|
||||||
|
|
||||||
```
|
|
||||||
Python 抓取 → Step1 趋势分析 → Step2 叙事写稿 → Python 分条推送企微
|
|
||||||
(.trends.json) (.wecom.md)
|
|
||||||
```
|
|
||||||
|
|
||||||
| 模式 | 环境变量 | 企微版风格 |
|
|
||||||
|------|----------|------------|
|
|
||||||
| `classic`(默认) | — | 分区榜单 + 模板 |
|
|
||||||
| `editor` | `DAILY_CURSOR_EDITOR=1` | 模板 + LLM 中文化 |
|
|
||||||
| `agent` | `DAILY_REPORT_MODE=agent` | **导语 + 信号 + 精选**,全中文叙述 |
|
|
||||||
|
|
||||||
```env
|
|
||||||
DAILY_REPORT_MODE=agent
|
|
||||||
DAILY_CURSOR_CWD=d:\LY\diy\skills-hot-daily # 早报 LLM 工作目录(与 bot 的 CURSOR_CWD 独立)
|
|
||||||
```
|
|
||||||
|
|
||||||
| 文件 | 说明 |
|
|
||||||
|------|------|
|
|
||||||
| `output/YYYY-MM-DD.trends.json` | Step1 趋势分析结果 |
|
|
||||||
| `skills/daily-agent/SKILL.md` | Agent 工作流规范 |
|
|
||||||
|
|
||||||
- 完整版 `YYYY-MM-DD.md` 仍为数据表格归档;企微版由 Agent 直接写 Markdown
|
|
||||||
- Agent 失败自动回退 `classic`,不影响 `run-daily.ps1`
|
|
||||||
|
|
||||||
定时推送:Windows 任务计划程序或 `/loop 1d` 执行 `run-daily.ps1`。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 二、可对话 Skills 助手(企业微信智能机器人)
|
|
||||||
|
|
||||||
在企微里 @ 机器人即可:
|
|
||||||
- **快查**:`trending 10`、`hot 10`、`搜索 react`(本地 skills 数据,秒回)
|
|
||||||
- **截图预览**:`preview` / `截图`(基于 `.env` 的 `CURSOR_CWD` 启动前端并发图)
|
|
||||||
- **通用任务**:任意自然语言需求,由 **Cursor Agent** 执行并回传结果
|
|
||||||
|
|
||||||
### 1. 创建 API 模式机器人
|
|
||||||
|
|
||||||
1. [企业微信管理后台](https://work.weixin.qq.com/) → **安全与管理** → **管理工具** → **智能机器人** → **创建机器人**
|
|
||||||
2. 选择 **API 模式创建** → **使用长连接**
|
|
||||||
3. 记录 **Bot ID** 和 **Secret**(Secret 只显示一次,请立即保存)
|
|
||||||
4. 设置可见范围,将机器人 **添加到目标群** 或允许成员单聊
|
|
||||||
|
|
||||||
普通成员路径:工作台 → 智能机器人 → 手动创建 → API 模式 → 长连接
|
|
||||||
|
|
||||||
### 2. 启动本地服务
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd d:\LY\test\tech\skills-hot-daily\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` 目录下运行,默认 `d:\LY\test\tech`。复杂任务可能需要 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=d:\LY\test\tech
|
|
||||||
PREVIEW_PORT=5173
|
|
||||||
PREVIEW_URL=http://127.0.0.1:5173/
|
|
||||||
PREVIEW_DEV_COMMAND=npm run dev
|
|
||||||
PREVIEW_STARTUP_TIMEOUT=120
|
|
||||||
```
|
|
||||||
|
|
||||||
若 `CURSOR_CWD` 下暂无前端项目,可先手动启动 dev server,或设置 `PREVIEW_URL` 指向已运行地址。
|
|
||||||
|
|
||||||
### 4b. 网页操作(Playwright 步骤引擎)
|
|
||||||
|
|
||||||
支持三种方式定义操作流程,**无需改 Python 代码**:
|
|
||||||
|
|
||||||
**1. 自然语言(企微里直接说)**
|
|
||||||
|
|
||||||
```
|
|
||||||
@test 访问登录页,输入账号密码,点击登录后进入主页,点击智能体管理菜单然后截图
|
|
||||||
```
|
|
||||||
|
|
||||||
账号密码从 `.env` 读取(`{{PREVIEW_LOGIN_USER}}` / `{{PREVIEW_LOGIN_PASSWORD}}`),勿在群里发密码。
|
|
||||||
|
|
||||||
**2. 场景文件 YAML**
|
|
||||||
|
|
||||||
`bot/scenarios/xiaobao-agent-manage.yaml` 示例:
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
name: xiaobao-agent-manage
|
|
||||||
steps:
|
|
||||||
- goto: /login
|
|
||||||
- fill:
|
|
||||||
field: 账号
|
|
||||||
value: "{{PREVIEW_LOGIN_USER}}"
|
|
||||||
- fill:
|
|
||||||
field: 密码
|
|
||||||
value: "{{PREVIEW_LOGIN_PASSWORD}}"
|
|
||||||
- click: 登录
|
|
||||||
- wait:
|
|
||||||
url: "**/app/**"
|
|
||||||
- click: 智能体管理
|
|
||||||
- wait: 1500
|
|
||||||
- screenshot
|
|
||||||
```
|
|
||||||
|
|
||||||
触发:`@test browser xiaobao-agent-manage`
|
|
||||||
|
|
||||||
场景搜索路径:`bot/scenarios/`、`CURSOR_CWD/.browser-scenarios/`、环境变量 `BROWSER_SCENARIOS_DIR`。
|
|
||||||
|
|
||||||
**3. 消息内 DSL**
|
|
||||||
|
|
||||||
```
|
|
||||||
browser:
|
|
||||||
goto /login
|
|
||||||
fill 账号 {{PREVIEW_LOGIN_USER}}
|
|
||||||
fill 密码 {{PREVIEW_LOGIN_PASSWORD}}
|
|
||||||
click 登录
|
|
||||||
click 智能体管理
|
|
||||||
screenshot
|
|
||||||
```
|
|
||||||
|
|
||||||
**支持的步骤**:`goto` · `fill` · `click` · `wait` · `screenshot` · `press`
|
|
||||||
|
|
||||||
`.env` 登录与场景配置:
|
|
||||||
|
|
||||||
```env
|
|
||||||
PREVIEW_LOGIN_USER=test_account
|
|
||||||
PREVIEW_LOGIN_PASSWORD=your_password
|
|
||||||
# BROWSER_DEFAULT_SCENARIO=xiaobao-agent-manage
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. 支持的快查命令
|
|
||||||
|
|
||||||
| 命令 | 说明 |
|
|
||||||
|------|------|
|
|
||||||
| `trending 10` / `趋势 10` | 近期增长榜 Top N(默认 10,最大 30) |
|
|
||||||
| `hot 10` / `实时 10` | 实时热度榜 |
|
|
||||||
| `all 10` / `总榜 10` | 历史总安装榜 |
|
|
||||||
| `搜索 react` / `search tdd` | 关键词搜索 |
|
|
||||||
| `详情 find-skills` | 单个 skill 详情 + 安装命令 |
|
|
||||||
| `preview` / `截图` | 启动 CURSOR_CWD 前端并截图发群 |
|
|
||||||
| `帮助` | 命令列表 |
|
|
||||||
|
|
||||||
自然语言(非显式快查命令)会交给 **Cursor** 处理,例如 `@test 查 trending 并写推荐` 。
|
|
||||||
|
|
||||||
### 6. 本地测试(无需企微凭证)
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
cd d:\LY\test\tech\skills-hot-daily\bot
|
|
||||||
python -c "from skills_service import handle_command; print(handle_command('trending 5'))"
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 其他推送方案
|
|
||||||
|
|
||||||
| 方案 | 适用场景 | 复杂度 |
|
|
||||||
|------|----------|--------|
|
|
||||||
| **群机器人 webhook** | 推送到固定群 | 低 |
|
|
||||||
| **应用消息 API** | 推送给指定成员/部门 | 中(需 corp_id、secret、agent_id) |
|
|
||||||
| **邮件 + 企业微信邮箱** | 已有 SMTP | 中 |
|
|
||||||
| **PushPlus / Server酱** | 个人微信中转 | 低(第三方) |
|
|
||||||
|
|
||||||
### 应用消息 API(简要)
|
|
||||||
|
|
||||||
适合「推送给某个人」而非群聊。需在 [企业微信管理后台](https://work.weixin.qq.com/) 创建自建应用,调用:
|
|
||||||
|
|
||||||
`POST https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=TOKEN`
|
|
||||||
|
|
||||||
消息体支持 `text` / `markdown` / `news` 等。需先 `gettoken` 再发消息,并维护 access_token 缓存。
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 注意事项
|
## 注意事项
|
||||||
|
|
||||||
- Webhook **不要提交到 Git**,只用环境变量
|
- Webhook / API Key **勿提交 Git**,只用 `.env`
|
||||||
- 企业微信 markdown 为**子集**(不支持完整 GitHub 表格语法时可改为文本列表)
|
- 企微 markdown 为子集;超长报告**自动分条推送**(默认 4096 bytes/条)
|
||||||
- 单条消息约 **4096 字节** 上限,`send-wecom.ps1` 已做截断
|
- 完整配置项见 [`.env.example`](.env.example)
|
||||||
|
- 开发测试:`pip install -r requirements-dev.txt` → `pytest`
|
||||||
|
|||||||
143
bot/README.md
Normal file
143
bot/README.md
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
# 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)**相互独立**,勿混用。
|
||||||
35
docs/sample-output/wecom-agent-sample.md
Normal file
35
docs/sample-output/wecom-agent-sample.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<!-- 示例:Agent 模式企微早报节选,日期 2026-07-03 -->
|
||||||
|
📰 **早报 · 2026-07-03**
|
||||||
|
> ⏱ 09:30 (UTC+8) · 数据截至 2026-07-02
|
||||||
|
|
||||||
|
> remotion-render 以 21549 次安装稳坐 Skills Trending 榜首,halt-catch-fire 五件套把「TSX 直出 MP4」推到台前。GitHub 侧 openclaw 仍以 381.5K star 居 Trending 第一;新闻头条则是 OpenAI 拟向特朗普政府让渡 AI 繁荣 5% 分成——多媒体 skill 装机、本地 Agent 开源栈与 AI 治理议题同日撞屏。
|
||||||
|
|
||||||
|
🎯 **代码出片霸榜,Agent基建共振**
|
||||||
|
|
||||||
|
💡 **今日信号**
|
||||||
|
> 🔥 Skills Hot:xixu-me/skills 12 件套新占 Top10 前十,含 xdrop、openclaw-secure-linux-cloud 等开发者工具簇
|
||||||
|
> 📦 Skills:较昨日 Trending Top15 新入 7 条,飞书 lark-approval、lark-wiki 等办公 skill 批量涌入
|
||||||
|
> 🐙 GitHub:affaan-m/ECC 225.2K star 新入 Trending #2,面向 Claude Code/Codex/Cursor 的 Agent harness 优化成显学
|
||||||
|
> 🌱 GitHub:langflow、dify 新入 Trending Top10,可视化 Agent 工作流平台与 DeepSpec 推测解码基建各据一角
|
||||||
|
> 📰 时讯:Anthropic 搁置已久的 Fable 5 获准回归,模型内容政策与 Zuckerberg「Agent 进展慢于预期」形成对照
|
||||||
|
|
||||||
|
📦 **今日首推**
|
||||||
|
`npx skills add halt-catch-fire/skills/remotion-render`
|
||||||
|
> Trending #1、21549 安装;5 skill 集群覆盖 remotion-render 到 ai-video-generation,把 React/Remotion 组件程序化渲染 MP4 做成默认可装工作流。
|
||||||
|
|
||||||
|
🌍 **国际 AI · 精选 10**
|
||||||
|
1. [OpenAI拟向特朗普政府让渡AI繁荣5%分成](https://www.theverge.com/ai-artificial-intelligence/960588/openai-government-5-percent-stake-trump) — The Verge 头条:头部模型公司探讨向政府让渡 AI 收益分成,商业化与治理边界被推上舆论前台
|
||||||
|
2. [Anthropic搁置已久的Fable 5获准回归](https://www.theverge.com/ai-artificial-intelligence/958964/anthropic-claude-fable-5-is-back) — 经数周协商后,此前被搁置的 Claude Fable 5 内容政策模型重新获准上线
|
||||||
|
3. [Zuckerberg称AI Agent进展慢于预期](https://techcrunch.com/2026/07/02/mark-zuckerberg-tells-staff-that-ai-agents-havent-progressed-as-quickly-as-hed-hoped/) — Meta 内部会议透露,Agent 落地节奏未达此前预期
|
||||||
|
|
||||||
|
🇨🇳 **国内 AI · 精选 8**
|
||||||
|
1. [让Agent越用越强:AReaL 2.0开源,打造面向自演进智能体的RL基础设施](https://www.qbitai.com/2026/07/442134.html) — 量子位:面向自演进 Agent 的 RL 训练基建开源
|
||||||
|
2. [Agent Loop 深度调研:把决定权交给模型的一次换代,为什么发生在现在](https://juejin.cn/post/7657771483503018036) — 掘金长文梳理 Agent Loop 架构演进
|
||||||
|
|
||||||
|
📈 **Skills Trending Top 9**
|
||||||
|
1. [**halt-catch-fire/skills** · 5 skills · **21.5K–21.5K**](https://www.skills.sh/halt-catch-fire/skills/remotion-render)
|
||||||
|
> 用 inference.sh 将 Remotion 组件代码直接渲染为 MP4,可配分辨率帧率时长,适合程序化视
|
||||||
|
2. [**find-skills**](https://www.skills.sh/vercel-labs/skills/find-skills) · `vercel-labs/skills` · **18.0K**
|
||||||
|
> 用户询问如何做某事或寻找能力扩展时,帮助发现并安装合适的 Agent Skill。
|
||||||
|
|
||||||
|
<!-- 完整版还包含 Hot 榜、GitHub Trending/新兴/Topic 等分区,见本地 output/ -->
|
||||||
Reference in New Issue
Block a user