mirror of
https://github.com/JimLiu/baoyu-skills.git
synced 2026-08-07 17:33:03 +08:00
67a45a57a0
* Align Replicate image behavior with the models we actually support Replicate image generation in baoyu-imagine no longer assumes that every model accepts the nano-banana request schema. The Replicate provider now defaults to google/nano-banana-2, routes supported model families through family-specific builders and validators, blocks misleading multi-output requests before they reach the API, and updates user-facing docs/config guidance to match the actual contract. Constraint: Replicate model families expose different input schemas Constraint: Current Replicate path only saves one output image per request Constraint: Must not change non-Replicate providers Rejected: Keep one nano-banana-style payload for all Replicate models | triggers remote schema errors on Seedream and Wan Rejected: Continue accepting multi-image Replicate requests and save only the first result | silently drops outputs Confidence: high Scope-risk: narrow Reversibility: clean Directive: Add a family-specific validator and input builder before exposing more Replicate model IDs or multi-output flags Tested: npm test Tested: node --test skills/baoyu-imagine/scripts/providers/replicate.test.ts skills/baoyu-imagine/scripts/main.test.ts Not-tested: Live Replicate API calls against production models Co-authored-by: justnode <justnode@users.noreply.github.com> * Preserve Replicate compatibility when shared defaults leak across providers Addressed the new PR review findings by teaching baoyu-imagine to track where aspect-ratio defaults came from, mirroring the earlier imageSize fix, so unsupported Replicate models can still run prompt-only requests when the value was inherited from shared config. Also corrected Seedream 4.5 custom size encoding to use the API's custom width/height schema instead of sending literal WxH strings. Constraint: Shared EXTEND defaults still need to apply globally for providers that support them Constraint: Seedream 4.5 custom sizes must follow Replicate's documented custom size schema Rejected: Ignore all aspect ratios for unknown Replicate models | would hide explicit unsupported CLI/task input Rejected: Keep Seedream custom sizes as literal strings | validated locally but fails against the provider API Confidence: high Scope-risk: narrow Reversibility: clean Directive: Any future inherited-default validation for provider-specific flags should record the source explicitly before rejecting it Tested: node --import tsx --test skills/baoyu-imagine/scripts/main.test.ts skills/baoyu-imagine/scripts/providers/replicate.test.ts Tested: npm test Not-tested: Live Replicate API calls for Seedream 4.5 custom-size requests --------- Co-authored-by: justnode <justnode@users.noreply.github.com>
131 lines
3.8 KiB
Markdown
131 lines
3.8 KiB
Markdown
---
|
|
name: preferences-schema
|
|
description: EXTEND.md YAML schema for baoyu-imagine user preferences
|
|
---
|
|
|
|
# Preferences Schema
|
|
|
|
## Full Schema
|
|
|
|
```yaml
|
|
---
|
|
version: 1
|
|
|
|
default_provider: null # google|openai|azure|openrouter|dashscope|zai|minimax|replicate|null (null = auto-detect)
|
|
|
|
default_quality: null # normal|2k|null (null = use default: 2k)
|
|
|
|
default_aspect_ratio: null # "16:9"|"1:1"|"4:3"|"3:4"|"2.35:1"|null
|
|
|
|
default_image_size: null # 1K|2K|4K|null (Google/OpenRouter, overrides quality)
|
|
|
|
default_model:
|
|
google: null # e.g., "gemini-3-pro-image-preview", "gemini-3.1-flash-image-preview"
|
|
openai: null # e.g., "gpt-image-1.5", "gpt-image-1"
|
|
azure: null # Azure deployment name, e.g., "gpt-image-1.5" or "image-prod"
|
|
openrouter: null # e.g., "google/gemini-3.1-flash-image-preview"
|
|
dashscope: null # e.g., "qwen-image-2.0-pro"
|
|
zai: null # e.g., "glm-image"
|
|
minimax: null # e.g., "image-01"
|
|
replicate: null # e.g., "google/nano-banana-2"
|
|
|
|
batch:
|
|
max_workers: 10
|
|
provider_limits:
|
|
replicate:
|
|
concurrency: 5
|
|
start_interval_ms: 700
|
|
google:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
openai:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
azure:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
openrouter:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
dashscope:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
zai:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
minimax:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
---
|
|
```
|
|
|
|
## Field Reference
|
|
|
|
| Field | Type | Default | Description |
|
|
|-------|------|---------|-------------|
|
|
| `version` | int | 1 | Schema version |
|
|
| `default_provider` | string\|null | null | Default provider (null = auto-detect) |
|
|
| `default_quality` | string\|null | null | Default quality (null = 2k) |
|
|
| `default_aspect_ratio` | string\|null | null | Default aspect ratio |
|
|
| `default_image_size` | string\|null | null | Google/OpenRouter image size (overrides quality) |
|
|
| `default_model.google` | string\|null | null | Google default model |
|
|
| `default_model.openai` | string\|null | null | OpenAI default model |
|
|
| `default_model.azure` | string\|null | null | Azure default deployment name |
|
|
| `default_model.openrouter` | string\|null | null | OpenRouter default model |
|
|
| `default_model.dashscope` | string\|null | null | DashScope default model |
|
|
| `default_model.zai` | string\|null | null | Z.AI default model |
|
|
| `default_model.minimax` | string\|null | null | MiniMax default model |
|
|
| `default_model.replicate` | string\|null | null | Replicate default model |
|
|
| `batch.max_workers` | int\|null | 10 | Batch worker cap |
|
|
| `batch.provider_limits.<provider>.concurrency` | int\|null | provider default | Max simultaneous requests per provider |
|
|
| `batch.provider_limits.<provider>.start_interval_ms` | int\|null | provider default | Minimum gap between request starts per provider |
|
|
|
|
## Examples
|
|
|
|
**Minimal**:
|
|
```yaml
|
|
---
|
|
version: 1
|
|
default_provider: google
|
|
default_quality: 2k
|
|
---
|
|
```
|
|
|
|
**Full**:
|
|
```yaml
|
|
---
|
|
version: 1
|
|
default_provider: google
|
|
default_quality: 2k
|
|
default_aspect_ratio: "16:9"
|
|
default_image_size: 2K
|
|
default_model:
|
|
google: "gemini-3-pro-image-preview"
|
|
openai: "gpt-image-1.5"
|
|
azure: "gpt-image-1.5"
|
|
openrouter: "google/gemini-3.1-flash-image-preview"
|
|
dashscope: "qwen-image-2.0-pro"
|
|
zai: "glm-image"
|
|
minimax: "image-01"
|
|
replicate: "google/nano-banana-2"
|
|
batch:
|
|
max_workers: 10
|
|
provider_limits:
|
|
replicate:
|
|
concurrency: 5
|
|
start_interval_ms: 700
|
|
azure:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
zai:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
openrouter:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
minimax:
|
|
concurrency: 3
|
|
start_interval_ms: 1100
|
|
---
|
|
```
|