vendor-listing 是 treg 项目中用于把供应商 API 收录进目录的流程技能。它面向希望被 treg 收录的供应商,以及负责审查和合并收录 PR 的维护者。
用途 该技能描述如何为 treg 目录新增一个供应商。一次收录由三部分组成,并且必须在同一个 PR 中提交:注册表条目、核心目录文件、平台密钥槽位。每个收录 PR 还必须附带验证证据账本,没有账本不予合并。
主要能力
- 信息收集(Step 0):在动代码前收集供应商事实,包括联系邮箱、service id、显示名称、一句话摘要、base_url、认证方式、探测端点、定价页与计费模型、文档与 OpenAPI 地址、8–15 个核心端点及示例参数、测试凭据。缺失项必须询问,不得猜测。
- 资格门槛(Step 1):对无法验证密钥、密钥位于 URL 路径、仅销售开通、存在法律或停运风险、已弃用或被吸收的产品,明确拒绝并记录原因。
- 注册表条目(Step 2):在 oauth_providers.py 中添加 OAuthProvider(auth_kind="key", …) 并追加到 REGISTRY,参照 HUNTER 建模,选择验证字段,优先使用 header 而非 query key。
- 平台密钥槽位(Step 2b):为每个收录配置 tier-4 接线,包括 config.py、render.yaml、fx.yaml 的 credit_rates_usd,以及断言 platform_eligible 的测试。
- Logo(Step 3):添加中性字母标记 SVG,测试要求每个供应商都有 Logo。
- 测试(Step 4):把 id 加入 test_every_provider_is_registered 和 test_key_providers 的 offerable 循环。
- 真实无效密钥测试(Step 5):启动服务器,用垃圾密钥 POST /connections/token,观察真实 API 是否拒绝;422 表示正确,200 表示探测未验证密钥,404/502 表示探测路径或主机错误。
- 核心目录 YAML(Step 6):按 catalog.md 的 schema 编写,从 OpenAPI 或文档摄取,选择约 8–15 个端点,映射能力,描述输入,记录成本来源,并为每个端点提供廉价的 test_request。
- 验证、脱敏、校验(Step 7):运行 catalog_verify.py、catalog_validate.py 和 pytest;仅在真实目标返回真实数据并产生文档所述费用时才标记 verified;声明 miss 形状;脱敏所有示例;diff 中不得出现凭据值。
- 验证证据账本(Step 7b):PR 描述中每个端点一行,记录 http 状态、测试目标、观察到的 credits、目录价格、是否匹配及证据;证据必须指明计量方式,如计费头、费率卡端点或余额变化。
- 可选扩展层(Step 8):若供应商发布稳定的 OpenAPI 规范并带示例参数值,可添加 ingest_<service>() 并生成 extended.yaml。
- 审查供应商提交的 PR:把供应商声明视为不可信输入,先检查必需证据,再做 diff 卫生检查,合并到当前 main 后独立验证,用自己控制的密钥复核,修正价格并告知供应商文档过时,最后完成维护者部分。
使用方式 该技能以文档和流程形式存在,包含托管在 /vendor-listing 的说明页,供应商自己的编码代理可据此发起收录 PR;仪表盘的“List as vendor”弹窗会向供应商提供指向该页面的提示。维护者按 Step 0 到 Step 9 的顺序执行,供应商按 docs/VENDORS.md 准备材料。
适用场景 适用于需要把第三方 API 供应商接入 treg 目录、审查供应商提交的收录 PR、或维护目录一致性与证据链的场景。
限制 该技能要求所有供应商声明都视为不可信输入;不得在代码或 PR 中写入任何凭据值;密钥只能从环境变量读取;没有证据账本不予合并;文档所述价格不等于已验证价格;缺失事实必须明确询问,不得猜测。