Files
University-Playwright-Codeg…/README.md
2025-12-09 16:42:09 +08:00

74 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# University Playwright Codegen Agent
构建于 [Agno](https://docs.agno.com/) 的自动化代码生成代理:输入海外大学官网的根地址,即可生成一份使用 **Playwright** 的 Python 脚本,脚本会抓取各学院/研究生院下的硕士项目网址以及项目中列出的导师Supervisor/Faculty个人信息页面。本项目使用 `uv` 进行依赖管理,`ruff` 做静态检查,`ty` 负责类型检查,并提供了一个基于 Typer 的 CLI。
## Features
-**Agno Agent**:利用 `output_schema` 强制结构化输出,里程碑式地生成 `ScriptPlan` 并将其渲染为可执行脚本。
-**Playwright sampling**:计划生成前会用 Playwright 对站点进行轻量抓取,帮助 Agent 找到关键词与导航策略。
-**Deterministic script template**:脚本模板包含 BFS 爬取、关键词过滤、JSON 输出等逻辑,确保满足“硕士项目 + 导师”需求。
-**uv + ruff + ty workflow**:开箱即用的现代 Python 工具链。
## Getting started
1. **创建虚拟环境并安装依赖**
```bash
uv venv --python 3.12
uv pip install -r pyproject.toml
playwright install # 安装浏览器内核
```
2. **配置大模型 API key**
- OpenAI: `export OPENAI_API_KEY=...`
- Anthropic: `export ANTHROPIC_API_KEY=...`
- 可通过环境变量 `CODEGEN_MODEL_PROVIDER` 在 `openai` 与 `anthropic` 之间切换。
3. **运行 CLI 生成脚本**
```bash
uv run university-agent generate \
"https://www.example.edu" \
--campus "Example Campus" \
--language "English" \
--max-depth 2 \
--max-pages 60
```
运行完成后会在 `artifacts/` 下看到生成的 Playwright 脚本,并在终端展示自动规划的关键词与验证步骤。
4. **执行 Ruff & Ty 检查**
```bash
uv run ruff check
uvx ty check
```
## Project structure
```
├── README.md
├── pyproject.toml
├── src/university_agent
│ ├── agent.py # Agno Agent 配置
│ ├── cli.py # Typer CLI
│ ├── config.py # pydantic Settings
│ ├── generator.py # Orchestration 引擎
│ ├── models.py # 数据模型(请求/计划/结果)
│ ├── renderer.py # ScriptPlan -> Playwright script
│ ├── sampler.py # Playwright 采样
│ ├── templates/
│ │ └── playwright_script.py.jinja
│ └── writer.py # 将脚本写入 artifacts/
└── 任务1.txt
```
## Tips
- `university-agent generate --help` 查看所有 CLI 选项,可选择跳过采样或导出规划 JSON。
- 如果 Agno Agent 需使用其他工具,可在 `agent.py` 中自行扩展自定义 `tool`。
- Playwright 采样在某些环境中需要额外的浏览器依赖,请根据官方提示执行 `playwright install`。
Happy building! 🎓🤖