---
phase: 03-tier-3-9-providers
plan: 01
subsystem: providers
tags: [providers, tier4, chinese, regional, keyword-only]
requires: [pkg/providers/registry, pkg/providers/schema]
provides:
  - "16 Tier 4 Chinese/regional provider YAML definitions"
  - "Keyword-only detection strategy for providers without documented key formats"
affects: [pkg/providers/definitions, providers]
tech-stack:
  added: []
  patterns:
    - "Dual-located provider YAMLs (providers/ + pkg/providers/definitions/)"
    - "Keyword-only detection (omit patterns field) for low-signal providers"
key-files:
  created:
    - providers/deepseek.yaml
    - providers/zhipu.yaml
    - providers/moonshot.yaml
    - providers/qwen.yaml
    - providers/baidu.yaml
    - providers/bytedance.yaml
    - providers/01ai.yaml
    - providers/minimax.yaml
    - providers/baichuan.yaml
    - providers/stepfun.yaml
    - providers/sensetime.yaml
    - providers/iflytek.yaml
    - providers/tencent.yaml
    - providers/siliconflow.yaml
    - providers/360ai.yaml
    - providers/kuaishou.yaml
    - pkg/providers/definitions/deepseek.yaml
    - pkg/providers/definitions/zhipu.yaml
    - pkg/providers/definitions/moonshot.yaml
    - pkg/providers/definitions/qwen.yaml
    - pkg/providers/definitions/baidu.yaml
    - pkg/providers/definitions/bytedance.yaml
    - pkg/providers/definitions/01ai.yaml
    - pkg/providers/definitions/minimax.yaml
    - pkg/providers/definitions/baichuan.yaml
    - pkg/providers/definitions/stepfun.yaml
    - pkg/providers/definitions/sensetime.yaml
    - pkg/providers/definitions/iflytek.yaml
    - pkg/providers/definitions/tencent.yaml
    - pkg/providers/definitions/siliconflow.yaml
    - pkg/providers/definitions/360ai.yaml
    - pkg/providers/definitions/kuaishou.yaml
  modified: []
decisions:
  - "Providers without documented key formats (12 of 16) use keyword-only detection — no patterns field — to avoid the Phase 2 false-positive regression from overly-generic regex"
  - "DeepSeek, Moonshot, Qwen, and SiliconFlow use documented sk- prefix patterns with medium/low confidence"
  - "Empty verify blocks (url: \"\", valid_status: [], invalid_status: []) used for providers whose auth flows require SigV4-style request signing (Baidu Qianfan, Tencent TC3, iFlytek, ByteDance Volcengine, 360, Kuaishou, SenseTime) — live verification deferred to Phase 5"
metrics:
  completed: "2026-04-05"
  duration_minutes: 3
  tasks: 2
  files_created: 32
---

# Phase 03 Plan 01: Tier 4 Chinese/Regional Providers Summary

Added 16 Tier 4 Chinese/regional LLM provider YAML definitions (DeepSeek, Zhipu, Moonshot, Qwen, Baidu, ByteDance, 01.AI, MiniMax, Baichuan, StepFun, SenseTime, iFlytek, Tencent, SiliconFlow, 360 AI, Kuaishou) using keyword-anchored detection to avoid false positives, dual-located in `providers/` and `pkg/providers/definitions/` for Go embed.

## What Was Built

- 32 new YAML files (16 providers × 2 locations for the Go embed pattern)
- 4 providers with documented key prefix patterns: DeepSeek (`sk-[a-f0-9]{32}`), Moonshot (`sk-[A-Za-z0-9]{48}`), Qwen DashScope (`sk-[a-f0-9]{32}`), SiliconFlow (`sk-[a-z]{20,}`, low confidence)
- 12 providers using keyword-only detection (patterns field omitted): Zhipu, Baidu, ByteDance, 01.AI, MiniMax, Baichuan, StepFun, SenseTime, iFlytek, Tencent, 360 AI, Kuaishou
- All 16 providers carry strong keyword lists anchored on: SDK environment variable names, API hostnames, SDK package names, and model family identifiers

## Key Decisions

- **Keyword-only for low-signal providers**: Chinese/regional providers mostly lack publicly documented key formats. Rather than introduce generic `[A-Za-z0-9]{32,64}` patterns (which caused false positives in Phase 2), the patterns field is omitted entirely, relying on the Aho-Corasick keyword pre-filter alone. The registry already allows keyword-only providers.
- **Empty verify blocks for SigV4-style auth**: Providers using cloud-vendor-style request signing (Baidu Qianfan AK/SK, Tencent TC3-HMAC-SHA256, iFlytek HMAC, ByteDance Volcengine, 360, Kuaishou, SenseTime) cannot be verified with a simple Bearer token. Their verify blocks are stubbed (`url: ""`, empty status arrays) and will be populated in Phase 5 when the verification engine gains signed-request support.

## Deviations from Plan

None — plan executed exactly as written.

## Verification

- `for f in [all 16]; do diff providers/$f.yaml pkg/providers/definitions/$f.yaml; done` — zero diffs, all dual-located copies identical
- `go test ./pkg/providers/... -count=1` — PASS (registry loads all 16 new YAMLs without validation errors)
- `go test ./pkg/engine/... -count=1` — PASS (no detector regressions from the new keyword set)
- `grep -l 'tier: 4' providers/*.yaml | wc -l` — 16
- Keyword-only acceptance criterion satisfied: 12 of 16 YAMLs have no `patterns:` field

## Commits

- `35dbbc7` feat(03-01): add 8 Tier 4 Chinese providers (DeepSeek, Zhipu, Moonshot, Qwen, Baidu, ByteDance, 01.AI, MiniMax)
- `a019ba9` feat(03-01): add 8 Tier 4 providers (Baichuan, StepFun, SenseTime, iFlytek, Tencent, SiliconFlow, 360AI, Kuaishou)

## Known Stubs

The 12 keyword-only providers and 7 of the 16 verify blocks (empty URL/status) are intentional and documented above. They are not stubs blocking this plan's goal (PROV-04: 16 Tier 4 providers exist, registry loads them, engine tests green) — they are the correct engineering choice given provider documentation gaps and auth-flow complexity. Live verification for signed-request providers is tracked for Phase 5.

## Self-Check: PASSED

- All 32 YAML files verified present on disk
- Commits 35dbbc7 and a019ba9 verified in `git log`
- go test ./pkg/providers/... and ./pkg/engine/... both green
