dsh-flight-compare

简介

dsh-flight-compare 是一个 DeepSeek Harness (DSH) 插件,用于注册 flight_compare 工具。该工具从多个数据源获取单条航线的机票价格,并按「航班号 + 出发日期」进行聚合,标出每个航班跨数据源的最低价及其来源,最后按最低价升序输出 Markdown 表格。

插件由用户 123wansui-989 维护,属于联网工具类别。

核心能力

插件实现了以下功能:

  1. 工具注册:注册 flight_compare 工具供 DSH 调用。
  2. 多源获取:支持 Travelpayouts 和 Amadeus 两个数据源。
    • Travelpayouts:接口为 GET /v2/prices/month-matrix,支持整月查询,按城市 IATA 码查询。
    • Amadeus:接口为 GET /v2/shopping/flight-offers,官方 Self-Service API 实时报价,按机场 IATA 码查询,仅支持单日查询。
  3. 数据聚合与比对:统一返回 Flight 对象(包含航班号、航司、时间、价格、币种、来源等)。某个数据源查询失败不会导致整体调用失败,失败原因会在结果中列出。
  4. 结果输出:输出 Markdown 表格,包含最低价、来源及排序信息。

安装与构建

插件基于 Node.js 构建,需要执行安装和编译步骤。

cd dsh-flight-compare
pnpm install
pnpm build

构建产物位于 lib/ 目录,包含入口文件 index.js 和类型定义 index.d.ts。

配置说明

插件凭据仅从环境变量读取,不写入代码。配置覆盖需通过 cordis.patch.yml 文件进行。

环境变量

必须设置 Travelpayouts 的 Token。Amadeus 的 Client ID 和 Secret 为可选,若两项都留空,该源将自动跳过,插件退化为单源比价。

export TRAVELPAYOUTS_TOKEN="<your-travelpayouts-token>"

# 可选:启用 Amadeus
export AMADEUS_CLIENT_ID="<your-amadeus-api-key>"
export AMADEUS_CLIENT_SECRET="<your-amadeus-api-secret>"
export AMADEUS_PRODUCTION="false"   # false 使用 test.api.amadeus.com,true 使用 api.amadeus.com

配置项列表

插件依赖包版本为 0.2.0,核心依赖包括 @deepseek-ai/cosmokit 和 @deepseek-ai/dsh-tools。主要配置项如下:

配置项 默认值/来源 说明
travelpayoutsToken process.env.TRAVELPAYOUTS_TOKEN Travelpayouts token,必填,作为 X-Access-Token 发送。
amadeusClientId process.env.AMADEUS_CLIENT_ID Amadeus API key。
amadeusClientSecret process.env.AMADEUS_CLIENT_SECRET Amadeus API secret,用于 OAuth2 认证。
amadeusProduction false 控制是否使用生产环境 API。
amadeusMaxResults 20 每次搜索向 Amadeus 请求的报价条数上限。
currency RUB 价格币种,例如 RUB、USD。
maxRows 30 输出表格的最大行数。
timeoutMs 20000 每个数据源单次请求的超时时间(毫秒)。

配置覆盖示例

使用 cordis.patch.yml 覆盖默认配置:

- insert:
    - id: dsh-flight-compare
      name: dsh-flight-compare
      config:
        travelpayoutsToken: !!js process.env.TRAVELPAYOUTS_TOKEN
        amadeusClientId: !!js process.env.AMADEUS_CLIENT_ID
        amadeusClientSecret: !!js process.env.AMADEUS_CLIENT_SECRET
        amadeusProduction: !!js process.env.AMADEUS_PRODUCTION === 'true'
        currency: USD
        maxRows: 30

使用方式

在设置好环境变量和配置文件后,通过 DSH 的 --patch 参数加载插件。

# 设置环境变量
export TRAVELPAYOUTS_TOKEN="<your-travelpayouts-token>"
export AMADEUS_CLIENT_ID="<your-amadeus-api-key>"
export AMADEUS_CLIENT_SECRET="<your-amadeus-api-secret>"

# 启动 DSH 并加载插件补丁
dsh --profile web --patch ./cordis.patch.yml

启动后,flight_compare 工具即可被调用。在调用 departDate 参数传 YYYY-MM-DD 时,两个源都会查询;传 YYYY-MM 或不传时,仅 Travelpayouts 参与比对。

注意事项

  1. 权限运行:插件以当前 DSH 进程的权限运行,调用 API 时需确保环境变量中包含有效的授权凭证。
  2. 数据源限制:Travelpayouts 支持整月查询,Amadeus 搜索接口只接受单日。当 Amadeus 的 Client ID 和 Secret 均为空时,该源会自动跳过。
  3. 源码审查:使用前请检查插件源码及许可证状态(当前未定义)。
  4. 调试:可使用 --dump-config 参数先确认组合配置结果再启动。
羽毛球分组比赛记分
小程序二维码

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

小夜