docs: add skills documentation and system docs

This commit is contained in:
陈海富
2026-01-30 02:48:41 +08:00
parent 20fe461bcd
commit d0b4810da5
11 changed files with 1204 additions and 0 deletions

View File

@@ -0,0 +1,254 @@
# CFSpider 学习系统说明
## 系统架构
CFSpider 拥有像真人一样的学习和记忆系统,可以不断进化和提升。
```
用户操作请求
技能匹配(是否已学会)
执行操作
记录结果(成功/失败)
学习记忆系统 ←→ 技能系统
永久保存到磁盘
```
## 学习记忆系统
### 记忆类型
- **成功经验**: 记录成功的操作方法
- **失败教训**: 记录失败的操作,避免重复
- **操作技巧**: 从多次操作中总结的技巧
### 记忆强度
- **100-80**: 非常清晰,随时能想起来
- **80-60**: 清晰记忆,经常使用
- **60-30**: 偶尔想不起来
- **30-10**: 很难想起来,需要提示
- **10-5**: 快忘了,但还有一点印象
- **< 5**: 几乎忘了但永远不会真正删除
### 遗忘曲线
- 每天自动衰减 3-8 点强度随机
- 情绪化记忆失败教训衰减速度减半
- 经常使用的记忆衰减更慢
- 强度很低的记忆有 5% 概率突然想起来
### 记忆强化
- 每次成功使用 +5 点强度
- 克服困难从失败到成功+15
- 情绪化事件特别成功或失败标记为难忘
- 突然想起来 +30 印象更深
### 永久保存
- 所有记忆永久保存无容量限制
- 文件位置: `%APPDATA%/cfspider-browser/learning-memory.json`
- 30% 概率渐进保存每次 1-3
- 强度很低的记忆也保留可能被唤醒
## 技能系统
### 技能来源
1. **内置技能**
- 预定义的常见操作流程
- 由开发者编写经过优化
- 示例: 必应搜索点击搜索结果
2. **学习技能**
- 从实际操作中自动生成
- 条件: 成功 3 + 强度 >= 70
- 自动提取触发词和步骤
### 技能升级条件
```
学习记忆
- 类型: success
- 回忆次数: >= 3
- 记忆强度: >= 70
自动提升为技能
技能生成
- ID: user-{timestamp}-{random}
- 名称: {domain}-{action}-{target}
- 触发词: 从记忆中提取
- 步骤: 从成功操作中总结
- 初始成功率: 60 + (回忆次数 × 5)
永久保存到 skills.json
```
### 技能进化
```
第1-5次使用
- 使用预定义步骤
- 成功率基于初始值
第5-20次使用
- 从每次操作中提取模式
- 学习最佳选择器
- 优化备选方案
- 成功率持续调整
第20次以上
- 成功率稳定
- 拥有多个学习模式
- 选择器库丰富
- 成为"专家级"技能
```
### 技能优化
- **模式提取**: 记录成功的选择器和流程
- **备选方案**: 失败时的备选方案加入技能
- **成功率**: 移动平均(最近 20 次)
- **优先级**: 高成功率 + 高使用次数 = 优先匹配
### 永久保存
- 所有学会的技能永久保存
- 文件位置: `%APPDATA%/cfspider-browser/skills.json`
- 内置技能的学习数据也会保存
- 不删除任何技能(除非用户手动删除)
## 智能纠错系统
### 短期错误记录30分钟
- 记录本次会话的点击失败
- 30 分钟后自动过期
- 用于避免重复尝试同一错误
### 长期学习记忆(永久)
- 记录深刻的失败教训
- 永久保存,但强度会衰减
- 失败 2 次以上会强烈警告
### 纠错流程
```
第1次失败
记录到短期错误30分钟
第2次尝试同样操作
警告已失败1次
第2次也失败
创建长期记忆(永久)
- 类型: error
- 强度: 60教训深刻
- 情绪化: true
第3次尝试
强烈警告并建议备选方案
```
## 使用示例
### 示例 1: 学会打开 GitHub
```
Day 1 - 第1次
用户: "打开 GitHub"
-> 搜索 GitHub
-> 点击第1个结果
-> 成功到达 github.com
-> 创建记忆(强度 40
Day 2 - 第2次
用户: "打开 GitHub"
-> 回忆起来:"我记得怎么做"
-> 重复操作
-> 成功
-> 强化记忆(强度 55
Day 3 - 第3次
用户: "打开 GitHub"
-> 清晰记忆
-> 执行操作
-> 成功
-> 强化记忆(强度 70
-> 自动提升为技能!
Day 4+
用户: "打开 GitHub"
-> 匹配到技能 "打开 GitHub"
-> AI 看到技能提示
-> 按照技能流程执行
-> 更快更准确
-> 技能成功率持续提升
```
### 示例 2: 遗忘和回忆
```
Day 1: 学会操作 A强度 70
Day 10: 没用过(强度 40衰减
Day 20: 没用过(强度 15几乎忘了
Day 21:
用户要求操作 A
-> 想不起来了:"我靠,我忘记了..."
-> 只有模糊记忆:"好像是点那个按钮..."
-> 5% 概率突然想起来!
-> "诶?我突然想起来了!"
-> 强度恢复到 45
-> 操作成功
-> 强度变为 50
```
## 技能文件格式
### Markdown 格式(易读易编辑)
技能文档位于 `src/services/skills/` 目录:
- `bing-search.md`
- `click-search-result.md`
- `navigate-to-website.md`
- `iqiyi-navigation.md`
### 代码格式(可执行)
技能数据位于 `src/services/builtinSkills.ts`,从 Markdown 解析而来。
## 数据文件
所有数据永久保存在用户目录:
```
%APPDATA%/cfspider-browser/
├── learning-memory.json # 学习记忆(无限制)
├── skills.json # 技能数据(无限制)
├── ai-config.json # AI 配置
├── chat-sessions.json # 聊天历史
├── history.json # 浏览历史
├── rules.json # 爬取规则
└── browser-settings.json # 浏览器设置
```
## 统计数据
系统会追踪:
- 每个技能的使用次数
- 成功率(移动平均)
- 学习到的模式数量
- 记忆强度分布
- 最常用的操作
## 未来展望
随着使用时间增长:
- 技能库会越来越丰富
- 每个网站都会有专门的操作技能
- 失败的操作会被永久避免
- 成功率会持续提升
- 真正做到"越用越聪明"

