简介¶
dsh-flight-compare 是一个 DeepSeek Harness (DSH) 插件,用于注册 flight_compare 工具。该工具从多个数据源获取单条航线的机票价格,并按「航班号 + 出发日期」进行聚合,标出每个航班跨数据源的最低价及其来源,最后按最低价升序输出 Markdown 表格。
插件由用户 123wansui-989 维护,属于联网工具类别。
核心能力¶
插件实现了以下功能:
- 工具注册:注册
flight_compare工具供 DSH 调用。 - 多源获取:支持 Travelpayouts 和 Amadeus 两个数据源。
- Travelpayouts:接口为
GET /v2/prices/month-matrix,支持整月查询,按城市 IATA 码查询。 - Amadeus:接口为
GET /v2/shopping/flight-offers,官方 Self-Service API 实时报价,按机场 IATA 码查询,仅支持单日查询。
- Travelpayouts:接口为
- 数据聚合与比对:统一返回
Flight对象(包含航班号、航司、时间、价格、币种、来源等)。某个数据源查询失败不会导致整体调用失败,失败原因会在结果中列出。 - 结果输出:输出 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 参与比对。
注意事项¶
- 权限运行:插件以当前 DSH 进程的权限运行,调用 API 时需确保环境变量中包含有效的授权凭证。
- 数据源限制:Travelpayouts 支持整月查询,Amadeus 搜索接口只接受单日。当 Amadeus 的 Client ID 和 Secret 均为空时,该源会自动跳过。
- 源码审查:使用前请检查插件源码及许可证状态(当前未定义)。
- 调试:可使用
--dump-config参数先确认组合配置结果再启动。