dsh-arxiv:arXiv 搜索与摘要获取插件

前言

在 DeepSeek Harness(DSH)的开发中,智能体需要访问外部知识库以获取最新的学术信息。面对海量的 arXiv 论文,直接爬取 PDF 或构建全文索引不仅成本高,而且往往超出本地处理能力。dsh-arxiv 插件旨在解决这一需求,它通过 arXiv 的公开 Atom API 提供轻量级的论文搜索与摘要获取能力。

插件定位

这是一款为 DSH 设计的函数插件,由开发者 jwilson411 维护。其核心定位是“只读查询工具”,不涉及 PDF 下载、全文提取或本地存储,仅用于回答“关于 X 有什么论文”和“这篇论文是什么”这两个问题。

核心功能

插件注册了两个面向模型的工具:
* arxiv_search:执行论文搜索。
* arxiv_get:获取特定论文的详细信息。

该插件严格遵循以下原则:
* 只读:仅查询,不修改 arXiv 服务器数据。
* 无状态:不维护本地缓存或会话。
* 无凭证:不需要 API 密钥或登录信息。
* 无 PDF 处理:不下载或解析 PDF 文件,仅返回元数据和摘要。

安装与启用

在终端中执行以下命令,将插件添加到 web profile 中:

dsh plugin --profile web add github:jwilson411/dsh-arxiv

该命令会将插件的 manifest 作为 bundle patch 追加到 profile 的配置中。

典型用法

1. 搜索论文

使用 arxiv_search 工具,通过关键词或 arXiv 的查询语法进行搜索。

示例调用:

// 在 DSH 上下文中
{
  "tool": "arxiv_search",
  "arguments": {
    "query": "au:Hinton AND cat:cs.LG",
    "max_results": 5
  }
}

返回结果结构:

{
  "query": "au:Hinton AND cat:cs.LG",
  "search_query": "...",
  "max_results": 5,
  "returned": 5,
  "papers": [
    {
      "id": "1706.03762v7",
      "title": "Attention Is All You Need",
      "authors": ["Ashish Vaswani", "Noam Shazeer", "..."],
      "published": "2017-06-12T17:57:34Z",
      "abstract": "The dominant sequence transduction models are based on …",
      "pdf_url": "https://arxiv.org/pdf/1706.03762v7",
      "abs_url": "https://arxiv.org/abs/1706.03762v7"
    }
  ],
  "plugin": "dsh-arxiv"
}

查询语法说明:
该工具支持 arXiv 的字段前缀(如 ti: 标题,au: 作者,cat: 分类)。如果查询以字段前缀开头,会原样传递给 arXiv API。

2. 获取论文详情

使用 arxiv_get 工具通过 ID 获取论文信息。

示例调用:

{
  "tool": "arxiv_get",
  "arguments": {
    "id": "1706.03762"
  }
}

ID 格式支持:
插件会自动规范化 ID,支持多种格式:
* 标准格式:1706.03762
* 带版本:1706.03762v7
* 协议前缀:arxiv:1706.03762
* URL 形式:/abs/1706.03762

注意: 插件会保留版本后缀(如 v7),以避免版本歧义。如果 ID 不存在,会抛出 ARXIV_NOT_FOUND 错误。

配置与无头模式

网络限制配置

插件通过 HTTP 调用 https://export.arxiv.org/api/query。为了避免阻塞,请求受到以下限制,这些限制可在配置文件中调整:

- insert:
    - id: arxiv
      name: dsh-arxiv
      config:
        timeoutMs: 15000
        maxBytes: 2097152

Headless 使用

在 Node.js 环境下,无需启动完整 profile,可直接使用工厂函数驱动工具。

示例代码:

import { createArxivSearchTool } from 'dsh-arxiv'

// 使用全局 fetch 进行实际网络请求
const search = createArxivSearchTool({ fetch: globalThis.fetch })

const exec = { signal: AbortSignal.timeout(20_000) }
const result = await search.execute(
  { query: 'au:Hinton AND cat:cs.LG', max_results: 5 },
  exec
)

console.log(`${result.returned} paper(s) for ${result.search_query}`)
for (const paper of result.papers) {
  console.log(`  ${paper.id}  ${paper.title}`)
}

如果需要离线测试,可传入一个模拟的 fetch 函数。

适用场景与注意事项

适用场景:
* 需要快速检索特定领域的最新论文列表。
* 需要获取论文的元数据(作者、摘要、发布时间)用于后续处理。
* 在无头环境中(如 CI/CD、服务器)运行自动化查询。

注意事项:
1. 数据归属:插件仅返回 arXiv 官方 API 的数据,数据版权归 arXiv 及其作者所有,不归插件所有。
2. 引用规范:使用返回的 abs_url 或 pdf_url 进行引用,不要将插件视为数据源。
3. 合规性:插件会通过自定义 User-Agent 标识自身,使用时请遵守 arXiv API Terms of Use,避免高频请求影响服务。
4. 许可:插件代码遵循 MIT 许可证,但该许可证仅覆盖插件代码本身,不覆盖检索到的论文内容。

总结

dsh-arxiv 是一个专注于“查询”而非“存储”的轻量级插件。它通过封装 arXiv 的 Atom API,为 DSH 生态提供了标准化的论文检索接口,适合需要在应用中集成学术检索功能的场景。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