Files
ai-desktop/SEARCH_API_USAGE.md
T

5.5 KiB

搜索 API 使用说明

概述

该 API 允许 AI 在指定平台上搜索内容,目前支持小黑盒平台。

API 接口

搜索平台内容

IPC Channel: search-platform

参数:

{
  platform: string,  // 平台名称,如 'xiaoheihe'
  query: string      // 搜索关键词
}

返回值:

{
  success: boolean,
  results?: Array<{
    title: string,           // 文章标题
    url: string,             // 文章链接
    author?: string,         // 作者名称
    publishTime?: string,    // 发布时间
    summary?: string,        // 摘要
    commentCount?: number,   // 评论数
    likeCount?: number       // 点赞数
  }>,
  error?: string
}

使用示例

在 Vue 组件中使用

// 在 Chat.vue 或其他组件中

const searchXiaoheihe = async (query: string) => {
  try {
    const result = await window.electron.ipcRenderer.invoke('search-platform', {
      platform: 'xiaoheihe',
      query: query
    })

    if (result.success && result.results) {
      console.log(`找到 ${result.results.length} 条结果:`)
      result.results.forEach((item, index) => {
        console.log(`${index + 1}. ${item.title}`)
        console.log(`   链接: ${item.url}`)
        console.log(`   作者: ${item.author || '未知'}`)
        console.log(`   时间: ${item.publishTime || '未知'}`)
        console.log(`   摘要: ${item.summary || '无'}`)
        console.log(`   评论: ${item.commentCount || 0}, 点赞: ${item.likeCount || 0}`)
        console.log('---')
      })

      return result.results
    } else {
      console.error('搜索失败:', result.error)
      return []
    }
  } catch (error) {
    console.error('搜索异常:', error)
    return []
  }
}

// 使用示例
const results = await searchXiaoheihe('三角洲行动更新日志')

AI Tool 集成示例

如果你要将此功能集成到 AI 的 tool calling 中,可以这样定义:

{
  "name": "search_platform",
  "description": "在指定平台搜索内容,获取相关文章列表",
  "parameters": {
    "type": "object",
    "properties": {
      "platform": {
        "type": "string",
        "enum": ["xiaoheihe"],
        "description": "要搜索的平台名称,目前支持: xiaoheihe(小黑盒)"
      },
      "query": {
        "type": "string",
        "description": "搜索关键词,例如:'三角洲行动最新版本更新日志'"
      }
    },
    "required": ["platform", "query"]
  }
}

获取搜索结果中文章的详细内容

搜索返回的 url 可以配合现有的 fetch-article API 来获取完整文章内容:

// 1. 先搜索
const searchResult = await window.electron.ipcRenderer.invoke('search-platform', {
  platform: 'xiaoheihe',
  query: '三角洲行动更新'
})

// 2. 获取第一条结果的详细内容
if (searchResult.success && searchResult.results && searchResult.results.length > 0) {
  const firstResult = searchResult.results[0]

  const articleDetail = await window.electron.ipcRenderer.invoke('fetch-article', firstResult.url)

  if (articleDetail.success) {
    console.log('文章标题:', articleDetail.title)
    console.log('文章内容:', articleDetail.content)
    console.log('评论列表:', articleDetail.comments)
    console.log('统计数据:', articleDetail.stats)
  }
}

完整工作流程示例

用户说:"去小黑盒查询三角洲的最新版本更新日志"

AI 的处理流程:

async function handleUserRequest(userQuery: string) {
  // 1. 解析用户意图
  // 用户想要:在小黑盒搜索"三角洲最新版本更新日志"

  // 2. 调用搜索 API
  const searchResult = await window.electron.ipcRenderer.invoke('search-platform', {
    platform: 'xiaoheihe',
    query: '三角洲 更新日志'
  })

  if (!searchResult.success) {
    return `搜索失败: ${searchResult.error}`
  }

  if (!searchResult.results || searchResult.results.length === 0) {
    return '没有找到相关内容'
  }

  // 3. 筛选最相关的结果(可以根据标题、时间等判断)
  const mostRelevant = searchResult.results[0] // 简单取第一条

  // 4. 获取文章详细内容
  const articleDetail = await window.electron.ipcRenderer.invoke('fetch-article', mostRelevant.url)

  if (!articleDetail.success) {
    return `获取文章详情失败: ${articleDetail.error}`
  }

  // 5. 提取更新日志相关内容并返回给用户
  return `
找到最新的更新日志:

**${articleDetail.title}**

发布时间: ${articleDetail.publishTime || '未知'}
作者: ${articleDetail.author || '官方'}

内容摘要:
${articleDetail.content.substring(0, 500)}...

完整链接: ${mostRelevant.url}

互动数据:
- 点赞: ${articleDetail.stats?.likes || 0}
- 评论: ${articleDetail.stats?.commentCount || 0}
- 收藏: ${articleDetail.stats?.favorites || 0}
  `
}

支持的平台

  • xiaoheihe - 小黑盒游戏社区

注意事项

  1. 搜索功能会打开浏览器页面进行搜索,可能需要几秒钟
  2. 搜索结果的准确性取决于平台的搜索算法
  3. 如果需要登录才能搜索,请确保用户已经登录对应平台
  4. 返回的搜索结果数量取决于平台的搜索结果页面结构

错误处理

常见错误:

  • 搜索关键词不能为空 - query 参数为空
  • 不支持的平台 - platform 参数不在支持列表中
  • 未找到平台服务 - 平台服务未正确注册
  • 搜索失败 - 网络错误或页面结构变化
  • 未找到相关结果 - 搜索成功但没有结果