BigPizzaV3/CodexPlusPlus · error · anyhow::Error

DreamSkin 主题版本与请求不一致

Error message

DreamSkin 主题版本与请求不一致

What it means

install_community_theme fetched GET /v1/themes/{version_id}; the returned metadata's id must equal the requested version_id. A mismatch means the server resolved the request to a different theme version than asked for - a republished or renamed version, or catalog/CDN skew.

Source

Thrown at crates/codex-plus-core/src/dream_skin_community.rs:151

pub async fn install_community_theme(
    state_dir: &Path,
    version_id: &str,
) -> anyhow::Result<DreamSkinThemeSummary> {
    validate_version_id(version_id)?;
    let client = community_http_client(Duration::from_secs(120))?;
    let metadata_url = format!("{COMMUNITY_API_ORIGIN}/v1/themes/{version_id}");
    let metadata_bytes = download_limited(
        &client,
        &metadata_url,
        METADATA_BYTES_LIMIT,
        "application/json",
    )
    .await?;
    let metadata: DreamSkinCommunityTheme =
        serde_json::from_slice(&metadata_bytes).context("DreamSkin 主题元数据不是有效 JSON")?;
    validate_community_theme(&metadata)?;
    if metadata.id != version_id {
        bail!("DreamSkin 主题版本与请求不一致");
    }
    if !metadata.apply_compatible {
        bail!("该主题是旧格式,只支持在线预览或手动下载");
    }

    let download_url = format!("{COMMUNITY_API_ORIGIN}/v1/themes/{version_id}/download");
    let package = download_limited(
        &client,
        &download_url,
        metadata.package_bytes,
        "application/zip",
    )
    .await?;
    if package.len() != metadata.package_bytes {
        bail!("DreamSkin 主题包实际大小与审核元数据不一致");
    }
    let actual_sha = format!("{:x}", Sha256::digest(&package));
    if !actual_sha.eq_ignore_ascii_case(&metadata.package_sha256) {

View on GitHub (pinned to f2074595a2)

Solutions

  1. Reload the community catalog (bypass the cache) and retry with the fresh id
  2. If it still mismatches, the gallery's metadata for that id is inconsistent - report it
  3. Install using ids taken from the same catalog fetch you are browsing
Defensive patterns

Strategy: retry

Try / catch

Catch the '主题版本与请求不一致' error, invalidate the cached catalog, re-fetch the theme list, and retry once with the id now associated with the theme; if the retry hits the same error, surface the mismatch instead of looping.

Prevention

When it happens

Trigger: Reinstalling a version id from a stale cached catalog after the author republished the theme; metadata and detail endpoints serving inconsistent records; hand-crafted version ids.

Common situations: A locally cached catalog.json lagging behind gallery re-publishes; old share links pointing at superseded versions.

Related errors


AI-assisted analysis of BigPizzaV3/CodexPlusPlus@f2074595a2 (2026-08-23). Data as JSON: /api/errors/98f8969915d8d154. Report an issue: GitHub.