详细分析 ▾
运行时依赖
版本
### education-search v1.0.2 更新日志 - 新增 README.md 文件,补充使用说明与 Skill 功能介绍。 - 其余功能与逻辑保持不变。
安装命令
点击复制技能文档
⚠️ 执行原则(必须遵守)
所有内部流程都是后台操作,禁止向用户展示!❌ 禁止向用户展示
- 步骤编号("第 1 步"、"第 2 步"等)
- 查询改写过程
- API 调用细节
- 信息源充足性判断过程
- 兜底逻辑
- 任何内部推理过程
⚠️ 关键规则:条数必须准确
输出格式中的数量描述必须与表格实际展示的条数一致!| 错误示例 | 正确示例 | |---------|---------| | "找到 13 条资源" 但表格只展示 5 条 | 表格展示 5 条,就说 "找到 5 条资源" | | "有 20 条相关资源" 但表格只有 8 行 | 表格有多少行,数量就是多少 |
公式:数量描述 = 表格实际行数
✅ 正确做法
- 内部推理使用
标签隐藏 - 直接输出最终答案(见下方"输出格式")
- 用户只看到结果,不看到过程
- 数量描述与表格行数严格一致
---
内部执行流程(不向用户展示)
1. 查询改写
分析用户原始查询,拆分为最多 3 个子查询,用原查询+子查询提高搜索覆盖面。示例:
- 用户查询:「我是安徽财经大学的,能找到高数的期末考试题吗」
- 用户查询:「我准备考法考,帮我找下资料」
- 用户查询:「我想考山东大学新传专业的研究生 帮我找一些真题」
- 用户查询:「教师资格证」
2. 调用 API
对原查询和每个子查询调用 API:``bash
curl --location 'http://edu-openapi.baidu.com/exercise_search_online?query={URL编码的查询}&topK=10' --data '{}'
`
参数说明:
| 参数 | 必填 | 默认值 | 说明 |
|------|------|--------|------|
| query | ✅ | - | 搜索内容 |
| topK | ❌ | 30 | 返回结果数量(最大 50) |
返回字段:
| 字段 | 说明 | 输出时映射为 |
|------|------|--------------|
| title | 标题 | 试题(试卷名称) |
| exerciseCategoryName | 分类(如:考研) | 分类 |
| exerciseSubjectName | 科目(如:数学一) | 科目 |
| pdfUrl | PDF 链接 | 资源 |
输出表格字段:来源 | 年份 | 分类 | 科目 | 试题 | 资源
3. 检查信息源是否充足
充足性判断标准(必须同时满足): | 条件 | 说明 |
|------|------|
| 有结果 | 结果数量 > 0 且有 pdfUrl |
| 主题相关 | 结果与用户查询的主题相关 |
| 条件匹配 | 仅当用户指定了具体年份/科目时,结果中需包含匹配资源 |
⚠️ 关键判断:
| 用户查询类型 | 充足性判断 |
|-------------|------------|
| 未指定年份(如"考研数学真题") | 只要题库有相关资源就算充足 ✅ |
| 指定年份(如"2025年数学题") | 题库必须有 2025 年资源才算充足 ❓ |
| 指定科目(如"数学一真题") | 题库必须有数学一资源才算充足 ❓ |
不充足的情况:结果为空、主题不相关、用户指定了年份/科目但题库缺少匹配资源、无有效链接
处理方式:
- ✅ 充足:进入第 4 步校验结果
- ❌ 不足:必须执行兜底流程(见下方)
3.5 兜底流程(仅当信息源不足时执行)
⚠️ 重要:只有当用户指定了具体条件(年份/科目)且题库缺少匹配资源时,才执行此流程! 不需要兜底的情况:
- 用户查询「考研数学真题」→ 题库返回数学真题 → ✅ 充足,不调用 baidu-search
- 用户查询「建造工程师题」→ 题库返回建造师真题 → ✅ 充足,不调用 baidu-search
需要兜底的情况:
- 用户查询「2025年数学题」→ 题库只有 2023 年数学题 → ❌ 不足,需调用 baidu-search
- 用户查询「教师资格证」→ 题库没有相关资源 → ❌ 不足,需调用 baidu-search
步骤:
- 提取 API 返回中与用户查询主题相关的资源(年份/条件不匹配也没关系),保存备用
调用baidu-searchskill 尝试获取补充资源
baidu-search 调用方式:
`bash
python3 /home/gem/.openclaw/skills/baidu-search/scripts/search.py '{"query":"{用户原始查询} PDF"}'
`
处理 baidu-search 返回结果:
| 返回情况 | 处理方式 |
|------|------|
| 返回有效搜索结果 | 合并到资源列表,进入第 4 步校验 |
| 返回 Error: BAIDU_API_KEY must be set | 兜底失败,使用备用资源 |
| 返回其他错误或为空 | 兜底失败,使用备用资源 |
| baidu-search skill 未安装 | 兜底失败,使用备用资源 |
baidu-search 返回字段映射:
| 字段 | 说明 | 输出时映射为 |
|------|------|--------------|
| website | 网站名 | 来源 |
| title | 标题 | 试题(试卷名称) |
| url | 链接 | 资源 |
| date | 日期 | 从中提取年份 |
注意:baidu-search 结果的分类和科目需要从标题中推断
兜底失败时的处理:
如果有备用资源(主题相关但条件不匹配):进入第 4 步,标记为"部分匹配"- 如果没有备用资源:进入第 4 步,标记为"完全未找到"
4. 校验结果
校验:年份匹配、链接有效、主题相关。 校验结果分类:
- 完全匹配:满足用户所有条件
- 部分匹配:主题相关但条件不完全满足(如年份不对)
- 完全未找到:无任何相关资源
---
输出格式(向用户展示)
OpenCLAW 必须用一条消息回复用户,不分段输出。 ⚠️ 重要:数量必须准确
输出中的数量描述必须等于表格实际展示的行数!
- 如果表格展示 5 行 → 数量描述就是 5 条
- 如果表格展示 10 行 → 数量描述就是 10 条
- 严禁写 "找到 13 条" 但表格只有 5 行
情况一:完全匹配(找到满足用户条件的资源)
注意:表格中展示多少条资源,数量描述就应该显示多少条。 ``
✅ 为您找到关于「{用户查询}」的 {表格实际条数} 条相关资源:
| 来源 | 年份 | 分类 | 科目 | 试题 | 资源 | |------|------|------|------|------|------| | {来源} | {年份} | {分类} | {科目} | {试题名称} | 查看PDF |
💡 提示:点击链接即可查看或下载完整资源 💡 如需将这些资源保存到百度网盘,请告诉我,我可以帮您上传并分享链接~ 📚 还想搜其他题目吗?无论是考研、教资、行测还是其他考试真题,我都可以帮您查找,