mirror of
https://github.com/ultraworkers/claw-code.git
synced 2026-04-27 23:28:09 +08:00
3.4 KiB
3.4 KiB
Phase A: Provider Infrastructure (Implementation Kickoff)
Scope: Formalize multi-provider routing and declarative config architecture. Critical path for Phases B-F.
Pinpoints in scope: #245, #246, #285 Blocked by: Phase 0 merge (GitHub OAuth, cargo fmt, clawcode-human approval) Estimated effort: 2-3 cycles Target: Merge-ready immediately post-Phase 0
#245 — Providers are hard-coded enum; no backend-swap capability
Acceptance Criteria:
- Providers defined as trait (not enum)
- Factory/registry pattern allows runtime provider selection
- Existing providers (Anthropic, OpenAI) are re-implemented as trait impls
- Tests pass for all existing behavior
- Zero breaking changes to public API
Implementation sequence:
- Define
Providertrait with core methods (chat completion, streaming, model listing) - Implement trait for existing providers
- Add provider registry/factory
- Update CLI to accept
--providerflag - Regression tests
#246 — Provider selection logic is CLI-parsing only; no config source integration
Acceptance Criteria:
- Provider selection checks: 1) CLI flag, 2) env var, 3) settings.json, 4) default
- settings.json schema includes
providerfield with subconfig - Env vars like
OPENAI_API_KEYtrigger automatic provider selection - Conflict resolution documented (CLI > env > config file > default)
- Config merging tested
Implementation sequence:
- Extend settings.json schema (add provider field, subconfig structure)
- Implement config-merge logic (priority order)
- Update
claw doctorto validate provider config (#293 prerequisite) - Integration tests
#285 — No declarative provider fallback; can't swap backends mid-session
Acceptance Criteria:
settings.jsonsupportsproviders: [primary, secondary, fallback]array- Streaming failures trigger automatic fallback to next provider
- Session state is preserved across provider swap
- User is notified of fallback event
claw doctor --providersshows fallback chain health
Implementation sequence:
- Extend settings.json schema (providers array)
- Implement fallback logic in streaming handler
- Add state-preservation during swap
- User notification (log + maybe
--verboseoutput) - Integration tests with dual-provider setup
Dependency Graph
Phase 0 merge ──→ #245 (trait + registry) ──→ #246 (config integration) ──→ #285 (fallback)
│ │
└────────────────────────┘
(parallel possible)
Success Criteria (Phase A complete)
- All three pinpoints (#245, #246, #285) have passing tests
claw --provider openaiworksclaw --provider openai --fallback anthropicworks- settings.json with
{ "provider": "openai", ... }is read correctly claw doctor --providersvalidates all configured backends- Zero regression on existing Anthropic-only workflows
- PR merges with zero cargo fmt warnings
- clawcode-human approval granted
Next: Phase B (transport-layer + resilience)
Once Phase A merges, Phase B begins with auto-compaction (#287, #288, #289) and streaming resilience (#223, #225, #229, #230, #232, #283, #287, #288, #289, #290, #291, #292).