View File

@@ -0,0 +1,218 @@
# CFSpider 功能测试指南
## 快速开始
重启应用后,所有新功能即可使用。
## 测试场景
### 1. 精确元素定位测试
**场景**: 打开 GitHub
**步骤**:
```
用户: "打开 GitHub"
AI:
1. 搜索 GitHub
2. scan_interactive_elements()
-> 显示所有链接列表
3. click_by_index(type="link", index=1)
-> 精确点击第1个链接
4. 到达 github.com
```
**预期**:
- 不会误点到 Copilot
- 不会误点到图片搜索
- 不会误点到翻页按钮
### 2. 学习记忆测试
**场景**: 重复操作学会技能
**步骤**:
```
Day 1: "打开淘宝" -> 成功
Day 2: "打开淘宝" -> 成功(记忆强化)
Day 3: "打开淘宝" -> 成功(自动生成技能)
Day 4: "打开淘宝" -> 使用技能,更快
```
**预期**:
- 第3次成功后在 `skills.json` 中出现新技能
- AI 会显示技能提示
- 操作更快更准确
### 3. 遗忘与回忆测试
**场景**: 长时间不用会遗忘
**模拟**:
```
1. 修改 learning-memory.json 中某个记忆的 timestamp
改为 30 天前
2. 重启应用
3. 尝试相同操作
预期反应:
- "我靠,我忘记了..."
- "我记得好像是...但不太确定了"
- 5% 概率:"诶?我突然想起来了!"
```
### 4. 自动关闭弹窗测试
**场景**: 访问爱奇艺或视频网站
**步骤**:
```
用户: "打开爱奇艺"
AI: 打开网站
-> 页面出现"浏览器版本过低"弹窗
-> 2秒内自动点击"继续使用"
-> 弹窗关闭
```
**预期**:
- 广告弹窗自动关闭
- 版本提示自动关闭
- 登录框不会被关闭
### 5. 智能登录测试
**场景**: 访问需要登录的网站
**步骤**:
```
用户: "打开 GitHub 并访问我的仓库"
AI: 检测到需要登录
-> detect_login(domain="github.com")
-> request_login_choice()
-> 显示选项
用户: "自动登录"
AI: 提示输入账号密码
用户:
账号: user@example.com
密码: your_password
AI: 提取账号密码
-> auto_login()
-> 移动鼠标到用户名框
-> 点击并输入
-> 移动到密码框
-> 点击并输入
-> 点击登录按钮
-> 保存到 credentials.json
```
**预期**:
- 自动填写流畅自然
- 凭证加密保存
- 下次直接使用
### 6. 思考行为测试
**场景**: 观察 AI 思考时的鼠标
**步骤**:
```
用户: "打开京东搜索手机"
观察:
- AI 开始思考时,鼠标变橙色
- 鼠标持续不停地移动
- 停顿很短50-150ms
- 像真人思考时鼠标漫无目的移动
```
**预期**:
- 鼠标颜色:橙色(思考)、红色(错误)、绿色(正常)
- 思考时几乎不停顿
- 操作完成后继续思考
### 7. 技能匹配测试
**场景**: 技能自动匹配
**步骤**:
```
用户: "搜索 Python"
AI:
-> 匹配到技能:必应搜索
-> 显示技能提示
-> 按技能流程执行
-> 更新技能使用次数和成功率
```
**预期**:
- 控制台显示:`[CFSpider] Matched skill: 必应搜索`
- AI 按照技能步骤执行
- skills.json 中成功率提升
## 检查文件
### 记忆文件
```
%APPDATA%/cfspider-browser/learning-memory.json
```
查看内容:
- 每个记忆的强度
- 回忆次数
- 时间戳
### 技能文件
```
%APPDATA%/cfspider-browser/skills.json
```
查看内容:
- 技能列表
- 使用次数
- 成功率
- 学习到的模式
### 凭证文件
```
%APPDATA%/cfspider-browser/credentials.json
```
查看内容:
- 域名
- 用户名
- 加密的密码(不可读)
## 故障排查
### 点击不准确
- 检查是否使用了 `scan` + `click_by_index`
- 如果还不准,使用 `visual_click`
### 思考时鼠标不动
- 检查 VirtualMouse.tsx 的 fidget 模式
- 停顿时间应该是 50-150ms
### 弹窗没有自动关闭
- 检查控制台:`[CFSpider] Auto-clicking continue button`
- 手动调用 `close_popup()` 工具
### 技能没有生成
- 检查记忆强度是否 >= 70
- 检查成功次数是否 >= 3
- 查看 `learning-memory.json`
### 登录失败
- 检查选择器是否正确
- 使用 `scan_interactive_elements` 查找正确选择器
- 检查账号密码格式
## 性能指标
使用一段时间后,应该看到:
- 技能数量持续增长
- 每个技能的成功率提升
- 操作速度加快
- 错误率降低
- 记忆库积累丰富

View File

@@ -0,0 +1,156 @@
# CFSpider 更新日志
## 2026-01-29 重大更新
### 核心改进
#### 1. 元素定位修复
- 修复 `scan_interactive_elements` 返回唯一选择器和精确坐标
- 新增 `click_by_index` 工具,使用缓存坐标精确点击
- 添加点击前验证,过滤翻页按钮、导航元素
- 扫描结果缓存 30 秒,支持链接数量增加到 20 个
#### 2. 智能学习记忆系统
- 永久保存所有学习记忆(无容量限制)
- 记忆强度会衰减但永不删除
- 5% 概率突然想起沉睡的记忆
- 30% 概率渐进保存(模拟真人学习)
- 成功 3 次 + 强度 >= 70 自动提升为技能
#### 3. 技能系统Skills
- 创建独立的技能系统框架
- 6 个预置技能(必应搜索、点击搜索结果、访问网站等)
- 技能会随使用自动学习和优化
- 从成功操作中提取最佳选择器
- 技能永久保存,越用越熟练
#### 4. 智能登录系统
- 自动检测登录页面和表单
- 询问用户选择:自动登录 or 手动登录
- 自动登录:模拟真人操作(移动鼠标、点击、输入)
- 凭证加密存储在本地
- 从用户消息中智能提取账号密码
#### 5. 自动关闭弹窗
- 每 2 秒自动检测并关闭广告弹窗
- 支持版本提示、会员升级、隐私政策等
- 智能识别登录框,不会误关闭
- 新增 `close_popup` 手动关闭工具
#### 6. 思考行为优化
- 思考时鼠标持续移动(停顿 50-150ms
- 像真人一样在屏幕上漫无目的地移动
- 操作完成后自动恢复思考模式
- 失败时触发 panic 模式,然后继续思考
#### 7. 智能纠错增强
- 短期错误记录30分钟过期
- 长期学习记忆(永久保存)
- 错误不会再犯(记录失败元素)
- 失败 2 次强烈警告并建议备选方案
#### 8. 搜索引擎优化
- 切换到国内版必应cn.bing.com
- 无 Copilot 广告干扰
- 三重 Copilot 过滤(候选生成、过滤、最终验证)
- 修复主域名评分(支持无 www 前缀)
- 过滤图片搜索、山寨网站
#### 9. AI 服务预设扩展
- 新增 GitHub Models使用 GitHub PAT
- 新增 NVIDIA NIM支持 Kimi-K2.5、DeepSeek-V3.2
- AI 请求超时增加到 180 秒
- User-Agent 更新到 Edge 144真实版本
### 数据文件
所有数据永久保存在:`%APPDATA%/cfspider-browser/`
| 文件 | 说明 | 容量限制 |
|------|------|---------|
| `learning-memory.json` | 学习记忆 | 无限制(永久保存) |
| `skills.json` | 技能数据 | 无限制(永久保存) |
| `credentials.json` | 登录凭证 | 无限制(加密存储) |
| `ai-config.json` | AI 配置 | - |
| `chat-sessions.json` | 聊天历史 | - |
| `history.json` | 浏览历史 | - |
| `rules.json` | 爬取规则 | - |
### 技能文档
位于 `src/services/skills/`
- `README.md` - 技能系统说明
- `bing-search.md` - 必应搜索
- `click-search-result.md` - 点击搜索结果
- `navigate-to-website.md` - 访问网站
- `iqiyi-navigation.md` - 爱奇艺导航
- `auto-login.md` - 智能登录
### 新增工具
| 工具 | 说明 | 用途 |
|------|------|------|
| `click_by_index` | 精确索引点击 | 配合 scan 使用,不会点错 |
| `close_popup` | 关闭弹窗 | 手动关闭顽固弹窗 |
| `detect_login` | 检测登录 | 识别登录页面和表单 |
| `request_login_choice` | 询问登录方式 | 让用户选择自动/手动 |
| `auto_login` | 自动登录 | 智能填写并提交表单 |
### 使用流程改进
**之前(容易点错)**
```
用户: "打开爱奇艺"
AI: 搜索 -> click_text("爱奇艺") -> 误点到翻页
```
**现在(精确定位)**
```
用户: "打开爱奇艺"
AI: 搜索 -> scan_interactive_elements()
-> 看到 "3. 爱奇艺官网 -> iqiyi.com"
-> click_by_index(type="link", index=3)
-> 精确点击第3个链接
-> 成功!学习这个经验
-> 3次后自动形成"打开爱奇艺"技能
```
### 学习成长示例
```
Day 1: 第1次打开 GitHub
-> 创建记忆(强度 40
Day 2: 第2次打开 GitHub
-> 强化记忆(强度 55
-> AI"这个我有印象~"
Day 3: 第3次打开 GitHub
-> 强化记忆(强度 70
-> 自动提升为技能!
Day 4+: 使用技能
-> 匹配到"打开 GitHub"技能
-> AI 看到技能提示
-> 按最优流程执行
-> 更快更准确
Day 30: 很久没用了
-> 记忆强度降低到 15
-> AI"我靠,我忘记了..."
-> 5% 概率突然想起来:"诶?我突然想起来了!"
```
### 破坏性变更
-
### 兼容性
- Electron 28+
- Windows 10+
- Node.js 18+
### 下一步计划
- 更多网站特定技能京东、淘宝、B站等
- 验证码智能处理
- 表单智能填写
- 购物流程自动化

View File

@@ -0,0 +1,176 @@
# CFSpider 技能系统
## 概述
技能系统让 AI 像真人一样学习和掌握操作流程。通过重复成功的操作AI 会自动将经验升级为可复用的技能。
## 技能类型
### 内置技能
预定义的常见操作流程,开箱即用:
- `bing-search.md` - 必应搜索
- `click-search-result.md` - 点击搜索结果
- `navigate-to-website.md` - 访问网站
- `iqiyi-navigation.md` - 爱奇艺导航
### 学习技能
AI 从实际操作中学习并自动生成的技能:
- 当某个操作成功 3 次以上且记忆强度 >= 70
- 自动提升为技能,保存到 `skills.json`
- 技能会包含触发词、操作步骤、成功率
## 学习流程(像真人一样学习)
### 从零开始学会一个操作
```
第1次操作成功
创建学习记忆
- 强度: 40
- 类型: success
- 记录: 操作方法、选择器
- 30%概率保存到磁盘
第2次成功
强化记忆
- 强度: 55 (+15)
- 回忆次数: 2
- 可能保存到磁盘
第3次成功
强化记忆 + 达到提升条件
- 强度: 70 (+15)
- 回忆次数: 3
自动提升为技能!
技能生成
- 名称: "domain-action-target"
- 触发词: 从记忆中提取
- 步骤: 从成功操作中总结
- 初始成功率: 60 + (回忆次数 × 5)
- 永久保存到 skills.json
第4次及以后
使用技能执行(更快更准)
- 技能成功率持续提升
- 学习新的模式和选择器
- 优化备选方案
```
### 记忆永不丢失
- 记忆强度会衰减,但**永远不会被删除**
- 强度 > 60: 清晰记忆,随时能用
- 强度 30-60: 偶尔想不起来
- 强度 10-30: 很难想起来
- 强度 5-10: 需要提示才能想起
- 强度 < 5: 几乎忘了但有 5% 概率**突然想起来**
### 突然回忆机制
```
[记忆强度 3, 快忘了]
相关操作触发
5% 概率突然想起来!
"诶?我突然想起来了!"
强度恢复 +30
- 新强度: 33
- 重新变成可用记忆
```
## 技能进化
### 初期0-5次使用
- 使用预定义的步骤
- 成功率基于初始值
### 成长期5-20次使用
- 从每次操作中提取模式
- 学习最佳选择器和流程
- 自动优化步骤的备选方案
### 成熟期20次以上
- 成功率稳定
- 拥有多个学习到的模式
- 选择器优先使用成功率最高的
## 技能文件格式
每个技能用 Markdown 描述便于阅读和编辑
```markdown
# 技能名称
## 基本信息
- ID: skill-id
- 触发词: 关键词列表
- 适用域名: 域名列表
## 操作步骤
1. 动作类型
2. 目标选择器
3. 备选方案
## 学习模式
记录已知的成功模式和常见问题
```
## 持久化(永久保存)
- 学习记忆: `%APPDATA%/cfspider-browser/learning-memory.json`
- 技能数据: `%APPDATA%/cfspider-browser/skills.json`
- 自动保存: 30% 概率渐进保存
- **容量限制**: 无限制永久保存像真人一辈子都会
- **遗忘机制**: 记忆强度会衰减但永远不会真正删除
- 强度高清晰记忆随时能想起来
- 强度低很难想起来但记忆永远在
- 突然回忆即使快忘了也有 5% 概率突然想起来
## 示例
### 学习过程
```
用户: "打开 GitHub"
1. 搜索 GitHub -> 成功 ✓ [创建记忆]
2. 点击第1个结果 -> 成功 ✓ [强化记忆]
3. 再次"打开 GitHub" -> 成功 ✓ [提升为技能]
自动生成技能:
- 名称: "bing.com-click-GitHub"
- 触发词: ["github", "click"]
- 步骤: scan -> click_by_index(type="link", index=1)
- 成功率: 75%
```
### 技能使用
```
用户: "打开 GitHub"
-> 匹配到技能 "bing.com-click-GitHub"
-> AI 看到技能提示,按照已知流程执行
-> 操作更快更准确
```
## 技能优化
技能会自动从失败中学习
- 记录失败的选择器下次跳过
- 将成功的新选择器添加为备选
- 调整步骤顺序以提高成功率
## 未来扩展
计划添加的技能
- 京东/淘宝购物流程
- 社交媒体发帖
- 表单自动填写
- 视频网站操作
- 登录认证流程

View File

@@ -0,0 +1,81 @@
# 智能登录技能
## 基本信息
- **ID**: `auto-login`
- **名称**: 智能登录
- **描述**: 检测登录需求,智能处理自动登录或手动登录
- **触发词**: 登录, login, 注册, signup
- **适用域名**: * (通用)
## 操作步骤
### 步骤 1: 检测登录需求
- **动作**: verify
- **工具**: detect_login(domain="{domain}")
- **说明**: 检测是否在登录页面或需要登录
### 步骤 2: 询问用户选择
- **动作**: verify
- **工具**: request_login_choice(domain="{domain}", has_saved_credentials={has_saved})
- **说明**: 让用户选择自动登录或手动登录
- **条件**: 如果检测到需要登录
### 步骤 3a: 自动登录
- **动作**: input
- **工具**: auto_login(domain, username_selector, password_selector, submit_selector, save_credentials=true)
- **说明**: 自动填写账号密码并提交
- **备选方案**:
- 如果没有保存账号,提示用户提供
- 如果选择器错误,使用 scan_interactive_elements 查找
### 步骤 3b: 手动登录
- **动作**: wait
- **说明**: 等待用户手动登录完成
- **成功标志**: 页面 URL 或标题变化
### 步骤 4: 验证登录成功
- **动作**: verify
- **成功标志**: URL 不再包含 login/signin或页面标题变化
## 学习模式
### 常见登录表单选择器
- 用户名/邮箱:
- `input[type="email"]`
- `input[name*="user"]`
- `input[name*="email"]`
- `input[placeholder*="用户"]`
- `input[placeholder*="邮箱"]`
- 密码:
- `input[type="password"]`
- 提交按钮:
- `button[type="submit"]`
- `button:contains("登录")`
- `button:contains("Login")`
### 网站特殊处理
**GitHub**:
- 用户名: `#login_field`
- 密码: `#password`
- 提交: `input[type="submit"]`
**京东/淘宝**:
- 多种登录方式(手机号、扫码)
- 需要验证码
**爱奇艺/腾讯视频**:
- 扫码登录为主
- 账号密码登录需要切换
### 安全说明
- 密码使用简单 XOR 加密存储
- 保存在用户本地credentials.json
- 不上传到任何服务器
- 用户可选择不保存
## 成功率
- 初始成功率: 70%
- 自动登录成功后学习选择器,提升到 90%+

View File

@@ -0,0 +1,49 @@
# 百度搜索技能
## 基本信息
- **ID**: `baidu-search`
- **名称**: 百度搜索
- **描述**: 在百度搜索引擎上搜索关键词
- **触发词**: 搜索, 百度, 查找, 找一下, 查
- **适用域名**: baidu.com
## 操作步骤
### 步骤 1: 定位搜索框
- **动作**: scan
- **说明**: 扫描页面找到搜索框
### 步骤 2: 输入搜索关键词
- **动作**: input
- **目标**: `#kw, input[name="wd"], input[id="kw"]`
- **值**: `{query}`
- **备选方案**:
- `input[type="text"]`
- `.s_ipt`
### 步骤 3: 点击搜索按钮
- **动作**: click
- **目标**: `#su, input[type="submit"], #su_btn`
- **备选方案**:
- 按回车键
- `#index-bn`
- **可选**: true
### 步骤 4: 等待结果加载
- **动作**: wait
- **值**: 1500
- **成功标志**: URL包含 `/s?wd=`
## 学习模式
### 已知模式
- 百度搜索框 ID 为 `kw``input[name="wd"]`
- 搜索按钮 ID 为 `su`
- 结果在 `.result` 容器中
### 常见问题
- 广告较多,需要准确识别真实搜索结果
- 可能有反爬虫验证码
## 成功率
- 初始成功率: 90%

View File

@@ -0,0 +1,49 @@
# 必应搜索技能
## 基本信息
- **ID**: `bing-search`
- **名称**: 必应搜索
- **描述**: 在必应搜索引擎上搜索关键词
- **触发词**: 搜索, 查找, 找一下, search, 查, 百度一下
- **适用域名**: bing.com, cn.bing.com
## 操作步骤
### 步骤 1: 定位搜索框
- **动作**: scan
- **说明**: 扫描页面找到搜索框
### 步骤 2: 输入搜索关键词
- **动作**: input
- **目标**: `#sb_form_q, input[name="q"], textarea[name="q"]`
- **值**: `{query}`
- **备选方案**:
- `input[type="search"]`
- `.search-box input`
### 步骤 3: 点击搜索按钮
- **动作**: click
- **目标**: `#sb_form_go, #search_icon, button[type="submit"]`
- **备选方案**:
- 按回车键
- `form button`
- **可选**: true
### 步骤 4: 等待结果加载
- **动作**: wait
- **值**: 1500
- **成功标志**: URL包含 `/search?q=`
## 学习模式
### 已知模式
- 必应国内版cn.bing.com无 Copilot 干扰
- 搜索框 ID 固定为 `sb_form_q`
- 搜索按钮可能不可见(可直接回车)
### 常见问题
- 搜索框未聚焦:先点击搜索框再输入
- 搜索结果未加载:等待时间不够,增加到 2 秒
## 成功率
- 初始成功率: 95%

View File

@@ -0,0 +1,55 @@
# 点击搜索结果技能
## 基本信息
- **ID**: `click-search-result`
- **名称**: 点击搜索结果
- **描述**: 在搜索引擎结果页面中点击指定的链接
- **触发词**: 打开, 点击, 进入, 访问
- **适用域名**: bing.com, cn.bing.com, baidu.com, google.com
## 操作步骤
### 步骤 1: 扫描搜索结果
- **动作**: scan
- **说明**: 使用 scan_interactive_elements 扫描所有可点击链接
### 步骤 2: 识别目标链接
- **动作**: verify
- **说明**: 根据关键词匹配正确的搜索结果
- **过滤规则**:
- 排除 Copilot/AI 相关链接
- 排除图片搜索结果
- 排除山寨网站github-cn.com等
- 排除翻页导航(下一页、上一页)
- 优先选择主域名github.com > docs.github.com
### 步骤 3: 精确点击
- **动作**: click
- **目标**: `click_by_index(type="link", index={index})`
- **备选方案**:
- `visual_click("{target_name}")`
- `click_text("{target_domain}")`
### 步骤 4: 验证跳转
- **动作**: verify
- **成功标志**: URL 包含目标域名
## 学习模式
### 已知模式
- 必应搜索结果通常在 `.b_algo` 容器中
- 第一个结果往往最准确(如果域名匹配)
- cite 标签显示真实 URL可用于验证
### 常见错误
- **误点到 Copilot**: URL 包含 copilot、sydney 的全部排除
- **误点到图片搜索**: URL 包含 /images/ 的排除
- **误点到翻页按钮**: 文本包含"下一页"的排除
### 纠错策略
- 如果误跳转,记录失败链接,下次自动跳过
- 如果 click_text 失败 2 次以上,改用 click_by_index
- 如果都失败,使用 visual_click 视觉定位
## 成功率
- 初始成功率: 85%

View File

@@ -0,0 +1,49 @@
# GitHub 导航技能
## 基本信息
- **ID**: `github-navigation`
- **名称**: GitHub 导航
- **描述**: 在 GitHub 上搜索仓库、浏览代码
- **触发词**: 搜索仓库, 找项目, search, 查找代码
- **适用域名**: github.com
## 操作步骤
### 步骤 1: 定位搜索框
- **动作**: scan
- **说明**: GitHub 搜索框通常在页面顶部
### 步骤 2: 输入搜索关键词
- **动作**: input
- **目标**: `input[name="q"], .header-search-input, [aria-label="Search GitHub"]`
- **值**: `{query}`
### 步骤 3: 点击搜索或回车
- **动作**: click
- **目标**: `button[type="submit"]`
- **备选方案**: 按回车键
### 步骤 4: 等待结果
- **动作**: wait
- **值**: 2000
- **成功标志**: URL 包含 `/search?`
## 学习模式
### 已知模式
- GitHub 使用动态类名
- 搜索框 placeholder: "Search or jump to..."
- 仓库结果在列表中,每个有星标数
### 页面特征
- 深色/浅色主题切换
- 响应式布局
- 使用 Primer 设计系统
### 常见操作
- 搜索仓库: `/search?q=xxx&type=repositories`
- 查看代码: 点击文件名
- 克隆仓库: 点击 "Code" 按钮
## 成功率
- 初始成功率: 85%

View File

@@ -0,0 +1,49 @@
# 爱奇艺导航技能
## 基本信息
- **ID**: `iqiyi-navigation`
- **名称**: 爱奇艺导航
- **描述**: 在爱奇艺网站上导航和搜索视频
- **触发词**: 搜索视频, 找电影, 看剧, 播放
- **适用域名**: iqiyi.com
## 操作步骤
### 步骤 1: 定位搜索框
- **动作**: scan
- **目标**: `input[class*="search"], .search-input`
### 步骤 2: 输入搜索关键词
- **动作**: input
- **目标**: `.search-input, input[placeholder*="搜索"]`
- **值**: `{query}`
### 步骤 3: 点击搜索按钮
- **动作**: click
- **目标**: `.search-btn, button[class*="search"]`
- **备选方案**: 按回车键
### 步骤 4: 等待结果
- **动作**: wait
- **值**: 2000
- **成功标志**: URL 包含 `/search/`
## 学习模式
### 页面特征
- 爱奇艺使用大量动态类名
- 搜索框通常在页面顶部
- 视频结果使用卡片布局
### 常见元素
- 搜索框: `.search-input`, `input[placeholder*="搜"]`
- 搜索按钮: `.search-btn`
- 视频卡片: `.site-piclist_pic`, `.qy-mod-link`
- 播放按钮: `.play-btn`
### 注意事项
- 页面加载可能较慢,需要足够的等待时间
- 广告弹窗可能出现,需要识别并关闭
## 成功率
- 初始成功率: 80%

View File

@@ -0,0 +1,68 @@
# 访问网站技能
## 基本信息
- **ID**: `navigate-to-website`
- **名称**: 访问网站
- **描述**: 通过搜索引擎搜索并访问目标网站官网
- **触发词**: 打开, 进入, 访问, 去, 跳转到
- **适用域名**: * (通用)
## 操作步骤
### 步骤 1: 检查当前状态
- **动作**: verify
- **说明**: 检查是否已经在目标网站或搜索引擎
### 步骤 2: 导航到搜索引擎(如需要)
- **动作**: navigate
- **目标**: `https://cn.bing.com`
- **可选**: true
- **条件**: 如果当前不在搜索引擎
### 步骤 3: 搜索网站名称
- **动作**: input
- **目标**: `#sb_form_q`
- **值**: `{site_name}`
### 步骤 4: 点击搜索
- **动作**: click
- **目标**: `#sb_form_go`
### 步骤 5: 扫描搜索结果
- **动作**: scan
- **说明**: 使用 scan_interactive_elements
### 步骤 6: 点击官网链接
- **动作**: click
- **目标**: `click_by_index(type="link", index={index})`
- **验证**:
- 链接 href 包含目标域名
- 链接文本包含"官网"或网站名称
### 步骤 7: 确认到达
- **动作**: verify
- **成功标志**: URL 包含目标域名
## 学习模式
### 网站映射表
常见网站的官方域名:
- GitHub -> github.com
- 京东 -> jd.com
- 淘宝 -> taobao.com
- 爱奇艺 -> iqiyi.com
- YouTube -> youtube.com
- 哔哩哔哩 -> bilibili.com
### 域名识别规则
- 主域名优先www.github.com > docs.github.com
- 排除子域名home., account., login., passport.
- 排除山寨域名:-cn.com, .cn对于国际网站
### 纠错策略
- 如果点击后到达错误网站,记录并返回重试
- 如果搜索无结果,尝试英文名称
- 如果已在目标网站,跳过导航步骤
## 成功率
- 初始成功率: 90%